Go教程技术文章
-
Go PGO 的关键不是随便拿一份 CPU profile,而是让 profile 代表真实工作负载。本文从采集范围、统一采样窗口、多实例合并到 default.pgo 和 -pgo 构建,整理一套可以持续更新的准备方法。205 收藏 -
Go pprof 的 heap profile 既能看当前仍占用的对象,也能看累计分配。本文从 inuse_space 与 inuse_objects 入手,结合 top、list、调用图和基线对比,定位长期保留对象并避开采样误判。257 收藏 -
Go 基准测试中,如果目标函数的返回值完全没有用途,编译器可能把无副作用计算删掉。Go 1.24+ 优先使用精确的 b.Loop() 循环;兼容旧式 b.N 时用包级结果汇总变量保住被测结果,并把初始化和计时边界分开。324 收藏 -
围绕 testing.F、f.Add、f.Fuzz 和 testdata/fuzz,说明 Go fuzz 测试怎样限制参数边界、控制探索预算,并把失败输入沉淀为普通 go test 可复现的回归样例。316 收藏 -
Golang · Go教程 | 3小时前 | go · 文件读取 · Go archive/zip Reader.RegisterDecompressor 自定义压缩方法 ZIP 解压 Go 文件读取
用 archive/zip.Reader.RegisterDecompressor 为指定 ZIP 压缩方法接入项目解压器,说明方法编号、Reader 级注册、条目读取和 Close 生命周期的边界。279 收藏 -
用 Go testing.T.Run 把表格驱动测试组织成可读、可筛选的层级子测试,说明命名路径、嵌套分组、go test -run、t.Cleanup 与并行测试的边界。155 收藏 -
Golang · Go教程 | 4小时前 | 性能优化 · 并发编程 · 同步 · Go教程 · Go add sync/atomic CompareAndSwap 并发计数器 atomic.Int64 Load
Go atomic.Int64 适合维护并发请求数、在途任务数等单值状态。本文从普通自增的竞态出发,说明 Add、Load、Store 和 CompareAndSwap 的使用边界,以及零值、复制和复合条件判断的注意事项。471 收藏 -
多个 Go 生产者共享 channel 时,由唯一协调者等待全部发送者退出后关闭输出。本文给出原创实现、固定负载基准入口,以及正常计数和取消收尾的观测边界。141 收藏 -
Golang · Go教程 | 4小时前 | select · Context · 超时控制 · Go教程 · time.NewTimer context.Done Go超时 Go select 多路等待
用 select 同时等待业务结果、context.Done 和超时信号,区分成功、主动取消与截止时间到达三种结果,并让后台 goroutine 在超时后仍能安全收尾。112 收藏 -
Go net.Buffers 可以把多个字节切片作为一次写入组织起来。本文从协议拼包场景出发,说明 WriteTo 的使用方式、已写字节数与错误处理,以及空片段和缓冲区复用的边界。164 收藏 -
Go httptrace 可以把 HTTP 客户端请求拆成 DNS、连接、TLS 和响应等阶段。本文围绕 DNSStart 与 DNSDone 写出一次请求的 DNS 耗时记录,并说明连接复用、DNS 失败和并发回调时的边界。116 收藏 -
Go atomic.Uint64 的原子性不会消除 uint64 的回绕边界。本文说明如何识别溢出、用 CAS 实现不会回退的饱和计数,并选择清零、分段或归档方案。359 收藏 -
Go 反射设置结构体字段时,关键不是直接调用 Set,而是先取得可寻址值,再判断字段存在性、CanSet 和类型可赋值性。本文用一个小型安全写入函数说明可导出字段的正确处理方式。467 收藏 -
Go sync.Once 延迟初始化需要共享同一实例,并保存资源对象与初始化错误。本文用只读名称表示例说明并发发布、失败不重试及资源更新和关闭的边界。423 收藏 -
Go database/sql 中 rows.Next 返回 false 不一定代表结果正常读完,也可能是驱动在迭代阶段返回了错误。本文用原创读取模板拆开 Query、Scan、Close 和 Rows.Err 的职责,并说明多结果集与写入型结果集的处理边界。146 收藏