-
Go 自定义根证书未生效时,先核对 Client 与 Transport 的配置归属,再区分信任链和主机名错误。通过本地 HTTPS 服务与两种证书池构造最小复现,并说明 PEM 加载、连接复用和 CA 轮换的处理方法。
-
mime.WordDecoder 遇到非内置字符集时,关键不是重写邮件头解析,而是让 CharsetReader 把指定字符集的字节 Reader 转成 UTF-8。本文从故障表现、回调输入到 Windows-1252 接入,说明 DecodeHeader 的错误边界与回归检查点。
-
用一个阻塞处理器构造 Go http.Server 优雅关闭的最小复现,再结合 ConnState、请求上下文和超时区分活动请求、空闲连接与 hijack 连接。
-
StateIdle 表示请求处理完成后的 keep-alive 等待,并不等于连接泄漏。本文用 http.Server.ConnState 记录状态和时间戳,再结合 IdleTimeout、StateClosed、HTTP/2 与 Hijacked 边界判断长期停留是否正常。
-
Go http.Client 请求超时却没有按预期结束,常见原因是使用了零值 Timeout、忽略了响应体读取阶段,或把 HTTP 状态错误误当成传输错误。本文用 httptest 构造延迟响应头的最小复现,并对比 Client.Timeout 与请求级 Context 的使用边界。
-
io.MultiReader 会把当前 Reader 的 EOF 当作这一段结束并继续读取后续 Reader,只有全部输入结束才向外返回 EOF。本文用最小示例区分中间 EOF、真实错误、空输入和资源关闭边界。
-
Go httptrace.GetConn 可以记录 Transport 在连接阶段准备处理的 host:port。本文说明如何绑定 ClientTrace、区分 GetConn 与 GotConn,并处理代理、并发回调和 Response.Body 清理边界。
-
Go net/http.Transport 连接池不复用时,先确认 Transport 是否被重复创建,再用 httptrace.GotConn 判断 Reused 和 WasIdle,最后检查 Response.Body、Keep-Alive 参数与服务端连接边界。
-
Go crypto/sha256.New224 返回 SHA-224 的 hash.Hash,摘要长度由 Size224 固定为 28 字节。本文结合分段写入、Sum 追加语义和一次性 Sum224,说明如何正确输出摘要并避免把切片前缀或哈希状态理解错。
-
本文用一个可复用的最小示例说明 Go context.AfterFunc 如何在上下文取消后安排异步清理,重点解释 stop 返回值、清理完成通知、竞态和幂等边界。
-
Go context.WithCancelCause 适合把批处理中的首个取消原因沿 Context 传给调用方。本文区分 Err 与 Cause,给出批次级 worker 示例,并说明如何用稳定错误和一次派生上下文减少额外结果包装与分配。
-
本文用一个小型 Go 示例说明 weak.Make、weak.Pointer.Value、nil 输入和 runtime.KeepAlive 的关系,帮助你判断弱引用适合缓存还是不适合承担生命周期保证。
-
context.WithCancelCause 让调用方既能判断上下文已经取消,又能读取导致取消的具体错误。本文用一个可复用的 worker 示例说明 cancel、Cause、父子上下文和 nil cause 的边界。
-
Go 的 crypto/sha512.New384 返回 SHA-384 哈希对象,摘要原始长度固定为 48 字节。本文结合 hash.Hash、Sum 的追加语义和十六进制编码,说明如何避免把字节长度误读成字符串长度。
-
本文说明 Go crypto/subtle.ConstantTimeByteEq 的 uint8 参数、1/0 返回值、最小封装,以及它与 ConstantTimeEq 和 ConstantTimeCompare 的适用边界。