初始化CRICS

This commit is contained in:
2025-12-11 09:17:16 +08:00
commit 83247ec0a2
2735 changed files with 787765 additions and 0 deletions

51
Common/RateLimiter.cs Normal file
View File

@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Threading;
namespace Common
{
public class RateLimiter
{
private static readonly object lockObject = new object();
private static readonly int requestsPerSecond = 5;//每秒允许请求5次
private static int remainingRequests;//剩余请求次数
private static long lastRequestTime;//上次请求时间
/// <summary>
/// 实现速率限制。它根据指定的每秒请求数量来控制请求是否被允许
/// </summary>
static RateLimiter()
{
remainingRequests = requestsPerSecond;
lastRequestTime = DateTime.UtcNow.Ticks;
}
/// <summary>
/// 实现速率限制默认每秒允许请求5次
/// </summary>
/// <returns></returns>
public static bool TryRequest()
{
lock (lockObject)
{
long currentTime = DateTime.UtcNow.Ticks;//当前请求时间
long elapsedTicks = currentTime - lastRequestTime;
double elapsedSeconds = elapsedTicks / TimeSpan.TicksPerSecond;
remainingRequests += (int)(elapsedSeconds * requestsPerSecond);
if (remainingRequests > requestsPerSecond)
{
remainingRequests = requestsPerSecond;
}
if (remainingRequests > 0)
{
remainingRequests--;
lastRequestTime = currentTime;
return true;
}
return false;
}
}
}
}