Package org.miaixz.bus.core.data.id


package org.miaixz.bus.core.data.id
  • Class
    Description
    ID生成器工具类,此工具类中主要封装:
    NanoId,一个小型、安全、对 URL友好的唯一字符串 ID 生成器,特点: 安全:它使用加密、强大的随机 API,并保证符号的正确分配 体积小:只有 258 bytes 大小(压缩后)、无依赖 紧凑:它使用比 UUID (A-Za-z0-9_~)更多的符号
    MongoDB ID生成策略实现 ObjectId由以下几部分组成:
    进程ID单例封装 第一次访问时调用ManagementFactory.getRuntimeMXBean()获取PID信息,之后直接使用缓存值
    Twitter的Snowflake 算法 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):
    ULID(Universally Unique Lexicographically Sortable Identifier)通用唯一词典分类标识符,特性: 与UUID的128位兼容性 每毫秒1.21e + 24个唯一ULID 按字典顺序(也就是字母顺序)排序 规范地编码为26个字符串,而不是UUID的36个字符 使用Crockford的base32获得更好的效率和可读性(每个字符5位) 不区分大小写 没有特殊字符(URL安全) 单调排序顺序(正确检测并处理相同的毫秒)
    提供通用唯一识别码(universally unique identifier)(UUID)实现,UUID表示一个128位的值。 此类拷贝自java.util.UUID,用于生成不带-的UUID字符串 Generate UUID 不同版本UUID在线生成和参考:Generate UUID UUID 的 5 个版本:UUID 5 version 区别 UUID代码实现参考:sake/uuid4j实现 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 型数据的最高有效位由以下无符号字段组成: