Go语言技术文章
-
用 Go 的 jobs channel、context 和 sync.WaitGroup 设计 worker pool 的优雅停止与强制取消,明确任务回收、结果关闭和 Submit 并发边界。130 收藏 -
Go 配置 CipherSuites 后连接失败,需先区分协议版本与套件范围。本文解释 TLS 1.3 配置限制、TLS 1.2 兼容条件及握手观测方式,并提供保留证书验证的诊断代码。130 收藏 -
Go 1.24+ 可以通过 http.Server.HTTP2 和 HTTP2Config.MaxConcurrentStreams 设置服务端 HTTP/2 并发流上限。本文区分每连接限制、全局请求并发和 Transport 的跨连接行为,给出配置与排查清单。130 收藏 -
go env -w 会把 Go 环境变量的默认值写入每用户配置文件,适合持久化 GOPROXY、GOFLAGS 等工具链设置。本文比较它与 export、命令行参数和项目配置的边界,并给出读取、撤销和协作场景的选择方法。130 收藏 -
Go buildutil.ExpandPatterns 根据构建上下文展开包路径模式。本文给出集合转有序清单的写法,说明包含与排除的顺序、工作区范围,以及它与模块加载和构建验证的区别。130 收藏 -
Go GC 参数改变后,不能只看一条 gctrace 日志判断接口延迟。本文区分 GOGC、GOMEMLIMIT 与 GODEBUG 的职责,用 GC 摘要、暂停分位数和执行追踪建立同一负载下的对照方法。130 收藏 -
Go database/sql 不能把 SQL NULL 直接扫描到 string。本文说明 NULL、空字符串和默认文本的区别,并比较 sql.NullString、*string 与 COALESCE 的适用边界。130 收藏 -
先处理 WalkDir 回调错误再访问目录条目,用完整只读统计工具区分根失败、子目录权限遗漏和主动排除,并解释 SkipDir、部分结果与退出状态。130 收藏 -
Go HTTP 服务调用 Server.Shutdown 后仍不退出,多半是活动长请求或 hijack 连接没有收到应用级关闭信号。本文按连接状态给出排查、通知与等待方案。129 收藏 -
Go http.Request FormValue 会隐式解析表单并忽略错误,导致空字符串掩盖正文损坏或字段缺失。本文给出 ParseForm、ParseMultipartForm、PostForm 与错误校验的清晰边界。129 收藏 -
Go encoding/json/v2 的 Options 不是一份只能全局修改的开关表,而是可以随调用组合的配置值。本文用编码、解码和 v1 兼容三个场景说明选项作用面、覆盖顺序与迁移边界。129 收藏 -
go-geom 的 SRID 是几何对象上的参考系标识,不是投影计算器。本文用 SetSRID、TransformInPlace 和 EWKB 例子说明为什么修改 SRID 不会改坐标,以及真正变换坐标时应如何划分责任。129 收藏 -
解释 OffsetWriter 的起点映射、Write 与 WriteAt 游标差异、Seek 支持范围,给出局部写入示例,并明确它不提供写入长度上限及底层关闭责任。129 收藏 -
设置 ClientSessionCache 后 DidResume 仍为 false,常见原因是把连接复用误当成 TLS 会话复用,或缓存没有跨连接共享。本文用可复用的 LRU 缓存和最小 HTTPS 示例拆开三层条件,并给出生产排查与安全配置要点。129 收藏 -
Go clean -cache 后构建仍像使用旧文件,通常不是缓存没有清干净,而是实际构建输入、模块目录、测试缓存、cgo 外部库或旧二进制路径出了偏差。本文给出一套从 go env、go list 到 -a 和 GODEBUG 的排查顺序。128 收藏