Go 程序员硬核修炼手册

这不是一本”教你用工具”的书。这是一本教你造工具的书。

基于极客时间 229 门专栏中评定为 S 级的 25 门硬核课程重新组织,面向 5 年经验的 Go 工程师。

全书约 68 万字 / 8 章 / 36 篇文档,全部示例与动手实验以 Go 为实现语言。


体例说明

全书采用对话体:小林(5 年 Go 经验,追问不休)与老陈(二十年系统老兵,几乎从不直接给答案)。

每节的标准结构:

开场对话  → 追问链(3-5 层)→ 正解拆解 → 动手实验 → 思考题 → 参考答案

思考题分三层:理解层(能复述吗)/ 应用层(能在新场景用上吗)/ 创造层(能改进或重新设计吗)。

建议:先自己想 10 分钟再看参考答案。 老陈的答案不是标准答案,你有更好的就说明你真懂了。


八章地图

章节覆盖课程核心产出字数
第 1 章 计算机底层操作系统实战45讲、趣谈Linux、深入C语言、内存知识、编译原理之美、编译原理实战课OS 内核引导 + 内存分配器 + C 编译器21 万
第 2 章 数据结构与算法数据结构与算法之美(深度扩展)算法库 + B+Tree + 跳表 + LSM8.8 万
第 3 章 语言运行时JVM、V8、JS 核心原理、重学前端、浏览器原理GC(三色标记+混合屏障)+ 字节码 VM8.0 万
第 4 章 存储引擎MySQL实战45讲、Redis核心技术与实战B+Tree 引擎 + WAL + MVCC + 自己的 ES10.4 万
第 5 章 网络与分布式网络编程实战、分布式技术原理、etcd实战课epoll 框架 + 完整 Raft 实现5.8 万
第 6 章 系统与性能Linux性能优化实战、容器实战高手课容器运行时 + 性能方法论4.3 万
第 7 章 框架设计Spring核心编程思想、MiniSpring、MiniTomcatDI 容器 + AOP + Web 容器5.3 万
第 8 章 架构与多媒体许式伟架构课、攻克视频技术、搞定音频技术架构决策框架 + 直播系统4.3 万

每章都远超 3 万字要求(最少的一章 4.3 万字)。


关于 Java / 前端课程的处理

25 门 S 级课里,Java 系 4 门、前端/JS 系 4 门,纯 Go 只有 2 门。我的处理是:全部保留,但落点全部转到 Go。

原课程学的是什么Go 化后的产出
深入拆解 JVM如何设计一个语言运行时用 Go 手写 GC(三色标记 + 混合写屏障)
MiniSpring / 小马哥Spring依赖管理与横切关注点用 Go 手写 IoC 容器 + AOP 链
MiniTomcat网络服务器 + 容器抽象用 Go 手写 HTTP 服务器 + Radix 路由
图解 V8执行引擎与动态分发对照 Go 的 itab、逃逸分析、PGO
浏览器原理 / 重学前端 / JS 核心原理渲染流水线与并发模型对照 Go 的 GMP 调度器

理由:JVM 讲的是 GC、内存模型、执行引擎——这些直接对标 Go runtime。Spring 讲的是 IoC/DI/AOP——Go 的 wire、dig、fx 就是同一套思想。


★ 每一章都有「00-设计推演」开篇

这是全书最重要的结构。8 章各有一篇推演篇,不讲”怎么做”,讲”为什么非得这么做”—— 从一个能工作但很差的版本出发,每遇到一个具体失败,再由失败逼出下一个设计。

推演篇演进链
第 1 章 从零造一个内存分配器mmap → 批发bump → 空闲链表 → size class → 三层缓存 → tiny/large
第 2 章 数据结构怎么选数组 → 有序数组 → 链表 → BST → 红黑树 → 哈希 → 跳表 → B+Tree → LSM
第 3 章 从零造一个 GC引用计数 → 标记清除 → 标记整理 → 复制式 → 分代 → 并发三色 → 写屏障 → 混合屏障
第 4 章 从零造一个存储引擎内存map → 全量落盘 → 追加日志 → 分段合并 → SSTable → LSM → B+Tree → +WAL
第 5 章 从零造一个共识算法写三遍 → 多数派 → leader+日志 → term → 投票限制 → 一致性检查 → 提交条件
第 6 章 从零造一个容器裸进程七宗罪 → chroot → namespace → cgroup v1 → v2 → capabilities/seccomp → OverlayFS
第 7 章 从零造一个 Web 框架每连接一线程 → 轮询 → select → epoll → goroutine;if-else → map → 正则 → radix tree;重复 → 函数 → 洋葱模型 → 扁平化
第 8 章 从零造一个直播系统直连 → 中央转发 → 集群 → CDN → 分析延迟 → 三条降延迟路线

为什么这样安排?

实现会过时——Go 的 GC 会改、Linux 的调度器会变、新的编码标准会出现。 但”从失败里推出设计”的能力不会过时。

每篇推演结束都提炼了可迁移的思维模式(先做最差版本 / 失败要精确归因 / 注意”免费的”好处 / 优化不动时转移成本 / 约束逼出唯一解……),并留了一个你自己的练习——通常是这条推导链的下一环。

推荐读法:每章先读 00-设计推演 建立设计感,再读后面的实现篇。 读实现篇时对照着找——“推演里的第 N 次失败,对应代码里的哪几行?“


贯穿全书的七条法则

这七条在第一、二、三……八章反复出现,是全书真正的骨架:

#法则在不同层次的表现
1让相关的东西物理上靠近缓存行 → 内存页 → NUMA 节点 → B+Tree 节点大小 → 数据分片
2层次化缓存CPU L1/L2/L3 → TLB → Go mcache/mcentral/mheap → Buffer Pool → CDN
3用约束换性能Arena 分配 → 栈分配(逃逸分析)→ 不分代 GC → 一致性级别选择
4把信息提前到编译期静态类型 → 静态链接 → wire(编译期 DI)→ PGO
5操作贵不贵看它破坏了什么上下文切换(TLB 失效)→ GC STW(缓存变冷)→ 页分裂
6先减少工作量,再优化效率Top-K 堆代替全排序 → 布隆过滤器避免磁盘 IO → 索引 → 剪枝
7把复杂挪到不常发生的时刻编译期 → 配置期 → 离线重建索引 → 增量索引

建议阅读路径

严格按 1→8 顺序

第 1 章最难也最重要。啃下来后面会越来越快。不要跳章——第 4、5 章大量依赖第 1、3 章的知识。

自测标准:第 1 章末尾有 30 道题。答对 20 题以上再往下走;如果”内存”那一组答对少于 5 题,一定重读第 3 节。

时间预算

按每周一章,约两个月。每天 1.5~2 小时,其中 阅读 40% / 写代码 40% / 做思考题 20%。

如果只读不写,这份教程的价值会掉到 20%。 所有的 “aha moment” 都在代码里,不在文字里。

环境要求

go version          # 1.21+
gcc / clang         # 第 1 章需要 C 编译器
Linux 或 WSL2       # 第 1、5、6 章的部分实验需要 Linux
sudo 权限           # 第 6 章容器实验、perf/eBPF 需要

建议的代码仓库

~/gohard/
├── ch01-kernel/        内核引导、内存分配器、C 编译器
├── ch02-algo/          算法库、B+Tree、跳表、LSM
├── ch03-runtime/       GC、字节码虚拟机、逃逸分析器
├── ch04-storage/       ★ B+Tree 引擎、WAL、MVCC、LSM、搜索引擎
├── ch05-distributed/   ★ epoll 框架、Raft
├── ch06-perf/          容器运行时、观测脚本
├── ch07-framework/     DI 容器、HTTP 服务器、Radix 路由
└── ch08-media/         音视频管线

带 ★ 的两章最能”变现”——学完你手上就有了自己的分布式存储和共识库。


学完之后

你应该能回答这七个问题(第 0 章提出,全书回应):

  1. 程序是怎么跑起来的? —— 第 1、2、5、6 章
  2. 内存是怎么被管理的? —— 第 1、3、4、6 章
  3. 为什么会有”并发”这个难题? —— 第 3、5、7 章
  4. 数据存到哪里去了? —— 第 4 章
  5. 快,是怎么做到的? —— 第 2、6 章
  6. 复杂度是怎么被控制的? —— 第 7、8 章
  7. 什么情况下,我应该自己造? —— 第 8 章

以及最终的目标:

当行业里没有现成方案时,你能自己设计一个。

—— 没有 ES?自己写一个。没有合适的存储引擎?自己造一个。没有满足场景的框架?自己搭一个。


目录结构

Go程序员硬核修炼手册/
├── 00-总纲/
│   └── README-如何使用这份教程.md
├── 第1章-计算机底层-从晶体管到进程/        (11 篇,含 00-设计推演)
├── 第2章-数据结构与算法设计范式/          (5 篇,含 00-设计推演)
├── 第3章-语言运行时与执行引擎/            (5 篇,含 00-设计推演)
├── 第4章-存储引擎与数据系统/              (5 篇,含 00-设计推演)
├── 第5章-网络与分布式系统/                (4 篇,含 00-设计推演)
├── 第6章-系统与性能工程/                  (4 篇,含 00-设计推演)
├── 第7章-框架设计思想与造轮子/            (4 篇,含 00-设计推演)
├── 第8章-架构心法与多媒体系统/            (4 篇,含 00-设计推演)
└── README.md                              ← 你在这里

每章都有 README.md 作为导读,说明本章覆盖的课程、结构、学完能做什么,并标注了 00-设计推演 为必读开篇。


最后

这份教程里有很多”老陈的反问”。有些你可能要憋很久才答得上来,有些看到答案还觉得不服气。

都正常。

真正的系统能力,不是知道很多答案,而是在没人给答案的时候,知道该往哪个方向挖。

现在,去找一个真实的问题,用你学到的东西解决它。只有用过,这些才是你的。


生成于 2026-08-29 · 数据源:\\192.168.3.216\精选\简知-课程\A09_极客时间\专栏(229 门课程目录扫描)