Go问答技术文章
-
Go test 输出 cached 并不代表环境变量读取失败,而是成功测试结果可能被复用。本文解释缓存输入、环境变量边界、GODEBUG 线索和 -count=1 的正确用法。468 收藏 -
Go 的 TCP KeepAlive 只能帮助内核探测部分失联场景,不能证明对端应用仍能处理业务。本文用职责对照和 Go 代码说明如何组合 TCP 探测、ping/pong、截止时间与重连策略。468 收藏 -
io.Pipe 写入阻塞常与同步背压、消费者提前退出及关闭责任有关。本文给出一读一写的完整示例,说明消费失败如何关闭读端通知写端,并比较 Pipe、内存缓冲和有界队列的适用边界。468 收藏 -
time.Ticker.Stop 只负责停止后续计时,不承诺把已经进入通道的值清空。本文从定时刷新任务的退出现场出发,拆解停止语义、旧值竞态、goroutine 泄漏与可验证的退出写法。467 收藏 -
Go HTTP 客户端偶发变慢时,只看总耗时很难判断问题在 DNS、建连、TLS 还是服务端首字节。本文用 net/http/httptrace 的 ClientTrace 串起关键回调,区分连接复用与新建连接,并给出可落地的耗时记录和排查边界。467 收藏 -
encoding/binary.Append 会把固定大小数据追加到已有字节切片,并返回可能扩容后的新切片。正确承接返回值,才能同时处理底层数组复用、容量变化和不支持类型的错误。467 收藏 -
Go 1.27 为 go test -json 的 output 事件增加可选 OutputType。通过 Action、Package、Test、OutputType 和 FailedBuild 的组合,解析器可以区分测试框架帧、失败首行、失败续报与构建失败,避免 CI 报告重复计数。467 收藏 -
排查 archive/zip 注册压缩器后没有调用的问题,重点检查 method ID、CreateHeader、CreateRaw、Copy、Writer 实例与注册时机。467 收藏 -
encoding/json/v2 默认拒绝 JSON 对象中的重复成员名,因为不同实现可能对重复值采用不同合并规则。本文对比 v1 与 v2 的语义,演示 AllowDuplicateNames 的兼容边界,并给出上游修复与局部适配方案。467 收藏 -
Excelize 的 StreamWriter 写完行并不等于工作表流已经结束。本文把 SetRow、Flush 和 SaveAs 放在同一条边界线上解释,说明为什么 Flush 必须位于每个工作表的流式写入末尾,以及 AddTable、递增行号、普通模式混用和大数据量临时文件等容易混淆的地方。467 收藏 -
bufio.Reader.Peek 返回长度不足时,不能只看切片长度或直接索引请求位置。本文区分 ErrBufferFull、EOF 和底层错误,说明 Peek 不推进读取位置的边界,并给出复制预览结果、再用 io.ReadFull 消费固定长度的处理方式。467 收藏 -
Golang · Go问答 | 2个月前 | web安全 · net/http · Go问答 · origin csrf Go 1.25 http.CrossOriginProtection Sec-Fetch-Site
Go 1.25 的 http.CrossOriginProtection 能拦截非安全跨源浏览器请求。本文从 Handler 接入、Origin 白名单和安全方法边界说明它适合替代哪些旧防护,以及上线前要补的检查。466 收藏 -
Go 的 bytes.Cut 适合按首个分隔符拆出 before、after 和 found 三个结果。本文从空片段、缺少分隔符和请求头解析中的误判出发,说明如何用 found 区分合法空值与格式错误。466 收藏 -
Go 1.27 调整了 pkix.RDNSequence.String 和 Name.String 对未知 OID 字符串属性的展示方式。本文说明哪些日志与快照会变化,以及如何避免把格式化文本当成稳定协议。466 收藏 -
Go 的 sql.DB.Ping 只能说明连接探活成功,不能替代真实 SQL、权限、事务和连接池检查。本文给出分层排查与健康检查设计方法。466 收藏