src/DotNetCommon.Core/DistributeGenerator.cs
(开头部分) 29KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using DotNetCommon.Extensions;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DotNetCommon
{
internal class CacheFileStreamContext
{
public long LastId { get; set; }
public string LastDateText { get; set; }
}
/// <summary>
/// 分布式生成流水号时使用的缓存器,因为docker部署时可能会清空目录,所以需要将生成的流水号缓存到其他地方<para></para>
/// 非docker环境下忽略
/// </summary>
public interface IDistributeGeneratorCache
{
/// <summary>
/// 初始读取所有缓存项
/// </summary>
/// <returns></returns>
ConcurrentDictionary<string, ConcurrentDictionary<string, long>> InitReadCache();
/// <summary>
/// 写入缓存项
/// </summary>
/// <param name="staticText"></param>
/// <param name="dateText"></param>
/// <param name="id"></param>
void WriteCache(string staticText, string dateText, long id);
}
/// <summary>
/// 使用本地文件缓存流水号生成数据
/// </summary>
public class DistributeGeneratorFileCache : IDistributeGeneratorCache
{
/// <summary>
/// 缓存及目录
/// </summary>
public string CacheDir { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ".cache");
//unc路径
//public static string CacheDir = @"\\Jackletter-PC\分布式流水号生成缓存\.cache";
private ConcurrentDictionary<string, object> _locks = new ConcurrentDictionary<string, object>();
/// <summary>
/// 读取并压缩缓存文件
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
后面还有 721 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
