Files
bl/common/utils/limit
昔念 937f97fe83 ```
feat(go): 升级 Go 版本至 1.20

统一将所有模块的 Go 版本从 1.18 或 1.19 升级到 1.20,以使用最新的语言特性和性能改进。

feat(service): 新增乱斗服务默认宠物生成逻辑

在 fight 模块中调用新的 MELEEService.Def() 方法来生成初始对战宠物,
并根据配置
2025-12-15 14:26:24 +08:00
..
```
2025-12-15 14:26:24 +08:00

limit PkgGoDev

一个高性能、并发安全的 Go 语言动态速率限制器

安装指南

go get -u github.com/xiaoqidun/limit

快速开始

package main

import (
	"fmt"

	"github.com/xiaoqidun/limit"
	"golang.org/x/time/rate"
)

func main() {
	// 1. 创建一个新的 Limiter 实例
	limiter := limit.New()
	// 2. 确保在程序退出前优雅地停止后台任务,这非常重要
	defer limiter.Stop()
	// 3. 为任意键 "some-key" 获取一个速率限制器
	//    - rate.Limit(2): 表示速率为 "每秒2个请求"
	//    - 2: 表示桶的容量 (Burst)允许瞬时处理2个请求
	rateLimiter := limiter.Get("some-key", rate.Limit(2), 2)
	// 4. 模拟3次连续的突发请求
	//    由于速率和容量都为2只有前两次请求能立即成功
	for i := 0; i < 3; i++ {
		if rateLimiter.Allow() {
			fmt.Printf("请求 %d: 已允许\n", i+1)
		} else {
			fmt.Printf("请求 %d: 已拒绝\n", i+1)
		}
	}
}

授权协议

本项目使用 Apache License 2.0 授权协议