Go语言技术文章
-
从 net.Listen 的 network 和 address 入手,判断 Go TCP 监听只接受 IPv4 或 IPv6 的原因,并给出单族监听与显式双监听的处理方案。463 收藏 -
Go atomic.Value 的零值 Load 可以返回 nil,但 Store(nil) 会 panic;本文说明首次 Store 如何固定具体类型,以及如何用结构体或指针安全表达空配置状态。479 收藏 -
围绕 Go net TCP 监听地址,说明通配地址、具体网卡 IP、tcp4/tcp6 与双栈边界,并给出启动异常的排查清单。134 收藏 -
Go atomic.Value 适合保存读多写少的只读配置快照。本文从首次 Store、并发 Load、复制旧值到一次性替换,给出可复用的实现方式,并标出类型一致、原地修改和生命周期边界。375 收藏 -
说明 Go net 连接 IPv6 链路本地地址时的 zone、方括号、tcp6、JoinHostPort 和 DialContext 参数边界。106 收藏 -
Go atomic.Value 的关键不是可以存任意类型,而是同一个 Value 的 Store、Load、Swap 与 CompareAndSwap 必须围绕同一具体类型工作。本文用配置快照示例说明初始化、更新、nil、类型别名和复制规则。337 收藏 -
通过 LookupHost 的独立 context 和 Resolver.Dial 的 Dialer 超时,分层限制 Go DNS 解析总时限与单次连接等待。306 收藏 -
Go sync.Pool适合复用可丢弃的临时对象,不适合保存配置、连接、租户或权限等长期状态。本文从可丢弃性、Reset清理、所有权和并发边界四个方面给出判断与实现方法。279 收藏 -
说明 Go net.Resolver 如何通过 LookupIP 的 ip4/ip6 和 DialContext 的 tcp4/tcp6 表达地址族偏好,区分 PreferGo、StrictErrors 与真正的 IPv4/IPv6 选择边界。116 收藏 -
讲清 Go sync.Pool 对象归还前如何清理字节切片、map 和引用字段,避免敏感内容被下一次 Get 读到,并说明清零与安全擦除的边界。372 收藏 -
用 Go net.Resolver 将 DNS 名称解析与 TCP 连接拆开检查,识别 DNSError、超时、端口拒绝和路由失败,建立一套可复用的网络故障定位方法。191 收藏 -
Go sync.Pool适合复用临时对象,但池中对象可能被GC自动丢弃。本文把对象复用链与生命周期指标拆开,用池外原子计数器记录New、Get、Put,再用基准指标判断是否真的降低了分配压力。374 收藏 -
Go 读取证书时,pem.Decode 返回 nil 与 x509.ParseCertificate 返回错误不是一回事。本文用分层代码、错误阶段和边界表定位 PEM 外层格式与 DER/X.509 内容问题。427 收藏 -
Go context发生取消时,ctx.Err()只能告诉你状态,context.Cause(ctx)才能保留首次取消的具体原因。本文用WithCancelCause和超时cause建立一套可排查的错误归因方法。320 收藏