Go语言技术文章
-
说明 go/types.Info.Implicits 的三类 AST 键值契约,展示 ImportSpec、CaseClause 和匿名参数 Field 的读取方式,并排查未填充映射、查询节点错误与 nil 对象边界。275 收藏 -
区分系统信任扩展与私有证书池,展示PEM加载、RootCAs及专用HTTP客户端绑定,定位主机名、证书链、有效期和容器环境导致的TLS失败。486 收藏 -
Go TLS 报证书主机名不匹配时,先不要关闭证书校验。本文按连接地址、SNI、SAN、IP 地址、通配符和代理入口逐项核对,并用 VerifyHostname 给出可复用的最小复核代码。453 收藏 -
Go WebSocket 处理器同时遇到 HTTP 错误响应、握手失败和连接写入失败时,最容易出现重复写响应或错误归因混乱。本文按升级前、升级中和升级后三个边界,说明 http.Hijacker、Upgrader 和 ResponseWriter 的处理顺序。330 收藏 -
从方法、主机、路径段、尾斜杠、通配符和转义规则解释 Go ServeMux 为什么未命中,并用 Handler 返回值定位实际匹配模式。191 收藏 -
从活跃请求与停机耗时定位Shutdown等待原因,展示独立退出期限、Close回退和主函数等待,区分WebSocket、SSE及后台任务的管理范围。207 收藏 -
Go 流式响应写入后迟迟不到客户端,通常不只是少调用一次 Flush。本文从 http.Flusher、响应包装器、代理缓冲和 ResponseController 四个层面整理处理方式,并给出可回退的排障清单。359 收藏 -
本文说明 Go 自定义 http.CookieJar 必须满足的两个方法、并发安全要求、内存实现边界以及接入 http.Client 的方式,帮助读者区分测试替身和生产级 Cookie 策略。140 收藏 -
Go 的 http.Client 会在重定向时复制初始请求头,但对 Authorization 等敏感头只允许同域或受控子域继续继承。本文结合 CheckRedirect 说明如何收紧跨主机、HTTPS 降级和凭据审计边界。497 收藏 -
解释Go请求体预读后出现EOF的原因,用有界缓存和独立Reader恢复下游读取,区分服务端Body与客户端GetBody,并说明读取失败、内存成本和关闭责任。189 收藏 -
Go Transport 连接池复用失效时,不要先盲目调大连接数。本文从复用前提、Response.Body、httptrace、连接池参数和服务端边界五个方面给出排查与配置方案。429 收藏 -
Go HTTP 客户端超时并不只有一个开关。本文把一次请求拆成 DNS、TCP 连接、TLS 握手、响应头和响应体阶段,说明 http.Client.Timeout、DialContext、TLSHandshakeTimeout、ResponseHeaderTimeout 与请求上下文各自负责什么,并给出带阶段追踪的可复用配置。358 收藏 -
使用 go/parser 分析 Go 源码时,ParseComments 决定 AST 是否保留注释。本文从 ParseFile、ast.File.Comments 和声明 Doc 注释入手,给出可直接改造的解析示例。413 收藏 -
以文件摘要场景比较os.ReadFile和os.Open,解释全文切片、流式读取、固定缓冲、部分读取错误与资源关闭,避免换用Open后仍保留全部数据。114 收藏 -
围绕 Go bufio.Reader.Discard 说明完整跳过、部分跳过、EOF 和底层读取错误的判断方式,并给出固定字节跳过的安全封装与参数边界。199 收藏