网站首页 > 技术教程 正文
起因
本想迁移.Net 6中JIT相关的性能改进,但因为这篇文中,有很多外链地址(Issue链接地址),还没想好改动.所以先迁移这篇Abp Guid连续是如何实现的.
Abp 5.0应该在.Net 6(11.09)发布后,同步发布正式版.看Abp源码是没有对Guid进行修改.
最近一直在学习Abp框架相关的知识,在Abp文档上看到通过IGuidGenerator接口Create方法实现的GUID是连续的.便想看看内部是如何实现的.
Create源码学习(裁剪部分代码)
var random = RandomNumberGenerator.Create();
var randomBytes = new byte[10];
random.GetBytes(randomBytes);
long timestamp = DateTime.UtcNow.Ticks / 10000L;
// Then get the bytes
byte[] timestampBytes = BitConverter.GetBytes(timestamp);
// Since we're converting from an Int64, we have to reverse on
// little-endian systems.
if (BitConverter.IsLittleEndian) //判断是否为小端
{
//这涉及到cpu机构 x86为小端 arm支持大端序和小端序
Array.Reverse(timestampBytes);
}
byte[] guidBytes = new byte[16];
//通过Buffer.BlockCopy进行内容拷贝,性能更好
//内部是使用Memmove 将数组转为指针,进行相关内容进行拷贝的
Buffer.BlockCopy(randomBytes, 0, guidBytes, 0, 10);
Buffer.BlockCopy(timestampBytes, 2, guidBytes, 10, 6);
var guid = new Guid(guidBytes);
//这里只是打印guid内容
Console.WriteLine(guid.ToString());看到上面的代码,可以简单地分为以下几个步骤:
1. 创建一个长度为10的byte数组,存放随机数.
2. 获取当前时间的毫秒数
3. 判断是否为小端,如果为小端,则把时间的毫秒数进行反转
4. 创建长度为16的byte,将随机数拷贝该数组,然后将时间毫秒数也拷贝到该数组中
5. 通过Guid的构造函数,传入长度16的数组,进行生成连续的Guid
如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流
猜你喜欢
- 2024-10-31 酒店 | 香格里拉集团全面推出微信小程序和微信线...
- 2024-10-31 全国二建考试大纲(2022年版)来了(全国二建考试科目时间)
- 2024-10-31 用软碟通制作系统启动盘的诀窍,不掌握永远成不了老司机!
- 2024-10-31 大明:最新电脑为什么用ghost无法安装系统?
- 2024-10-31 加装固态怎么重装系统(加装固态重装系统之前的文件)
- 2024-10-31 0350-Redhat7.4安装CDH6.0_beta1时分发Parcel异常分析
- 2024-10-31 常见的12种电脑开机黑屏的原因与解决思路
- 2024-10-31 每逢更新就会挂?终极Win10修复大法来了!
- 2024-10-31 把苹果电脑系统装在移动硬盘/U盘里
- 2024-10-31 嫌作者写的太烂!黑客盗号改小说大纲,还码了两万字新剧情……网友:手把手教学
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)