From 9c3dc22a37737c95cf07af5a75579e017c945c53 Mon Sep 17 00:00:00 2001 From: dazer007 Date: Mon, 15 Jan 2024 09:08:10 +0000 Subject: [PATCH] =?UTF-8?q?!1151=20=E8=BD=BB=E9=87=8F=E7=BA=A7=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9AUUID=E6=B3=A8=E9=87=8A=E4=BF=AE=E6=94=B9=20*?= =?UTF-8?q?=20=E6=B3=A8=E9=87=8A=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=8F=82=E8=80=83=20*=20=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=AE=80=E6=B4=81=E8=8B=B1=E6=96=87?= =?UTF-8?q?=20*=20=E4=BF=AE=E6=94=B9=EF=BC=9AnameUUIDFromBytes=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=20*=20UUID=E4=BB=8Ev1->v7=EF=BC=8C=E8=B6=8A=E6=9D=A5?= =?UTF-8?q?=E8=B6=8A=E5=A4=8D=E6=9D=82=EF=BC=8C=E6=96=B0=E6=89=8B=E5=BE=88?= =?UTF-8?q?=E5=A4=B4=E5=A4=A7=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=B9v6?= =?UTF-8?q?=E3=80=81v7=E7=9A=84=E6=8F=8F=E8=BF=B0=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E4=BB=A3=E7=A0=81=E8=87=AA=E9=98=85=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/hutool/core/data/id/UUID.java | 37 ++++++++++++++----- .../dromara/hutool/core/data/id/UUIDTest.java | 3 +- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/data/id/UUID.java b/hutool-core/src/main/java/org/dromara/hutool/core/data/id/UUID.java index 97feaca52..7b0755399 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/data/id/UUID.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/data/id/UUID.java @@ -23,6 +23,22 @@ import java.util.Random; /** * 提供通用唯一识别码(universally unique identifier)(UUID)实现,UUID表示一个128位的值。
* 此类拷贝自java.util.UUID,用于生成不带-的UUID字符串 + *

+ *

Generate UUID 不同版本UUID在线生成和参考:Generate UUID

+ *

UUID 的 5 个版本:UUID 5 version 区别

+ *

UUID代码实现参考:sake/uuid4j实现

+ *

+ * + * version 字段保存描述此 UUID 类型的值。有 7 种不同的基本 UUID 类型:基于时间的 UUIDv1、DCE 安全 UUIDv2、基于名称的 UUIDv3 、随机生成的 UUIDv4、基于名称的SHA-1算法的 UUIDv5、基于时间的随机生成的 UUIDv6 和 基于时间戳的 UUIDv7。
+ * 这些类型的 version 值分别为 1、2、3、4、5、6 和 7。最常用的V4 * *

* 这些通用标识符具有不同的变体。此类的方法用于操作 Leach-Salz 变体,不过构造方法允许创建任何 UUID 变体(将在下面进行描述)。 @@ -47,8 +63,6 @@ import java.util.Random; *

* variant 字段包含一个表示 UUID 布局的值。以上描述的位布局仅在 UUID 的 variant 值为 2(表示 Leach-Salz 变体)时才有效。 * *

- * version 字段保存描述此 UUID 类型的值。有 4 种不同的基本 UUID 类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。
- * 这些类型的 version 值分别为 1、2、3 和 4。 * * @since 4.1.11 */ @@ -105,7 +119,7 @@ public class UUID implements java.io.Serializable, Comparable { } /** - * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的本地线程伪随机数生成器生成该 UUID。 + * 获取类型 4 UUIDv4(伪随机生成的)UUID 的静态工厂。 使用加密的本地线程伪随机数生成器生成该 UUID。 * * @return 随机生成的 {@code UUID} */ @@ -114,7 +128,7 @@ public class UUID implements java.io.Serializable, Comparable { } /** - * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * 获取类型 4 UUIDv4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 * * @return 随机生成的 {@code UUID} */ @@ -123,7 +137,7 @@ public class UUID implements java.io.Serializable, Comparable { } /** - * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * 获取类型 4 UUIDv4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 * * @param isSecure 是否使用{@link SecureRandom}如果是可以获得更安全的随机码,否则可以得到更好的性能 * @return 随机生成的 {@code UUID} @@ -143,7 +157,7 @@ public class UUID implements java.io.Serializable, Comparable { } /** - * 根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。 + * 根据指定的字节数组获取类型 3 UUIDv3(基于名称的·使用MD5哈希加密)UUID 的静态工厂。 * * @param name 用于构造 UUID 的字节数组。 * @return 根据指定数组生成的 {@code UUID} @@ -215,10 +229,13 @@ public class UUID implements java.io.Serializable, Comparable { *

* 版本号具有以下含意: *

* * @return 此 {@code UUID} 的版本号 diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/data/id/UUIDTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/data/id/UUIDTest.java index d46d14e01..59ea9ac41 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/data/id/UUIDTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/data/id/UUIDTest.java @@ -13,7 +13,7 @@ package org.dromara.hutool.core.data.id; import org.dromara.hutool.core.collection.ConcurrentHashSet; -import org.dromara.hutool.core.data.id.UUID; +import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.thread.ThreadUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -30,6 +30,7 @@ public class UUIDTest { final Set set = new ConcurrentHashSet<>(100); ThreadUtil.concurrencyTest(100, ()-> set.add(UUID.fastUUID().toString())); Assertions.assertEquals(100, set.size()); + Console.log(set); }