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

news/2025/11/11 12:11:34/文章来源:https://www.cnblogs.com/wkk2020/p/19209706

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.mzph.cn/news/962245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年评价高的双胞胎婴儿车排名

2025年评价高的双胞胎婴儿车排名:专业选购指南与品牌推荐行业背景与市场趋势随着中国生育政策的调整和家庭结构的变化,双胞胎婴儿车市场近年来呈现稳定增长态势。根据中国婴童用品协会2024年发布的行业报告显示,202…

类对象作为输入参数

类对象作为输入参数package org.example; import java.util.Arrays;public class Main {public static void main(String[] args){stu stu1=new stu();stu1.say();change(stu1);//类对象作为输入参数System.out.printl…

探索Apache APISIX:动态高性能API网关 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年评价高的箱涵管道清淤机器人实力厂家TOP推荐榜

2025年评价高的箱涵管道清淤机器人实力厂家TOP推荐榜行业背景与市场趋势随着我国城市化进程加速和环保要求日益严格,市政管网、工业污水处理等领域的清淤需求呈现爆发式增长。据中国环保产业协会最新数据显示,2024年…

2025-11-10

CF Problem - 1084C - Codeforces 简单题,算每一块中a的数量,对于每一块,有选0,1,2……,k种,k+1种选法 #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 1e9+7; con…

2-2-3-一致性哈希

一、一致性哈希基本概念 一致性哈希算法是一种特殊的哈希技术,主要用于分布式系统中解决数据分片和负载均衡问题,尤其在节点动态增减时最小化数据迁移。以下从背景问题、原理、工作机制、优化措施、优缺点及应用场景…

2025年比较好的六角网眼布厂家推荐及选择指南

2025年比较好的六角网眼布厂家推荐及选择指南行业背景与市场趋势六角网眼布作为一种功能性纺织材料,近年来在鞋材、家纺、服装、箱包等领域的应用持续扩大。根据中国纺织工业联合会最新数据显示,2024年中国功能性网布…

安装sherpa过程中遇到的问题记录

最近在研究sherpa框架的相关问题,目前在搭建过程中碰到了一些问题在这里进行记录: 问题1、centos安装报错 Cant link to the standard math library. 解决方案: 1、重新安装glibc库,命令:sudo yum reinstall glib…

详细介绍:TIA Portal中运动控制(一)(功能块MC_Power...)

详细介绍:TIA Portal中运动控制(一)(功能块MC_Power...)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

详细介绍:基于卷积神经网络的血管图像自动分割算法研究

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

阿里云通过中国信通院首批安全可信中间件评估

近日,由中国信通院主办的 2025(第五届)数字化转型发展大会在京举行。会上,“阿里云应用服务器软件 AliEE”、“消息队列软件 RocketMQ”、“云数据库 Tair”三款产品成功通过中国信通院“安全可信中间件”系列评估…

GTest源码分析——用例注册与执行过程

GTest源码分析——用例注册与执行过程google/googletest | DeepWiki Google Test(GTest)使用方法和源码解析——自动调度机制分析_&test::testbody-CSDN博客本文不是按照阅读源码时的分析顺序,而是在阅读源码后,…

Excel处理控件Aspose.Cells教程:如何使用C#在Excel中添加、编辑和更新切片器

Excel 中的切片器是 Excel 最直观的数据筛选和可视化工具之一。本教程将展示如何借助Aspose.cells使用C#在Excel中添加切片器,您还将学习如何以编程方式编辑和更新切片器,以及如何为分析师、数据专家和开发人员打造功…

php版本的发QQ邮件

<?phpclass Smtp {// 邮件传输代理服务器地址protected $sendServer;// 邮件传输代理服务器端口protected $port;// 是否是安全连接protected $isSecurity;// 邮件传输代理用户名protected $userName;// 邮件传输代…

A股的特点就是资金和筹码游戏,利用T+1割散户

ECT-OS-JiuHuaShan/https://orcid.org/0009-0009-0006-8591-1891对A股市场的观察很敏锐。确实,A股市场有其独特的运行特征,其中资金驱动、筹码博弈和T+1制度确实是重要的影响因素。让我们从更系统的角度来分析这些特…

绕过验证码与登录:Playwright 自动化测试的身份认证策略

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 在自动化测试中,登录和验证码往往是两大“拦路虎”。它们的设计初衷就是为了区分人类和机器,而这恰恰与自动化测试的目标相悖。特别是验证…

深入解析:Excel VLOOKUP函数完全教程:从基础到高级实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

FastReport在线设计器2026.1版本发布,新增报表验证工具等

新版 FastReport Online Designer进行了多项重大改进并新增了多项功能。还包含重新设计的主工具栏、改进的代码自动完成系统 (IntelliSense)、调整标签大小的功能,以及禁止编辑 .NET 解决方案数据源的功能。此外,还修…

2025年直流分流器直销厂家权威推荐榜单:分流器/车规分流器/储能分流器源头厂家精选

在电气测量与电力系统领域,直流分流器作为关键的电流检测元件,其性能直接关系到系统测量的精度与运行的可靠性。据2025年工业电气测量设备市场调研数据显示,直流分流器在新能源、工业控制、电力系统等领域的应用覆盖…

2025年质量好的透明封箱胶带高评价厂家推荐榜

2025年质量好的透明封箱胶带高评价厂家推荐榜行业背景与市场趋势透明封箱胶带作为包装行业的基础耗材,其市场需求随着电商物流、制造业和零售业的蓬勃发展而持续增长。根据中国包装联合会最新数据显示,2024年中国胶带…