golang
已收录文章:240篇
-
Go中实现任务超时取消需用context.WithTimeout创建子上下文并defer调用cancel,监听ctx.Done()及时退出;context取消链为单向父子继承,子取消不影响父;I/O操作须用原生支持Context的方法或手动检查Done()。411 收藏
-
从生产压测角度讲清 sync.Pool 的适用边界、Get 后 Reset、Put 后不再使用、GC 清空、对象污染和 benchmark 验证方法。410 收藏
-
Golang多服务部署需结构清晰、容器化和自动化。1.设计模块化服务结构,各服务独立构建;2.用Docker容器化,docker-compose本地验证;3.Makefile或Go工具实现一键构建部署;4.可选Consul等服务发现。核心是标准化日志、配置、健康检查,提升协作效率。409 收藏
-
context.WithValue返回新context而非修改原对象,需显式传递给下游;key必须用不可比较的私有类型(如struct{}),value应为不可变小数据,取值须用双返回值断言防panic。405 收藏
-
该用io.ReadAll当需一次性获取小数据(≤10MB)的[]byte或string,如JSON响应、配置文件;该用io.Copy当需流式转发、大文件落地或写入另一io.Writer,因其内存恒定、不OOM。405 收藏
-
Go无法真正零停机,必须通过net.Listener.File()导出fd、子进程用net.FileListener恢复、父进程Shutdown等待旧连接结束三者协同;直接ListenAndServe必因端口占用或SO_REUSEPORT调度不均导致connectionrefused或RST。403 收藏