无锁编程的内存困境:为什么最难的竟不是算法本身

2015年,Rust核心团队成员Aaron Turon发布了一个名为Crossbeam的库。他在博客中写道:“如果我问Rust社区,构建锁-free数据结构最大的障碍是什么,答案几乎总是一样的——内存管理。” ...

13 min · 6441 words

Nagle算法与Delayed ACK:为什么你的TCP请求莫名其妙多了40毫秒

2015年,Julia Evans在工作中遇到了一个诡异的问题:向本地NSQ消息队列发布消息,每次请求都莫名其妙地多出40毫秒延迟。这是一个本地回环请求,理论上应该在1毫秒内完成。CPU负载正常,内存充足,没有任何明显的性能瓶颈。 ...

13 min · 6042 words

终端颜色究竟是如何工作的:从8色到24位真彩的四十年演进

1978年8月,数字设备公司(DEC)推出了VT100终端。这台设备成为计算机历史上最重要的终端之一,不仅因为它的商业成功,更因为它首次大规模普及了ANSI转义序列——这套至今仍在使用的终端控制协议。 ...

10 min · 4525 words

限流算法的选择困境:令牌桶、漏桶还是滑动窗口?

2005年,卡内基梅隆大学的研究人员进行了一项有趣的实验。他们在校园网络的边缘路由器上部署了四种不同的限流算法,然后用真实流量和Blaster蠕虫攻击数据进行测试。结果令人意外:表现最差的算法错误率高达30%,而表现最好的算法错误率低于1%。 ...

10 min · 4594 words

垃圾邮件过滤的三十年战争:从规则引擎到神经网络的进化之路

1978年5月3日,数字设备公司(DEC)的市场经理Gary Thuerk做了一件在当时看来平平无奇的事:他给ARPANET上的393个用户发了一封邮件,宣传公司的新产品演示会。邮件主题是"DIGITAL WILL BE GIVING A PRODUCT PRESENTATION OF THE NEWEST MEMBERS OF THE DECSYSTEM-20 FAMILY"。 ...

15 min · 7405 words

伪共享:当你的多线程代码慢了100倍却找不到原因

2011年,LMAX交易平台的工程师们遇到一个奇怪的问题:他们的高性能消息队列在生产环境中表现不佳,但代码逻辑完全正确,线程安全措施也到位。经过深入排查,问题竟出在两个相邻的变量上——它们恰好落在同一个缓存行中。 ...

10 min · 4900 words

电子邮件验证:一个让无数开发者踩坑的RFC陷阱

2007年,一位开发者在阅读了RFC规范后写下了一篇震惊的文章,标题是《直到我读了RFC,我才知道怎么验证电子邮件地址》。他发现几乎所有网上的正则表达式都太严格了——按照规范,这些地址全部合法: ...

10 min · 4670 words