Go语言技术文章
-
Golang · Go教程 | 3星期前 | 标准库 · HTTP · 超时控制 · Go教程 · 工程实践 · Go 上下文取消 handler HTTP超时 http.TimeoutHandler
http.TimeoutHandler 可以为单个 Go HTTP 处理器设置时间上限,超时返回 503 并让后续写入得到 ErrHandlerTimeout。本文说明如何配合请求上下文使用,以及它在流式响应、连接接管和服务级超时中的边界。403 收藏 -
用Go ConstantTimeCompare比较固定长度密钥材料,说明整数返回值、长度提前返回、差异位置样本和性能观察的适用边界。403 收藏 -
用 go tool pprof 的 sample_index 切换内存 profile 的采样值,分清 inuse_space、inuse_objects、alloc_space 与 alloc_objects,并说明交互命令、命令行参数和索引边界。403 收藏 -
Go json.Decoder.UseNumber 只改变解码到 interface{} 时的数值类型,不是 Marshal 的全局开关。本文拆开 float64、json.Number、string 与 RawMessage 的边界,说明何时能保留数字字面量、何时已经无法恢复原始表示。403 收藏 -
os.Executable 返回的是启动当前进程的可执行文件路径,但符号链接、文件替换和部署变更都会影响它是否仍指向预期文件。本文用最小 Go 示例说明错误处理、EvalSymlinks 与资源目录选择。403 收藏 -
Go Flock 的锁文件是协作路径,不是占用状态本身。本文区分磁盘文件、内核锁和 Flock 实例,说明 Unlock、Locked、TryLock、Stat 的用途,以及异常退出和跨平台场景下的判断边界。403 收藏 -
Go Validator 的 omitempty 会先判断字段是否为空,空值会直接跳过 min、gte 等后续规则。本文用最小结构体说明字符串、数字、指针和集合的边界,并比较 omitnil 与 omitzero 的选择。403 收藏 -
Go runtime/metrics 的 Float64Histogram 需要先检查 Value.Kind,再用相邻 Buckets 边界解释 Counts 分桶。本文给出安全读取、区间配对、总量汇总和累计指标判断方法。403 收藏 -
本文把 os.OpenRoot 的目录边界、manifest 的有序文件名切片和 slices.BinarySearch 的命中判断组合起来,演示如何在受限根目录内定位并读取文件,同时处理未命中、越界路径和资源释放。403 收藏 -
sync.Map.CompareAndSwap 返回 false 不会指出改写者,也不提供失败时的旧值。通过可比较结构体携带版本、写入者与操作标识,并区分后续 Load 观察、键删除及类型差异,避免错误归因。403 收藏 -
Go database/sql 的 Null[T] 用 Valid 表示当前值是否为 NULL,V 只在 Valid=true 时作为业务值读取。本文按现象、证据和修复动作说明 Scan、Value、有效零值与类型转换错误的边界。403 收藏 -
围绕 Go filepath.Rel 解释绝对路径、相对路径和 Windows 不同卷的错误边界,给出用 IsAbs、VolumeName 和 Rel 组合处理跨平台相对路径的实用写法。403 收藏 -
atomic.Uint64 与普通 uint64 可以在同一项目中共存,但同一个共享值不能混用原子读写和直接读写。本文说明类型边界、数据竞争、32 位对齐和首次使用后不可复制的处理方式。403 收藏 -
sql.Rows.Next 返回 false 不一定只是结果集读完,也可能是迭代过程中发生了错误。本文用完整的 QueryContext 示例说明 rows.Err、rows.Close、上下文取消和多结果集检查应该放在哪里。403 收藏 -
用逃逸分析、基准测试和 alloc_space 画像分层观察 Go 小对象分配,区分编译器结论与运行时专用路径,避免只凭对象大小做优化判断。403 收藏