Blog

技术博客

格达软件工程师的实战经验、技术选型与行业观察

G 技术分享

rg 与 fd 搜不全代码:四个过滤层和六个坑

rg 默认会跳过 .gitignore 里的文件、隐藏文件和二进制文件,搜不全往往不是快慢问题而是范围问题。这篇拆开它的四层过滤,讲清 fd 的 -x 与 -X 的取舍,给出六个真实踩过的坑和可直接复制的命令。

2026-11-08 #ripgrep#fd 2
G 技术分享

git reset --hard 后,丢的提交怎么捞回来

reset --hard 敲错分支、stash 手滑 drop、rebase 结果不对——这些场景下数据大多还在 .git/objects 里。本文用可复现的实验讲清 reflog 的用法和失效条件、fsck 捞 dangling commit 和 blob 的具体命令,以及哪些丢失其实救不回来。

2026-11-07 #Git#reflog 4
G 技术分享

200 行写个 ORM,看清 SQLAlchemy 的 Session

从一段 N+1 的导出脚本讲起,用 200 行实现一个能跑的迷你 ORM,把描述符映射、identity map、flush 时机这几个 SQLAlchemy 核心机制拆开看,再给出它的失效边界:批量插入、懒加载、长 session 的坑。

2026-11-06 #Python#SQLAlchemy 5
G 技术分享

6 人团队维护 12 个微服务:拆分失败的代价和替代方案

用一次真实拆分复盘,算清 10 人以下团队上微服务的三笔账:运维、联调、分布式故障,并给出模块化单体的边界约束代码、可逆的远程调用改造方式,以及团队到底到多大规模才该拆的判据。

2026-11-05 #微服务#单体架构 4
G 技术分享

手写 LRU 缓存:O(1) 双向链表与 6 个真实坑

从本地缓存被 OOMKilled 的真实场景出发,用 Go 泛型手写一个 O(1) 的 LRU,讲清哈希表为什么必须存节点指针、Get 不挪位置会退化成 FIFO、分片锁的收益与代价、按条数淘汰的内存陷阱,以及 LRU 挡不住扫描流量时该换什么。

2026-11-04 #LRU#Go 5
G 技术分享

shared_ptr 泄漏排查与三种智能指针的选型边界

从一个回调捕获 shared_from_this 导致的内存泄漏出发,讲清 unique_ptr、shared_ptr、weak_ptr 各自该在什么时候用:所有权怎么判断、shared_ptr 的原子操作与 make_shared 的代价、weak_ptr 的 TOCTOU 陷阱,附可运行的基准代码和选型表。

2026-11-03 #C++#智能指针 7
G 技术分享

我给本地缓存加了 TTL 和 LRU,踩了三个并发坑

从一个风控服务的真实场景出发,手写一个带过期时间和 LRU 淘汰的进程内缓存工具类。讲清链表与 Map 的并发删除竞态、时间源选择、清理线程的两个陷阱,以及缓存击穿的处理方式。

2026-11-02 #Java#本地缓存 5
G 技术分享

200 万条联想词,Trie 吃掉 2.2 GB 之后

200 万条搜索词的前缀匹配,用 HashMap 做 Trie 吃掉 2.2 GB 内存。本文拆解这 2.2 GB 的具体构成,对比 26 叉数组、Radix Tree、双数组 Trie 和排序数组二分的真实开销,并记录空串、surrogate pair、热更新等边界上的踩坑。

2026-11-01 #Trie#Radix Tree 6
G 技术分享

200 个接口从 40 秒到 1 秒:asyncio 改造与三个坑

把聚合 200 笔下游状态的页面从串行 40 秒改到 0.9 秒:讲清协程与事件循环的调度机制,以及三个不报错、只变慢的坑——协程里混入阻塞调用、并发不设上限、任务引用丢失与取消被吞。

2026-10-31 #Python#asyncio 5
G 技术分享

Vue 列表输入卡 300ms:六处改动与各自的代价

5000 行订单列表,搜索框每敲一个字符卡 250ms。这篇文章拆解卡顿的真实来源(不是 computed 没缓存,是 patch 了 4 万个 DOM 节点),给出虚拟滚动、shallowRef、v-memo、key 选择的可用代码,以及每种优化不该用的场景。

2026-10-30 #Vue 3#渲染性能 4

有软件开发需求?我们 24 小时内响应

提交您的需求,格达软件将为您提供免费的需求评估与技术方案建议,咨询全程不收取任何费用。