Go语言技术文章
-
Go goroutine 泄漏不能靠单次数量下结论。本文给出受控 pprof 端点、基线与增量样本、debug 文本栈和负载记录的组合方法,用持续增长堆栈定位阻塞点并完成修复复测。104 收藏 -
用 Go 1.24 的 os.OpenRoot 建立插件目录边界,通过 Root 方法和 Root.FS 读取相对文件,处理路径遍历、符号链接、资源关闭及挂载点等实际限制。104 收藏 -
用 Go os.CreateTemp 创建临时文件时,创建、写入、关闭和删除是四个不同责任。本文给出一套保留原始错误、无论成功失败都清理文件的实践写法。103 收藏 -
Go 1.27 的可移植 simd 包在 CPU 不支持 SIMD 时会使用纯 Go 仿真实现;部分能力不足时默认降到可用向量宽度或仿真,但强制宽度可能触发 panic。103 收藏 -
下游接口少量请求只是变慢而没有失败时,可以用 Go 的 net/http 与 context 为幂等读取请求增加受控副本:设置对冲延迟、共享总截止时间,首个成功后取消其余副本,同时限制额外流量。103 收藏 -
使用 afero.NewReadOnlyFs 把可写的 afero.Fs 包装成只读视图,明确读取、Stat、已存在目录与创建删除重命名等修改操作的边界,并给出可回滚的注入方式。103 收藏 -
huh 表单结束后变量仍是旧值,通常是 Value 绑定了副本、变量被遮蔽,或 Run 没有完成。本文给出指针绑定、状态判断和 Key 读取的排查方法。103 收藏 -
Go toolchain 自动下载失败时,可以根据项目是否允许升级,选择 GOTOOLCHAIN=local 或 go1.x.y+path 固定本地工具链,并检查 go.mod、go.work 与 PATH 中的版本关系。103 收藏 -
使用 Go sync.OnceValue 缓存一次计算值,排查重复创建 getter、初始化阻塞与可变返回值共享问题,并说明 panic、零值和缓存生命周期的注意点。103 收藏 -
Golang · Go问答 | 2星期前 | HTTP · Cookie · net/http · Go问答 · cookie Go net/http CookiesNamed Request.Cookies
解释 Go Request.Cookies、CookiesNamed 和 Cookie 在同名 Cookie 请求头下的读取顺序与选择语义,给出重复值排查示例、版本边界和登录态处理策略。102 收藏 -
用 Go 1.27 的 goroutineleak profile 按创建栈聚合泄漏样本,结合 pprof top 与 list 定位阻塞源码,并说明 channel、sync 与 IO 场景的判断边界。102 收藏 -
Go 1.27 的 goroutineleak 剖析没有业务标签时,仍可从永久阻塞的操作栈回溯到调用者和 goroutine 创建点。本文给出 pprof 接入、采集、定位与修复方法。102 收藏 -
Golang · Go问答 | 1星期前 | 错误处理 · Context · 并发编程 · go语言 · Go context context.Cause 取消原因 WithCancelCause CancelCauseFunc
context.Cause 返回父级原因,是因为父级取消会向子级传播,而子级或任一父级的首次取消会固定该子级的 cause。本文用两种取消顺序说明 Err、Cause、超时和 WithoutCancel 的边界。102 收藏 -
Go csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片可能复用上一轮的底层数组。本文用一个导入场景说明覆盖原因,并给出立即消费、复制保存和异步传递时的选择方法。102 收藏 -
Golang · Go问答 | 3天前 | JSON · 基准测试 · go · pprof · 性能排查 · 内存分配 encoding/json pprof Go JSON JSON性能 go test benchmark
Go JSON 编解码慢时,不要只看 ns/op。本文用固定输入、benchmem、CPU profile 和内存 profile,区分 JSON 计算热点、短命对象分配与存活堆增长,再按证据选择优化动作。102 收藏