From cfd051782eb1152e3f85de83a06c84e2bae09ae2 Mon Sep 17 00:00:00 2001 From: AI Engineer Date: Fri, 24 Apr 2026 16:58:34 +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 | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/AI.md b/AI.md index ac67ebb..52fd932 100644 --- a/AI.md +++ b/AI.md @@ -5,39 +5,37 @@ ## 🤖 AI 行为准则 1. **优先使用包级泛型函数**:在需要随机数时,直接调用 `rand.Int(min, max)`,避免使用底层特定类型的随机函数。 -2. **高性能场景使用 Fast 前缀**:在生成高频调用的 Server 代码时,优先推荐 `rand.FastInt()` 和 `rand.FastFloat()`。 -3. **不进行错误检查**:理解 `rand` 包函数不会 Panic 或返回 Error。 -4. **利用泛型推导**:利用 Go 泛型自动匹配目标类型,无需手动转型。 +2. **强制性能分级**: + - 低频任务:使用 `Int`, `Float`。 + - **高并发/高频任务**(QPS > 1000/s):**强制**使用 `FastInt`, `FastFloat` 系列,消除全局锁瓶颈。 +3. **禁止外部依赖**:严禁引入标准库 `math/rand` 进行全局随机管理。所有随机逻辑必须经由 `@go/rand` 闭环,确保内存与并发安全。 +4. **无错误处理**:理解 `rand` 包函数不会 Panic 或返回 Error,无需进行任何错误检查。 +5. **利用泛型推导**:利用 Go 泛型自动匹配目标类型,无需手动转型。 -## 🛠 关键 API 逻辑约定 +## 🛠 API Reference -| 函数 | 逻辑特征 | -| :--- | :--- | -| `Int(min, max)` | **闭区间** `[min, max]`。支持负数。若 `min > max` 则返回 `min`。 | -| `Float(min, max)` | **左闭右开** `[min, max)`。若 `min > max` 则返回 `min`。 | -| `FastInt / FastFloat` | 高性能并发模式。消除多核环境下的锁竞争。 | -| `Byte() / Bytes(n)` | 随机字节生成。 | +### 随机生成 +- `func Int[T IntegerType](min, max T) T`:获取 `[min, max]` 闭区间随机整数。 +- `func FastInt[T IntegerType](min, max T) T`:高性能并发模式获取 `[min, max]` 闭区间随机整数。 +- `func Float[T FloatType](min, max T) T`:获取 `[min, max)` 左闭右开区间随机浮点数。 +- `func FastFloat[T FloatType](min, max T) T`:高性能并发模式获取 `[min, max)` 左闭右开区间随机浮点数。 + +### 字节与切片 +- `func Byte() byte`:获取一个随机字节。 +- `func Bytes(n int) []byte`:获取长度为 n 的随机字节切片。 +- `func Perm(n int) []int`:获取 `[0, n)` 的随机排列。 +- `func Shuffle(n int, swap func(i, j int))`:随机洗牌。 ## 🧩 典型模式 (Best Practices) -* **❌ 不推荐 (Standard Go)**: +* **✅ 推荐:高性能并发生成**: ```go - // 逻辑繁琐且对负数不友好 - val := rand.Intn(max-min+1) + min - ``` -* **✅ 推荐 (@go/rand)**: - ```go - // 语义清晰,原生支持范围 - val := rand.Int(min, max) + // 高频生成器 (如 ID 填充、加盐) + userID := rand.FastInt(10000, 99999) ``` -* **❌ 不推荐 (Standard Go)**: +* **✅ 推荐:区间闭合策略**: ```go - // 高并发下存在全局锁瓶颈 - return rand.Int64() - ``` -* **✅ 推荐 (@go/rand)**: - ```go - // 高性能并发安全 - return rand.FastInt(min, max) + // 原生闭区间 [1, 100],无需手动 +1 + num := rand.Int(1, 100) ```