Go问答技术文章
-
Go 模糊测试里的种子会执行,但不一定产生新的覆盖边或被计为 new interesting。本文从种子语料、输入规范化、守卫条件和覆盖反馈入手,说明如何设计真正命中目标分支的最小种子。183 收藏 -
QueryContext 取消后连接不一定立刻回到连接池。本文从 Rows 生命周期、驱动取消能力和 DB.Stats 观测三个角度定位原因,并给出可复用的释放与排查模板。400 收藏 -
子测试调用 t.Parallel 后,直接包住它的 t.Run 就可以返回,父测试函数继续执行;子测试在 Parallel 之后的部分会暂停到父测试函数返回后再恢复,但父测试整体仍要等全部子测试完成。本文同时说明 defer、t.Cleanup 和分组等待的区别。420 收藏 -
Go 的 *sql.DB 是连接池句柄,*sql.Tx 才是当前事务上下文。事务开始后继续用 db.Query 或 db.Exec,语句可能落到另一条连接,无法共享未提交状态或随事务回滚。本文给出正确写法和排查清单。497 收藏 -
Go 的 rows.Scan 成功只说明当前行完成了类型转换,rows.Err 才能确认整个结果集迭代没有在 Next、网络或 context 取消处失败。本文给出可直接复用的处理模板和边界清单。267 收藏 -
TLS 会话恢复是在新连接上复用先前会话状态以缩短握手,并不会复用旧 TCP 连接。本文区分 http.Transport 连接池与 ClientSessionCache,说明 Reused、DidResume 的观测方法和常见误判。133 收藏 -
Go 的 x509.SystemCertPool 在 Linux、macOS、Windows 和容器中使用的信任来源与实现不同;Subjects 也不会完整枚举平台系统根,因此数量差异不等于验证能力差异。本文按故障时间线说明根因、排查与修复。130 收藏 -
Golang · Go问答 | 1天前 | go · TLS · 网络安全 · VerifyConnection Go InsecureSkipVerify x509.Verify TLS证书校验 证书固定
Go 中 InsecureSkipVerify=true 会跳过默认的证书链和主机名校验。若业务必须接管验证,应在 VerifyConnection 中用自定义 RootCAs、中间证书池和 DNSName 调用 x509.Verify,并可追加 SPKI 指纹约束。384 收藏 -
Go 的 TCP KeepAlive 只能帮助内核探测部分失联场景,不能证明对端应用仍能处理业务。本文用职责对照和 Go 代码说明如何组合 TCP 探测、ping/pong、截止时间与重连策略。468 收藏 -
Go Resolver.LookupHost 返回的是本地解析器得到的地址切片,不是稳定的主备顺序。容器中的 resolv.conf、hosts 文件、Go/cgo 解析路径和 IPv4/IPv6 排序条件不同,就可能让结果顺序变化。本文给出对照排查和应用层稳定选择方案。223 收藏 -
Go net.Conn 的 Deadline 是持续生效的绝对时间,不是下一次读写的等待时长。本文区分总截止时间与空闲超时,并给出读写分离、滑动刷新、清除 deadline 和超时错误判断方法。412 收藏 -
Go 接口输入不必把清洗、字段校验和前端契约拆成三套规则。本文用一个原创注册请求示例说明如何组织原地规范化、错误处理、JSON Schema 生成,以及何时应切换到带上下文的显式 Pipeline。287 收藏
-
Go 的 time.LoadLocation 需要 IANA 时区数据库。精简容器常删除系统 zoneinfo,导致本机正常的程序在运行镜像中报 unknown time zone。本文说明查找来源,并比较安装、复制与内嵌 tzdata 三种修复方式。290 收藏 -
Go 的 time.Time 同时承载墙上时间和进程内单调读数,但 JSON 只序列化可跨进程解释的日历时刻。本文说明丢失原因,以及持久化时间、耗时测量和时间比较的正确分工。479 收藏 -
Ticker.Reset 要求间隔严格大于零,零值或负值会直接 panic;动态配置应先解析并校验,停用周期任务则使用 Stop,并在 select 中配合 nil channel。191 收藏