如何阅读
- 系统学习:点击「开始阅读」,先了解这本书的学习路径,再按章节顺序通读。
- 查找章节:点击「全书目录」,直接查看分章索引,跳到需要的小节。
- 选择起点:初学者先读入门卷,有基础的读实战卷,研究语言机制的读高级卷或系统编程卷。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
在线书架 / 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 部书稿
一部长篇科幻小说的创作过程与长期写作经验。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
按书架顺序查看各系列的发布状态,展开分卷详情可查看每部书的篇数与目录。
目录篇仍为草稿,发布后开放阅读入口。
本节先对比 Celery 与 arq 的模型差异,讲清 broker、worker、结果后端与可见性超时的机制;再用 tenacity 9.2.1 实测指数退避重试,并用纯 asyncio 加 fakeredis 2.39.0 手写一个最小可靠队列,演示 RPOPLPUSH 取任务、失败重试与死信投递的完整链路。
本节把缓存拆成三个可决策的问题:本地缓存与分布式缓存怎么分工,Cache-Aside 与 Write-Through 各自适合什么写场景,以及键命名、TTL 与淘汰策略如何一起设计。再用 fakeredis 2.39.0 实测穿透、击穿、雪崩三类故障的工程对策,并给出基于 SET NX EX 与 WATCH 的分布式锁实现。
本节收尾 TaskAPI 的错误体系。讲清 errors.Is 判根因、errors.As 取回结构化错误类型的区别与用法,实现带字段的 ValidationError 与自定义 Is 方法,并给出哨兵错误、包装、判别三者协作的完整分层方案。
错误需要上下文,也需要保留原始原因。本节给 TaskAPI 的错误加上「操作 + ID」上下文,讲清 %w 与 %v 的差别、错误链与 Unwrap、多层包装的可读性、以及 errors.Join 与多个 %w 的用法,让错误既能读懂又能判别。
错误是 Go 里最普通的值。本节为 TaskAPI 定义 ErrNotFound 与 ErrInvalidTitle 两个哨兵错误,讲清 error 接口的极简设计、errors.New 与 fmt.Errorf 的差别、哨兵错误的判等语义、以及为什么错误要显式返回而不是抛出异常。
ReAct 与 Plan-and-Solve 都是「一次跑到底」,失败了不会回头。本节给循环外面再套一层 Reflexion:执行后由 evaluator 判定成败,失败就生成一段反思文本写回上下文,带着反思重跑,最多 N 轮。我们用 FakeModel 脚本化「第一次算错 → 反思 → 第二次算对」并真跑打印两轮轨迹,最后给何时值得 Reflexion 的决策清单。
ReAct 边想边做,Plan-and-Solve 则先谋后动。本节把循环拆成 Planner 与 Executor 两段:Planner 用结构化输出(JSON 数组)一次性产出子任务列表,Executor 顺序执行每一步且每步内部仍是一个完整小循环。我们用 FakeModel 演示一个三步计划,打印每步状态,并给出与 ReAct 的取舍表。
本节给 minagent 装上第一种推理循环 ReAct:把 Thought、Action、Observation 三元组显式写进每轮。我们说明现代 tool-use API 下 Thought 就是 assistant 消息的文本部分,实现一个 ReActAgent,用 FakeModel 脚本化「想—做—看」两轮后收敛的完整轨迹并真跑打印,最后给出与 3.1 朴素循环的差异表。
对比 URL、Header、媒体类型三种版本载体的取舍,讲清 Spring Boot 4 内置 API Versioning 的 spring.mvc.apiversion.* 属性、@GetMapping(version=...) 注解与 ApiVersionConfigurer 精细控制,给出向后兼容判定清单、Deprecation/Sunset 废弃流程与破坏性变更的并行发布策略。
把 5.2 的对齐规则落到一个真实结构体上:100 万个实例的 HeapAlloc 从 48.0 B/对象降到 40.0 B/对象(省 8 MB),并诚实报告「[]struct 遍历 vs []*struct 遍历」在 M1 Pro 上没有可辨识差异,附 GC 扫描面(/gc/scan/heap)的实测数字与为什么它不能被简单归因。
实测同字段集合重排顺序后结构体从 32 字节降到 24 字节(省 25%),并钉到 go1.27.0 的 CalcStructSize 对齐算法;再用 4 个 goroutine 各写一个原子计数器,实测 false sharing 让单次操作从 14.7ms 涨到 221ms(约 15 倍),并确认 M1 Pro 的缓存行是 128 字节。
用 2 万层递归实测 goroutine 栈:相邻帧地址间距恒为 160 字节(连续栈的证据),全程出现 8 次地址整体搬家(栈复制),StackInuse 从 256 KiB 涨到 4352 KiB;并把「栈检查指令」「翻倍增长」「指针重定位」钉到 go1.27.0 的栈增长序言、newstack、copystack 源码上。
把 OpenAPI 文件从代码的产物变成代码的输入:用 openapi-generator 7.26 生成接口与 DTO,用 interfaceOnly 与生成目录划清生成与手写的边界,给出避免重生成覆盖业务逻辑的三条纪律,并在 CI 里用 validate、spectral、漂移检查与 oasdiff 四道关固定契约。
把「连不上 happens-before」做成可复现的反例:goroutine 退出无保证、缓冲 channel 方向搞反、无同步计数器、双重检查锁与 busy waiting。每个反例都用本机 go run -race 打出真实的 DATA RACE 报告与退出码 66,并给出对应的修复写法。
上一节给出了 happens-before 的定义,本节回答它由哪些操作建立。逐条拆解官方文档的 Synchronization 小节:初始化、goroutine 创建、channel 收发与关闭、锁、Once、原子操作、终结器,每条规则配一段本机 -race 实测,并汇总成一张「建立 happens-before 的操作」对照表。
并发正确性不是「加个锁就行」,而是一套可证伪的形式定义。本节逐字拆解官方 Go Memory Model 文档:内存操作的四个细节、sequenced before 与 synchronized before 如何合成 happens-before、三条 Requirement 各自约束什么、data race 的精确定义,以及 DRF-SC 保证的边界。
本节给 minagent 的 ToolRegistry 加一层权限包装:工具按只读、写入、危险分三档,危险工具调用前挂起等人工审批。我们用假模型驱动一条完整轨迹——模型请求危险工具、被挂起、审批通过、继续执行,把每一步贴出来,并给出权限档位表与审批超时策略。
本节把 workspace_id 贯穿所有资源,做行级租户隔离:所有查询强制带租户条件,同一个 run id 在别的 workspace 下取不到,且统一返回 404 而非 403,避免泄露资源是否存在。我们用真连的本机 Postgres 跑一遍「A 租户访问 B 租户资源被拒」,并列出隔离失效的三个高频坑。
本节给 ResearchCopilot 装上第一道门:用 FastAPI 依赖注入实现认证,同时支持 Bearer JWT 与 API Key 两种凭证。我们用 PyJWT 2.15.1 真跑签发与校验,演示合法 token 通过、过期 token 401、篡改签名 401 三种情况,并把认证失败统一到 3.3 的错误契约。
企业客户会问「能不能用我们自己的 SSO」,这时要接的不是用户名密码而是 OAuth2 授权码加 OIDC。本节在本机起真实身份提供方,把 discovery、PKCE、换 token、JWKS 验 ID token 跑通,实测 PKCE 不匹配与 state 不一致的拦截,记录 x/oauth2 靠 Content-Type 判断格式的踩坑,并给出外部身份与本地账号的绑定规则。