美团民宿跨端复用框架设计与实践 (tech.meituan.com)
从 PC 时代、移动时代到万物互联的 IoT 时代,伴随终端设备的日趋多样化,跨端复用的种子自此落地,开始生根发芽。从业务角度出发,跨端技术演进更多是在不同阶段、不同时间段内业务效率上的选择,美团民宿业务在大前端融合的浪潮中逐浪前行,不断探索和迭代抉择,为解决业务痛点而孵化出跨端框架技术,在这个过程中,我们进行了很多的探索和实践的思考,希望能给大家一些启发。本文主要分享美团民宿在跨端复用技术探索和业务实践过程中的经验。
by @技术头条 2021-06-13 22:39 分享 查看详情
小样本做文本分类:超干货解读,看完别说你还不懂胶囊网络 (www.52nlp.cn)
人脑对图像的认识关键的点在于图像位置姿态的认识,也就是即便图像进行了旋转,平移人脑依然可以认识图像,而计算机却不行。因此提出胶囊网络CapsNet。
by @技术头条 2021-06-13 22:35 分享 查看详情
分布式数据库系统如何做到平滑缩扩容? (www.ideawu.net)
分布式数据库系统的缩扩容能力(后面也称迁移)是最基础最基本的特性, 但是, 要实现平滑扩容并不容易, 需要包括服务端, 客户端共同完成, 这两者只要缺少任何一方的参与和配合, 便绝不可能实现平滑扩容.

平滑迁移要解决的问题, 本质上就是故障容错处理.
by @技术头条 2021-06-13 22:32 分享 查看详情
Linux上如何定时关闭一个服务 (phpor.net)
如果让服务本身支持定时关闭,理论上非常可行,但是所有想定时关闭的服务都去实现以下这个逻辑是不是不太好?对于一个已经很成熟的(甚至没有源码的)服务想实现这个功能又该怎么办呢?

根据Linux的思想,一个程序应该只做一件事,并非功能越多越好,把自己该做的事做好就行了。

Linux上有一个非常好的命令: timeout 。只做了一件事,可以实现一个程序在一段时间后结束,如:

timeout 2s sleep 10

sleep 想睡10s; 但是timeout 保证让他2s就死掉
by @技术头条 2021-06-13 22:31 分享 查看详情
记录一下之前对 fsck_msdosfs(8) 的改进 (blog.delphij.net)
fsck_msdosfs(8) 是 FreeBSD 上用来检查和修复 FAT12/16/32 文件系统问题的程序,此外, Android 也使用了这一实现,并采用它来检查使用 FAT文件系统,如 SD 卡上的文件系统问题。

众所周知,FAT 是一个结构非常简单的文件系统。它的基本分配单元是簇(clusters),每个簇可以包括1-128个逻辑扇区。FAT 文件系统使用单一的中央数据结构——文件分配表 FAT来表现存储上的所有簇的分配状态,该结构本身是一个线性表,其中每一项均与磁盘上的相对位置的簇一一对应。这个表上以单链表形式表达文件,链表的表头保存在该文件对应的目录项上,而后续的整个簇链则在 FAT表上,每一项的内容是下一簇的簇号。FAT 表项如果是 0 则表示目前没有任何文件在使用该簇,因此可以将作为保存新数据的空间使用,还有一些特殊值表示坏块、保留块,或者文件已经到达了末尾。
by @技术头条 2021-06-13 22:30 分享 查看详情
RTFM!如何阅读(和理解)Linux 中神奇的手册页 (linux.cn)
手册页man pages,即参考手册页reference manual pages的简称,是你进入 Linux 的钥匙。你想知道的一切都在那里,包罗万象。这套文档永远不会赢得普利策奖,但这套文档是相当准确和完整的。手册页是主要信源,其权威性是众所周知的。

虽然它们是源头,但阅读起来并不是最令人愉快的。有一次,在很久以前的哲学课上,有人告诉我,阅读亚里士多德是最无聊的阅读。我不同意:说到枯燥的阅读,亚里士多德远远地排在第二位,仅次于手册页。

乍一看,这些页面可能看起来并不完整,但是,不管你信不信,手册页并不是为了隐藏信息 —— 只是因为信息量太大,这些页面必须要有结构,而且信息是以尽可能简短的形式给出的。这些解释相当简略,需要一些时间来适应,但一旦你掌握了使用它们的技巧,你就会发现它们实际上是多么有用。
by @技术头条 2021-06-13 22:29 分享 查看详情
Android 系统不释放内存吗? (androidperformance.com)
除了 CPU,很多用户在选购手机的时候通常也会考虑内存大小,不同版本内存的手机价格也不一样,买多大内存的合适呢?Android 系统是怎么管理内存的呢?普通用户对 Android 手机的内存使用总是一头雾水,这个应用到底占了多少内存?系统到底占了多少内存?内存对我手机的使用体验有什么影响?到底怎么才能用好 Android 手机?换新手机换多大内存的会比较合适呢?
by @技术头条 2021-05-28 23:12 分享 查看详情
使用Nginx的Basic Auth认证实现不同的登录用户内容隔离 (xnow.me)
上传和下载文件是企业经常要面对的场景,本文提供了一个新思路,使用企业具备的现有工具(Linux和Nginx),不需要安装任何其他软件,可以快速建立一个简单、可靠、带认证和用户隔离的文件上传下载系统。
by @技术头条 2021-05-28 23:00 分享 查看详情
【死磕 Redis】—– info 命令详解 (cmsblogs.com)
Redis 提供了一个非常有用的查看状态信息的命令:info。它以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。使用方法有如下三种:
1、info:部分Redis系统状态统计信息。
2、info all:全部Redis系统状态统计信息。
3、info section:某一块的系统状态统计信息,其中section可以忽略大小写。
by @技术头条 2021-05-28 22:59 分享 查看详情
游戏 UI 模块的选择 (blog.codingnow.com)
在游戏(包括引擎)开发的过程中,谈及 UI 模块,通常所指有二:
1、开发工具所用到的 UI 。
2、游戏本身所用到的 UI 。

这两者很多时候都是共用的一个模块,比如之前的 Unity 就直接把引擎开发用的 UI 模块扔给开发者开发游戏使用。但很快,开发者就发现,适合工具开发的 UI 模块,在做游戏时就不那么顺手了。所以就有了第三方 UI 插件的流行,以至于最后又倒逼 Unity 官方重新制作游戏 UI 模块。
by @技术头条 2021-05-28 22:56 分享 查看详情
一个关于if else容易迷惑的问题 (www.laruence.com)
这么写代码,我绝对扔椅子过去。
by @技术头条 2021-05-28 22:56 分享 查看详情
美团搜索中NER技术的探索与实践 (tech.meituan.com)
命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。NER是信息提取、问答系统、句法分析、机器翻译、面向Semantic Web的元数据标注等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要的地位。在美团搜索场景下,NER是深度查询理解(Deep Query Understanding,简称 DQU)的底层基础信号,主要应用于搜索召回、用户意图识别、实体链接等环节,NER信号的质量,直接影响到用户的搜索体验。

下面将简述一下实体识别在搜索召回中的应用。在O2O搜索中,对商家POI的描述是商家名称、地址、品类等多个互相之间相关性并不高的文本域。如果对O2O搜索引擎也采用全部文本域命中求交的方式,就可能会产生大量的误召回。我们的解决方法如下图1所示,让特定的查询只在特定的文本域做倒排检索,我们称之为“结构化召回”,可保证召回商家的强相关性。举例来说,对于“海底捞”这样的请求,有些商家地址会描述为“海底捞附近几百米”,若采用全文本域检索这些商家就会被召回,显然这并不是用户想要的。而结构化召回基于NER将“海底捞”识别为商家,然后只在商家名相关文本域检索,从而只召回海底捞品牌商家,精准地满足了用户需求。
by @技术头条 2021-05-28 22:52 分享 查看详情
写给大学新生的数字指南(2020 版本) (luolei.org)
高考,对于大多数年轻的朋友来说是一道门,跨过了这道门,意味着离开封闭的高中,离开了父母和家庭,开始了相对来说更独立的生活。

我是2009年参加的高考,距今已经11年,记得我刚上大一的时候,大家还在用人人网、QQ,塞班,智能手机方兴未艾,iPhone 属于奢侈品,安卓属于小众系统。过去这十年,也是互联网飞速发展的十年,人们的生活形态,因为科技和互联网,发生了极大的变化。

作为一个曾经的大学生,程序员,互联网从业者,今天这篇文章,根据自己过去上大学和职业相关经验,写下这篇「大学新生数字指南」,分享一下大学新生关于如何「迎接」即将到来的互联网生活。

今年参加高考的学生已经是00后,作为一个90后的跟大家差了一轮,有些事物理解若有代沟差异,也望理解指正。
by @技术头条 2021-05-28 08:38 分享 查看详情
如何使用普通用户管理docker? (xnow.me)
首先,比”如何使用普通用户管理docker“更重要的问题是:”为什么要使用普通用户管理docker“?

1、使用普通用户登录服务器执行管理操作才是符合运维规范的,而不是给所有人都授予root权限,这有利于权限管理的标准化。
2、恶意破坏很难避免,但是要尽量不让用户做傻事,虽然普通用户进入docker之后,可以拥有root身份,但是这是恶意操作,避免的难度太高。

接下来就是怎么让普通用户也能使用docker的配置步骤了。
by @技术头条 2021-05-28 08:36 分享 查看详情
死磕 Redis - 事务 (cmsblogs.com)
Redis 通过 MULTI、EXEC、DISCARD、WATCH 、UNWATCH 来实现事务功能,Redis 事务具备如下几个特性:

1、Redis 会将事务中的多个命令一次性、按顺序一次执行,在执行期间可以保证不会中断事务去执行其他命令;
2、Redis 的事务机制是不能保证原子性的,它只保证隔离性和一致性。
by @技术头条 2021-05-28 08:33 分享 查看详情
PHP FFI详解 - 一种全新的PHP扩展方式 (www.laruence.com)
随着PHP7.4而来的有一个我认为非常有用的一个扩展:PHP FFI(Foreign Function interface), 引用一段PHP FFI RFC中的一段描述:For PHP, FFI opens a way to write PHP extensions and bindings to C libraries in pure PHP.

是的,FFI提供了高级语言直接的互相调用,而对于PHP来说,FFI让我们可以方便的调用C语言写的各种库。

其实现有大量的PHP扩展是对一些已有的C库的包装,比如常用的mysqli, curl, gettext等,PECL中也有大量的类似扩展。

传统的方式,当我们需要用一些已有的C语言的库的能力的时候,我们需要用C语言写wrapper,把他们包装成扩展,这个过程中就需要大家去学习PHP的扩展怎么写,当然现在也有一些方便的方式,比如Zephir. 但总还是有一些学习成本的,而有了FFI以后,我们就可以直接在PHP脚本中调用C语言写的库中的函数了。

而C语言几十年的历史中,积累了大量的优秀的库,FFI直接让我们可以方便的享受这个庞大的资源了。
by @技术头条 2021-05-28 08:32 分享 查看详情
团队管理杂谈 (www.bo56.com)
有句话说得好,兵熊熊一个,将熊熊一窝。这句话,充分说明了团队管理者对于一个团队的重要性。好的 leader 可以提高团队的战斗力,带领大家攻城略地。

作为团队 leader 有三件事很重要。这三件事分别是,规划、招聘、赋能。
by @技术头条 2021-05-28 08:31 分享 查看详情
一些关于 App Clips 的笔记 (onevcat.com)
App clips 是今天 WWDC 上 iOS 14 的一个重要“卖点”,它提供了一种“即时使用”的方式,让用户可以在特定时间、特定场景,在不下载完整 app 的前提下,体验到你的 app 的核心功能。

装好 Xcode 12 以后第一时间体验了一下如何为 app 添加 app clip。它的创建和使用都很简单,也没有什么新的 API,所以要为 app 开发一个 clip 的话,难点更多地在于配置、代码的复用以及尺寸优化等。在阅读文档和实际体验的同时,顺便整理了一些要点,作为备忘。
by @技术头条 2021-05-28 08:29 分享 查看详情
美团万亿级 KV 存储架构与实践 (tech.meituan.com)
KV 存储作为美团一项重要的在线存储服务,承载了在线服务每天万亿级的请求量。在 2019 年 QCon 全球软件开发大会(上海站)上,美团高级技术专家齐泽斌分享了《美团点评万亿级 KV 存储架构与实践》,本文系演讲内容的整理,主要分为四个部分:第一部分讲述了美团 KV 存储的发展历程;第二部分阐述了内存 KV Squirrel 架构和实践;第三部分介绍了持久化 KV Cellar 架构和实践;最后分享了未来的发展规划和业界新趋势。
by @技术头条 2021-05-28 08:28 分享 查看详情
给 JavaScript 插上多线程的翅膀 —— Web Worker 的 Promise 化实践 (www.alloyteam.com)
众所周知,JavaScript 这门语言的一大特点就是单线程,即同一时间只能同步处理一件事情,这也是这门语言衍生出的 nodeJS 被各后端大佬诟病的很重要的一点。


然而,JavaScript 在设计之初,其实是故意被设计成单线程语言的,这是由于它当时的主要用途决定的。

JavaScript 最初的设计初衷是完成页面与用户的交互,操作 DOM 或者 BOM 元素,此时如果一味地追求效率使用多线程的话,会带来资源抢占,数据同步等等问题,因此必须规定,同一时间只有一个线程能直接操作页面元素,以保证系统的稳定性以及安全性。

尽管如此,但是 JavaScript 并不是只能线性处理任务。JS 拥有消息队列和事件循环机制,通过异步处理消息的能力来实现并发。在高 I/O 型并发事务处理的过程中,由于不需要手动生成与销毁线程以及占用额外管理线程的空间,性能表现及为优异。因此,nodeJS 作为 JavaScript 在服务端的探索者,在处理高并发网络请求的优势极为明显。

尽管 JavaScript 通过异步机制完美解决了高 I/O 性能的问题,但 JavaScript 单线程执行的本质还是没有变的。因此缺点就显而易见了,那就是处理 CPU 密集型的事务时没有办法充分调动现代多核心多线程机器的运算资源。

在现代大型前端项目中,随着代码的复杂程度越来越高,本地的计算型事务也在变得繁重,而运行在单线程下 JS 项目必定会忙于处理计算而无暇顾及用户接下来的频繁操作,造成卡顿等不太好的用户体验,更严重的情况是,当计算型事务过多时还有可能因为资源被占满带来网页无响应的卡死现象。因此,Web 项目的本地多线程运算能力势在必行,由此,Web Worker 应运而生了。
by @技术头条 2021-05-28 08:27 分享 查看详情