go net/http 学习笔记

概述 在使用 Go 开发时几乎都会用到 net/http 标准库。但是,对库的内部实现不了解,仅限于会用。遇到问题容易懵,比如: 长连接和短连接有什么区别?具体什么实现原理? net/http 如何处理并发请求? net/http 有用到缓存吗?缓存用来干什么? …… 单个问题各个击破,不如深入梳理下 net/http 标准库一网打尽。本文将深入学习 net/http 标准库,力图做到知其然知其所以然。 ...

2025-12-07 · xhy

go ants pool 协程池学习笔记

概述 使用 Go 开发并发程序很容易,一个 go 关键字就可以启动协程处理任务。Go 创建一个 goroutine 只需要 2K 内存空间,并且 go 协程上下文信息仅存储在两个寄存器中,对于 Go 运行时来说,切换上下文特别快。 ...

2025-11-24 · xhy

go sync.pool 学习笔记

概述 sync.pool 对象池可以用来复用临时对象,减少内存压力,降低 GC 压力。 示例 基本用法 1type Worker struct{} 2 3func (w *Worker) Name() string { 4 return "worker" 5} 6 7func main() { 8 workerPool := sync.Pool{New: func() interface{} { 9 return Worker{} 10 }} 11 12 worker := workerPool.Get().(Worker) 13 defer workerPool.Put(worker) 14 15 name := worker.Name() 16 fmt.Println(name) 17} sync.pool 是单对象池,不是多对象池。基本使用方法是 Get 和 Put 方法,Get 用来从对象池中取对象,Put 用来将不用的对象放回对象池中。 ...

2025-11-09 · xhy