Go语言技术文章
-
Go testing.B.ReportMetric 可以在标准基准结果之外增加自定义吞吐指标。本文从单位名、b.N 除数和 b.Elapsed 时间基准入手,说明 /op、/ns、重复覆盖、内置指标覆盖与 ResetTimer 的使用边界。273 收藏 -
Go crypto/subtle.ConstantTimeCopy 用 0/1 控制是否覆盖等长字节缓冲区。本文说明参数语义、固定长度准备、边界条件,以及它与 copy、ConstantTimeCompare 的区别。273 收藏 -
Go 的 os.ReadFile 会把完整文件返回为 []byte。本文从内存边界出发,说明什么时候继续使用它,什么时候改用 os.Open、io.Copy、io.LimitReader 或有界逐行读取。272 收藏 -
Go 基准测试中的 b.Cleanup 会在基准函数和子基准完成、计时停止后执行,清理回调本身不会计入 ns/op,但回调登记动作若放进循环仍会计时。本文对比 b.Loop、b.N、defer 与手动 Close 的资源边界。272 收藏 -
Go os.File.Truncate 把文件扩大后,新增区域读取起来像是由零字节填充。本文从文件逻辑长度、零填充读取语义和稀疏文件的物理占用三个层面解释原因,并给出适合固定长度文件的 Go 写法。271 收藏 -
用 Go 的 parser.ParseDir 按文件名筛选目录中的 .go 文件,按包名获取 AST 文件集合,并处理目录读取失败、语法错误和 build tags 不参与解析的边界。271 收藏 -
Go database/sql 的 DB.Stats 会累计记录连接池等待次数和等待时长。本文说明 WaitDuration 的真实含义,如何用两个快照计算窗口增量,以及怎样把连接池排队和 SQL 执行慢分开判断。269 收藏 -
go mod tidy 升级后出现依赖增删、go.sum 变化或程序行为不同,不要直接回滚。本文按基线、diff、模块图、工具链和分层复现五步定位变化来源,并给出可提交的判断标准。267 收藏 -
Go HTTP2Config.StrictMaxConcurrentRequests决定HTTP/2流额度满时等待还是增加连接。文章对比两种策略,给出客户端配置示例,并区分流额度、连接预算与业务并发限制。267 收藏 -
Go 的 os.File.Truncate 只改变文件长度,不会自动调整当前 I/O 偏移。本文用代码拆开 Truncate、Seek、Write 和 WriteAt 的职责,解决截断后 EOF、追加和固定位置覆盖的常见误判。267 收藏 -
Go bufio.Reader 读取长记录时,使用 ReadBytes 处理单字节分隔符与 EOF 尾部数据;需要业务长度上限时,用 ReadSlice 分片复制并在追加前限制累计字节数。266 收藏 -
用 runtime/trace.NewTask 把跨 goroutine 的一次逻辑操作关联到同一个 Context,说明 Region、Log、Task.End 与 trace 文件收集的配合方式。266 收藏 -
Go bytes.CutPrefix 返回去掉前缀后的字节切片和 found 标记,适合判断输入是否以指定前缀开头。本文用原创示例说明匹配成功、前缀缺失、空前缀和底层切片复用边界,并把后续业务校验独立出来。265 收藏 -
Go 的 ed25519.PrivateKey.Public 会返回对应的 crypto.PublicKey。本文说明如何把它安全地断言为 ed25519.PublicKey,理解 64 字节私钥中的公钥后缀,并区分公钥派生、种子恢复与重新生成密钥。264 收藏 -
介绍Go strconv.Quote生成可复制字符串字面量的写法,通过特殊字符与Unquote示例区分值和展示层,补充ASCII输出、缓冲追加及目标语法边界。263 收藏