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) ,因此前三个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

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

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

相关文章

JDK 9.0.4 报错:程序包 com.sun.xml.internal.fastinfoset.stax.events 不存在/不可见

IDE&#xff1a;IntelliJ IDEA 构建工具&#xff1a;Maven JDK版本&#xff1a;JDK 9.0.4 在代码中使用下面的工具类&#xff1a; com.sun.xml.internal.fastinfoset.stax.events.Util报错如下&#xff1a; 或者 光标移到 Util 处&#xff0c;按下 Option Enter&#xff1a…

3650m5设置u盘启动_系统重装必备神器,U盘如何制作启动盘?

早些年的时候&#xff0c;电脑安装系统需要光盘&#xff0c;但是现在光盘也逐渐退出历史舞台。不管是台式计算机还是笔记本&#xff0c;光驱这个东西也逐渐消失。如果自己的计算机没有光驱&#xff0c;电脑又无法开机需要重装系统&#xff0c;这个时候该怎么办呢&#xff1f;可…

jtable隐藏全部_全部隐藏!

jtable隐藏全部在较早的文章中 &#xff0c;我写了以下几句话&#xff1a; 在面向对象的代码库中&#xff0c;该工具包应尽可能离散。 您使用开发套件的次数越多&#xff0c;您的代码实际面向对象的次数就越少&#xff0c;或者您的抽象并不是最好的。 。 我认为有必要详细说明…

IntelliJ IDEA 如何多模块开发

参考&#xff1a; https://blog.csdn.net/jqc874789596/article/details/86609554

距离矢量路由算法的java代码_八大排序算法比较(附Java代码)

冒泡排序/*** 冒泡排序 比较好理解* 两两相比 较大的放后面* 时间复杂度O(n^2)*//*** 改进前的冒泡排序算法进行100,000数据排序运行时间为&#xff1a;3829ms* 优化后的冒泡排序算法进行100,000数据排序运行时间为&#xff1a;3551ms*/ public static void bubbleSort(int[] a…

jaxb注解使用_使用JAXB时

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

org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [4.0]

参考&#xff1a; https://blog.csdn.net/qq_40829288/article/details/93936261 https://www.shuzhiduo.com/A/Ae5RnvaN5Q/ https://www.cnblogs.com/youpeng/p/11095504.html

python无法安装pycurl_Python安装pycurl失败的解决方法

Centos安装pycurlcentos 安装pycurlyum install python-devel curl-develpip3 install pycurlMac(老版本)安装pycurl解决MacOS升级后出现xcrun: error: invalid active developer path, missing xcrun的问题xcode-select --install然后dongchang-5:qqmusic baoshan$ pip3 insta…

组装一台计算机 java_如何在同一台计算机上安装多个Java版本

组装一台计算机 java一段时间以前&#xff0c;我写了一篇文章《 用示例解释Java Lambda表达式》&#xff0c;但是我很容易浏览Java 8&#xff0c;因为我在项目中使用了Java 8&#xff0c;并且允许我安装和使用它。 但是在我当前的项目中&#xff0c;我们仍在使用Java 8&#xf…

字符串类型的日期如何存储到数据表Date类型的字段中

在使用 JDBC 访问数据库存储数据时&#xff0c;日期类型的数据必须是 java.sql.Date 的才能注入到 SQL 语句中。 因此这里是将字符串类型的日期转换成 java.util.Date&#xff0c;接着再转换成 java.sql.Date &#xff0c;最后注入到 SQL 语句中。 public class ProjectDAO { …

python执行linux命令返回结果_python执行linux命令的简单示例

对python执行linux命令的两种方法感兴趣的小伙伴&#xff0c;下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧&#xff01;python执行linux命令有两种方法&#xff1a;在此以Linux常用的ls命令为例&#xff1a;方法一&#xff1a;使用os模块shell# python>> import os…

web api开启错误提示_当HTTP状态代码不足时:处理Web API错误报告

web api开启错误提示RESTful Web API设计的一个领域&#xff08;经常被忽视&#xff09;是如何报告与业务或应用程序有关的错误和问题。 首先要想到HTTP状态代码的正确用法&#xff0c;尽管非常方便&#xff0c;但通常它的信息量还不够。 让我们以400错误请求为例。 是的&#…

会议室分配时间最长_论文导论动态任务分配GPU上图计算的高效处理方式

编者按GPU作为一种硬件&#xff0c;相比较于CPU来说&#xff0c;有更多的并行度和更高的带宽&#xff0c;在图像处理领域取得了非常好的应用效果。越来越多的研究也正试图将GPU也应用到图计算领域中&#xff0c;然而GPU适合进行规则运算&#xff0c;但是图是一种不规则的数据表…

JS(Javascript)校验表单项的内容是否合规

<script !src"">/*** 分析&#xff1a;* 1.给表单绑定onsubmit事件* 监听器中判断每个方法检验的结果&#xff0c;如果都是true&#xff0c;则监听器方法返回true&#xff1b;如果有一个为false,* 则监听器方法返回false* 2.定义一些方法分别校验各个表单项* 3…

java \t怎么从头开始_如何从头开始以正确的面向对象方式创建Java Web Framework

java \t怎么从头开始您如何用Java设计Web应用程序&#xff1f; 您安装了Spring&#xff0c;阅读了手册&#xff0c;创建了控制器 &#xff0c;创建了一些视图&#xff0c;添加了一些注释 &#xff0c;它就可以工作了。 如果没有Spring &#xff08;Ruby中没有Ruby on Rails&…

kl散度的理解_以曲率的视角理解自然梯度优化

一个故事我要讲一个故事:一个你几乎肯定听过的故事&#xff0c;但它的侧重点与你习以为常关注的不同。所有现代深度学习模型都使用梯度下降进行训练。 在梯度下降的每个步骤中&#xff0c;您的参数值从某个起始点开始&#xff0c;然后将它们移动到最大损失减少的方向。 你可以通…

JSP的学习笔记

文章目录概念原理JSP 脚本JSP 内置对象概念 Java Server Pages &#xff1a;Java 服务器端页面 可以理解为&#xff1a;一个特殊的页面&#xff0c;其中既可以指定定义 html 标签&#xff0c;又可以定义 Java 代码 用于简化 Servlet 中的输出页面数据的代码的书写!!! 原理 J…

程序员面试算法_程序员的前20个搜索和排序算法面试问题

程序员面试算法大家好&#xff0c;如果您正在准备编程工作面试或正在寻找新工作&#xff0c;那么您知道这不是一个容易的过程。 在您职业的任何阶段&#xff0c;您都必须幸运地接到电话并进行第一轮面试&#xff0c;但是在初学者方面&#xff0c;当您寻找第一份工作时就更加困难…

御用导航提示页面_UI网站导航设计知识与五个知识案例

导航设计是网站的基石。它确定了至关重要的指标&#xff0c;例如转化率和跳出率&#xff0c;页面停留时间&#xff0c;点击量&#xff0c;并且通常是决定您的访问者拥有良好体验并以比您所说的“用户流量”更快退出网站的决定性因素。但是&#xff0c;好的设计是什么样的呢?一…

Servlet规范中定义的过滤器

文章目录什么是过滤器写过滤器的步骤配置初始化参数过滤器的优先级过滤器的优点过滤器执行过程图解过滤敏感词的示例代码使用 Servlet 来过滤敏感词使用过滤器来过滤敏感词通过配置初始化参数来设置敏感词关于 web.xml 的配置什么是过滤器 Servlet 规范当中定义的一种特殊的类…