如何阅读
- 系统学习:点击「开始阅读」,先了解这本书的学习路径,再按章节顺序通读。
- 查找章节:点击「全书目录」,直接查看分章索引,跳到需要的小节。
- 选择起点:初学者先读入门卷,有基础的读实战卷,研究语言机制的读高级卷或系统编程卷。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
在线书架 / BOOKS
从第一章开始,把知识读成体系。
按领域与学习阶段整理的在线电子书与创作手记。覆盖 Rust、Lua、TypeScript、Python、Java(Spring Boot)、Go、AI Agent、MMO 服务器开发(Go 主线 + Java 21 双栈对照,四卷本 180 篇)、游戏开发(含 Cocos 四卷本与《游戏引擎实现原理》四卷本)与文学创作,从阅读指南进入,或按全书目录查找章节。
了解阅读方式4 部书稿
从所有权与借用,到工程实战与系统编程。
3 部书稿
从脚本基础,到语言机制与游戏业务。
2 部书稿
从客户端引擎,到服务端架构与完整项目。
4 部书稿
用 Go 从零实现一套能真跑、能压测、能跨服的 MMO 服务端 aegis,Java 21 作为双栈对照。
用 Go 从零实现 aegis 的网络底座:协议、KCP、会话、路由、定时器、Actor、同步模型与安全,直到能登录、能移动、能广播的最小服务器。
把玩法装进底座:实体运行时、AOI、战斗、背包、任务、社交、交易与匹配,把《晨曦大陆》做成单服可玩。
把单服推成集群:服务发现、RPC、网关集群、实例调度、跨服玩法、缓存、分库分表与分布式事务。
把服务端交付并长期运营好:压测、性能、可观测性、部署发布、配置热更、数据分析、GM 后台与容灾演练。
4 部书稿
从零手写 2D 运行时,到 Cocos Creator 3.8 交付产品,再到引擎内部与客户端联机。
手写 mini2d 运行时打通帧循环、渲染、物理与存档,每章对照 Cocos Creator 3.8。
用 Cocos Creator 3.8 交付《方块冲刺》,走到 H5 / 微信小游戏 / 原生三端上线。
深入渲染管线、Effect 体系与内存性能,学会读源码、裁剪引擎并评估升级。
从预测与和解到弱网降级,用可单测的纯逻辑实现《方块冲刺》双人竞速客户端。
4 部书稿
用 TypeScript 从零实现一个 3D 游戏引擎:内核、渲染、子系统与工具,直到工程化交付。
用 TypeScript 从零写出 helio 内核:内存、句柄、ECS、任务与反射,直到《微光岛》第一个能走动的方块。
从 RHI 三后端到帧图与后处理,把《微光岛》的小岛真正渲染出来。
资源管线、动画物理音频输入与脚本热重载,外加一套能编辑、能撤销、能存盘的编辑器。
构建、测试、性能、跨端与交付:把《微光岛》从能跑推到能发,并做跨引擎对照。
3 部书稿
按入门、实战、高级三步,建立类型与工程能力。
从基本类型、函数与泛型,到类型建模、模块和工程配置,以全栈项目收尾。
面向项目交付,覆盖测试、服务端与数据层、前端类型实践、API 契约及部署运维。
面向库与工具链作者,深入类型级编程、编译器 API、声明发布和运行时边界。
3 部书稿
从语言基础与工程交付,深入 CPython 与性能优化。
面向零基础读者,从数据结构与函数,到类型注解、并发异步、测试打包与应用项目。
从工程脚手架出发,实践 Web 服务、数据访问、后台任务、自动化与生产部署。
深入 CPython 对象模型、字节码、GC 与并发运行时,理解扩展机制和性能工程。
3 部书稿
从 Spring Boot 入门与工程实战,到框架内部机制与版本迁移。
面向零基础读者,从环境搭建与第一个接口,到 Web、数据访问、测试与完整项目。
从工程脚手架出发,实践 Web 服务、数据访问、缓存、消息与生产部署交付。
深入容器、自动配置、AOP、请求管线与事务机制,理解框架内部与 3.x 到 4.x 迁移。
4 部书稿
从语言入门到工程实战,再到高级特性与运行时原理。
3 部书稿
从零手写 Agent 引擎,到工程化服务,再到框架重写与生产化加固。
从零手写 Agent 引擎 minagent,把消息、工具、记忆、编排、评测到服务化逐章跑通。
把引擎装成可上线的研究助理服务,覆盖接口、数据、并发、可观测与部署交付。
用主流框架重写研究助理并剖析源码,补齐持久化、计算机使用、A2A 与生产化加固。
1 部书稿
一部长篇科幻小说的创作过程与长期写作经验。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
按书架顺序查看各系列的发布状态,展开分卷详情可查看每部书的篇数与目录。
目录篇仍为草稿,发布后开放阅读入口。
本节为 minagent 搭好双栈环境与仓库骨架:用 Python 3.14.6 建虚拟环境并配置中科大 PyPI 镜像,用 Node 26.5.0 备好 TypeScript 对照线;再建出 minagent/ 包与 tests/ 目录,git init 并完成首个提交,最后用一行命令实测验证解释器版本。
在样章转入正式章节后,建立三部曲首轮重写后的连读检查方法,校验危机线、人物线、自然线索、时间线和伏笔回收。
本节权衡配置中心的收益与代价,比较 Spring Cloud Config、Nacos、Apollo 的定位差异,讲清 @RefreshScope 与 @ConfigurationProperties 在刷新行为上的关键区别,并给出刷新风暴、灰度发布与配置中心不可用时的降级策略。
性能数字脱离环境就没有意义。本节先采集本机基线(Go 版本、CPU 型号与核数、内存、默认 GOMAXPROCS/GOGC),再做三个对照实验:-race 的代价、GOMAXPROCS 环境变量、GOGC/GOMEMLIMIT 对 GC 次数的影响,最后固化成本卷所有实验都要遵守的复现约定。
runtime 目录有 587 个 .go 文件、11.3 万行非测试代码,硬读是灾难。本节先量化目录结构(哪些文件最大、哪些是核心),再给出四条问题导向的阅读路线:调度、分配、GC、编译器支撑,每条路线只要求打开 3~5 个文件、记住 3~5 个函数入口。
运行时看不见就调不动。本节把 GODEBUG(gctrace/inittrace/schedtrace)、pprof、runtime/trace、-gcflags 与 GOSSAFUNC 五类观测工具各真跑一遍,贴出本机终端回显,定位到 src/runtime/runtime1.go:parsedebugvars 等源码位置,最后给出一张「症状→工具」决策表。
本节从口令泄露的真实路径讲起:Git 历史、镜像层、进程参数、/proc 与日志各是怎么漏的;再比较环境变量与挂载文件的取舍,划清 Jasypt 这类加密方案的适用边界,给出 Vault / KMS / K8s Secret 的接入方式与密钥轮换对连接池、签名校验的实际影响。
比较 SetFinalizer、AddCleanup 与 weak:清除 finalizer、Stop 的可达性条件、小对象回收边界,以及可独立执行的清理和弱引用实验。
Go 的 map 在 1.24 悄悄换掉了底层实现,改用 Google 的 Swiss Table。本节用同一份基准在 go1.25 上对照 GOEXPERIMENT=swissmap 与 noswissmap 实测:整型键快约 1.36 倍、字符串键快约 1.62 倍,并说清 1.26 起实验开关被移除、以及迭代顺序随机这一契约为何没有变。
泛型类型别名到底是不是「新类型」?本节用真机实测回答:它和目标是同一个类型,可直接赋值、可互换参数,并区分类型同一与可赋值规则。同时把语言精化的版本归属一条条钉在证据上——aliastypeparams 实验开关在 1.24/1.25 可显式关闭、1.26 起名字被移除,并给出 loopvar、range over int、range over func 的实测对照。
多模块最烦的不是拆,而是四份 go.mod、四份骨架、同一套枚举要抄四遍。本节给 TaskHub 装上生成器:用 go:generate 驱动一个从 YAML 生成 Go 枚举的工具,用 go.mod 的 tool 指令锁死 stringer 版本,实测生成、格式化、构建全流程,并讨论生成物该不该提交。
模块拆开了,但如果 infra 反向 import api、domain 依赖具体存储,边界等于白划。本节用 TaskHub 演示依赖倒置:接口定义在 domain,实现在 infra,组装在 cmd,并用 go list 与 import cycle 报错实测依赖方向被工具真实约束,附编译期接口断言写法。
TaskHub 的第一个工程决策不是选框架,而是选仓库形态。本节把单模块项目拆成 domain/infra/api/cmd 四个模块,用 go.work 串成一个工作区,实测工作区下的构建、运行与 go work sync 的版本统一行为,并说清 go.work 到底该不该提交进版本库。
本节补上测试体系的最后两个维度:类型测试用 vitest 的 typecheck 模式与 expectTypeOf 把类型契约纳入回归,用 @ts-expect-error 断言非法用法必须被拒绝;覆盖率门禁讲清四个指标的差异、v8 与 istanbul 的取舍、thresholds 与 perFile 配置,以及为什么覆盖率不等于正确性,最后把整套测试串进 CI 流水线。
本节解决「单测全绿、上线照样炸」的问题:先讲清 mock 越多失真的原因,再引入 Testcontainers,用一次性 Docker 容器拉起真实的 PostgreSQL 与 Redis,让集成测试跑在与生产同构的依赖上。内容包括容器生命周期与 globalSetup 复用、等待策略、按 worker 隔离 schema、Prisma 迁移执行与 CI 差异处理。读完你能写出可信的集成测试。
本节把单元测试落到 Vitest 上:先说明现代 TypeScript 项目为何更倾向它,再给出安装步骤与 vitest.config.ts 最小写法;随后用汇率换算与订单支付两个例子演示 describe/it/expect 写法与 toBe/toEqual 的判等差异,并展开 vi.fn、vi.spyOn、vi.mock 三种替身与假定时器的用法。读完你能写出跑得快、报错清晰的单元测试。
入门卷讲过 application.yml 与 profile,本节解决生产上真正棘手的问题:环境维度如何划分、profile 组合与 group 怎么用、jar 内基线与外部覆盖如何分层、12-Factor 下哪些值该进环境变量,以及 spring.config.import 的组合语法与 4.1 新增的 encoding 参数。
设计一个 ApiResponse<T> 包装体,用 ResponseBodyAdvice 自动包装成功响应并避开泛型擦除与 String 转换器的坑,同时讨论统一响应体的代价——与 HTTP 状态码语义重复、对第三方客户端不友好、文件下载与 204 的例外,给出该用与不该用的判断依据,并输出一套完整实现与 curl 实测响应。
日志记录离散事件,指标记录系统整体健康度。本节用 prometheus-client 0.26.0 暴露 Counter/Gauge/Histogram,用中间件埋点并规避标签基数陷阱,设计 liveness/readiness 健康检查,再接入 Prometheus 告警规则。
文本日志难以被机器解析。本节用 structlog 26.1.0 把日志输出成结构化 JSON,用 contextvars 绑定请求级上下文,通过 ProcessorFormatter 桥接标准库 logging,并让 trace_id/request_id 贯穿全链路,最后与 OpenTelemetry 打通日志与追踪。