-
调整 GOGC 或 runtime/debug.SetGCPercent 后,延迟不会按固定方向变化。本文用固定工作负载、隔离的基准样本和延迟分位数,对照分析 GC 频率、堆空间、吞吐与 p95/p99 的关系。
-
Go 迁移到 ML-KEM 时,不要把后量子算法简单替换或直接拼接共享秘密。本文以 crypto/mlkem 和传统 ECDH 为例,说明协商、上下文绑定、HKDF 派生与失败即拒绝的组合方式。
-
Go 容器内存限制不是把 SetMemoryLimit 当成硬上限,而是先给 cgroup 预留运行时和外部内存,再用 GOMEMLIMIT 或 SetMemoryLimit 约束 Go runtime 的软目标。本文按预算、配置、观测和回退步骤给出可复用做法。
-
Go 的 crypto/mlkem.Decapsulate 只有在密文长度不正确时返回错误;长度正确但内容无效时会得到不匹配的共享密钥。本文给出错误传播、协议确认和日志脱敏的实用写法。
-
Go 服务出现内存指标突增时,不能只看 Sys 或单次 HeapAlloc。本文用 runtime.MemStats 建立采样快照,结合堆保留、对象数量、GC 次数和分配速率区分短时峰值、缓存保留与持续增长。
-
Go 的 crypto/mlkem 把 ML-KEM 密钥分成私有的 DecapsulationKey 和公开的 EncapsulationKey。本文说明 GenerateKey、Bytes、New*Key 的对应关系,并整理 768/1024 参数集的序列化长度与工程基线。
-
runtime.SetFinalizer 的触发时机无法承担确定性资源释放。本文从显式 Close、runtime.AddCleanup 和 runtime.KeepAlive 三个边界出发,说明如何替代不及时的 finalizer,并处理父子资源、并发关闭和 cgo 指针规则。
-
Go 的 crypto/hpke 用 aad 把租户、版本和消息序号等公开字段绑定到密文认证范围。本文区分 info 与 aad,给出 Sender.Seal/Recipient.Open 的实现方式,并说明上下文计数器、消息顺序和重放处理的边界。
-
runtime.SetFinalizer 只能为持有 C 资源的 Go wrapper 提供不确定的释放兜底,不能替代显式 Close。本文用生命周期状态、cgo 指针规则和 runtime.KeepAlive 说明如何避免提前释放、重复释放与关闭顺序错乱。
-
Go 1.26 起标准库提供 crypto/hpke,但 KEM、KDF、AEAD 不是可以任意拼接的三个下拉框。本文从兼容性、后量子迁移、硬件环境和应用用途出发,给出 DHKEM、ML-KEM、混合 KEM、HKDF、SHAKE、AES-GCM 与 ChaCha20-Poly1305 的选择思路,并用 Seal/Open 示例固定一套可复查的配置。
-
Go 1.26 的 crypto/hpke 同时提供一次性 Seal/Open 与有状态 Sender/Recipient。本文用连续消息流程说明 enc、info、AAD、nonce 计数器和消息顺序的复用边界,帮助你选对上下文生命周期。
-
Go 的 runtime.SetFinalizer 只在对象不可达后安排清理,函数里的最后一次使用不一定能把对象保活到系统调用结束。本文用非内存句柄场景拆解对象可达性、runtime.KeepAlive 的放置位置、finalizer 的边界与工程选型。
-
time.Duration 本质是 int64 纳秒计数,乘法、单位换算或退避累加一旦超出约 290 年范围就可能回绕成负数或异常的小值。本文从定时任务故障场景出发,给出边界判断、饱和乘法和定时器接入的 Go 实现。
-
围绕 Go net/url 的 URL.OmitHost 字段,说明空 authority 的 String 序列化、Path 双斜杠保护、Opaque URL 区别和调用方兼容策略,给出带中文注释的最小示例。
-
同一个无时区日期在不同机器上出现一天偏移,通常不是日期字符串变了,而是解析位置没有明确。本文从 time.Parse 的 UTC 默认行为出发,说明 time.ParseInLocation 如何绑定 Location,并处理显式偏移、时区缩写、IANA 时区加载和夏令时边界。