Go语言技术文章
-
用client-go连不上集群时,本地调试需用clientcmd.BuildConfigFromFlags()替代rest.InClusterConfig(),后者仅适用于Pod内且有RBAC的场景;批量PatchDeployment需手动循环并控制并发,不可直接goroutine泛滥。395 收藏 -
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 收藏 -
Go语言配置管理推荐使用结构体绑定、环境区分和环境变量覆盖,结合viper库实现多格式解析与性能优化,提升项目可维护性。383 收藏 -
说明 inuse_space、alloc_space 和对象生命周期的区别,帮助判断内存占用和分配压力。383 收藏 -
建立基线、压测、profile、优化、复测和回归流程,验证性能改动效果。383 收藏 -
Go进程报“toomanyopenfiles”本质是未及时关闭文件、未限制并发及系统fd配置不当;需在启动前固定系统限制,用unix.Getrlimit读取/proc/pid/limits中真实Soft值校验。379 收藏 -
Golang · Go问答 | 1星期前 | map · RWMutex · sync.Map · go并发 · Go问答 · Go channel map 并发读写 Fatal error RWMutex sync.Map
本文用完整工作流回答 Go map 并发读写为什么会崩:先复现 fatal error 和 data race,再定位共享 map,最后按场景选择 RWMutex、sync.Map 或 channel 收口,并给出上线前检查清单。379 收藏 -
这是典型的闭包变量捕获问题:for循环中复用变量i,所有goroutine共享同一地址,导致打印的都是最终值;应显式传参或在循环内创建新变量绑定当前值。375 收藏 -
Go单例测试需让出实例创建控制权:用可导出函数变量(如varNewService=func()*Service)或SetXXX设置器替代硬编码初始化,避免init(),确保测试前替换并注意并发安全。373 收藏 -
Go1.16+默认启用Modules,GOPATH非项目必需,但goinstall、goget(非模块)等仍依赖它;未设或设错会导致安装失败、路径报错等问题。368 收藏 -
本文用问答方式解释 Go map 并发读写为什么会 panic,并给出从场景判断、锁保护、sync.Map、channel 单写到压测检查的完整选型流程。368 收藏 -
桥接模式与抽象工厂结合可在Go中解耦多维变化,如通知系统通过工厂生成消息格式、桥接分离发送器与内容,实现扩展独立、灵活组合,符合开闭原则。366 收藏 -
用[]T切片实现栈最安全高效;interface{}栈因类型擦除易panic且性能差2–4倍;list.List非LIFO设计、GC压力大、缓存不友好。365 收藏