java生成uuid_Java UUID
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) ,因此前三个MSB为100 。 这意味着我们的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
java生成uuid
java生成uuid_Java UUID相关推荐
- Java 生成有序 UUID
UUID.randomUUID() 生成的 UUID 是无序的,如果作为数据主键,不利于索引 Hibernate 的 UUIDHexGenerator.generate() 方法可以生成有序的 UUI ...
- java as uuid_java UUID 源码学习
UUID 我们平时在使用 UUID 的时候觉得非常简单,甚至很多人觉得这没什么技术含量. 那么深入思考一层,UUID 的实现原理是什么? 源码 类声明 public final class UUID ...
- Java中使用UUID工具类生成唯一标志防止重复
场景 UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息. 在某些场景下需要给数据库中 ...
- java生成UUID通用唯一识别码
一.UUID概述 UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...
- java uuid_Java UUID
java uuid 介绍: UUID(通用唯一标识符)表示一个128位长的唯一值 . 它也被普遍称为GUID(全球唯一标识符). UUID的标准表示形式由十六进制数字组成: 533a4559-e55c ...
- 怎样用java生成GUID与UUID
GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随机数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...
- java 生成uuid
1.UUID 简介 UUID 含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准. 也是被开源软件基金会 (Open Software Fou ...
- JAVA生成UUID并作为数据库表的ID
在接触UUID之前,我建表用的ID一直是用的int型,然后自动增长,这样很方便. 但是这样做却有一些问题,因为数据量大的话,不可能只用一张表,而是几张表,这样会出现id重复,于是有了UUID. UUI ...
- Java生成UUID的常用方式
java.util.UUID类来生成UUID import java.util.UUID;public class UUIDGenerator {public static void main(Str ...
- JAVA生成20位LONG型UUID
编者在开发过程中用postman测试接口,发现要求id为必填且不能含有英文字母,问了对面开发人员才知道需要自己生成20位Long型uuid,写法大概如下,在需要生成的部分调用这个类即可. packag ...
最新文章
- Java基础 五 方法
- background意识(两)
- elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API
- 打印任意想要的菱形,例如3行的、9行的、13行的菱形
- Android编程之仿微信显示更多文字的View
- centos7.6内核升级
- linux awk 时间范围,如何用awk从日志文件中找到时间范围的记录
- cocos2d-x-2.2.1环境搭建
- 互联网广告行业窥探和基础知识总结
- 如何编辑PDF文件?分享几种编辑PDF文件方法
- 《华为基本法》-笔记
- 常见分布及其概率分布图
- Hessian矩阵以及在血管增强中的应用—OpenCV实现
- tomcat连接oracle报错,跪求解决在eclipse中开oracle数据库库TOMCAT报错
- 92-Kafka详解
- android anr 分析方法,Android ANR分析
- LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机全解.doc
- 线程基础 第一篇:线程的定义、状态、属性、简单实现线程
- 2022-清华管理学-清华大学-宁向东
- 疫情数据爬取,可视化及其预测
热门文章
- 基于spring boot的Java开源商城系统(附完整版源码)
- 小学生 计算机编程 教程,小学生C++创意编程(视频教学版)
- 太阳影子定位问题研究
- java如何防止sql注入
- 算法图解第九章笔记与习题(动态规划)
- oracle strsplit函数,oracle splitstr 函数
- jvisualvm监控java,配置 jvisualvm 监控Java虚拟机
- 如何用计算机解锁苹果手机,教你怎么使用Apple Watch手表解锁苹果Mac电脑
- 慎用JSON.stringify
- 201632位matlab下载_Matlab R2016a x32|matlab 2016a 32位版下载 完全免费版 - 121下载站