public class ULIDKeyGenerator extends Object implements IKeyGenerator
特点: 1、保证 id 生成的顺序为时间顺序,越往后生成的 ID 值越大; 2、可以按照生成的时间进行排序,而不需要全局协调; 3、生成速度快;
参考:Sequence
| 限定符和类型 | 字段和说明 |
|---|---|
private static char[] |
ENCODING_CHARS |
private long |
lastRandom |
private long |
lastTimestamp |
private static ThreadLocal<StringBuilder> |
THREAD_LOCAL_BUILDER |
private static long |
TIMESTAMP_OVERFLOW_MASK |
| 构造器和说明 |
|---|
ULIDKeyGenerator() |
| 限定符和类型 | 方法和说明 |
|---|---|
private static void |
appendCrockford(StringBuilder builder,
long value,
int count) |
private static void |
checkTimestamp(long timestamp) |
Object |
generate(Object entity,
String keyColumn) |
private String |
generateULID(long timestamp) |
private String |
generateULID(long timestamp,
long random) |
String |
nextId()
生成一个 ULID
|
String |
nextMonotonicId()
生成一个严格单调的 ULID
|
private long |
waitNextMillis(long lastTimestamp) |
private static final char[] ENCODING_CHARS
private static final long TIMESTAMP_OVERFLOW_MASK
private static final ThreadLocal<StringBuilder> THREAD_LOCAL_BUILDER
private long lastTimestamp
private long lastRandom
public ULIDKeyGenerator()
public String nextMonotonicId()
private String generateULID(long timestamp)
private String generateULID(long timestamp, long random)
private long waitNextMillis(long lastTimestamp)
private static void appendCrockford(StringBuilder builder, long value, int count)
private static void checkTimestamp(long timestamp)
Copyright © 2024. All rights reserved.