Go语言技术文章
-
用一个实现 io.Reader 的限速包装器接入 io.Copy,让文件或请求体的复制链路按字节速率发送,文章同时说明读取粒度、突发流量、错误处理和并发复用边界。200 收藏 -
Go token.File.SetLines 返回 false,通常不是 API 随机失败,而是行首偏移没有满足严格递增、范围小于文件长度等约束。本文用一组可定位的判断方法说明如何构造行偏移表,并把它接回 Pos、Line、Offset 与 Position 查询。200 收藏 -
billy.Filesystem 的 Rename 只在一个文件系统实例的路径空间内工作。跨实例移动要显式打开源文件、创建目标文件、复制内容,并在资源关闭成功后删除源文件。200 收藏 -
Go csvutil 按表头名称和 csv 标签匹配独立字段,而非依赖结构体位置。通过双样本小项目解释列重排,并说明无表头、表头失配和自定义字段依赖的边界。200 收藏 -
Go 服务中的 goroutine 数量持续增长,不要先猜是哪一行代码泄漏。先观察数量趋势,再用 goroutine profile 对比重复堆栈,沿着 channel、定时器、网络调用和 context 的生命周期找到没有退出条件的工作函数。200 收藏 -
Go 客户端偶发 EOF 时,先区分响应头已收到但响应体中途断开,还是请求阶段根本没有建立完整响应,再结合已读字节、Content-Length、请求标识和服务端日志判断是否为服务端提前关闭,最后只对可安全重建的幂等请求有限重试。200 收藏 -
Go 使用 archive/tar 解包时,权限差异常常不是 Header.Mode 丢失,而是创建权限受到 umask 影响或目录没有显式 Chmod。本文按普通文件、目录和特殊条目拆开处理,给出一套可复用的还原思路。200 收藏 -
httptest 的 Host 与普通 Header、URL.Host 并非同一字段。本文解释路径请求的默认主机,给出表驱动 Handler 测试和本地 HTTP 往返写法,并说明端口与 TLS 的边界。200 收藏 -
Golang · Go教程 | 2星期前 | JSON · bytes.Buffer · Go教程 · encoding/json · Go encoding/json bytes.Buffer json.Compact JSON压缩 JSON空白
Go 的 json.Compact 可以去掉 JSON 结构中的无意义空白,同时保留字符串内容。本文用 bytes.Buffer 组织压缩结果,说明合法输入、非法 JSON、错误处理和 Compact、Marshal、Indent 的用途边界。200 收藏 -
Go 中读取 GOMAXPROCS 当前值时,直接调用 runtime.GOMAXPROCS(0) 即可。本文说明它为什么不会修改设置、默认值从哪里来,以及如何把结果用于启动诊断。200 收藏 -
Go 的 json.RawMessage 适合处理外层结构固定、内层字段动态的 JSON。本文说明怎样先保留未知 payload,再按 kind 延迟解码,并在修改外层字段后通过二次 Marshal 保留原始 JSON 值,同时区分字段缺失、null、空对象和非法 JSON。200 收藏 -
用一个最小 redis-cli 示例说明 Redis Streams 消费组的创建、XREADGROUP 新消息读取、PEL 待确认列表、XACK 确认、XPENDING 排查与 BLOCK 阻塞边界。200 收藏 -
Go OpenFile 追加写仍覆盖文件,通常不是 Write 本身失效,而是 flags 中混入 O_TRUNC、实际使用了 os.Create,或每次循环重新打开文件。本文按现象排查 flags、打开生命周期、Seek 与 WriteAt,给出可直接改造的追加写法。200 收藏 -
OpenTofu 模块输入要先分清 module 元参数与 variable 声明,再用类型、默认值、nullable、validation 和变量来源优先级收紧边界。本文给出父子模块传值、null 覆盖默认值和 tofu plan 排查的最小配方。200 收藏 -
io_uring 的 SQPOLL 由内核线程轮询提交队列,持续繁忙时可以减少提交系统调用;空闲超过 sq_thread_idle 后会休眠,并由 IORING_SQ_NEED_WAKEUP 协调唤醒。本文解释它与 IOPOLL 的区别、配置方式和资源边界。200 收藏