Package org.miaixz.bus.core.data
Class ID
java.lang.Object
org.miaixz.bus.core.data.ID
ID生成器工具类,此工具类中主要封装:
1. 唯一性ID生成器:UUID、ObjectId(MongoDB)、Snowflake
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUIDstatic StringfastUUID()获取随机UUID,使用性能更好的ThreadLocalRandom生成UUIDstatic longgetDataCenterId(long maxDatacenterId) 获取数据中心ID 数据中心ID依赖于本地网卡MAC地址。static Snowflake获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):static SnowflakegetSnowflake(long workerId) 获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):static SnowflakegetSnowflake(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 longgetWorkerId(long datacenterId, long maxWorkerId) 获取机器ID,使用进程ID配合数据中心ID生成 机器依赖于本进程ID或进程名的Hash值。static StringnanoId()获取随机NanoIdstatic StringnanoId(int size) 获取随机NanoIdstatic StringobjectId()创建MongoDB ID生成策略实现 ObjectId由以下几部分组成:static String获取随机UUIDstatic String简化的UUID,去掉了横线
-
Constructor Details
-
ID
public ID()
-
-
Method Details
-
randomUUID
获取随机UUID- Returns:
- 随机UUID
-
simpleUUID
简化的UUID,去掉了横线- Returns:
- 简化的UUID,去掉了横线
-
fastUUID
获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID- Returns:
- 随机UUID
-
fastSimpleUUID
简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID- Returns:
- 简化的UUID,去掉了横线
-
objectId
创建MongoDB ID生成策略实现 ObjectId由以下几部分组成:1. Time 时间戳。 2. Machine 所在主机的唯一标识符,一般是机器主机名的散列值。 3. PID 进程ID。确保同一机器中不冲突 4. INC 自增计数器。确保同一秒内产生objectId的唯一性。
- Returns:
- ObjectId
-
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序号)
- Parameters:
workerId- 终端IDdatacenterId- 数据中心ID- Returns:
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序号)
- Parameters:
workerId- 终端ID- Returns:
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序号)
- 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- 数据中心IDmaxWorkerId- 最大的机器节点ID- Returns:
- the long
-
nanoId
获取随机NanoId- Returns:
- the string
-
nanoId
获取随机NanoId- Parameters:
size- ID中的字符数量- Returns:
- the string
-
getSnowflakeNextId
public static long getSnowflakeNextId()简单获取Snowflake 的 nextId 终端ID 数据中心ID 默认为PID和MAC地址生成- Returns:
- the long
-
getSnowflakeNextIds
简单获取Snowflake 的 nextId 终端ID 数据中心ID 默认为PID和MAC地址生成- Returns:
- the string
-