Class UUID

java.lang.Object
org.miaixz.bus.core.data.id.UUID
All Implemented Interfaces:
Serializable, Comparable<UUID>

public class UUID extends Object implements Serializable, Comparable<UUID>
提供通用唯一识别码(universally unique identifier)(UUID)实现,UUID表示一个128位的值。 此类拷贝自java.util.UUID,用于生成不带-的UUID字符串
  • UUIDv1: Structure,形如:xxxxxxxx-xxxx-1xxx-yxxx-xxxxxxxxxxxx,UUID v1 表示为 32 个字符的十六进制字符串,分五组显示,并用连字符分隔; 基于时间,同时访问主机的 MAC 地址; generate a time based UUID (V1)
  • UUIDv2: Structure,形如:xxxxxxxx-xxxx-2xxx-yxxx-xxxxxxxxxxxx,UUID v2 的结构与其他 UUID 相同;需要 DCE–分布式计算机环境 生成唯一标识符;由于基于计算主机名,有隐私风险,未大规模使用
  • UUIDv3: Structure,形如:xxxxxxxx-xxxx-3xxx-yxxx-xxxxxxxxxxxx,UUID v3 的结构与其他 UUID 相同;需要 基于命名·使用MD5哈希加密 生成唯一标识符;
  • UUIDv4: Structure,形如:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,UUID v4 的结构与其他 UUID 相同,使用最多的版本,使用随机数生成。 默认实现都是该版本; generate a random UUID (V4)
  • UUIDv5: Structure,形如:xxxxxxxx-xxxx-5xxx-yxxx-xxxxxxxxxxxx,UUID v5 的结构与其他 UUID 相同,需要根据 基于命名·使用SHA-1哈希加密 生成唯一标识符; generate name based UUID with SHA1 hashing (v5)
  • UUIDv6: Structure,形如:xxxxxxxx-xxxx-6xxx-yxxx-xxxxxxxxxxxx,UUID v6 的结构与其他 UUID 相同,与 UUIDv1 的字段兼容版本,结合 UUIDv1 和 UUIDv4 的优点,确保基于时间的自然排序和更好的隐私;
  • UUIDv7: Structure,形如:xxxxxxxx-xxxx-7xxx-yxxx-xxxxxxxxxxxx,UUID v7 的结构与其他 UUID 相同,提供了从 Unix Epoch 时间戳派生的时间排序值,以及改进的熵特性。如果可能,建议使用版本 1 和 6; generate a ordered time based UUID (V7)
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 变体(将在下面进行描述)。 变体 2 (Leach-Salz) UUID 的布局如下: long 型数据的最高有效位由以下无符号字段组成:
 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi
 
long 型数据的最低有效位由以下无符号字段组成:
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 
variant 字段包含一个表示 UUID 布局的值。以上描述的位布局仅在 UUID 的 variant 值为 2(表示 Leach-Salz 变体)时才有效。
Since:
Java 17+
Author:
Kimi Liu
See Also: