Go问答技术文章
-
Go 连续读取多个 PEM 块时,第二段找不到往往不是证书不存在,而是没有继续消费 pem.Decode 返回的 rest,或忽略了 PEM 必须从行首开始、在行尾结束的格式要求。445 收藏 -
crypto/subtle.XORBytes 会按两个输入切片的较短长度写入,但输入长度不一致并不是普通截断场景。本文结合官方文档说明 dst 长度、输入长度、返回值和切片重叠的边界。418 收藏 -
Go 的 CertPool.Subjects 返回证书池中证书主题的 DER 编码,不是完整证书,也不等于系统根证书总数。本文用分层检查方法解释如何读取、解析和判断这些内容,并说明 SystemCertPool 的特殊边界。374 收藏 -
Go TLS 服务端没有按 SNI 返回证书时,先检查 ClientHelloInfo.ServerName 是否存在、证书索引是否按规范化域名匹配,以及 GetCertificate 的回退优先级。本文给出带默认站点和错误诊断的最小配置。212 收藏 -
SystemCertPool错误应先区分系统根加载、补充PEM读取解析与TLS验证阶段。文章给出保留错误链的封装,说明权限和路径分类的边界,以及平台、环境变量和缓存差异。234 收藏 -
Go net/http.Transport 升级后出现连接复用、延迟或连接数变化时,不要先猜版本回归。本文用最小客户端、httptrace、Response.Body 生命周期和显式 Transport 配置,建立一套可比较的定位方法。349 收藏 -
Go http.Client 遇到 307/308 重定向时,请求方法和请求体只有在 GetBody 可用时才能安全重放。本文说明 NewRequest 的常见 Reader 边界、自定义 Reader 的补救方式与 CheckRedirect 的控制方法。388 收藏 -
Go net/http.Transport结果不稳定时,先区分传输错误、HTTP状态与正文变化。文章说明连接复用和响应体处理误区,给出有界GET诊断示例,并用httptrace记录复用线索。163 收藏 -
围绕 Go sync.Pool 升级后命中率、对象身份和延迟变化,建立可重复的小实验,区分 API 契约、垃圾回收和业务所有权问题,并给出是否继续池化的判断清单。420 收藏 -
Go net/http.Transport 返回 error 时,先区分 HTTP 响应与传输失败,再沿错误链识别取消、超时、连接和 URL 原因,并据此安排日志与重试。419 收藏 -
Go sync.Pool 不是固定容量的对象缓存,Get 可能忽略池、池中对象也可能被自动清理。本文从 New、Get、Put 和 GC 的真实生命周期出发,排查配置看似没有生效的原因,并给出可观测、可安全归还的复用写法。485 收藏 -
sync.Pool归还对象不等于立即释放内存,也不会自动关闭外部资源。文章解释容量保留、外部引用和所有权错误,给出按容量筛选缓冲区的示例及对象池适用判断。247 收藏 -
围绕 Go sync.Pool 结果不稳定的常见现象,解释 Get 的任意取值、对象自动移除、初始化清理、所有权边界和业务状态选型,给出可复用的缓冲区排查思路。331 收藏 -
sync.Pool 的 Get 方法本身没有 error 返回值。遇到‘返回错误’时,应先区分 nil、类型断言失败和复用对象残留状态,再回到 Put 前的重置与调用方逻辑排查。486 收藏 -
Go 升级后 context.Cause 返回值变化,先不要把它当成标准库回归。应按构造函数、首次取消时机、父子 Context 和错误身份四层排查,区分 ctx.Err 的取消状态与 Cause 的具体原因。135 收藏