Go语言技术文章
-
Go log/slog 可以用 Logger.With 复用批次字段,用 LogAttrs 传递单条记录属性;自定义 Handler 注入动态字段时,应先 Clone Record,再转发 Enabled、WithAttrs 和 WithGroup,避免破坏结构化输出和额外分配边界。248 收藏 -
Linux pidfd_open 用文件描述符引用进程,适合把进程退出监控接入 poll、epoll 等等待机制,减少仅保存 PID 时遇到的复用误判。本文梳理调用方式、退出事件、版本边界和生产清单。247 收藏 -
sync.Pool归还对象不等于立即释放内存,也不会自动关闭外部资源。文章解释容量保留、外部引用和所有权错误,给出按容量筛选缓冲区的示例及对象池适用判断。247 收藏 -
Redis LATENCY DOCTOR 不只是告诉你 Redis 变慢了,还会按事件类型给出延迟尖峰的统计和建议。本文从阈值、事件名、统计指标和后续证据四步读懂报告。246 收藏 -
数据库 · MySQL | 4天前 | MySQL · JSON · 索引 · 查询优化 · MEMBER OF JSON_CONTAINS JSON_OVERLAPS MySQL多值索引 JSON path
MySQL 多值索引要让 CAST 中的 JSON path、数组元素类型与 MEMBER OF、JSON_CONTAINS、JSON_OVERLAPS 查询路径保持一致,再用 EXPLAIN 区分路径不匹配与优化器基于成本放弃索引。246 收藏 -
Redis Lua 的时间阈值只负责在脚本过久时触发 BUSY,并不会自动截断脚本。本文区分阈值配置与实际工作量限制,用 batch_size、cursor 和 KEYS/ARGV 设计可恢复的分片调用。246 收藏 -
Redis SCAN 采用游标分批遍历,一次调用只返回当前批次。本文说明 cursor、MATCH、COUNT 的真实语义,并给出正确循环和重复处理边界。245 收藏 -
Go generate 可以通过 package 路径、同目录 Go 文件列表以及 -run、-skip 精确缩小生成范围。本文结合注释触发、执行顺序和失败边界,说明如何只对指定包运行代码生成指令。245 收藏 -
Redis ZREVRANGE 按有序集合的分数从高到低读取成员,start 和 stop 是从 0 开始且包含 stop 的排名范围,-1 表示末尾。本文用 redis-cli 说明 WITHSCORES、同分排序、空结果和 ZRANGE REV 的迁移写法。245 收藏 -
Go image.Decode 得到空结果时,优先检查错误、格式注册和 Reader 读取位置。本文用最小示例说明空输入、未注册解码器、预读后未回退和 DecodeConfig 尺寸边界的处理方式。245 收藏 -
Go encoding/json 解码到 map[string]any 时,JSON 数字默认映射为 float64。本文用最小复现解释原因,并给出结构体与 Decoder.UseNumber 两种保留数字语义的处理方式。245 收藏 -
Redis SDIFF 以第一个集合为基准,排除后续所有集合的成员。通过原创名单示例说明参数顺序、缺失键、输入隔离、结果键覆盖与有效期边界。245 收藏 -
不动产登记资料查询时,查阅、抄录、复制和查询结果证明用途不同。本文按查询目的、主体、材料和办理时限说明结果形式怎么选,以及遇到补材料或不予查询时如何定位问题。245 收藏 -
filepath.Rel 只计算 basePath 与 targPath 的词法相对关系,不会自动阻止目标路径越出根目录。本文用 Go 示例说明如何处理返回错误、判断 .. 或 ../ 越界结果,并解释 Clean 与符号链接带来的边界。243 收藏 -
reflect.TypeFor 读取的是泛型参数的静态类型,不会因为没有动态值而返回空类型;真正需要单独处理 nil 接口的是 reflect.TypeOf。本文用一个类型描述小工具串起两种 API,并处理 Kind、Elem 和不支持展开的异常分支。243 收藏