代码注释的消亡——为什么现代代码越来越不需要注释

1984年,Donald Knuth在斯坦福大学提出了一个激进的设想:程序员应该像散文家一样写作。在他著名的论文《Literate Programming》中,Knuth写道:“让我们改变传统的编程观念:不再想象我们的主要任务是指示计算机做什么,而是专注于向人类解释我们想让计算机做什么。” ...

10 min · 4958 words

上下文切换为何如此昂贵?从寄存器保存到TLB失效的完整技术解析

一台拥有32个CPU核心的服务器,为什么在运行200个线程时性能反而不如运行32个线程?数据库连接池从100扩展到300,为什么吞吐量反而下降了40%? ...

11 min · 5248 words

计算机时钟为何永远不准——从晶振漂移到分布式时间同步的技术突围

2012年6月30日午夜,全球多家知名网站突然瘫痪。Reddit用户发现网站无法访问,LinkedIn的Java进程陷入死循环,Mozilla的Hadoop集群停止工作,澳洲航空公司的值机系统全面崩溃。罪魁祸首只有一个:一个叫做"闰秒"的额外时间单位。 ...

9 min · 4047 words

用户会话为何总在关键时刻丢失——从粘滞会话到分布式存储的架构演进

2019年,一个电商团队在双十一大促期间遇到了诡异的问题:大量用户反映购物车商品莫名消失,但客服排查后发现商品数据本身没有任何问题。监控日志显示,用户的会话ID在请求链路中发生了跳变——用户从服务器A跳到了服务器B,而服务器B从未见过这个会话。这不是bug,这是分布式系统架构的必然代价。 ...

9 min · 4258 words

事件溯源 vs CRUD:为什么90%的系统都不需要这个复杂的架构

2016年,一个初创团队决定采用事件溯源架构来构建他们的电商系统。两年后,当被问及这个决策时,技术负责人的回答让人深思:“如果你问我是否后悔选择事件溯源,我的回答是:不后悔。但如果让我重新选择,我会先用CRUD。” ...

10 min · 4594 words

为什么非对称加密比对称加密慢1000倍:从数学原理到混合加密的工程智慧

1976年,Whitfield Diffie和Martin Hellman发表了一篇划时代的论文,提出了公钥密码学的概念。在此之前,任何想要秘密通信的双方都必须预先共享密钥——这是一个困扰密码学家数千年的难题。然而,公钥密码学在解决密钥分发问题的同时,也带来了一个新的困境:它太慢了。 ...

10 min · 4631 words

打开一个500MB的文件需要多久:从字符串到Piece Tree的文本编辑器数据结构进化史

2018年之前,Visual Studio Code用户经常报告一个奇怪的问题:打开某些文件会导致内存溢出崩溃。罪魁祸首是一个35 MB的文件——听起来不大,但它有1370万行。VSCode为每一行创建一个对象,每个对象占用40-60字节,结果光是行数组就消耗了约600 MB内存,是原文件大小的近20倍。 ...

14 min · 6527 words