封装SnowFlake算法,提供全局id生成工具,环境是springboot,引入相关包之后代码直接拷贝即可
import java.util.Optional;
public class IDGenerate {
//公有构造方法
public IDGenerate() {
}
public static final Optional<Long> nextId() {
return Optional.of(SnowFlake.getInstance().nextId());
}
}
雪花算法封装
import org.apache.commons.lang3.RandomUtils;
public class SnowFlake {
private static final long START_STMP = 1480166465631L;
private static final long SEQUENCE_BIT = 12L;
private static final long MACHINE_BIT = 5L;
private static final long DATACENTER_BIT = 5L;
private static final long MAX_DATACENTER_NUM = 31L;
private static final long MAX_MACHINE_NUM = 31L;
private static final long MAX_SEQUENCE = 4095L;
private static final long MACHINE_LEFT = 12L;
private static final long DATACENTER_LEFT = 17L;
private static final long TIMESTMP_LEFT = 22L;
pri