首页 博客正文

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

麦洛 博客 2年前 2619 0

202011151605450332389497.jpg

通用唯一识别码(英语: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 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的方法。


* 注意事项:

题目、答案和解析仅供参考,题目与答案请以官方发布为准。
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,转载需标明出处。
软考题网站(http://test.ruankaoti.com/)提供的相关试题资料仅供个人复习参考使用
如果您有更好的解答,欢迎留言评论。

本文链接:https://www.ruankaoti.com/blog/082308202023661.html

发表评论

评论列表(0人评论 , 2619人围观)
☹还没有评论,来说两句吧...

阅读更多


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

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

    通用唯一识别码(英语:Universally Unique Identifier,缩写:UUID)是用于计算机体系中以识别信息数目的一个128位标识符,还有相关的术语:全局唯一标识符(GUID)。根据标准方法生成,不依赖中央机构的注册和分配...

    博客 2020-08-23 2619 0
  • SubList 分页

    SubList 分页

            分页在项目中经常使用,有时候会用查件进行分页,有时候进行第三方接口进行访问时,经常会有请求数量的限制,所以使用SubList就可以进行分页,代码...

    博客 2020-08-19 1454 1 JAVAMySQL
  • 最简单SpringBoot

    最简单SpringBoot

    最简单SpringBoot    本次最简单的SpringBoot项目主要有Application,Controller,properties,pom.xml组成,旨在用最简单的代码搭建一个简单易懂的SpringBoot项目,可以快速入门学...

    博客 2020-08-18 1616 0 JAVASpringBootSpringCloud
  • 面对不计其数的技术栈,我们如何选择?

    面对不计其数的技术栈,我们如何选择?

    Hello,大家好,今天我们不分享技术文,来谈谈"一项技术是否值得长期投入"这一话题。笔者请两天在阿里巴巴中间件公众号看到一篇简锋老师的文章,感触颇深。首先我们要介绍一下文中的主人公:简锋章剑锋(简锋),开源界老兵,Gi...

    博客 2020-08-17 1473 0
  • linux查看端口被占用情况

    linux查看端口被占用情况

    Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。 如果linux中没有这两个命令,则yum安装一下yum install -y lsofyum install -y net-toolslsof命令 lsof(lis...

    博客 2020-08-14 2033 0
  • java  File转成MultipartFile

    java File转成MultipartFile

    String strUrl = "C:\\Users\\Administrator\\Desktop\\json.xlsx"; File multipartFile = new File(strUrl); InputStream inp...

    博客 2020-08-12 1791 0 JAVA文件管理
  • 什么是HTTP状态代码?

    什么是HTTP状态代码?

    HTTP状态代码是HTTP响应状态行的一部分。这些3位整数代码表示服务器对请求的处理结果状态码的第一位用于对响应进行分类:1xx:非正式2xx:成功,该请求已被理解并接受3xx:重定向,需要采取进一步的措施4xx:客户端错误,请求有问题5x...

    博客 2020-08-11 2355 0
  • git修改用户名和邮箱

    git修改用户名和邮箱

    运行之前,我们需要设置本地的环境(修改用户的命令也是如同下面),以确保云端和本地的git建立起联系,首先用git config命令来配置:git config --global user.name "yourgithubname" git...

    博客 2020-08-06 1682 0 JAVAIDEA
  • 如何将项目从码云clone到IntelliJ IDEA

    如何将项目从码云clone到IntelliJ IDEA

    前言开源项目现在受到越来越多人的关注,从而吸引众多优秀的程序员参与其中;这里我们来说说如何从码云clone自己喜欢的项目到本地.一.准备工作如果你是首次下载码云中的开源项目,需要安装Git;[Git-2.7.2-64-bit_for_win...

    博客 2020-08-05 1986 3 JAVAIDEA
  • SpringBoot2.0 - 集成JWT实现token验证

    一. 前言目前web开发前后端已经算非常的普及了。前后端分离要求我们对用户会话状态要进行一个无状态处理。我们都知道通常管理用户会话是session。用户每次从服务器认证成功后,服务器会发送一个sessionid给用户,session是保存在...

    博客 2020-08-05 2116 1 SpringBoot
  • 何为前后端分离?

    何为前后端分离?

    前言各位小伙伴大家好,又跟大家见面了,我就是那个白天晚上都在写代码的IT小白,白天忙于工作,晚上忙于整理公众号,你说小弟我容易吗。谁让我的心里只有学习呢!!!    为什么聊到这个前后端分离呢,其实在我17年大学毕业(ps:不小心暴露了年纪...

    博客 2020-08-05 3252 0
  • 简析数据库连接池

    简析数据库连接池

    连接池前言各位老友好,我是IT小白闯天下,今日我想带领大家学习的是,数据库连接池,每一位后台开发的朋友,后台作为前台的数据存储与支撑,对数据库操作是一个必不可少的开发过程,每次对数据库操作时都需要与数据库建立连接,那么使用数据库连接池可以高...

    博客 2020-08-05 2282 0 数据
  • 什么原因,导致你的企业还没有上云?

    什么原因,导致你的企业还没有上云?

    不论您经营任何类型的业务(大型企业,小型公司,甚至是个人品牌),目前尚未迁移到云中,那么这是您必须紧急纠正的错误。 本文研究了您应该采取行动的四个原因。我们都知道有理智的意图却没有及时采取行动是什么感觉。无论是一个急需的饮食调整,一个枯燥但...

    博客 2020-08-05 811 0
  • Istio 1.5:对开发人员有什么帮助?

    Istio 1.5:对开发人员有什么帮助?

    Istio是一个开源服务网格平台。 Idit Levine是Solo.io的创始人兼首席执行官,并与Istio广泛合作。 在本文中,她讲述了最新的Istio 1.5版本以及WebAssembly的新增功能为使用服务网格的开发人员带来的好处。...

    博客 2020-08-05 956 0
  • vue 改变data数据后,数据变化页面不刷新

    vue 改变data数据后,数据变化页面不刷新

    一  开发环境"vue": "^2.6.10""element-ui": "^2.11.1"二 翻车现场首先我们来看下要实现的需求,其实就是一个条件渲...

    博客 2020-07-30 1064 0
微信扫码,加入打卡学习群,分享学习资料
 
QQ交流群
2022年软考交流群
866893197
软件设计师交流群
866893197