Go语言技术文章
-
Go HTTP 客户端的 goroutine 并发不等于连接会无限并行。本文围绕 Transport 的 MaxConnsPerHost、MaxIdleConnsPerHost 和请求排队关系,给出复用 Client、设置连接预算以及保留超时和响应体关闭的处理方式。415 收藏 -
Go HTTP/2 请求遇到 stream reset 时,先根据 Response 是否存在判断响应头是否到达,再把 StatusCode 与 Body.Read 错误分开记录,最后结合幂等性决定重试。221 收藏 -
Go 基准的 ReportMetric 只报告传入的数值,不会自动按 /op 归一化。本文用批处理示例说明总量除以 b.N、固定单次值、单位约束、重复覆盖、计时重置与默认指标的关系。403 收藏 -
Go 的 crypto/rand.Read 保证填满目标切片且不把随机源错误作为普通返回值;需要观察短读、EOF 或可替换 Reader 时,应使用 io.ReadFull,检查 n 与 err,并丢弃不完整随机字节。209 收藏 -
本文说明如何用 testing.T.Setenv 临时修改测试环境变量、自动恢复原值,并解释它为什么不能与 t.Parallel 或并行祖先同时使用。313 收藏 -
Go 比较敏感摘要时,应对等长字节序列使用 crypto/subtle.ConstantTimeCompare;HMAC 校验优先使用 hmac.Equal。本文说明长度不一致会立即失败、返回值如何判断,以及摘要编码和最小测试的边界。468 收藏 -
重复压缩短消息时,每次调用 flate.NewWriter 都会重新建立编解码器。本文围绕 Writer.Reset、Close、Flush 和 Reader 的 Resetter 接口,说明怎样复用编解码器、切换输出目标,并处理池化对象的生命周期与异常大缓冲。460 收藏 -
Go 打包 ZIP 时可通过 FileInfoHeader 或 SetMode 写入模式,再用 CreateHeader 创建条目。本文用普通脚本分发示例说明名称、压缩方式、归档关闭和 Mode 读取,并区分权限记录与目标环境恢复。219 收藏 -
Go 的 archive/tar 会把 PAX 扩展头关联到后续条目。本文用 Reader.Next 顺序读取 tar,说明长路径应看 Header.Name,自定义 PAX 键值应看 Header.PAXRecords,并列出格式判断和兼容边界。408 收藏 -
用 Go filepath.EvalSymlinks 解析符号链接后的目标路径,区分相对路径、目标缺失、权限错误和链接循环等边界。376 收藏 -
Go 可以用 //go:embed 把模板目录编译进程序,再把 embed.FS 交给 html/template.ParseFS 读取。本文重点说明目录匹配、正斜线路径、错误处理和复用方式。495 收藏 -
filepath.Base 会先去掉末尾路径分隔符,再提取最后一个元素;空路径返回点号,只有分隔符的路径返回单个分隔符。本文用边界表和可复用代码说明这些结果,并区分 filepath 与 path 的使用场景。412 收藏 -
用 Go 的 os.ReadFile 读取配置文件时,不要比较错误字符串。本文用 errors.Is 和 errors.As 区分权限不足、路径不存在与其他失败,并通过 %w 保留可追踪的错误链。309 收藏 -
Go 1.24 提供了 os.Root。本文说明如何用 os.OpenRoot 建立目录边界,再通过 Root.Open 打开相对文件,并区分普通子路径、目录回退、越界路径和符号链接的处理方式。127 收藏 -
Go 使用 os.OpenRoot 建立可信目录句柄后,可通过 Root 方法按相对名称访问文件。本文给出有限文本预览示例,说明路径拼接、符号链接、平台例外、业务授权及句柄关闭各自的边界。122 收藏