Go问答技术文章
-
UDPConn.ReadFrom 没有数据时会持续阻塞。本文用 SetReadDeadline 建立接收时间边界,说明 deadline 的绝对时间语义、循环刷新方式,以及如何区分超时、关闭和真实网络错误。108 收藏 -
Go 内置 DNS 解析器执行 A+AAAA 或搜索域子查询时,StrictErrors 决定临时错误是允许返回部分地址,还是中止整体查询。本文说明其作用范围、宽松与严格代码写法、DNSError 分类和兼容性取舍。457 收藏 -
Go 程序直接使用 net.LookupIP 的第一个结果时,IPv4/IPv6 顺序变化可能造成连接变慢或失败。本文区分解析结果、RFC 6724 地址排序和 Dialer Fast Fallback,给出双栈排查、限族连接与安全回归写法。203 收藏 -
Go 客户端配置 TLS 会话缓存后仍可能频繁完整握手。本文区分 HTTP 长连接复用与 TLS 会话恢复,说明 ClientSessionCache、ServerName、进程、LRU 容量和多节点票据密钥的边界,并给出 DidResume 排查写法。270 收藏 -
Go 客户端自定义 TLS 拨号或按 IP 连接时,ServerName 缺失会破坏主机名校验与 SNI 证书选择。本文区分拨号地址、证书身份和根证书信任,给出 http.Transport 与 tls.Client 的安全修复写法。440 收藏 -
Go 服务调整 TLS 最低版本后旧客户端握手失败,通常不是证书单一问题,而是双方允许的协议版本没有交集。本文用 tls.Config、MinVersion、MaxVersion 和连接状态说明如何定位,并给出隔离旧客户端入口的兼容策略。440 收藏 -
Go HTTP 客户端已复用 Client 与 Transport,连接数仍上涨时,应检查 Response.Body 是否读到 EOF 并关闭。本文给出小响应体、错误状态码和大响应体的处理策略,并说明 HTTP/1.x 连接复用的边界。326 收藏 -
Golang · Go问答 | 1天前 | HTTP · 故障排查 · net/http · Go问答 · 流式响应 · Go FLUSH ResponseController ResponseWriter 代理缓冲 HTTP流式响应
ResponseController.Flush 只负责把 Go 服务端当前可刷新的响应数据向下游推进,并不承诺浏览器或代理立即交付。本文从 ResponseWriter 包装、Flush 错误、响应格式和代理缓冲四条链路定位客户端无数据的原因。108 收藏 -
Go 的 http.Client 跨主机重定向后看不到 Authorization,通常是默认的敏感头保护。本文用 CheckRedirect、可信 Origin 和手动跟随策略,给出安全可控的处理方式。435 收藏 -
atomic.Pointer 能让配置指针的替换具备原子性和同步关系,但不会让发布后的配置对象字段可以随意原地修改。本文用不可变快照、单次 Load、race 检查和回滚路径说明原子指针的可见性边界。204 收藏 -
解释 Go 旧结构体中 64 位原子字段的对齐和复制边界,给出 atomic.Uint64 迁移、外部布局拆分、32 位构建与 go vet 复查方案。268 收藏 -
Go 并发代码里,原子计数器并不会自动保护同一结构体中的普通字段。本文从快照偶发不一致的故障现场出发,说明混用为什么仍会产生竞态,并给出全原子、互斥锁和原子快照的修复边界。360 收藏 -
Go 模糊测试默认会让多个 worker 并发调用 fuzz target,固定临时文件名因此可能被覆盖或提前删除。本文用 t.TempDir、os.CreateTemp 和目录注入给出可复现、可清理的修复方式。358 收藏 -
Go fuzz 失败语料只有在环境可重建时才真正可复现。本文把 time.Now 与包级随机函数改成可注入时钟和局部随机源,并将时刻偏移、随机种子纳入语料。273 收藏 -
Go 原生 fuzz 测试发现 panic 后,先固定失败语料并用 -run 稳定重放,再定位最小输入边界、修复校验逻辑,最后保留 corpus 作为回归测试资产。414 收藏