Go语言技术文章
-
给 Go HTTP 接口限制请求体时,http.MaxBytesReader 超限并不会自动替处理器写完响应。本文用一个可运行的上传接口说明读取错误、状态码时机、连接收尾和测试验收应该怎样配合。218 收藏 -
Go slog 的 AddSource 能把日志调用点写进 source 字段,排查并发服务时很有用,但每条日志都要承担调用点定位和格式化成本。本文用可验证的基准与生产开关说明它的代价、适用范围和安全切换方式。192 收藏 -
Responses API 的 tool_choice 不只是 auto 和 required 两个开关。本文用一个订单查询工具说明如何强制调用、指定具体工具,并用响应项和业务回退做可复查验收。484 收藏 -
从切片别名、append 扩容和底层数组保留三个角度,说明 Go slices.Clone 的适用边界,并用可运行示例验证复制后的修改、nil 语义与内存释放判断。126 收藏 -
数据库 · Redis | 1星期前 | Redis · 客户端 · 集群 · Redis Cluster · 故障排查 · redis 重定向 Redis Cluster 哈希槽 MOVED ASK
Redis Cluster 返回 MOVED 或 ASK 时,客户端都需要重定向,但两者代表的槽位状态并不相同。本文用槽位迁移现场拆开路由缓存、ASKING、重试次数和故障排查边界,帮助判断哪些响应可以自动跟随、哪些情况应该先查集群状态。191 收藏 -
Go 服务偶发变慢时,runtime/metrics 能把 GC 频率、暂停和堆目标放到同一组可采样指标里。本文从一次延迟抖动开始,说明如何选指标、对齐时间窗口,并排除把正常回收误判成 GC 压力。278 收藏 -
Go 的一次取值函数适合惰性初始化,但初始化函数一旦 panic,后续调用会再次 panic,而不是自动重试。本文拆开这个语义,给出可观测、可控的失败处理方案。152 收藏 -
Go 的 map range 顺序没有稳定保证,同一张 map 也不能把第一次遍历结果当成下一次的顺序。本文用一个最小示例说明随机化边界,并给出测试、日志和接口输出需要排序时的可靠写法。119 收藏 -
bufio.Scanner 返回 false 不一定代表文件读完了,长 token、SplitFunc 规则和 Err 检查都会改变结果。本文用可运行示例拆开这几个边界,并给出读取大行时的修复方式。454 收藏 -
国家医保服务平台亲情账户可以帮助家人代为展示医保码、查询相关服务。本文按官方说明整理绑定老人和孩子时的入口、材料、验证方式、代刷边界和异常处理,避免把亲情账户与家庭共济混为一谈。484 收藏 -
Go 1.25 的 runtime/trace.FlightRecorder 能持续保留最近一段执行轨迹,在慢请求或健康检查异常时导出现场。本文用一个 100 毫秒慢请求阈值示例,说明 MinAge、MaxBytes、WriteTo 和 go tool trace 的配合边界。336 收藏 -
scheduler.postTask 可以把前端任务按 user-blocking、user-visible 和 background 分层,并通过 AbortController 取消尚未执行的工作。本文从交互卡顿场景出发,给出最小用法、任务取消、兼容降级和验收边界。151 收藏 -
Go 写文件时,os.File.Sync 成功并不等于包含它的目录项也完成持久化。本文用临时文件、重命名和目录同步的完整流程,说明崩溃恢复时该看哪些边界。410 收藏 -
Go 1.25 将 testing/synctest 从实验功能带到标准库可用状态,本文用超时重试测试说明如何替换旧开关、检查虚拟时间语义并让 CI 稳定验收。245 收藏 -
QueueHandler 能把业务线程与日志写盘拆开,但队列满载、监听线程退出和异常日志递归仍会让系统失去可观测性。本文从负载约束、方案取舍和验收指标出发,给出一套可落地的降级做法。164 收藏