费曼那句话是对的:凡我不能创造的,我就不能理解。这一页不是教程合集,是六个「最小可跑」的手搓项目——每个都砍到只剩一条路径,先跑通,再加功能。四种语言(JS / Python / C++ / C#)给的是同一件事的不同写法,选你正在用的那一种。
三条铁律(不遵守就等于收藏夹吃灰)
① 先自己写,再看别人的。看完功能描述就关掉这一页,写一版能跑的,再回来对照——重点看它怎么分层、怎么处理错误、怎么处理边界,那才是盲区。
② 只做一条路径。Redis 先只做 SET/GET/过期,HTTP 先只做 GET + 404,别一上来就想支持一切。
③ 跑通再加。每加一个功能都要能回到「上一次可运行」的状态,否则你会卡在半成品上三天。
别从最难的下手。顺序建议:
① 数据结构——自己实现动态数组、哈希表、二叉堆、B 树(对应「数据库为什么快」)。
② 操作系统——进程/线程、调度、虚拟内存分页(对应「你的程序为什么卡」)。
③ 网络——socket → 手写 HTTP → TCP 握手与重传(对应「请求为什么慢」)。
④ 组成原理——Cache 行、命中率、流水线(做一次「不同遍历顺序的矩阵乘法耗时对比」就够)。
参考项目(自己搜,别只看不做):Build Your Own X(20+ 个从零构建方向)、Crafting Interpreters(手写解释器,有免费在线版)、TheAlgorithms(各语言算法实现,适合对照自己的写法)。
手机上别硬敲 C++/C#:先在这页看懂结构,回到电脑上写。这页的勾选和笔记会存住。