Class | Description |
---|---|
IdConstants |
ID相关常量
|
IdUtil |
ID生成器工具类,此工具类中主要封装:
1.
|
NanoId |
NanoId,一个小型、安全、对 URL友好的唯一字符串 ID 生成器,特点:
安全:它使用加密、强大的随机 API,并保证符号的正确分配
体积小:只有 258 bytes 大小(压缩后)、无依赖
紧凑:它使用比 UUID (A-Za-z0-9_~)更多的符号
此实现的逻辑基于JavaScript的NanoId实现,见:https://github.com/ai/nanoid
|
ObjectId |
MongoDB ID生成策略实现
ObjectId由以下几部分组成: 1. |
ObjectIdGenerator |
ObjectId生成器
|
SeataSnowflake |
Seata改进的雪花算法ID
改进主要是更换了节点和时间戳的位置,以实现在单节点中单调递增 来自:https://github.com/seata/seata/blob/2.x/common/src/main/java/io/seata/common/util/IdWorker.java 相关说明见: https://zhuanlan.zhihu.com/p/648460337 http://seata.io/zh-cn/blog/seata-snowflake-explain.html 符号位(1bit) - 节点标志ID(10bit)- 时间戳相对值(41bit) - 递增序号(12bit) (0) - (0000000000) - (0000000000 0000000000 0000000000 0000000000 0) - (000000000000) |
Snowflake |
Twitter的Snowflake 算法
分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 |
ULID |
ULID(Universally Unique Lexicographically Sortable Identifier)通用唯一词典分类标识符,特性:
与UUID的128位兼容性
每毫秒1.21e + 24个唯一ULID
按字典顺序(也就是字母顺序)排序
规范地编码为26个字符串,而不是UUID的36个字符
使用Crockford的base32获得更好的效率和可读性(每个字符5位)
不区分大小写
没有特殊字符(URL安全)
单调排序顺序(正确检测并处理相同的毫秒)
参考:https://github.com/zjcscut/framework-mesh/blob/master/ulid4j/src/main/java/cn/vlts/ulid/ULID.java
01AN4Z07BY 79KA1307SR9X4MV3
|----------| |----------------|
Timestamp Randomness
48bits 80bits
|
ULIDGenerator |
ULID生成器
|
UUID |
提供通用唯一识别码(universally unique identifier)(UUID)实现,UUID表示一个128位的值。
|
UUIDGenerator |
UUID生成器
|
Enum | Description |
---|---|
Pid |
进程ID单例封装
第一次访问时调用 ManagementFactory.getRuntimeMXBean() 获取PID信息,之后直接使用缓存值 |
Copyright © 2025. All rights reserved.