Go教程技术文章
-
SetConnMaxIdleTime 用来限制连接在池中连续空闲的最长时间,过期连接可能由清理器或复用前检查惰性关闭。它应与 MaxIdle、MaxOpen 和 MaxLifetime 配合,并通过 DB.Stats 观察淘汰计数。271 收藏 -
Go 批量查询不能只检查 QueryContext 和 Scan。本文用稳定主键游标分批读取数据,并在每页推进游标前检查 Rows.Err、处理 Close 错误与上下文取消,避免把半页结果误判为成功。270 收藏 -
讲清 Go 使用 klauspost/compress/zstd 解压连续多帧数据时的四层内存边界:压缩输入、窗口、并发缓冲和累计输出,并给出流式硬上限实现与边界测试清单。269 收藏 -
Go 1.27 的 encoding/json/v2 可以通过 jsontext.Decoder 和 UnmarshalDecode 逐个读取连续的顶层 JSON 值。本文用完整 Go 示例说明 io.EOF 收尾、语法与语义错误边界,并比较单值 Unmarshal、v1 Decoder 与 JSON 数组的选择。269 收藏 -
Go exec.Cmd 应从命令环境副本追加受控覆盖,避免显式 Env 丢失继承项。本文说明 nil 与空切片、Dir 和 PWD、空值与删除,并给出完整示例及敏感变量继承的限制。269 收藏 -
用 Go os.CreateTemp 在目标目录创建 0600 临时文件,完成写入与同步后再 Rename 替换目标,覆盖清理、并发、权限和跨平台边界。268 收藏 -
Go 1.23 引入 iter.Seq 后,可以把过滤逻辑封装成惰性迭代器。本文从 yield 控制出发,演示多个过滤条件如何组合,以及下游返回 false 时怎样让上游及时停止。268 收藏 -
Go map遍历顺序不应作为输出契约。本文用键切片排序和Go 1.23+的maps.Keys与slices.Sorted,演示如何在不修改原始map的前提下稳定输出配置项,并说明字符串键、数值键、空Map与并发边界。267 收藏 -
介绍 Go 1.24 及以上如何使用 crypto/x509 的 CertificatePolicies 限制证书链策略 OID,并说明策略图、anyPolicy、版本边界和排查方法。267 收藏 -
Go atomic.Int64保证单字段操作原子,但多个Load不构成同一时刻快照。本文用完整小程序说明并发加减、运行期采样、最终计数与周期取差,并归纳重置和对象复制的边界。267 收藏 -
Go net/url 解析带端口的域名和 IPv6 URL 时,Host、Hostname()、Port() 容易混用。本文用最小示例说明如何读取主机与端口,并处理方括号、Zone、缺失端口和非法端口边界。267 收藏 -
说明 Go bufio.Writer 在 Write 或 Flush 失败后的正确收尾:仍然关闭底层资源,区分并组合写入、Flush、Close 错误,避免错误锁存后的无效重试。266 收藏 -
用 Go tls.Config.GetCertificate 根据 SNI 动态选择证书,覆盖精确匹配、通配符、默认回退、并发读取与热更新边界。265 收藏 -
讲清 Go bufio.Reader.Peek 预读固定协议头时的参数、缓冲区和切片生命周期边界,并用 8 字节 TCP 协议头示例处理 ErrBufferFull、截断输入、长度校验与安全消费。265 收藏 -
Go Fuzz 的种子语料可以分成代码里的 f.Add 样本和 testdata/fuzz/FuzzTestName 目录语料。本文用一个可迁移的 FuzzDecode 示例说明两种来源怎样配合、目录文件怎样命名、参数类型怎样对齐,以及失败样本如何沉淀为回归用例。265 收藏