前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java生成随机数组_java生成唯一数字

Java生成随机数组_java生成唯一数字

作者头像
全栈程序员站长
发布2022-11-08 20:47:30
2.4K0
发布2022-11-08 20:47:30
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

java生成uuid
java生成uuid

java生成uuid

介绍:

UUID(通用唯一标识符)表示一个128位长的唯一值。 它也被普遍称为GUID(全球唯一标识符)。

UUID的标准表示形式由十六进制数字组成:

代码语言:javascript
复制
533a4559-e55c-18b3-8456-555563322002

并具有36个字符,其中包括四个连字符’-‘

Java中的java.util.UUID类表示一个不变的UUID。

我们可以使用UUID类来生成随机文件名,会话或事务ID。 UUID的另一种流行用法是在数据库中生成主键值。

Java UUID类具有一种用于处理Leach-Salz变体(变体2)的方法。 但是,其构造函数允许生成任何类型的UUID

代码语言:javascript
复制
new UUID(long mostSigBits, long leastSigBits)

一个变体确定UUID的布局。 让我们来一个样本UUID

代码语言:javascript
复制
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

代码语言:javascript
复制
UUID uuid = UUID.randomUUID();

2.

我们可以使用nameUUIDFromBytes()从字节数组生成UUID

代码语言:javascript
复制
byte[] byteArr = {11, 23, 33}; 
UUID uuid = UUID.nameUUIDFromBytes(byteArr);

此方法生成v3 UUID (基于名称)。

3.

使用fromString() ,我们可以从标准字符串表示形式创建UUID

代码语言:javascript
复制
UUID uuid = UUID.fromString("533a4559-e55c-18b3-2456-555563322002");

对于作为参数传入的任何无效字符串,它将引发IllegalArgumentException

比较两个

Java UUID类实现Comparable接口。 因此,我们可以使用compareTo()方法进行比较:

代码语言:javascript
复制
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个最高有效位

代码语言:javascript
复制
UUID uuid = UUID.randomUUID();
 
long leastSignificantBits = uuid.getLeastSignificantBits();
long mostSignificantBits = uuid.getMostSignificantBits();

这两种方法都返回一个long值。

2.

我们还可以查询UUID的变体和版本

代码语言:javascript
复制
UUID uuid = UUID.randomUUID();
 
int variant = uuid.variant();
int version = uuid.version();

使用基于时间的

让我们从在POM中java- uuid -generator添加一个依赖关系开始:

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.uuid</groupId>
    <artifactId>java-uuid-generator</artifactId>
    <version>3.1.5</version>
</dependency>

请注意,该库提供了各种类型的UUID生成器。

要创建基于时间的UUID ,我们将具有:

代码语言:javascript
复制
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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190725.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月22日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍:
  • 生成
  • 1.
  • 2.
  • 3.
  • 比较两个
  • 其他方法:
  • 1.
  • 2.
  • 使用基于时间的
  • 结论:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档