Go教程技术文章
-
GoHTTP客户端需调优http.Transport参数以发挥Keep-Alive效果:合理设置MaxIdleConns、MaxIdleConnsPerHost、IdleConnTimeout及TCPKeepAlive,复用Client实例,读取并关闭resp.Body,监控连接状态,并按场景决定是否禁用Keep-Alive。394 收藏 -
从 goroutine 数量持续上涨的现象出发,用 pprof、runtime 指标、阻塞栈和 context 取消链路逐层定位泄漏原因,并给出修复与反向验证清单。392 收藏 -
Go结构体字段顺序直接影响内存占用,因编译器按对齐规则插入padding;应按unsafe.Alignof值分组排列(如8字节对齐组前置),而非简单按类型大小排序,并注意JSON、Cgo、缓存行等约束。385 收藏 -
说明 inuse_space、alloc_space 和对象生命周期的区别,帮助判断内存占用和分配压力。383 收藏 -
建立基线、压测、profile、优化、复测和回归流程,验证性能改动效果。383 收藏 -
Go进程报“toomanyopenfiles”本质是未及时关闭文件、未限制并发及系统fd配置不当;需在启动前固定系统限制,用unix.Getrlimit读取/proc/pid/limits中真实Soft值校验。379 收藏 -
桥接模式与抽象工厂结合可在Go中解耦多维变化,如通知系统通过工厂生成消息格式、桥接分离发送器与内容,实现扩展独立、灵活组合,符合开闭原则。366 收藏 -
用[]T切片实现栈最安全高效;interface{}栈因类型擦除易panic且性能差2–4倍;list.List非LIFO设计、GC压力大、缓存不友好。365 收藏 -
实际生效的依赖版本由golist-mall计算得出,而非go.mod中声明的版本;它基于最小版本选择,可能因其他依赖要求而升级。362 收藏 -
解释 GOGC、heap goal 和分配速率的关系,建立 Go 服务内存预算。362 收藏 -
整理并发治理上线前必须确认的 context、限流、连接池、降级和监控事项。357 收藏 -
合理使用Go的channel需选择合适的类型,无缓冲用于同步,有缓冲提升异步性能;发送方应及时关闭channel避免泄漏;利用select实现非阻塞操作与超时控制;减少频繁创建channel和goroutine,采用workerpool复用资源;通过fan-in/fan-out优化负载均衡,提升并发效率。351 收藏 -
配置 http.Client 和 Transport 超时,避免下游慢响应占满资源。351 收藏 -
panic不会跨goroutine传播,每个可能panic的goroutine都需自行defer+recover并执行资源清理,否则将导致静默泄漏;recover后不可继续业务逻辑,仅用于记录、降级与清理。350 收藏 -
Golang · Go教程 | 3星期前 | singleflight · 并发编程 · Go教程 · 后端工程 · Golang实战 · 缓存治理 · golang Go 并发控制 缓存击穿 请求合并 后端工程 生产实践 singleflight
从热点 Key 缓存失效导致并发回源的线上场景出发,讲清 Go singleflight 的 Do、DoChan、shared、Forget、错误传播、超时边界和上线观测。350 收藏