Go语言技术文章
-
Golang · Go教程 | 1个月前 | golang · JSON · 故障排查 · Go教程 · 接口设计 · JSON Go 接口兼容性 DisallowUnknownFields 严格解码
接口增加 json.Decoder.DisallowUnknownFields 后,旧客户端多传字段会从静默兼容变成 400。本文用一个订单接口故障复盘这个变化,说明如何定位触发条件、保留严格校验的收益,并通过灰度和版本边界避免再次误伤旧请求。174 收藏 -
Go 处理大文件上传时,不要直接把请求体读进内存。本文用临时文件串起流式写入、大小校验、SHA-256 校验和原子替换,说明每一步为什么存在,以及失败时怎样清理。335 收藏 -
Go 定时任务并不只是每隔几分钟调用一次函数。本文比较 time.Ticker 与 cron 调度器在固定间隔、整点触发、错过补偿、任务重叠和停机收尾上的差异,并给出按业务约束选型的最小实现。113 收藏 -
Java 批量导出订单报表时,直接把查询结果收集到 List 再写 Excel,很容易在大数据量下触发 Full GC 甚至 OOM。本文从一次导出任务的架构改造出发,拆解数据库游标读取、分片文件写入、任务状态保存和 Range 续传的配合方式。200 收藏 -
Golang · Go问答 | 1个月前 | 微服务 · Redis · postgresql · go · 性能优化 · Redis连接池 Go连接池 PostgreSQL连接池 context超时 并发预算
一个 Go 接口同时查 Redis 和 PostgreSQL 时,连接池参数不能照搬默认值。本文从请求并发、缓存命中率和数据库连接上限出发,拆开两套连接池与 context 超时预算,给出可复现的配置、指标和回退判断。107 收藏 -
把老表切到 utf8mb4 后,VARCHAR(255) 的唯一索引可能突然报索引长度超限。本文从 4 字节字符、3072 字节上限和排序规则出发,比较缩短字段、前缀索引、哈希辅助列三种方案,说明如何在不牺牲唯一性判断的前提下完成迁移。499 收藏 -
一次报表临时表误清空事故,带你看清 MySQL 中 TRUNCATE TABLE 的隐式提交边界、为什么 ROLLBACK 救不回来,以及线上清理表数据时怎样保留可回退窗口。382 收藏 -
Go 1.21 之后,go 命令会根据 go.mod 的 go、toolchain 指令选择工具链。本文用一个 CI 版本漂移场景,拆开自动切换的依据、GOTOOLCHAIN 的三种边界,以及如何保留本地便利和线上可复现。316 收藏 -
前端开发服务器、文件同步工具突然报 ENOSPC,未必是磁盘满了。本文用 inotify 的三个内核限制拆开排查,找到实际占用进程,完成临时调整、持久化和回滚验证。382 收藏 -
支付请求交给 Java CompletableFuture 后,超时不等于扣款失败,直接重试可能造成重复扣款。本文用幂等键、任务状态表、超时收口和延迟重试搭出一条可核对的处理链,并补上失败通知与人工复核边界。352 收藏 -
Python multiprocessing.Pool 在服务停机时如果没有区分 close、terminate 和 join,主进程可能已经退出流程,子进程却仍然占着资源。本文用批处理场景复现停机卡住、按顺序解释三个方法的职责,并给出异常、超时和回滚检查清单。133 收藏 -
Python 服务把日志直接写入网络或磁盘时,慢 I/O 会反过来拖住请求线程。本文用 logging.QueueHandler 和 QueueListener 拆开产生日志与写日志,说明队列满载、异常处理和停机收尾的边界。322 收藏 -
Python sqlite3 事务回滚经常不是数据库坏了,而是连接的 autocommit、旧式 isolation_level 与 with 代码块边界没有对齐。用一个可复现实验看清提交、回滚和异常传播。136 收藏 -
RAG 系统最危险的不是检索慢,而是证据为空时模型仍然给出肯定答案。本文用相似度门槛、引用绑定和拒答回退,把无证据回答挡在业务接口之外。188 收藏 -
Go 服务需要在不重启进程的情况下更新限流阈值、灰度开关或下游地址时,atomic.Value、RWMutex 和 channel 归属各有适用边界。本文用一个可运行的配置热加载示例比较三种方案,并给出选择规则、校验点和回滚做法。343 收藏