Go语言技术文章
-
演示如何用 Writer.RegisterCompressor 为指定 ZIP 方法注册压缩器,并说明 Method 选择、Close 刷新、并发安全、读取兼容性和性能衡量方法。220 收藏 -
用 Go embed.FS 把静态目录编译进程序,掌握 //go:embed 的路径模式、包边界、隐藏文件规则,以及接入 HTTP 和模板解析时的目录约定。220 收藏 -
解释 Go sql.DB.Stats 中 WaitCount 持续增长的含义,区分连接池等待、数据库变慢和资源未释放,并给出窗口采样与参数排查方法。220 收藏 -
Go 的 http.ServeContent 不会替你决定 Cache-Control;应在调用前设置缓存策略,并配合 modtime 或 ETag 处理条件请求。本文用一个文件接口讲清响应头的职责、设置时机与常见边界。219 收藏 -
使用 httptest.ResponseRecorder 测试 Go HTTP handler 时,Code 可能因 recorder 的创建方式和写入时机呈现不同结果。本文用最小示例解释 Code、Result().StatusCode、Header 与 Body 的读取边界,并给出稳定的排查清单。219 收藏 -
在 Go 1.25+ 中,可先用 os.OpenRoot 建立可信目录边界,再用 Root.MkdirAll 创建父目录,并通过 Root.OpenFile 的 O_CREATE|O_EXCL 策略安全创建相对路径文件。本文同时说明覆盖、并发和部分写入边界。219 收藏 -
Go 1.24 的 net/http.Protocols 是协议能力集合。本文用 https、http 与 h2c 三种场景说明客户端和服务端配置不一致时何时回退、何时失败,并给出配置与排查清单。219 收藏 -
Go time.Ticker.Stop 只停止后续 tick,不会关闭 ticker.C。本文解释通道不结束的原因,并用 done channel 与 context.Context 设计可退出的消费循环。218 收藏 -
Golang · Go问答 | 3星期前 | 错误处理 · 事务 · database/sql · Go问答 · Go database/sql Tx Go事务重试 Go死锁处理 Go序列化冲突 database/sql错误分类
围绕 Go database/sql Tx 讲清可重试并发冲突与业务错误的边界:驱动错误映射、单次事务回滚、事务外有限重试以及提交状态未知时的幂等处理。218 收藏 -
gzip.Writer.Reset 会让对象回到类似刚由 NewWriter 创建的状态,只保留可复用的压缩器与压缩级别,不继承上一条流的 Header。本文说明正确复用顺序、Header 重配和对象池边界。218 收藏 -
token.Pos 是 Go FileSet 中的全局位置值,不是单个源文件的字节下标。本文说明如何通过 token.File.Offset 转换文件内偏移,并处理 NoPos、跨文件和 //line 行列映射。218 收藏 -
Go 的 io.Pipe 可把只会写入的生产者连接到只会读取的消费者。本文用完整示例说明同步背压、关闭顺序、错误传播以及避免 goroutine 阻塞的方法。218 收藏 -
Go 普通 map 并发读写时,runtime 的 map 专用检查可能先触发 fatal,而 race detector 只有在使用 -race 构建且冲突路径实际执行时才会报告。本文给出识别、止血、定位和修复方法。218 收藏 -
围绕 httptest.ResponseRecorder 说明 Handler 响应测试的边界,演示 Result、Code、Header 和 Flushed 的正确检查方式,并比较何时应该使用 NewServer。217 收藏 -
Go comparable 约束拒绝包含切片字段的结构体,是因为结构体必须保证所有字段都可比较。本文拆解切片、数组、指针和接口字段的边界,并给出固定数组、摘要键与身份指针的改造选择。217 收藏