Java UUID

介绍:

UUID(通用唯一标识符)表示一个128位长的唯一值 。 它也被普遍称为GUID(全球唯一标识符)。

UUID的标准表示形式由十六进制数字组成:

533a4559-e55c-18b3-8456-555563322002

并具有36个字符 ,其中包括四个连字符'-'

Java 中的java.util.UUID类表示一个不变的UUID。

我们可以使用UUID类来生成随机文件名,会话或事务ID。 UUID的另一种流行用法是在数据库中生成主键值。

Java UUID类具有一种用于处理Leach-Salz变体(变体2)的方法 。 但是,其构造函数允许生成任何类型的UUID

new UUID(long mostSigBits, long leastSigBits)

变体确定UUID的布局。 让我们来一个样本UUID

533a4559-e55c-18b3-8456-555563322002
xxxxxxxx-xxxx-Bxxx-Axxx-xxxxxxxxxxxx

此处, A的值表示变量,并由其前三个MSB(最高有效位)确定:

MSB1 MSB2 MSB3 变体 变体说明
0 X X 0 保留用于NCS向后兼容
1个 0 X 2 里奇-萨尔茨
1个 1个 0 6 保留,Microsoft Corporation向后兼容
1个 1个 7 保留以供将来定义

对于我们而言, A = 8(1000) ,因此前三个MSB100 。 这意味着我们的UUID具有2的变体。

对于版本2 UUID ,有五个不同的版本:

描述
v1 基于时间的
v2 DCE-安全
v3和v5 基于名称
v4 随机生成的UUID

生成

让我们介绍一下Java UUID类中的方法,这些方法可用于生成UUID

1.

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

UUID uuid = UUID.randomUUID();

2.

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

byte[] byteArr = {11, 23, 33}; 
UUID uuid = UUID.nameUUIDFromBytes(byteArr);

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

3.

使用fromString() ,我们可以从标准字符串表示形式创建UUID

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

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

比较两个

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()方法进行比较。

其他方法:

让我们介绍一下Java UUID类的其他一些方法:

1.

顾名思义, getLeastSignificantBits()getMostSignificantBits()分别返回64个最低有效位和64个最高有效位

UUID uuid = UUID.randomUUID();long leastSignificantBits = uuid.getLeastSignificantBits();
long mostSignificantBits = uuid.getMostSignificantBits();

这两种方法都返回一个long值。

2.

我们还可以查询UUID的变体和版本

UUID uuid = UUID.randomUUID();int variant = uuid.variant();
int version = uuid.version();

使用基于时间的

让我们从在POM中java- uuid -generator添加一个依赖关系开始:

<dependency><groupId>com.fasterxml.uuid</groupId><artifactId>java-uuid-generator</artifactId><version>3.1.5</version>
</dependency>

请注意,该库提供了各种类型的UUID生成器。

要创建基于时间的UUID ,我们将具有:

UUID uuid = Generators.timeBasedGenerator().generate();

处理v1 UUID时,方便使用的java.util包中的其他方法包括:

1. timestamp(): 返回与给定的v1 UUID关联的时间戳值 。 与任何其他类型的UUID一起使用时,此方法将引发UnsupportedOperationException

2. clockSequence(): 它返回一个14位值,该值是根据给定UUID的时钟序列字段构造的 。 它还会为v1类型以外的UUID抛出UnsupportedOperationException

结论:

在本教程中,我们了解了什么是UUID及其变体。 我们讨论了变量类型2的不同可用版本。 我们还介绍了Java UUID类公开的许多方法。

翻译自: https://www.javacodegeeks.com/2019/03/java-uuid.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342622.shtml

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

相关文章

【渝粤教育】国家开放大学2018年春季 7394-21T政府公共关系 参考试题

试卷编号&#xff1a;7394 座位号 2017——2018学年度第二学期期末考试 政府公共关系试题 2018年7月 一、单选题&#xff08;每空2分&#xff0c;共30分&#xff09; 政府公共关系以政府部门和&#xff08; &#xff09;为主体。 A. 老百姓 B. 社会公众 C. 公务员 D. 社会成…

亿佰特Lora网关技术为马拉松保驾护航

2021年10月份成都马拉松跑步比赛开始报名了&#xff0c;身边很多感兴趣的朋友都在纷纷报名。按照朋友的话说&#xff0c;报名马拉松不是为了去跑步&#xff0c;就是为了体验马拉松跑到路边景色及配套设施。 根据介绍&#xff0c;野外超级马拉松现场许多区域都没有蜂窝信号&…

poe交换机的作用和优点

POE交换机就是支持网线供电的交换机&#xff0c;其不但可以实现普通交换机的数据传输功能还能同时对网络终端进行供电 。那么&#xff0c;poe交换机的作用和优点有哪些呢&#xff1f;接下来我们就跟随杭州飞畅的小编一起来看看吧&#xff01; poe交换机的优点: 1、首创250米超网…

【渝粤教育】国家开放大学2018年春季 8612-21T传染病护理学 参考试题

编号&#xff1a;8612 座位号 2017&#xff5e;2018学年度第二学期期末考试 传染病护理学&#xff08;开卷&#xff09;试题 2018年 5月 单选题&#xff08;10题&#xff0c;每题3分&#xff0c;共30分, 请把答案填在下面对应题号的答题框内&#xff0c;未答在答题框内的不计分…

亿佰特物联网通信专家:智慧城市所需的技术

实现智慧城市的一个主要前提是“可以在任何位置实现互联网连接的环境”。例如&#xff0c;为了识别水管异常&#xff0c;假设水管连接到网络并需要检测异常的传感器、接收异常通知的平台和数据中心以及分析异常的AI。与可实时提供和分析数据并及时执行需求的连接设备相关联的元…

【渝粤教育】国家开放大学2018年春季 8644-22T汽车电子商务 参考试题

科目编号&#xff1a;8644 座位号 2017-2018学年度第二学期期末考试 汽车电子商务 试题 2018年 7 月 一、选择题&#xff08;本大题共15小题&#xff0c;每小题4分&#xff0c;共计60分&#xff09; &#xff08;★请考生务必将答案填入到下面对应序号的答题框中★&#xff09…

亿佰特物联网通信-智慧城市的未来城市愿景

城市智慧概念现在得到广泛认识&#xff0c;也在很多国家和地方开始建设&#xff0c;目前智慧城市建设大多是处于数字化阶段&#xff0c;并在数字化形态下逐步融合大数据、人工智能、物联网、无线通信等技术&#xff0c;提高城市的管理和服务能力。但其中更多体现自动化的成分&a…

POE以太网交换机产品优势介绍

POE (Power Over Ethernet)指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下&#xff0c;在为一些基于IP的终端&#xff08;如IP电话机、无线局域网接入点AP、网络摄像机等&#xff09;传输数据信号的同时&#xff0c;还能为此类设备提供直流电的技术&#xff0c;就…

【渝粤教育】国家开放大学2018年秋季 0004-21T有机合成单元反应 参考试题

试卷编号&#xff1a;0144 座位号 2018-2019学年度第一学期期末考试 秘书学&#xff08;一&#xff09; 试 题 2019年1月 1&#xff0e;秘书活动2. 典型调查法3. 商务谈判4. 公共关系答题框&#xff1a; 1&#xff0e;秘书活动的基本要素&#xff08; &#xff09; A&#xf…

利用STM32和可控硅控制220V加热电路

利用STM32和可控硅控制220V加热电路 Chapter1 利用STM32和可控硅控制220V加热电路一、错误原理图二、正确原理图 Chapter2 可控硅驱动芯片MOC3081/3061Chapter3 一个MOC3061的可控硅触发电路的分析Chapter4 可控硅的两种触发方式&#xff1a;移相触发和过零触发1、过零触发2、移…

亿佰特物联网通信专家:蓝牙模块和 Zigbee协议模块的区别

物联网领域无线数据传输指的是无线数传模块将工业设备输出或者各种采集的数据进行远程传送&#xff0c;可以无线模拟量采集&#xff0c;也能无线开关量控制。无线数据传输专网有数传电台&#xff0c;宽带WiFi zigbee协议模块等组成。 蓝牙是在 IEEE 802.15.1 下开发的&#x…

java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...

java 数字 下划线JDK 1.7发行版引入了几个有用的功能&#xff0c;尽管其中大多数都是语法糖&#xff0c;但使用该功能可以大大提高可读性和代码质量。 这样的功能之一是在数字文字中引入下划线 。 从Java 7开始&#xff0c;您可以在Java源代码中向可读性更高的10_000_000_000写…

【渝粤教育】国家开放大学2018年秋季 0107-22T现代货币金融学 参考试题

科目编号&#xff1a;0133 座位号 2018-2019学年度第一学期期末考试 大学物理 试题 2018年11月 单选题&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 1&#xff0e;稳恒磁场的高斯定理表明&#xff0c;磁场是( )。 A. 有源场 B. 无源场 C…

Zigbee无限数据传输模块在无线个域网有什么作用?

Zigbee是一种无线技术&#xff0c;作为一种开放的全球标准开发&#xff0c;以满足低成本、低功耗无线物联网网络的独特需求。Zigbee标准在IEEE 802.15.4物理无线电规范上运行&#xff0c;并在2.4 GHz、900 MHz和868 MHz等未授权频段运行。 Zigbee堆栈运行的802.15.4规范于2003…

【渝粤教育】国家开放大学2018年秋季 0242-22T机械制图 参考试题

编号&#xff1a;0266 座位号 2018&#xff5e;2019学年度第一学期期末考试 设计构成试题 2019年1月 一、设计制作题&#xff08;100分&#xff09; 题目&#xff1a;自由形插接构造的留声机博物馆。 要求&#xff1a;以自由形插接构造的方式&#xff0c;设计一个留声机博物馆…

2021-10-02

亿佰特物联网通信-智慧城市的未来城市愿景 城市智慧概念现在得到广泛认识&#xff0c;也在很多国家和地方开始建设&#xff0c;目前智慧城市建设大多是处于数字化阶段&#xff0c;并在数字化形态下逐步融合大数据、人工智能、物联网、无线通信等技术&#xff0c;提高城市的管理…

工业以太网交换机:核心优点解析

工业交换机是专门为了满足灵活多变的工业应用需求而设计的工业设备&#xff0c;它提供一种高性价比工业以太网通讯解决方案。而其组网方式则更重点关注于环路设计&#xff0c;因此环网工业交换机的使用非常流行。其中&#xff0c;环路有单环和多环的区别&#xff0c;同时亦有在…

【渝粤教育】国家开放大学2018年秋季 0350-22T幼儿园课程论 参考试题

试题编号&#xff1a;0365 座位号 2018-2019 学年度第一学期期末考试 电子商务概论 试题 一、名词解释题: &#xff08;每题5分&#xff0c;共20分&#xff09; 1.专题讨论法: 2&#xff0e;社交网络营销&#xff1a; 访问网站&#xff1a; 第三方物流企业配送&#xff1a; …

使用JAXB时

没有多少示例可以说明这一点&#xff0c;但是如何在应用程序中使用JAXB可以在性能&#xff08;和内存使用&#xff09;方面产生巨大差异。 这个例子 在此博客文章中&#xff0c;我将使用一个名为Membership的示例对象&#xff0c;看起来像这样&#xff1a; 我们将使用JAXB将对…

通信电平转换指南

在我们电路设计中&#xff0c;常常会遇到通信电平转换的问题&#xff0c;在应用电平转换的措施之前还需要判断进行电平转换的必要性。 如果你是用的是3.3V器件作为输出&#xff0c;而5V器件作为接收&#xff0c;那么这种低电平输出不会损坏器件&#xff0c;而且大部分3.3V器件输…