速看!今天我才知道,UUID还分五个版本

麦洛 等级 642 1 0
标签: uuidhttpsJava

速看!今天我才知道,UUID还分五个版本

通用唯一识别码(英语:Universally Unique Identifier,缩写:UUID)是用于计算机体系中以识别信息数目的一个128位标识符,还有相关的术语:全局唯一标识符GUID)。

根据标准方法生成,不依赖中央机构注册分配UUID具有唯一性,这与其他大多数编号方案不同。重复UUID码概率接近零,可以忽略不计。

UUID是由一组32位数的16进制数字所构成,故UUID理论上的总数为16^32 = 2^128,约等于3.4 x 10^38。也就是说若每纳秒(ns)产生1万亿个UUID,要花100亿年才会将所有UUID用完。

UUID的标准型式包含32个16进制数字,以连字号分为五段,形式为 8-4-4-4-12 的32个字符。

示例:550e8400-e29b-41d4-a716-446655440000

UUID 格式:

在其规范的文本表示中,UUID 的 16 个 8 位字节表示为 32 个十六进制(基数16)数字,显示在由连字符分隔 '-' 的五个组中,"8-4-4-4-12" 总共 36 个字符(32 个字母数字字符和 4 个连字符)。例如:

123e4567-e89b-12d3-a456-426655440000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

ps:上下对比看,a在十六进制中表示10

四位数字 M表示 UUID 版本,数字 N的一至三个最高有效位表示 UUID 变体。在例子中,M1 而且 Na10xx),这意味着此 UUID 是“变体1”、“版本1”UUID;即基于时间的 DCE/RFC 4122 UUID

UUID 版本:

对于“变体(variants)1”和“变体2”,标准中定义了五个版本(versions),并且在特定用例中每个版本可能比其他版本更合适。

版本由 M 字符串中指示。

版本1 - UUID 是根据时间和节点 ID(通常是MAC地址)生成;

版本2 - UUID是根据标识符(通常是组或用户ID)、时间和节点ID生成;

版本3、版本5 - 确定性UUID 通过散列(hashing)名字空间(namespace)标识符和名称生成;

版本4 - UUID 使用随机性伪随机性生成。

Java中生成 UUID:

下面让我们介绍一下 Java UUID 类中可以用来生成 UUID 的方法:

1. randomUUID():

它使用加密强度高的伪随机数生成器生成v4伪随机UUID

UUID uuid = UUID.randomUUID();

2. nameUUIDFromBytes():

我们可以使用 nameuidfrombytes ()从字节数组生成 UUID:

byte[] byteArr = {11, 23, 33};

UUID uuid = UUID.nameUUIDFromBytes(byteArr);

此方法生成 v3 UUID (基于名称的)。

3. fromString():

使用 fromString () ,我们可以从一个标准的字符串表示创建 UUID:

UUID uuid = UUID.fromString("533a4559-e55c-18b3-2456-555563322002");

对于作为参数传入的任何无效字符串,它将抛出 IllegalArgumentException

比较两个 uuid:

Java UUID 实现了 Comparable 接口,因此,我们可以使用 compareTo ()方法来比较它们

速看!今天我才知道,UUID还分五个版本

UUID uuid1 = UUID.randomUUID();
UUID uuid2 = UUID.randomUUID();

int` `result = uuid1.compareTo(uuid2);

如我们所知,compareTo ()方法返回:

  • 1: 如果uuid1大于uuid2
  • 0:如果uuid1=uuid2
  • -1: 如果uuid1小于uuid2

我们也可以选择使用 equals ()方法进行比较。

总结:

在本教程中,我们了解了 UUID 是什么及其格式和版本。我们还介绍了由 java UUID 类中生成uuid的方法。


关于作者

大家好,我是麦叔,目前从事Java开发,前端和后端略懂一点。希望喜欢我的伙伴关注我的个人公众号,方便获取一手文章信息。当然也可以加我个人微信(下方右侧),大家交个朋友,谢谢大家对我的支持。

速看!今天我才知道,UUID还分五个版本

收藏
评论区

相关推荐

面试官:Mysql 中主库跑太快,从库追不上怎么整?
写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度,导致产生了主从延迟,出现了一点小事故。 今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题。 坐好了,准备发车! (https://imghelloworld.osscnbeijing.aliyuncs.com/4ed72bf8b1fc67
速看!今天我才知道,UUID还分五个版本
通用唯一识别码(英语:Universally Unique Identifier,缩写:UUID)是用于计算机(https://zh.wikiped
拼多多是怎么一步步把人逼死的
我翻开拼多多的公司规章制度,歪歪斜斜的每页上都写着“努力奋斗”四个字。 仔细看了半夜,才从字缝里看出字来,满本都写着“吃人”二字。 (https://imghelloworld.osscnbeijing.aliyuncs.com/56ea589ef85d1b42786d1c02d91269a2.jpeg) 一波接一波的事件 拼多
二 Java利用等待/通知机制实现一个线程池
接着上一篇博客的 一Java线程的等待/通知模型(http://www.cnblogs.com/start1225/p/5866575.html "一 java线程的等待/通知模型")  ,没有看过的建议先看一下。下面我们用等待通知机制来实现一个线程池. (https://www.helloworld.net/p/XJXfgbimvcjd) 本
PHP 微信公众号消息加解密
公众号配置根据提示设置即可:【图中信息均为无意义数据,仅供参考。注意服务器地址需可接收 GET/POST 两种请求】 AESKey 直接点一下随机生成即可,Token 可以生成一个 UUID 再把 UUID 进行 MD5 一次即可。 接收关注事件消息示例 请求参数校验这一步根据项目情况,可供参考:(Lumen 框架)php$valida
Android如何解析json字符串
前言上一篇文章介绍了服务器用Golang如何解析json字符串,今天我们来看看Android客户端是如何解析json字符串的。 正文Golang如何解析post请求中的json字符串(https://www.helloworld.net/p/O917HGeiALU2D)使用java语句如何正确解析json字符串呢?举一个例子,假如我们想从rtc_i
2秒内向数据库中插入十万条数据?
怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的sql代码如下 USE TestDB GO
如果一个Activity启动比较慢,需要优化,你觉得可以从哪些方面入手?
打开一个app的时候速度比较慢,等一会才能看到UI,有很多种原因,下面是我根据这些个情况做出的多种优化,记录 一下。1、采用动态布局:先是优化了布局,减少层级嵌套,使用merge优化等等。但发现加载xml布局还是慢了点,于是改为动态布局,布局的 时间减少了好几倍。2、利用MessageQueue.IdleHandler()回调 按照activity的生命周期
表弟的数学题,我竟然用了python才解出来
↑ 关注 + 置顶  有趣的不像个技术号 大家好,我是朱小五 本来这个周末过得开开心心,结果为了解一道数学题薅掉了一把头发、、、整整18根! 而且还是一道小学数学题!!! 到底是什么题呢?大家看看吧 既然表弟都求到我这了,那就随便的做一做嘛。 这不就是一道逻辑题嘛! 先假如丁错,则甲乙丙对,此时最小的abc(2^3)\(3^2)\750
ES6的解构赋值是深拷贝or浅拷贝?
面试时候有面试官问到ES6的解构赋值是深拷贝还是浅拷贝?,这里做一个总结.ES6的解构赋值,大家应该都清楚,就是可以快速取出数组或者对象中的值;我们先来看一个使用案例:更多的解构赋值知识可以查看:https://es6.ruanyifeng.com/docs/destructuring那么,ES6的解构赋值到底是深拷贝还是浅拷贝呢? 我们先来看一下深拷贝和浅
https://cloud.tencent.com/developer/article/write/1830331
一、目标今天的目标是这个sign和appcode 二、步骤 Jadx没法上了app加了某梆的企业版,Jadx表示无能为力了。 FRIDADEXDumpDexDump出来,木有找到有效的信息。 Wallbreaker葫芦娃的Wallbreaker可以做些带壳分析,不过这个样本,用Frida的Spawn模式可以载入,Attach模式会失败。而直接用Objecti
学python?我入门才七天
怎么自学python,大概要多久?我专科学的机械,在毕业之前完全没有接触过编程,毕业后从零开始学习python,所以在这方面我或许可以说上那么一两句话。第一,你需要明确一个目标。你是想做一个网站?还是说做一个自己用的工具,这会影响你如何去学习python,是否学到一定程度该转去学另一种语言?这都和你想做的事有关系,如果你是希望学习python写一些小工具来提
OMG!Java高级开发岗必问知识点
目录 1.Mysql 2.CHAR 与 VARCHAR 的区别? 3.能说下myisam 和 innodb的区别吗? 4.你能说下事务的基本特性和隔离级别吗? 5.并发问题 脏读、不可重复读、幻读? 6.事务的隔离级别? 7.说说自增主键、UUID? 8.mysql 的约束分类? 9.drop、delete 与 tru
为什么说Python是最伟大的语言?看图就知道了!
测试一下你的分析能力,直接上图,自己判断一下为什么Python是最好的语言?有图有真相 Java之父 James Goshling C++之父 Bjarne Stroustrup PHP之父 Rasmus Lerdorf Python之父 Guido van Rossum看到他们的亮点了吗? Java和C++是锃亮的电灯泡 PHP是一
Python大佬手把手教你用开源【抢茅台脚本】实现抢茅台
大家好,我是明哥。 12 月我在朋友圈看到非常多的人开始在某东上抢茅台,抢到的话一瓶只要 1499 元,转手一卖就能净赚 1000 块钱,这简直就是白送钱的事嘛?就算不卖,自己囤着过个几年价格肯定又要上涨。像这种好事,我当然第一时间去体验了,抢了几天后,却抢了个寂寞。 好在前两天看到有大佬在 Github 上开源了一个抢茅台的脚本(https://g