Go语言技术文章
-
用 Go 的 math/big.Int.FillBytes 把大整数写入固定长度的大端字节字段,理解绝对值、左侧补零和容量不足 panic 的边界,并给出可验证的协议字段校验写法。241 收藏 -
Linux 服务在启动阶段卡在随机数读取,通常不是 CPU 忙,而是 getrandom 等待内核熵池完成初始化。本文区分默认阻塞、GRND_NONBLOCK 返回 EAGAIN 和大缓冲区读取边界,并给出从日志到系统状态的核对顺序。241 收藏 -
把 MySQL LOAD DATA 导入大文件从一次性命令升级成可回滚流程:先固定字符集和字段边界,再隔离错误行,最后用临时表与原子切换避免半成品进入业务表。240 收藏 -
Go 1.25 的 trace.FlightRecorder 适合捕获长时间运行服务中的短暂性能异常。本文从缓冲窗口、触发快照、go tool trace 分析和并发边界入手,说明什么时候该用它,以及如何控制内存和文件大小。240 收藏 -
PHP 8.5 扩展了 #[\Deprecated] 的使用范围,可以标记 trait 和常量。本文从旧 API 迁移现场出发,用函数、trait、类常量和全局常量示例,验证 E_USER_DEPRECATED、Reflection 与版本兼容边界。239 收藏 -
数据库 · MySQL | 2星期前 | MySQL · 索引 · 执行计划 · sql优化 · 性能排查 · 执行计划 MySQL 8.4 EXPLAIN FORMAT=JSON cost_info query_cost
MySQL 查询慢时,EXPLAIN 的 rows 只是行数估算,真正影响优化器取舍的还包括 cost_info。本文用订单列表场景拆解 query_cost、read_cost、条件评估成本、prefix_cost 的关系,再用 EXPLAIN ANALYZE 复核估算偏差,避免把 cost 数字直接当成毫秒。239 收藏 -
AI 流式接口不能只靠某个文本片段判断结束。本文用事件序列拆解增量内容、完成事件、失败状态与断线续接,给出客户端状态机、重复片段处理和验收清单。239 收藏 -
go/ast.Preorder 从 Go 1.23 开始返回 iter.Seq[ast.Node],适合用 range 按深度优先顺序读取语法树。本文用一个真实的 AST 分析小工具说明如何解析源码、按节点类型筛选、在找到目标后自然停止,并比较 Inspect 的控制方式。239 收藏 -
自定义断言函数不调用 testing.TB.Helper 时,测试失败位置常常落在断言库内部,排查成本很高。本文用一个最小断言函数说明 Helper 如何改变失败行号、为什么要放在函数入口,以及在 TB 接口、子测试和并发调用中的边界。239 收藏 -
用配置预检命令在重启服务前检查 unit 配置,从加载失败、依赖顺序和路径问题入手定位错误,并设计可回滚的上线步骤。239 收藏 -
embed.FS 读取静态资源时,文件路径必须遵守 io/fs 的相对路径规则。本文用 assets/ 与模板读取场景说明路径前缀、fs.ValidPath 和 fs.Sub 的边界,给出可复用的校验与测试写法。239 收藏 -
说明皮皮喵漫画的Google Play核验入口、开发者与包名信息,并梳理聚合搜索、设备兼容和隐私政策的使用边界。239 收藏 -
Go 1.27 草案让 go test 默认启用 stdversion 检查,帮助发现代码使用了高于 go.mod 版本的标准库符号。本文从告警含义、版本边界、构建标签和 CI 落地四个角度拆解升级动作。238 收藏 -
MySQL 8.4 的 InnoDB 死锁发生后会自动选择一个事务回滚,但应用仍要识别错误并重试。本文用订单与库存更新场景演示如何读取 SHOW ENGINE INNODB STATUS、开启 innodb_print_all_deadlocks、判断受害事务并验收重试策略。238 收藏 -
Gemini 3 的 function calling 在手动维护多轮历史时,不能丢掉 thought_signature。本文用一个最小工具调用链说明官方 SDK、REST 手写历史和错误降级的处理边界。238 收藏