Go语言技术文章
-
Go PGO 没有明显收益时,从生产 profile 的代表性、合并采样时长、default.pgo 位置和 -pgo 对照构建四个边界逐层排查。150 收藏 -
Go 中使用 bufio.Reader.Peek 查看协议头或下一行前缀而不推进读取位置,本文说明逐步探测、切片复制、长行和 ErrBufferFull 的处理边界。150 收藏 -
Go HTTP 请求取消后,Transport 如何处理连接、请求体、响应体和错误?本文按 RoundTrip 的实际边界解释 context.Canceled、超时与连接复用。150 收藏 -
用一个可切换位序的 Go LZW 往返小工具讲清 NewWriter 的 LSB 与 MSB 选择:GIF 用 LSB,PDF 用 MSB,自定义协议需显式约定,TIFF 应使用专用实现。150 收藏 -
Go Ristretto v2 通过 Config.Metrics 开启运行时指标,再从 cache.Metrics 读取 Hits、Misses 和 Ratio。本文用一组最小 Go 配方说明命中比例的公式、Wait 的可见性作用、Set 的异步语义与累计统计口径。150 收藏 -
Go plugin 的兼容性不能只看 .so 文件是否存在。本文按 plugin.Open、Lookup、类型断言和构建环境四道门禁拆解动态符号检查,给出统一导出类型、保留错误上下文和避免运行期崩溃的原创示例。150 收藏 -
Go 的 JSON 数字进入 interface{} 后默认会解码为 float64。本文解释原因,并用结构体、Decoder.UseNumber 和 json.Number 给出固定字段与动态字段的处理方案。150 收藏 -
Go 的 Write 成功只表示数据已经交给文件对象,File.Sync 才负责把当前文件内容提交到稳定存储。本文用临时文件替换配置的完整顺序说明 Sync、Close、Rename 和目录项持久化的边界。150 收藏 -
Go 1.27 新增的 go/types.Hasher 为 types.Type 提供了与 Identical 一致的等价关系和哈希函数。本文说明如何接入 hash/maphash、何时选择 HasherIgnoreTags,以及为什么它适合进程内类型缓存而不适合密码学摘要或跨进程持久化键。150 收藏 -
Go log/slog 中真正负责展开 LogValuer 的是 slog.Value.Resolve。本文说明 Attr、Value 与 LogValuer 的关系,讲清嵌套返回值、Group 不递归和递归保护边界,并给出自定义 Handler 的处理顺序。150 收藏 -
Go 的 net/http.Transport.MaxResponseHeaderBytes 用来限制客户端接收的响应头总字节数。本文说明正数阈值、零值默认行为、超限错误与 Transport 复用时的配置边界。150 收藏 -
Go Validator 的标签语法会把逗号当作规则分隔符、把竖线当作 OR 分隔符。本文说明为什么它们不能直接写进参数,以及如何用 0x2C 和 0x7C 稳定表达要排除的字符。150 收藏 -
Gonum stat.Correlation 遇到常量序列时,分母中的标准差为零,相关系数没有定义。本文用最小示例解释 NaN 的来源,并给出长度、权重和有效方差检查方案。150 收藏 -
用 gopacket/layers 构造 Ethernet、IPv4、UDP 和 Payload 层,开启长度与校验和修复,再通过 pcapgo.Writer 写入带文件头和捕获信息的离线 PCAP 文件。150 收藏 -
Go 验证码既要在生产环境使用安全随机源,又要让单元测试可重复。本文用一个可注入的随机整数接口,把 crypto/rand 与固定序列测试替身分开,并覆盖长度、字符表和错误处理边界。150 收藏