Go语言技术文章
-
Go 重试机制最难的不是退避算法,而是稳定地区分可重试错误与永久错误。本文用 errors.Is、errors.As、%w、领域错误类型、context 与幂等约束,给出可维护的分类器和重试边界。263 收藏 -
time.LoadLocation 读取的是 IANA 时区数据库,不是简单的小时偏移。本文说明 ZONEINFO、系统时区目录、GOROOT 与 time/tzdata 的关系,并给出精简容器中的错误处理和部署选择。263 收藏 -
Go 的 log.Fatal 会先输出日志,再调用 os.Exit(1)。os.Exit 立即结束进程,不执行当前调用链中的 defer,因此清理逻辑会被跳过。本文拆开调用关系,并给出把错误返回到 main、让资源先完成 defer 的写法。263 收藏 -
解释 Go database/sql 中 Rows.Next 返回 false 的两种原因,给出 Rows.Err 的标准收口写法,并覆盖 Scan、上下文取消、Close 与多结果集的错误边界。263 收藏 -
使用 Kong MapperFunc 和 TypeMapper 注册自定义区间参数,介绍 Scanner 取值、反射赋值、NamedMapper 与字段级绑定,并说明错误处理及语法兼容。263 收藏 -
Go Paho MQTT Go 的 OnConnectHandler 会在首次连接和自动重连后调用。本文把业务订阅集中到一个恢复函数中,说明 SubscribeMultiple、CleanSession、ResumeSubs 和异步 token 的边界,避免重连后消息悄悄中断。263 收藏 -
Go HTTP 客户端拿到响应后如果没有关闭 Response.Body,连接可能无法按预期复用,连续请求时会出现等待、变慢甚至连接资源耗尽。本文按请求体生命周期、连接复用和并发封装给出排查与修复方法。263 收藏 -
介绍Go strconv.Quote生成可复制字符串字面量的写法,通过特殊字符与Unquote示例区分值和展示层,补充ASCII输出、缓冲追加及目标语法边界。263 收藏 -
Go 调用外部程序时,使用 Cmd.Stdout 和 Cmd.Stderr 可分别接收标准输出与标准错误;大输出或实时日志则用两条管道并行读取,并在读取完成后调用 Wait。262 收藏 -
解释 Go go vet copylocks 为什么报告复制 Mutex,并用指针接收者、指针参数和按索引遍历修复包含锁的结构体复制问题。262 收藏 -
用 *_test.go 保存普通测试,用 integration 或 e2e 标签隔离数据库、消息队列和外部服务测试;本文说明标签写法、默认命令、集成命令与 go list 排查方法。262 收藏 -
Golang · Go问答 | 1个月前 | 连接池 · HTTP客户端 · Go问答 · Go HTTP客户端 连接池 http.Transport CloseIdleConnections Transport生命周期
Go 中限定 http.Transport 生命周期,重点是把请求、Client 和 Transport 分层:请求短生命周期,Transport 随业务组件长期复用;按代理、TLS 或上游配置拆分实例,切换和退出时只清理空闲连接。262 收藏 -
Golang · Go问答 | 1个月前 | net/http · Go问答 · http.MaxBytesReader io.LimitReader Go multipart.Reader Go multipart上传大小限制 multipart.Reader超限处理
Go multipart.Reader本身没有直接设置整包字节上限的参数。本文区分请求体总大小、单个Part大小和ReadForm内存边界,给出MaxBytesReader与LimitReader的组合写法及超限处理清单。262 收藏 -
flate.HuffmanOnly 只做 Huffman 熵编码,不搜索重复字符串。输入很短、字节分布接近均匀、已经完成熵编码,或频繁 Flush 时,DEFLATE 块与同步标记开销可能超过节省的字节。本文说明如何测量并选择模式。262 收藏 -
讲清 Go testing.T.Context 与 Cleanup 的取消时序,演示后台 goroutine 如何通过 done 和 errCh 退出,并在 Cleanup 中安全完成并发断言。262 收藏