用 httptest、假存储、日志断言、竞态检测器和模糊测试来测 Go REST API,再靠服务器超时、优雅关闭和一个静态二进制文件把它发布出去。
14 9 月
14 9 月
不用任何第三方包,用 Go 搭建一个任务列表 REST API。逐层实现存储、路由、安全的 JSON 解码、校验、状态码、中间件和 slog 日志。
14 9 月
Go 标准库自带能上生产的 HTTP 服务器。学习处理器、用 ServeMux 的方法和路径模式做路由、ResponseWriter 的规则、每个请求经历了什么,以及 http.Server 为什么要设超时。
14 9 月
Go 的 context 告诉处理同一项任务的每个 goroutine 什么时候该停。本文先讲取消、超时和请求作用域的值,再用它们搭建不会泄漏的工作池、管道、扇出扇入、errgroup 和信号量。
14 9 月
两个 goroutine 不加协调地修改同一个变量,就会产生数据竞争,悄悄丢失更新。学会用 sync.Mutex、RWMutex、atomic 和 Once 避免它,再用 go run -race 把它找出来。
14 9 月
Go 通道在 goroutine 之间传递值,也让它们互相等待。本文讲无缓冲和有缓冲通道、关闭、死锁、nil 通道,以及 select 如何同时等待多个通道。
14 9 月
goroutine 是和程序其余部分同时运行的函数,Go 可以同时跑成千上万个。学会启动它、等待它、避免泄漏,并看懂调度器怎样让少数线程承载它们。
14 9 月
值放在栈上还是堆上,Go 替你决定。本文讲逃逸分析怎样做这个决定,怎样用 go build -gcflags=-m 查看它,怎样统计分配次数,以及垃圾回收器随后做什么。