Go语言技术文章
-
通过有界环形队列说明sync.Cond广播、循环等待与关闭语义,复用存储和固定工作协程,并讨论分配、背压及业务完成边界。328 收藏 -
Go sync.Cond 通过 Broadcast 唤醒当前等待的全部协程,但通知不等于条件成立,也不负责复制或保存结果。本文用共享状态示例说明 Wait 为什么必须放在 for 中,并排查广播后结果为空的常见原因。464 收藏 -
用一个可复用的 Gate 说明 Go sync.Cond 如何让多个协程等待同一条件,并在条件成立后通过 Broadcast 一次唤醒全部等待者。149 收藏 -
用只读配置快照配合 atomic.Pointer,可以在热更新时原子替换整份配置,让批处理读取方复用同一个快照引用,减少锁竞争、重复解析和临时分配。本文说明构造、发布、读取与回滚边界。472 收藏 -
本文围绕 Go atomic.Pointer 替换只读配置快照,解释首次 Load 为空、发布后修改内部数据和复制原子对象等问题,并给出构造后一次 Store 的迁移写法。380 收藏 -
用atomic.Pointer构建可复用的只读配置容器,演示完整构造、原子替换和一次Load读取,并说明map拷贝、多写者及旧快照生命周期。351 收藏 -
用 Go atomic.Bool 管理批处理进程的运行状态,说明 Load、Store、CompareAndSwap 的使用边界,并给出复用状态对象、减少循环额外分配的写法。128 收藏 -
本文围绕 Go atomic.Bool 的共享状态读写与并发翻转,说明 Load、Store、Swap 和 CompareAndSwap 的使用边界,并排查零值、读取时机、复制和误把状态当进程控制器等常见误判。173 收藏 -
用 Go atomic.Bool 管理进程运行状态,展示并发读取、幂等启动、一次停止和适用边界,给出可复用的最小状态封装示例。310 收藏 -
用独立HTTP入口暴露Go批处理指标,启动时注册固定计数器并批末合并,说明权限、采集口径、分配开销与失败处理边界。311 收藏 -
用一个自定义 ServeMux 示例说明 Go expvar 如何暴露 JSON 运行指标,并按 404、空结果、重复注册和动态值异常逐项排查。223 收藏 -
用 Go 标准库 expvar 注册请求计数器并通过 /debug/vars 暴露 JSON 指标,覆盖独立 Handler、并发更新、重复注册和最小读取方式。214 收藏 -
定位Go slog自定义字段缺失、分组位置不符和派生Logger丢失包装器的问题,给出保留Handler派生语义与context字段的完整示例。100 收藏 -
Go log/slog 可以用 Logger.With 复用批次字段,用 LogAttrs 传递单条记录属性;自定义 Handler 注入动态字段时,应先 Clone Record,再转发 Enabled、WithAttrs 和 WithGroup,避免破坏结构化输出和额外分配边界。248 收藏 -
用 Go log/slog 包装一个自定义 Handler,把请求上下文中的 request_id、tenant_id 等字段自动加入结构化日志,同时保留 JSONHandler 的级别过滤、静态字段和分组能力。470 收藏