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

java生成uuid

java生成uuid_Java UUID相关推荐

  1. Java 生成有序 UUID

    UUID.randomUUID() 生成的 UUID 是无序的,如果作为数据主键,不利于索引 Hibernate 的 UUIDHexGenerator.generate() 方法可以生成有序的 UUI ...

  2. java as uuid_java UUID 源码学习

    UUID 我们平时在使用 UUID 的时候觉得非常简单,甚至很多人觉得这没什么技术含量. 那么深入思考一层,UUID 的实现原理是什么? 源码 类声明 public final class UUID ...

  3. Java中使用UUID工具类生成唯一标志防止重复

    场景 UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息. 在某些场景下需要给数据库中 ...

  4. java生成UUID通用唯一识别码

    一.UUID概述 UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...

  5. java uuid_Java UUID

    java uuid 介绍: UUID(通用唯一标识符)表示一个128位长的唯一值 . 它也被普遍称为GUID(全球唯一标识符). UUID的标准表示形式由十六进制数字组成: 533a4559-e55c ...

  6. 怎样用java生成GUID与UUID

    GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随机数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...

  7. java 生成uuid

    1.UUID 简介 UUID 含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准. 也是被开源软件基金会 (Open Software Fou ...

  8. JAVA生成UUID并作为数据库表的ID

    在接触UUID之前,我建表用的ID一直是用的int型,然后自动增长,这样很方便. 但是这样做却有一些问题,因为数据量大的话,不可能只用一张表,而是几张表,这样会出现id重复,于是有了UUID. UUI ...

  9. Java生成UUID的常用方式

    java.util.UUID类来生成UUID import java.util.UUID;public class UUIDGenerator {public static void main(Str ...

  10. JAVA生成20位LONG型UUID

    编者在开发过程中用postman测试接口,发现要求id为必填且不能含有英文字母,问了对面开发人员才知道需要自己生成20位Long型uuid,写法大概如下,在需要生成的部分调用这个类即可. packag ...

最新文章

  1. Java基础 五 方法
  2. background意识(两)
  3. elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API
  4. 打印任意想要的菱形,例如3行的、9行的、13行的菱形
  5. Android编程之仿微信显示更多文字的View
  6. centos7.6内核升级
  7. linux awk 时间范围,如何用awk从日志文件中找到时间范围的记录
  8. cocos2d-x-2.2.1环境搭建
  9. 互联网广告行业窥探和基础知识总结
  10. 如何编辑PDF文件?分享几种编辑PDF文件方法
  11. 《华为基本法》-笔记
  12. 常见分布及其概率分布图
  13. Hessian矩阵以及在血管增强中的应用—OpenCV实现
  14. tomcat连接oracle报错,跪求解决在eclipse中开oracle数据库库TOMCAT报错
  15. 92-Kafka详解
  16. android anr 分析方法,Android ANR分析
  17. LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机全解.doc
  18. 线程基础 第一篇:线程的定义、状态、属性、简单实现线程
  19. 2022-清华管理学-清华大学-宁向东
  20. 疫情数据爬取,可视化及其预测

热门文章

  1. 基于spring boot的Java开源商城系统(附完整版源码)
  2. 小学生 计算机编程 教程,小学生C++创意编程(视频教学版)
  3. 太阳影子定位问题研究
  4. java如何防止sql注入
  5. 算法图解第九章笔记与习题(动态规划)
  6. oracle strsplit函数,oracle splitstr 函数
  7. jvisualvm监控java,配置 jvisualvm 监控Java虚拟机
  8. 如何用计算机解锁苹果手机,教你怎么使用Apple Watch手表解锁苹果Mac电脑
  9. 慎用JSON.stringify
  10. 201632位matlab下载_Matlab R2016a x32|matlab 2016a 32位版下载 完全免费版 - 121下载站