当前位置: 首页 > news >正文

C# 生成有序Guid的几种方法

C# 生成有序Guid的几种方法

public sealed class SequentialGuid{//使用 Guid.NewGuid() 的字节重排/// <summary>/// 优点及适用场景:/// 1.系统只在应用层生成GUID,追求极致的插入性能和最低的索引碎片/// 2.系统并发量极高,需要最高的时间戳精度来避免冲突(因为使用系统滴答计数(Tick),精度为100纳秒)/// </summary>/// <param name="guidType"></param>/// <returns></returns>public static Guid Create(SequentialGuidType guidType = SequentialGuidType.SequentialAsString){var randomBytes = Guid.NewGuid().ToByteArray();var timeBytes = BitConverter.GetBytes(DateTime.UtcNow.Ticks);if (BitConverter.IsLittleEndian)Array.Reverse(timeBytes);byte[] sequentialBytes;switch (guidType){case SequentialGuidType.SequentialAsString:case SequentialGuidType.SequentialAsBinary:sequentialBytes = new byte[16];Buffer.BlockCopy(timeBytes, 2, sequentialBytes, 0, 6);Buffer.BlockCopy(randomBytes, 0, sequentialBytes, 6, 10);break;case SequentialGuidType.SequentialAtEnd:sequentialBytes = new byte[16];Buffer.BlockCopy(randomBytes, 0, sequentialBytes, 0, 10);Buffer.BlockCopy(timeBytes, 2, sequentialBytes, 10, 6);break;default:throw new ArgumentOutOfRangeException("guidType");}return new Guid(sequentialBytes);}public enum SequentialGuidType{SequentialAsString,SequentialAsBinary,SequentialAtEnd}//使用 Comb GUID 算法/// <summary>/// 优点及适用场景:/// 1.需要与SQL Server NEWSEQUENTIALID() 完全兼容和互操作/// 2.简单、稳定、社区接受度高    /// 3.精度较低(约3.33毫秒)。/// PS:建议使用此方案/// </summary>/// <returns></returns>public static Guid NewComb(){byte[] guidArray = Guid.NewGuid().ToByteArray();DateTime baseDate = new DateTime(1900, 1, 1);DateTime now = DateTime.Now;// 获取从基准时间到现在的毫秒数TimeSpan days = new TimeSpan(now.Ticks - baseDate.Ticks);TimeSpan msecs = now.TimeOfDay;// 转换为字节数组byte[] daysArray = BitConverter.GetBytes(days.Days);byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds / 3.333333));// 反转字节顺序,因为 .NET 是小端序if (BitConverter.IsLittleEndian){Array.Reverse(daysArray);Array.Reverse(msecsArray);}// 将时间部分复制到 GUID 中Buffer.BlockCopy(daysArray, daysArray.Length - 2, guidArray, guidArray.Length - 6, 2);Buffer.BlockCopy(msecsArray, msecsArray.Length - 4, guidArray, guidArray.Length - 4, 4);return new Guid(guidArray);}//使用 MassTransit 的有序 GUID/// <summary>/// NewId 转换为 GUID 可能不符合 RFC 4122 标准/// 高性能要求:选择 MassTransit NewId/// </summary>/// <returns></returns>public static Guid MassGenGuid(){return MassTransit.NewId.Next().ToGuid();// 或者直接使用 NewId 类型// Id = NewId.Next().ToString()
        }}

 

http://www.jsqmd.com/news/37393/

相关文章:

  • 2025年评价高的双胞胎婴儿车排名
  • 类对象作为输入参数
  • 探索Apache APISIX:动态高性能API网关 - 实践
  • 2025年评价高的箱涵管道清淤机器人实力厂家TOP推荐榜
  • 2025-11-10
  • 2-2-3-一致性哈希
  • 2025年比较好的六角网眼布厂家推荐及选择指南
  • 安装sherpa过程中遇到的问题记录
  • 详细介绍:TIA Portal中运动控制(一)(功能块MC_Power...)
  • 详细介绍:基于卷积神经网络的血管图像自动分割算法研究
  • 阿里云通过中国信通院首批安全可信中间件评估
  • GTest源码分析——用例注册与执行过程
  • Excel处理控件Aspose.Cells教程:如何使用C#在Excel中添加、编辑和更新切片器
  • php版本的发QQ邮件
  • A股的特点就是资金和筹码游戏,利用T+1割散户
  • 绕过验证码与登录:Playwright 自动化测试的身份认证策略
  • FastReport在线设计器2026.1版本发布,新增报表验证工具等
  • 深入解析:Excel VLOOKUP函数完全教程:从基础到高级实战
  • 2025年直流分流器直销厂家权威推荐榜单:分流器/车规分流器/储能分流器源头厂家精选
  • 2025年质量好的透明封箱胶带高评价厂家推荐榜
  • 基于Dify工作流,轻松构建会自我优化的测试智能体
  • 团队作业第二次作业
  • 2025年热门的铝合金变形缝行业内知名厂家排行榜
  • 面试官连问21题:Transformer底层原理与测试工程全解析!
  • 2025 年 11 月数码印花厂家 环保智能双标杆 口碑评价与选型排行榜
  • 2025年质量好的新能源汽车直流接触器优质厂家推荐榜单
  • 【原】无脑操作:SpringAI + 讯飞星火大模型(OpenAI接口方式)实现简单智能对话
  • js dom元素向上查找匹配元素
  • 2025年口碑好的pe贴体膜厂家推荐及采购指南
  • 2025年热门的衣柜橱柜家具拉手优质厂家推荐榜单