/**
* <p>
* 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法。 <br>
*/
public class IdWorker {
/**
* 主机和进程的机器码
*/
private static final Sequence worker = new Sequence();
public static long getId() {
return worker.nextId();
}
/**
* <p>
* 获取去掉"-" UUID
* </p>
*/
public static synchronized String get32UUID() {
return UUID.randomUUID().toString().replace("-", "");
}
}
class Sequence {
private static final Logger logger = LoggerFactory.getLogger(Sequence.class);
/* 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动) */
private final long twepoch = 1288834974657L;
private final long workerIdBits = 5L;/* 机器标识位数 */
private final long datacenterIdBits = 5L;
private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
private final long sequenceBits = 12L;/* 毫秒内自增位 */
private final long workerIdShift = sequenceBits;
private final long datacenterIdShift = sequenceBits + workerIdBits;
/* 时间戳左移动位 */
private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
private final long sequenceMask = -1L ^ (-1L << sequenceBits);
private long workerId;
/* 数
java自动生成id根据时间
最新推荐文章于 2024-08-23 02:04:55 发布