文章
这里收录了我发布的全部文章。
-
Linux I/O(一):epoll 高性能的本质与使用要点
epoll 把 select/poll 的 O(n) 轮询重构为「注册一次 + 设备就绪时回调插入链表」的事件驱动模型;正确使用的核心是 ET 必须配非阻塞 + 循环到 EAGAIN、EPOLLERR/EPOLLHUP 无需请求但必须处理、close 前必须显式 EPOLLCTLDEL(防 dup 场景的悬垂监听)。
-
GORM(二):关联与预加载
GORM 支持四种关联类型(Belongs To / Has One / Has Many / Many To Many)和多态关联。默认是懒加载(不自动加载关联),用 Preload 做 eager loading(2 条 SQL 解决 N+1),用 Joins 做单条 JOIN 查询(适合按关联字段过滤)。Association Mode 提供 Find/Append/Replace/Delete/Clear/Count 六种操作管理关联关系。
-
GORM(一):核心用法与设计决策
GORM 是 Go 生态最主流的 ORM,通过 struct tag 映射模型、method chaining 构建查询、自动事务保证写入一致性。核心概念:gorm.Model 提供 ID/时间戳/软删除,Session/Statement 架构解决链式调用的状态污染问题,Save() 更新全字段而 Updates() 只更新非零值字段。v1.30.0+ 引入 Generics API 提供类型安全。
-
Go 数据库:sqlc 的 SQL-first 类型安全方案
sqlc 是一个编译器:输入 schema.sql(DDL)+ query.sql(带注解的 DML),输出类型安全的 Go 代码。不是 ORM,不是 query builder,是 SQL-first 的代码生成。