Class ID

java.lang.Object
org.miaixz.bus.core.data.id.ID

public class ID extends Object
ID生成器工具类,此工具类中主要封装:
 1. 唯一性ID生成器:UUID、ObjectId(MongoDB)、Snowflake
 

ID相关文章见:http://calvin1978.blogcn.com/articles/uuid.html

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Summary

    Constructors
    Constructor
    Description
    ID()
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID
    static String
    获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID
    static long
    getDataCenterId(long maxDatacenterId)
    获取数据中心ID 数据中心ID依赖于本地网卡MAC地址。
    static Snowflake
    获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):
    static Snowflake
    getSnowflake(long workerId)
    获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):
    static Snowflake
    getSnowflake(long workerId, long datacenterId)
    获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。
    static long
    简单获取Snowflake 的 nextId 终端ID 数据中心ID 默认为PID和MAC地址生成
    static String
    简单获取Snowflake 的 nextId 终端ID 数据中心ID 默认为PID和MAC地址生成
    static long
    getWorkerId(long datacenterId, long maxWorkerId)
    获取机器ID,使用进程ID配合数据中心ID生成 机器依赖于本进程ID或进程名的Hash值。
    static String
    获取随机NanoId
    static String
    nanoId(int size)
    获取随机NanoId
    static String
    创建MongoDB ID生成策略实现 ObjectId由以下几部分组成:
    static String
    获取随机UUID
    static String
    简化的UUID,去掉了横线

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ID

      public ID()
  • Method Details

    • randomUUID

      public static String randomUUID()
      获取随机UUID
      Returns:
      随机UUID
    • simpleUUID

      public static String simpleUUID()
      简化的UUID,去掉了横线
      Returns:
      简化的UUID,去掉了横线
    • fastUUID

      public static String fastUUID()
      获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID
      Returns:
      随机UUID
    • fastSimpleUUID

      public static String fastSimpleUUID()
      简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID
      Returns:
      简化的UUID,去掉了横线
    • objectId

      public static String objectId()
      创建MongoDB ID生成策略实现 ObjectId由以下几部分组成:
       1. Time 时间戳。
       2. Machine 所在主机的唯一标识符,一般是机器主机名的散列值。
       3. PID 进程ID。确保同一机器中不冲突
       4. INC 自增计数器。确保同一秒内产生objectId的唯一性。
       

      参考:http://blog.csdn.net/qxc1281/article/details/54021882

      Returns:
      ObjectId
    • getSnowflake

      public static Snowflake getSnowflake(long workerId, long datacenterId)
      获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。

      snowflake的结构如下(每部分用-分开):

       0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
       

      第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年) 然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) 最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)

      参考:http://www.cnblogs.com/relucent/p/4955340.html

      Parameters:
      workerId - 终端ID
      datacenterId - 数据中心ID
      Returns:
      Snowflake
    • getSnowflake

      public static Snowflake getSnowflake(long workerId)
      获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):
       0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
       

      第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年) 然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) 最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)

      参考:http://www.cnblogs.com/relucent/p/4955340.html

      Parameters:
      workerId - 终端ID
      Returns:
      Snowflake
    • getSnowflake

      public static Snowflake getSnowflake()
      获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):
       0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
       

      第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年) 然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) 最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)

      参考:http://www.cnblogs.com/relucent/p/4955340.html

      Returns:
      Snowflake
    • getDataCenterId

      public static long getDataCenterId(long maxDatacenterId)
      获取数据中心ID 数据中心ID依赖于本地网卡MAC地址。

      此算法来自于mybatis-plus#Sequence

      Parameters:
      maxDatacenterId - 最大的中心ID
      Returns:
      数据中心ID
    • getWorkerId

      public static long getWorkerId(long datacenterId, long maxWorkerId)
      获取机器ID,使用进程ID配合数据中心ID生成 机器依赖于本进程ID或进程名的Hash值。

      此算法来自于mybatis-plus#Sequence

      Parameters:
      datacenterId - 数据中心ID
      maxWorkerId - 最大的机器节点ID
      Returns:
      the long
    • nanoId

      public static String nanoId()
      获取随机NanoId
      Returns:
      the string
    • nanoId

      public static String nanoId(int size)
      获取随机NanoId
      Parameters:
      size - ID中的字符数量
      Returns:
      the string
    • getSnowflakeNextId

      public static long getSnowflakeNextId()
      简单获取Snowflake 的 nextId 终端ID 数据中心ID 默认为PID和MAC地址生成
      Returns:
      the long
    • getSnowflakeNextIds

      public static String getSnowflakeNextIds()
      简单获取Snowflake 的 nextId 终端ID 数据中心ID 默认为PID和MAC地址生成
      Returns:
      the string