如何阅读
- 系统学习:点击「开始阅读」,先了解这本书的学习路径,再按章节顺序通读。
- 查找章节:点击「全书目录」,直接查看分章索引,跳到需要的小节。
- 选择起点:初学者先读入门卷,有基础的读实战卷,研究语言机制的读高级卷或系统编程卷。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
在线书架 / 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 部书稿
一部长篇科幻小说的创作过程与长期写作经验。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
按书架顺序查看各系列的发布状态,展开分卷详情可查看每部书的篇数与目录。
目录篇仍为草稿,发布后开放阅读入口。
用 50 万次真实分配测出「请求 33 字节实得 48 字节」这类 size class 圆整,实测每对象字节数逐条对上 runtime 的 size class 表,并把一次小对象分配的三级路径(mcache → mcentral → mheap)钉到 go1.27.0 源码的 mallocgc、nextFree、cacheSpan 上,最后给出按 size class 选对象尺寸的决策表。
派生查询、@Query(JPQL / native)与 Criteria、Querydsl 各有适用边界。本节用图书借阅服务的多条件检索场景对比三种写法的可维护性与类型安全,给出动态条件查询的落地方式、原生 SQL 的方言锁定代价,以及 4.x 下 Hibernate 7.x 的相关口径。
本节是全卷的版本迁移承载节。用 api 清单与 1.26/1.27 差分两套证据,逐项列出 Go 1.24 到 1.27 的语言、标准库、工具链与实验开关变更,为每一项给出「需要改代码吗」的判断列,并把三处默认语义翻转做成前后对照实测,最后汇总成可直接执行的迁移检查表。
math/rand/v2 与 iter.Pull 常被记错版本归属。本节用 api 清单核实:前者 Go 1.22 引入、1.24 补 AppendBinary,后者是 Go 1.23 的 range-over-func 配套;再实测 PCG 与 ChaCha8 的可复现与 MarshalBinary 往返,给出 iter.Pull 比 range 慢约 132 倍的真实数字与使用判据。
encoding/json/v2 是 Go 1.27 才默认可用的新 JSON 实现。本节先给出它在 1.26 必须开 GOEXPERIMENT=jsonv2、1.27 默认开启的版本归属证据,再用本机实测逐条对比 v1 与 v2 在大小写匹配、重复字段、HTML 转义、map 键序与非法 UTF-8 上的语义差异,最后给出 import 替换、Options 组合与迁移检查表。
本节补齐 ResearchCopilot 接口的三个边角:用 Idempotency-Key 让同一 key 重复 POST 只创建一个 run、设计 code / message / details / request_id 四字段统一错误体并给出错误码表、用游标分页取代 offset 分页,三处都用 TestClient 真跑并贴出真实输出。
本节给 ResearchCopilot 的 run 接上 SSE 流式接口:定义 id / event / data 三行事件 envelope,把卷一第 7 章的 token / tool_call / tool_result / step / final 映射成 text/event-stream 帧,用 httpx 真消费一条完整事件流,最后给出 SSE 与 WebSocket 的取舍表。
本节为 ResearchCopilot 设计会话与任务 API:把 session、run、message 三类资源钉成 REST 语义,讲清为什么 run 必须独立成资源而不是 session 的一个动作,给出资源关系图与状态字段,并用 FastAPI 0.143.0 真跑一组路由,贴出 TestClient 打出的真实 JSON 响应与 OpenAPI 契约。
接口写完了,但契约只活在代码里:客户端没有类型、文档会过期、字段改名没人知道。本节给 TaskHub 补上 OpenAPI 契约优先的流程,用 oapi-codegen 从一份 openapi.yaml 真实生成类型与服务端骨架并跑通请求,实测生成器对 enum 与多余字段的校验边界,再写一个契约漂移检查把 spec 和路由锁在一起,最后给出 URL 版本化与废弃策略。
列表接口是接口设计里最容易被低估的一个。本节把 TaskHub 的任务列表做成可游标翻页、可白名单过滤、可白名单排序的接口,用真实 Postgres 对比 OFFSET 与键集分页在 20 万行下的耗时与扫描行数差距,再用幂等键中间件解决 POST 重试导致重复创建的问题,并给出重放与冲突的实测行为。
接口一多,最先失控的不是代码而是 URL 和状态码。本节把 TaskHub 的租户/项目/任务三级资源建模成稳定的 URL 层级,梳理每个方法与状态码的对应关系,用 Go 1.22+ ServeMux 的路径参数承接,并解决多租户下 404 与 403 的取舍、ID 前缀与时间格式等表示层约定,最后用 httptest 把状态码固化成可回归的契约。
本节收束数据访问层剩下的三个难题:表结构怎么改才不锁库、并发写入怎么写才不留半成品、连接池该配多大才不会把数据库压垮。先讲 expand-contract 迁移模式与加列改列的真实锁行为,再讲交互式事务、隔离级别、死锁重试与 outbox,最后给出连接数估算公式、PgBouncer 与预编译语句的冲突,以及慢查询与连接指标的观测手段。
本节换一条与 Prisma 相反的路线:用 TypeScript 文件本身描述表结构,让类型从查询语句推导出来。先安装 drizzle-orm 与 drizzle-kit,用 pgTable 定义表、列、枚举与索引,再讲清 $inferSelect 与 $inferInsert 的差别,随后逐个演示 select、join、where 与关系查询 API 的类型结果,最后给出迁移命令与选型建议。
本节把 Prisma 当作一条从数据库结构到 TypeScript 类型的单向流水线:写出第一个 schema.prisma,逐块拆解 generator、datasource 与 model 的字段类型与常用属性,观察 prisma generate 生成了什么,并说明 select、include 的返回类型如何推导。最后给出常见报错对照与 N+1 规避,读完你能独立设计可演进的数据模型。
实体直接出现在接口层会带来懒加载代理序列化失败、字段泄露与循环引用三类事故。本节给出投影(interface / DTO)的用法与边界、手写转换与 MapStruct 的取舍、Repository 与 Service 的职责划分,以及 readOnly 事务与转换时机的关系。
每个接口都要记日志、查登录,写进 Controller 太啰嗦。本节对比 Filter(Servlet 规范)与 HandlerInterceptor(Spring MVC)的执行时机,用真实日志证明 Filter → Interceptor → Controller 的顺序,演示两种 Filter 注册方式与拦截器路径匹配,并完整实现请求 ID 贯穿与登录校验。
Alembic 1.20.0 实战:从 init 到 env.py 配置、autogenerate 生成迁移、upgrade/downgrade/history/current 全套命令,讲清加列、数据回填与不可逆操作等演进策略,代码在 SQLite 上真跑过。
从 session 生命周期讲起,用实测数据讲清事务边界、连接池参数(pool_size/max_overflow/pool_pre_ping)与 N+1 识别治理;用事件钩子统计 SQL 条数,对比惰性、selectinload、joinedload 的真实数字。
SQLAlchemy 2.1.4 实战:用 DeclarativeBase 与 Mapped[] 定义类型化 ORM 模型,改用 select() 2.x 风格查询,讲清关系映射、加载策略与 ORM/Pydantic 模型分层的工程取舍,代码在 SQLite 上真跑过。
Go 用组合而非继承来复用代码。本节给 TaskAPI 引入子任务 Subtask,用结构体嵌入复用 Task 的字段与方法,讲清提升规则、嵌入字段名、方法冲突消歧、值嵌入与指针嵌入的差别、多级嵌入的传播,并说明何时该用具名嵌套而非结构体嵌入。