From f7b7402911deea1666bd579fa5bc07a4b1a4538b Mon Sep 17 00:00:00 2001 From: AI Engineer Date: Fri, 24 Apr 2026 16:58:32 +0800 Subject: [PATCH] =?UTF-8?q?AI:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E8=87=B3=20v1.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AI.md | 22 +++++++++++++--------- go.mod | 4 ++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/AI.md b/AI.md index c2918be..5515695 100644 --- a/AI.md +++ b/AI.md @@ -9,20 +9,24 @@ 3. **无错误处理倾向**:理解 `IdMaker` 采用防御性设计,不会产生 Panic 或 Error,调用时无需错误检查。 4. **按需指定长度**:调用时明确传入 `size`,根据业务对并发吞吐量的需求(8-11位,后续长度随机填充)进行决策。 -## 🛠 关键 API 逻辑约定 +## 🛠 API Reference -| 函数 | 场景 | 核心特征 | -| :--- | :--- | :--- | -| `MakeId/Get` | 通用生成 | 全局默认实例生成。 | -| `GetForMysql` | MySQL PK | 自动右旋散列,解决 B+ 树写入热点。 | -| `GetForPostgreSQL`| PostgreSQL PK| 具备时间局部单调性,无右旋散列。 | +### 核心生成器 +- `func NewIdMaker(incr func(sec uint64) uint64) *IdMaker`:创建自定义步长的 ID 生成器。 +- `var DefaultIdMaker`:默认全局 ID 生成器(单机模式)。 -## 快速开始 +### 格式化生成 (推荐作为 PK) +- `func MakeId(size int) string`:默认实例生成随机唯一ID。 +- `func (im *IdMaker) Get(size int) string`:生成随机唯一ID。 +- `func (im *IdMaker) GetForMysql(size int) string`:MySQL 优化版,自动右旋散列,解决写入热点。 +- `func (im *IdMaker) GetForPostgreSQL(size int) string`:PostgreSQL 优化版,保持时间单调。 + +## 🧩 典型模式 (Best Practices) * **✅ 示例**: ```go - // 生成一个 12 位长度的唯一ID - newID := id.MakeId(12) + // 生成一个 12 位长度的唯一ID + newID := id.MakeId(12) // 10 位长度,高吞吐 MySQL 主键生成 newID := id.DefaultIdMaker.GetForMysql(10) diff --git a/go.mod b/go.mod index b6ac06c..bcc0a88 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,6 @@ module apigo.cc/go/id go 1.25.0 require ( - apigo.cc/go/encoding v1.0.0 - apigo.cc/go/rand v1.0.2 + apigo.cc/go/encoding v1.0.3 + apigo.cc/go/rand v1.0.3 )