Go语言技术文章
-
接口偶发超时,不一定要先抓完整报文。借助 Linux 内核 TCP tracepoint 和 bpftrace,可以先统计重传发生在哪个进程、频率如何,再决定是否深入网卡、路由或应用层。106 收藏 -
动态字段名拼接必须白名单校验,且参数绑定须用计算属性语法;JSONB模糊查询需确保字段为JSONB类型并建GIN索引;复杂场景应改用原生SQL+占位符参数化。动态字段名拼接必须白名单校验TypeORM的andWhere对于字段名(比如JSONB路径row_data->>'Location'里的Loc106 收藏 -
数据库 · MySQL | 1星期前 | MySQL · InnoDB · purge · 长事务 · 数据库诊断 · Purge Lag 长事务 InnoDB history list length information_schema.innodb_trx sys.innodb_lock_waits
InnoDB history list length 持续升高,通常不是单纯的写入变快,而是 purge 被长事务或历史读视图拖住。本文从监控现象出发,用 information_schema.innodb_trx、performance_schema 与 sys 视图定位阻塞源,再给出安全结束事务和复查回收速度的步骤。106 收藏 -
文章 · php教程 | 1星期前 | HTTP · 文件上传 · PHP · PHP 8.4 · multipart/form-data PHP 8.4 request_parse_body PUT文件上传
PHP 8.4 的 request_parse_body() 让 PUT、PATCH 等非 POST 请求也能解析表单和文件。用一个可运行的小接口说明请求体只能读取一次、上传大小覆盖和失败验收。106 收藏 -
Go 1.26 的 errors.AsType 用泛型简化错误类型提取。本文用 PathError 和 ErrNotFound 讲清返回值、零值、errors.Is 以及旧版本兼容边界。106 收藏 -
MySQL 8.4 升级后旧客户端可能因认证插件不兼容而连接失败。本文从 mysql_native_password 停用、账户认证方式和客户端升级三个边界出发,给出可回滚的检查、切换与回归步骤。106 收藏 -
长列表加载更多时,IntersectionObserver 可能因哨兵节点持续可见而重复触发。本文用 sentinel、entry.isIntersecting、loading 和 loadMore 收口一次请求,处理快速滚动与末页边界。106 收藏 -
Redis GEOSEARCH 做附近门店查询时,距离相同、门店坐标变化和分页游标都会影响结果稳定性。本文用 GEOSEARCH、WITHDIST 和业务排序键拆解半径分页边界,并给出可重复的校验方法。105 收藏 -
Go 的 sync.Cond 适合让 goroutine 等待一个由共享状态表达的条件。本文用一个有界任务队列拆开 Wait、Signal 与 Broadcast 的正确顺序,并补上退出、空队列和误唤醒后的核对方法。105 收藏 -
科技周边 · 人工智能 | 1天前 | 数据迁移 · 人工智能 · rag · embedding · 向量检索 · 向量数据库 向量维度 OpenAI Embeddings dimensions 索引迁移
向量检索系统里,模型、dimensions 参数和索引维度必须形成一份可检查的契约。本文用 OpenAI Embeddings 的请求参数、双索引回填和查询路由,说明如何迁移维度而不让新旧向量混在一起。105 收藏 -
Redis FUNCTION STATS 只能观察当前正在执行的函数,本文用 Redis 8.0 的真实长函数复现 running_script、duration_ms 与 engines 返回值,并说明它和历史调用统计的边界。105 收藏 -
RAG 知识库更新后仍返回旧答案,通常不是模型突然失忆,而是旧分片仍能被召回。本文用文档版本、元数据过滤和固定问题集建立一条可验收的更新流程,覆盖发布、回滚和灰度边界。104 收藏 -
科技周边 · 人工智能 | 5天前 | 调试 · 人工智能 · mcp · resources · uri · 资源类型 客户端缓存 MCP resources/read resources/read URI编码
MCP 客户端拿到 resources/read 的空结果时,问题通常不在模型,而在 URI 没有按原值传递、内容类型判断错误或把资源列表缓存成了永久数据。本文按一次可复现的排查顺序,拆开 URI、contents、文本与二进制资源,以及缓存失效边界。104 收藏 -
TypeIs 和 TypeGuard 都能让类型检查器理解自定义谓词,但它们对 True、False 分支以及不变容器的处理并不相同。用可运行示例拆开选择边界。104 收藏 -
Go sync.Cond 的关键不是把 Signal 换成 Broadcast,而是让等待条件、互斥锁和唤醒范围保持一致。本文从有界队列场景出发,拆解 Wait 的循环写法、Signal 与 Broadcast 的选择、丢唤醒风险和可验证的测试边界。104 收藏