Go问答技术文章
-
介绍 Go 中 GODEBUG=http2debug=1/2 的使用边界,先确认 HTTP/2 协议,再按 stream ID 和关键帧定位连接、流控、RST_STREAM 与 GOAWAY 问题。310 收藏 -
sync.Cond.Signal 不会保存没有等待者时发出的通知,真正应该持久化的是 ready、队列长度或关闭状态等共享条件。本文用同一把 Locker 保护条件读写,说明如何用 for 设计不会因 Signal 先到而永久等待的等待协议。310 收藏 -
Go 双向 TLS 认证中,tls.Config.GetClientCertificate 可以根据服务端的证书请求选择客户端证书。本文说明 CertificateRequestInfo 的筛选信息、回调返回值、错误与空证书边界,以及它和 Certificates 字段的关系。310 收藏 -
Go 1.27 模块的 traceback 首行可能出现 runtime/pprof goroutine 标签,这通常是预期的诊断信息,不是 pprof 采集失败。本文说明标签来源、与 profile 数据的区别,以及需要隐藏时如何设置 tracebacklabels=0。309 收藏 -
Golang · Go问答 | 2星期前 | HTTP客户端 · Go问答 · 排错 · Go net/http Transport Response.Body HTTP连接复用 io.ReadCloser
Go net/http 的 Response.Body 是 io.ReadCloser,关闭负责资源交接,是否读到 EOF 则会影响 HTTP/1.x 持久连接能否复用。本文解释只 Close 与读完再 Close 的差异,并给出小响应和大响应的处理写法。309 收藏 -
Go x/text/unicode/bidi 处理的是逻辑顺序到视觉顺序的双向文本布局,不是把 UTF-8 字节倒序。本文说明 Paragraph.Order、Ordering、Run 与 ReverseString 的职责边界,并给出混合方向文本的处理方式。309 收藏 -
crypto/ecdh 没有 ParsePrivateKey,Bytes 的原始私钥字节应通过指定曲线的 NewPrivateKey 恢复。示例保存格式版本、曲线与 Base64 载荷,并解释原始编码与 PKCS#8 的区别。309 收藏 -
Go regexp.Regexp 返回空字符串不一定是没有匹配,边界断言和可选量词可能只匹配一个位置。本文用 FindStringIndex 区分 nil、零宽匹配和真实文本,并说明多行模式与中文 边界的处理方式。309 收藏 -
Go 的 base64.Encoding.DecodedLen 返回的是解码数据的最大字节数,Decode 再返回实际写入长度。本文用 StdEncoding、RawStdEncoding 和 AppendDecode 说明怎样分配缓冲区、截取有效数据并处理部分解码错误。308 收藏 -
Go build ID 用于构建关联,-s、-w 控制符号和调试信息。本文比较默认与裁剪方案,给出发布命令示例,并说明精确制品、诊断材料与发布清单的关联责任。308 收藏 -
解释 go-imap v2 FetchCommand 的流式消费、关闭收尾和错误处理,给出可靠 Go 示例及等待耗时、内存成本的比较方法。308 收藏 -
Go AST 中 FieldList.List 统计的是 Field 节点分组,不一定等于参数个数。本文用源码示例说明 Field.Names、NumFields 与可变参数的边界。308 收藏 -
Go net/http.Request 的 GetBody 为空时,已经读取过的 POST Body 不能直接重试。本文说明 NewRequest 的自动填充条件,并用请求体工厂为每次重试创建新的 Request 和 Body。308 收藏 -
os.Root.OpenFile 只允许在已打开的根目录树内访问文件。本文从相对路径、..、绝对路径和 PathError 四个角度解释越界失败的原因,并给出安全的错误处理与选型边界。307 收藏 -
ParseRequestURI 面向 HTTP 请求中的绝对 URI 或绝对路径;如果把不带协议的 host/path 当成完整 URL,解析就会失败。本文用 Go 示例区分它与 url.Parse 的适用边界。307 收藏