Go问答技术文章
-
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 debug/dwarf LineReader可在无行表时返回nil且无错误。本文说明编译单元输入要求、三种返回状态及Next的EOF处理,避免空指针和调试信息误判。376 收藏 -
区分 Go debug/dwarf 中两个 SeekPC 的查询对象,按地址空间、DWARF 范围和返回地址偏移排查 ErrUnknownPC,并给出重复查询的索引方案。471 收藏 -
Go RIFF 声明长度超过实际输入时应返回截断错误。本文说明头部解析成功的限制,并给出总长度比较、块数据计数和完整扫描的处理写法。209 收藏 -
说明 Go x/image/font/opentype 中 Font、Face 和字体源数据的生命周期区别,给出多个字号分别创建 Face、并发使用与逐个 Close 的资源管理写法。358 收藏 -
Go x/image/font/sfnt 的 Font 方法可以并发调用,但同一个 *sfnt.Buffer 不能被并发复用。本文结合 GlyphIndex、Metrics 和 LoadGlyph 说明独立 Buffer、nil Buffer、sync.Pool 借还边界,以及返回 Segments 前必须复制的原因。378 收藏 -
Go x/text/width 的 Widen 处理半角片假名时,半角浊音符号可能变成组合标记。本文说明宽度映射与 NFC 规范化的区别,并给出原文、展示值和比较键的分层写法。439 收藏