Go语言技术文章
-
Go 使用 archive/tar 解包时,先用 filepath.IsLocal 限制归档成员名,再区分目录、普通文件和链接条目,避免路径穿越与越界写入。230 收藏 -
Go sync.Map.Swap 会原子替换键对应的值,并用 loaded 返回值告诉你键此前是否存在。本文用并发状态更新场景说明如何识别首次写入,为什么不要用先 Load 再 Store 代替,以及怎样把返回值接入审计和保护逻辑。230 收藏 -
Go TLS 通过 tls.Config.NextProtos 声明 ALPN 应用层协议候选,再用 ConnectionState.NegotiatedProtocol 读取实际协商结果。本文说明客户端、服务端配置,以及匹配、空结果和不兼容边界。230 收藏 -
通用字段读取逻辑经常同时遇到普通值、指针和接口包装值。本文只围绕 reflect.Value 的 Kind 与 Elem,给出安全归一化、nil 处理和按最终 Kind 读取字段的 Go 写法。230 收藏 -
encoding/csv.Reader 默认会用第一条记录的字段数约束后续记录。本文说明 FieldsPerRecord 的三种配置方式,演示如何在严格校验、可变列和保留错误行之间做选择,并处理字段数量变化带来的导入问题。230 收藏 -
Go crypto/tls 的 ConnectionState 会记录 TLS 连接的协商状态,其中 DidResume 用于表示本次连接是否从既有会话成功恢复。本文说明读取时机、首次握手与会话恢复的区别,以及如何把结果用于日志和指标。230 收藏 -
Go map 可以在 range 遍历中删除已经判定过期的键,但新增键本轮是否出现没有保证。本文结合缓存清理场景说明直接删除、先收集再删除和延后新增的取舍。230 收藏 -
Golang · Go问答 | 3星期前 | 连接池 · 性能排查 · HTTP客户端 · Go问答 · Go 连接复用 MaxIdleConns http.Transport MaxIdleConnsPerHost MaxConnsPerHost
Go http.Transport 的 MaxIdleConnsPerHost 控制每个主机保留的空闲 keep-alive 连接数,不等于并发总数或所有主机总量。本文区分相关字段,并给出长期复用 Transport 的配置方式和连接复用排查路径。230 收藏 -
用 github.com/google/uuid 处理 UUID 字符串时,外部输入应使用 Parse 并保留 error,固定可信常量才使用 MustParse,统一输出交给 String;严格 API 外形还要额外约束。230 收藏 -
说明 Go 1.27 在 macOS 上使用 SSL_CERT_FILE 和 SSL_CERT_DIR 的规则,结合证书来源、进程环境、证书池缓存与客户端示例,解释生效条件、错误判断和恢复方法。230 收藏 -
Go regexp.Regexp SubexpIndex 返回命名捕获组的数字下标,不存在时返回 -1。本文拆开说明组名存在、输入匹配和本次捕获值三种状态,给出安全读取命名组的原创示例。230 收藏 -
strings.Builder.Reset 会清空已写内容;复用时应分别观察 Len 与 Cap,再按下一轮写入规模决定是否 Grow,并避开复制非零 Builder 的风险。230 收藏 -
说明 Zerolog UpdateContext 修改共享上下文的并发风险,用完整 Go 示例派生任务局部子日志器,区分结构体浅拷贝、事件字段、Writer 同步及回滚观察项。230 收藏 -
用 Gonum distuv.Normal 的 CDF 与 Survival 计算正态分布左尾、右尾和双侧尾部概率,解释 Mu、Sigma 与 z 分数的边界。230 收藏 -
用完整包路径、类型和方法定向查询 Go 文档,按需使用 -src 查看实现,并用 go list 查找本地源码目录,区分符号查询、展示选项与文件位置。230 收藏