Go语言技术文章
-
用 GOOS、GOARCH 和 CGO_ENABLED=0 为 Linux ARM64 构建纯 Go 程序,并说明遇到 import C 或外部 C 库时应如何判断和处理。375 收藏 -
Go 的 build tag 不是只作用于测试文件。本文拆开构建约束、_test.go 后缀和 go test 文件选择规则,给出用 go list 与 go test 定位测试覆盖问题的方法。375 收藏 -
Go context.AfterFunc 适合绑定超时、上游取消等退出路径的补偿清理。本文用连接读截止时间示例说明 stop 返回值、清理完成同步、幂等和正常完成路径的边界。375 收藏 -
Go 程序在精简容器中调用 time.LoadLocation 报 unknown time zone,通常是镜像没有 IANA 时区数据。本文按查找顺序解释根因,并比较安装 tzdata、嵌入 time/tzdata 与显式加载数据的取舍。375 收藏 -
strings.CutPrefix 不只是删除前缀,更重要的是用 found 明确控制后续分支。本文从协议识别、多个业务前缀、空前缀和旧 Go 版本兼容几个边界,整理一套可复用的判断写法。375 收藏 -
通过一个带节点句柄的任务队列,说明 Go container/list 中 Element 的归属、插入、移动、移除和常见生命周期边界。375 收藏 -
Go 并行子测试要在各自的回调里调用 testing.T.TempDir,让每个用例获得独立且自动清理的目录;父测试提前创建目录再传递会造成共享写入。本文说明目录隔离、并行等待、清理边界和排查清单。375 收藏 -
Go atomic.Value 适合保存读多写少的只读配置快照。本文从首次 Store、并发 Load、复制旧值到一次性替换,给出可复用的实现方式,并标出类型一致、原地修改和生命周期边界。375 收藏 -
Go HTTPS 客户端同时访问公网和企业内网服务时,可先复制系统根证书池,再追加业务 PEM 根证书,并通过 tls.Config.RootCAs 交给 HTTP Transport。本文给出配置代码、参数边界和排查清单。375 收藏 -
Go 文件遍历中不要直接比较 fs.FileMode 的完整整数。本文用 IsDir、IsRegular、Type 和 ModeType 组织一套兼容判断,并说明 DirEntry.Type 为零时为什么还要回退到 Info。375 收藏 -
Golang · Go问答 | 2个月前 | goroutine · pprof · Go问答 · 线上排查 · pprof goroutine泄漏 服务告警 Go问答 context取消 Go线上排查
Go 服务里 goroutine 数上涨不一定就是泄漏,关键要看是否持续不回落、相同栈是否反复堆积、请求结束后资源是否仍被占用。用 pprof 连续快照、堆栈对比和小流量验证,可以把判断和处理做得更稳。374 收藏 -
Golang · Go问答 | 1个月前 | golang · 连接池 · database/sql · Go问答 · 连接池 事务 DBStats rows.Close Go database/sql
Go database/sql 里漏掉 Rows.Close,问题往往不是某一次查询报错,而是连接长期被结果集占着,最终让连接池等待堆积。本文从 DBStats 指标和事务生命周期入手,复现现象,解释 Rows、Tx 与连接归还的关系,并给出可复查的代码边界。374 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 内容复制到磁盘,但不会覆盖已有文件。本文用一个配置目录示例讲清创建权限、覆盖错误、符号链接和可重复部署的核对方法。374 收藏 -
用一个可运行的小例子说明 Go embed.FS 读取嵌套资源时的路径规则、fs.ValidPath 校验边界与错误处理方式,避免把磁盘路径习惯带进嵌入文件系统。374 收藏 -
Go 服务收到 SIGINT 或 SIGTERM 后,不能只依赖进程直接退出。本文拆解 os/signal.NotifyContext 如何把信号转成 context.Done,说明 stop 的资源释放、取消传播和优雅退出的验收边界。374 收藏