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的校验

    背景: 我们在开发的过程中可能需要随机生成一个ID,例如数据库中的某个ID 有时候也要对其进行校验. UUID: UUID,是Universally Unique Identifier的缩写,UUID ...

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

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

  3. java的uuid有什么用_java – 什么是有效的UUID?

    我生成UUID,并在我的代码中对正则表达式进行有效;我刚遇到困扰我的问题 以下是生成UUID的代码(在mongodb上下文中) import java.util.UUID; ... ... Docum ...

  4. java利用UUID类生成随机数

    java,利用UUID类生成32位随机数,可用作流水号,请求记录编号 package com.javabasic.io;import java.util.UUID;/*** @Description ...

  5. java.util.UUID生成32位唯一uuid

    package com.dhcc.csm.utils; import java.util.UUID: public class UUIDUtil { public static String gene ...

  6. java 生成UUID字符串工具类 UUIDUtil

    package com.xj.hhjk.common.util.security; import java.util.UUID; import java.util.regex.Matcher; imp ...

  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 ...

最新文章

  1. 【C++】Google Protocol Buffer(protobuf)详解(二)
  2. ICML 2021论文数据分析:谷歌第一,国内北大论文最多
  3. 台式电脑可以连wifi吗_[Windows] wifi音箱:台式电脑也可以连接蓝牙音箱了
  4. java 概率 算法_使用概率算法优化快速排序(JAVA)
  5. pfile文件怎么恢复格式_回收站清空的文件怎么恢复?值得收藏的恢复方法
  6. switch使用中遇到的问题
  7. JavaWeb--JavaEE
  8. 数据结构排序法之插入法
  9. 仅4步,就可通过SQL进行分布式死锁的检测与消除
  10. 七牛云 转码_YYC松鼠短视频系统V2.0版本发布,亮点新增转码加水印功能
  11. 海洋CMS插件-内置接口的海洋CMS插件
  12. 博图如何上载wincc程序_博图导入触摸屏程序 如何通过博图下载触摸屏程序
  13. ADS中功放的PAE计算总结
  14. easyscreen调用html,840D——EasyScreen输入密码跳转界面的编写-工业支持中心-西门子中国...
  15. python中什么是继承_Python中的继承是什么意思?
  16. 你还在被触摸事件困扰吗?看看这篇吧
  17. linux脚本的编写
  18. GPU渲染技术及性能优化
  19. 【Java面试题】List如何一边遍历,一边删除?
  20. 凉凉怎么用计算机弹,用计算器弹凉凉乐谱 | 手游网游页游攻略大全

热门文章

  1. L2-006 树的遍历
  2. bzoj#4423-[AMPPZ2013]Bytehattan【并查集】
  3. P4922-[MtOI2018]崩坏3?非酋之战!【dp】
  4. CF1114F-Please, another Queries on Array?【线段树,欧拉函数】
  5. P2158,jzoj1709-仪仗队【欧拉函数,数论】
  6. 【2018.3.31】模拟赛之四-ssl2408 句子【dp,字符串】
  7. 2019.01.26【NOIP普及组】模拟赛C组总结
  8. 2017上海金马五校 购买装备 贪心+二分Check
  9. 微服务为什么离不开spring cloud?
  10. 为什么说Java中只有值传递(另一种角度)