Go问答技术文章
-
纯 Go DNS 解析器遇到搜索域结果差异时,先在同一环境比较短名、完整名称和尾点绝对名称,再检查 search、ndots 与实际解析器。提供有限超时的 Go 对照程序,说明候选顺序、配置修复及内部名称安全边界。287 收藏 -
Go 老客户端连接失败时,先对照客户端 MaxVersion 与服务端 MinVersion,确认双方是否存在 TLS 版本交集,再用实际握手版本排除证书、SNI 和代理问题。本文给出隔离兼容配置和复查清单。238 收藏 -
Go HTTP 服务调用 Server.Shutdown 后仍不退出,多半是活动长请求或 hijack 连接没有收到应用级关闭信号。本文按连接状态给出排查、通知与等待方案。129 收藏 -
Go HTTP 服务端客户端断开后仍有工作运行,重点检查 r.Context 是否传到阻塞操作。本文对比 CloseNotifier、Background 与 Request.Context,给出迁移写法、回归边界和异步任务取舍。291 收藏 -
Go 提示 x509 未知机构时,服务端证书链齐全并不等于客户端信任。文章区分链材料与信任锚,定位 RootCAs、容器根库及TLS终止点,提供保留系统根并追加受控CA的专用客户端示例,说明安全修复边界。146 收藏 -
Golang · Go问答 | 2星期前 | 错误处理 · Go问答 · Go net/http ResponseController ErrNotSupported SetReadDeadline SetWriteDeadline
Go HTTP 服务端调用 ResponseController 设置读写 deadline 时,如果返回未支持错误,通常不是 deadline 参数写错,而是当前 ResponseWriter 或包装链没有暴露对应能力。本文说明如何用 errors.Is 判断 ErrNotSupported、修复 Unwrap 包装器,并为不支持连接 deadline 的场景保留安全降级方案。410 收藏 -
Go HTTP 客户端重试后请求体变空,通常不是服务端随机丢数据,而是复用了已经读过的 Body。本文用 GetBody 和字节快照定位并修复请求体重放问题。290 收藏 -
ForceAttemptHTTP2 只允许尝试而不强制协商成功。通过完整 HTTPS 诊断示例读取响应 Proto 与 TLS ALPN,区分实际 Transport、Protocols、TLSNextProto、自定义拨号、代理和对端能力,并说明安全修复与回退边界。190 收藏 -
Golang · Go问答 | 2星期前 | HTTP客户端 · Go问答 · Go HTTP代理 net/http Transport ProxyConnectHeader GetProxyConnectHeader CONNECT
Go 的 ProxyConnectHeader 只服务于 HTTP 代理的 CONNECT 建隧道请求,不是发往目标站点的普通请求头。本文按代理选择、固定配置、动态回调和证据排查四步定位“请求头缺失”,并解释 GetProxyConnectHeader 覆盖 ProxyConnectHeader 的关键关系。317 收藏 -
Golang · Go问答 | 2星期前 | CGO · 内存管理 · Go问答 · 排错 · Go Go指针 CGO runtime/cgo.Handle C指针 runtime.Pinner cgocheck
Go cgo 指针检查的关键不是把 unsafe.Pointer 换成别的类型,而是确认内存归属、内部是否含 Go 指针以及 C 保存地址的时长。本文对比临时借用、C 内存复制、runtime/cgo.Handle 和 runtime.Pinner 的适用边界。392 收藏 -
围绕 Go http.Transport 的 HTTP 代理 CONNECT 握手,说明固定请求头与按目标动态请求头的配置边界,并整理旧代码迁移和回归检查清单。175 收藏 -
Go 测试套件中,慢测试可以通过 testing.Short 与 t.Skip 在 go test -short 时跳过、完整模式时执行。本文说明标志关系、代码组织、与自定义环境变量的取舍,以及不该交给 -short 解决的边界。161 收藏 -
Go 的 hex.DecodeString 不会自动忽略十六进制字符串中的空格。本文用 strings.Fields 统一清理空白,再检查空输入、奇数长度和非法字符,并说明什么时候不应该静默删除分隔符。473 收藏 -
Go 的 json.Decoder.Token 返回的是 JSON 词法 token,Delim 负责标出数组和对象边界,More 只用于判断当前容器是否还有元素。本文从 Token 看似错位的现象出发,说明如何用 Token、More 与 Decode 组合读取 JSON 流。186 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · JSON · Go问答 · Go encoding/json offset json.Unmarshal Field JSON排错 UnmarshalTypeError
Go 的 JSON 类型错误不要只看错误字符串。本文用 UnmarshalTypeError 的 Field、Offset、Value 和 Type 四个字段,把嵌套字段与原始 JSON 字节位置对应起来,并说明类型错误后的部分填充边界。414 收藏