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的校验
背景: 我们在开发的过程中可能需要随机生成一个ID,例如数据库中的某个ID 有时候也要对其进行校验. UUID: UUID,是Universally Unique Identifier的缩写,UUID ...
- java生成UUID通用唯一识别码
一.UUID概述 UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...
- java的uuid有什么用_java – 什么是有效的UUID?
我生成UUID,并在我的代码中对正则表达式进行有效;我刚遇到困扰我的问题 以下是生成UUID的代码(在mongodb上下文中) import java.util.UUID; ... ... Docum ...
- java利用UUID类生成随机数
java,利用UUID类生成32位随机数,可用作流水号,请求记录编号 package com.javabasic.io;import java.util.UUID;/*** @Description ...
- java.util.UUID生成32位唯一uuid
package com.dhcc.csm.utils; import java.util.UUID: public class UUIDUtil { public static String gene ...
- java 生成UUID字符串工具类 UUIDUtil
package com.xj.hhjk.common.util.security; import java.util.UUID; import java.util.regex.Matcher; imp ...
- 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 ...
最新文章
- 【C++】Google Protocol Buffer(protobuf)详解(二)
- ICML 2021论文数据分析:谷歌第一,国内北大论文最多
- 台式电脑可以连wifi吗_[Windows] wifi音箱:台式电脑也可以连接蓝牙音箱了
- java 概率 算法_使用概率算法优化快速排序(JAVA)
- pfile文件怎么恢复格式_回收站清空的文件怎么恢复?值得收藏的恢复方法
- switch使用中遇到的问题
- JavaWeb--JavaEE
- 数据结构排序法之插入法
- 仅4步,就可通过SQL进行分布式死锁的检测与消除
- 七牛云 转码_YYC松鼠短视频系统V2.0版本发布,亮点新增转码加水印功能
- 海洋CMS插件-内置接口的海洋CMS插件
- 博图如何上载wincc程序_博图导入触摸屏程序 如何通过博图下载触摸屏程序
- ADS中功放的PAE计算总结
- easyscreen调用html,840D——EasyScreen输入密码跳转界面的编写-工业支持中心-西门子中国...
- python中什么是继承_Python中的继承是什么意思?
- 你还在被触摸事件困扰吗?看看这篇吧
- linux脚本的编写
- GPU渲染技术及性能优化
- 【Java面试题】List如何一边遍历,一边删除?
- 凉凉怎么用计算机弹,用计算器弹凉凉乐谱 | 手游网游页游攻略大全
热门文章
- L2-006 树的遍历
- bzoj#4423-[AMPPZ2013]Bytehattan【并查集】
- P4922-[MtOI2018]崩坏3?非酋之战!【dp】
- CF1114F-Please, another Queries on Array?【线段树,欧拉函数】
- P2158,jzoj1709-仪仗队【欧拉函数,数论】
- 【2018.3.31】模拟赛之四-ssl2408 句子【dp,字符串】
- 2019.01.26【NOIP普及组】模拟赛C组总结
- 2017上海金马五校 购买装备 贪心+二分Check
- 微服务为什么离不开spring cloud?
- 为什么说Java中只有值传递(另一种角度)