Go语言技术文章
-
RAG 文档切片的 overlap 没有固定标准。本文按独立问答、连续流程和跨段推理拆分起始比例,并用边界命中、重复率、索引规模和答案证据建立调参方法。280 收藏 -
Go 中从 nil channel 接收不会返回零值,而是永久阻塞;只有已关闭且已耗尽的 channel 才会返回元素类型零值并令 ok 为 false。本文用状态对比和可取消示例说明排查与修复边界。111 收藏 -
Go 的网络连接是字节流,一次 Read 只保证返回当前可用数据。本文用固定长度包头示例说明短读原因、io.ReadFull 的正确边界,以及 EOF、超时和变长消息的处理方式。115 收藏 -
EXPIRE 只能让整个 Redis Hash key 过期,不能单独淘汰某个 field。Redis 7.4.0 起可用 HEXPIRE、HPEXPIRE 设置字段级 TTL;旧版本则应按生命周期拆分 key。456 收藏 -
Go 中向 nil channel 发送会永久阻塞,本文从运行时语义、排查路径和修复边界说明如何定位声明遗漏、select 门控与退出控制问题。345 收藏 -
Go io.ReadFull 读取固定长度消息时,只有 n 等于缓冲区长度且 err 为 nil 才算成功;本文区分 io.EOF、io.ErrUnexpectedEOF 与其他 Reader 错误,并给出安全的读取循环写法。219 收藏 -
MySQL 联合索引不是把多个单列索引简单拼在一起。以 (tenant_id,status,created_at) 为例,查询跳过第一列时通常失去按该联合键直接定位的能力,但最终是否使用索引仍要看谓词、选择性、统计信息和优化器成本。本文用 EXPLAIN 给出判断方法。264 收藏 -
分析LiblibAI文生图适合制作的角色、场景、封面与商品背景四类视觉草稿,逐项说明主体、构图、尺寸、风格、禁用项和批量数量等输入要求,以及人工收尾边界。144 收藏 -
filter_input() 读取的是 PHP 从 SAPI 保存的原始外部输入,不会跟随脚本后续对 $_GET 的修改。本文用一个最小示例拆开两条读取路径,并说明什么时候改用 filter_var(),以及如何区分参数缺失、校验失败和有效的 0。443 收藏 -
Python 3.15 引入 free-threaded Stable ABI(abi3t),本文从兼容路线、C API 改造、wheel 标签和双运行时测试说明扩展迁移准备。122 收藏 -
看到 Go 编译报告中的 moved to heap 时,不要只凭一条提示判断性能。本文用 -gcflags=-m=2 追踪地址和生命周期,再结合 -benchmem 对照确认是否值得优化。328 收藏 -
Go 子测试调用 t.Parallel 后,输入、可变夹具和共享资源需要分别管理。本文用一个小型测试项目说明循环变量绑定、数据隔离、互斥锁、父级清理与 go test -race 的验收方法。303 收藏 -
向量索引不能只看查询速度。本文以 Redis 的 FLAT、HNSW 和 SVS-VAMANA 为例,拆开比较召回率、内存、写入维护与重建代价,并给出一套可复查的选型压测方法。485 收藏 -
go vet 的 printf 检查可以在编译前发现格式化动词与参数数量、类型不匹配的问题。本文用最小示例解释诊断信息、修复方式,以及自定义日志包装函数如何接入检查。263 收藏 -
Go 的 testing.T.Cleanup 会在当前测试及其子测试完成后调用清理函数,同一测试中多个回调按后注册先执行。本文用子测试示例说明 LIFO 顺序、资源依赖和并发注册边界。242 收藏