Go问答技术文章
-
Go 将数据库 NULL 直接扫描到 string 会失败。本文用 sql.NullString、sql.Null[string] 与 COALESCE 对比字段适配方案,说明如何保留空值语义并覆盖回归边界。388 收藏 -
解释 Go database/sql 中 Tx.Stmt 复用 DB 级预处理语句时的对象归属、事务绑定、关闭责任、上下文与并发边界。154 收藏 -
解释 Go database/sql 的 TxOptions 如何跨越驱动边界,区分会话默认值与下一笔事务作用域,并给出可靠的排查和验收方法。165 收藏 -
解释 Go database/sql 中 Commit 成功后 defer Rollback 返回 sql.ErrTxDone 的原因,并给出区分业务错误、提交错误和正常清理结果的事务封装。360 收藏 -
说明 Go 服务启动时如何为 database/sql 的 PingContext 设置独立超时,区分超时、取消和驱动错误,并选择失败退出或降级策略。438 收藏 -
从 DB.Stats 指标、Rows 生命周期和提前退出分支入手,定位 Go database/sql 连接耗尽,并给出可复用的关闭与防复发写法。354 收藏 -
讲清 Go database/sql 中 MaxIdleConns 与 MaxOpenConns、Idle、InUse 的容量关系,并用 DBStats 判断复用和等待。478 收藏 -
用最小 Go HTTP 接口排查 URL 查询值乱码,定位手工拼接、加号语义、重复编解码与非 UTF-8 上游问题。285 收藏 -
Go 的 url.JoinPath 会清理路径并把连续斜杠合并为一个,同时处理点段和尾斜杠。本文用紧凑示例说明普通路径、%2F、查询参数及双斜杠敏感接口的边界。446 收藏 -
围绕 Go url.Parse 拒绝控制字符的报错,说明首尾空白清洗、内部控制字符拒绝、协议限制,以及 url.Values 和 PathEscape 的组件化编码边界。279 收藏 -
解释 net.Resolver.PreferGo 与系统原生解析器的选择边界,梳理 GODEBUG、构建标签和系统配置的影响,并给出自定义 DNS 与双路径诊断写法。452 收藏 -
Go DNS 返回多个 A/AAAA 地址后,真正决定连接落点的是 Resolver 结果、Dialer 回退和连接池复用。本文区分默认 DialContext 与显式地址轮转策略,给出共享超时、失败回退和观测边界。295 收藏 -
Go net.Resolver 的自定义超时要分成两层:调用 LookupIPAddr 时用 context.WithTimeout 限制整次解析,Resolver.Dial 内部再用 net.Dialer.DialContext 约束连接 DNS 服务的时间。本文给出可复用代码,并说明 PreferGo、StrictErrors、UDP/TCP 与错误判断边界。481 收藏 -
给出 Go TLS 最低版本与密码套件的迁移清单:区分 TLS 1.2 与 1.3 配置边界,盘点客户端兼容性,灰度提升 MinVersion,并用 ConnectionState 验收协商结果。130 收藏 -
Go tls.Config 复用时,Certificates 不会随 PEM 文件自动更新。本文用 GetCertificate 和 atomic.Value 实现安全证书轮换,并说明 SNI、Clone、旧连接与失败回滚边界。144 收藏