You've already forked FrameTour-BE
Init
This commit is contained in:
49
src/main/java/com/ycwl/basic/model/snowFlake/UniqueId.java
Normal file
49
src/main/java/com/ycwl/basic/model/snowFlake/UniqueId.java
Normal file
@ -0,0 +1,49 @@
|
||||
package com.ycwl.basic.model.snowFlake;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Created by liuhongguang on 2019年10月27日
|
||||
* @Description
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
public class UniqueId implements Serializable {
|
||||
|
||||
/**
|
||||
* 0 + 41 + 5 + 5 + 12
|
||||
* 固定 + 时间戳 + 工作机器ID + 数据中心ID + 序列号
|
||||
*/
|
||||
|
||||
private static final long serialVersionUID = 8632670752020316524L;
|
||||
|
||||
/**
|
||||
* 工作机器ID、数据中心ID、序列号、上次生成ID的时间戳
|
||||
*/
|
||||
@ApiModelProperty(value = "机器ID")
|
||||
private long machineId;
|
||||
|
||||
@ApiModelProperty(value = "数据中心ID")
|
||||
private long datacenterId;
|
||||
|
||||
@ApiModelProperty(value = "毫秒内序列")
|
||||
private long sequence;
|
||||
|
||||
@ApiModelProperty(value = "时间戳")
|
||||
private long timestamp;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UniqueIdRespVo{" +
|
||||
"服务机器ID=" + machineId +
|
||||
", 数据中心ID=" + datacenterId +
|
||||
", 毫秒内的序列=" + sequence +
|
||||
", 生成时间与预设时间戳间隔=" + timestamp +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package com.ycwl.basic.model.snowFlake;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
public class UniqueIdMetaData {
|
||||
/**
|
||||
* 取当前系统启动时间为参考起始时间,
|
||||
* 取1995-04-01为参考日
|
||||
*/
|
||||
// public static final long START_TIME = LocalDateTime.now().toInstant(ZoneOffset.UTC).toEpochMilli();
|
||||
public static final long START_TIME = 796665600000L;
|
||||
|
||||
/**
|
||||
* 机器ID所占位数
|
||||
*/
|
||||
@ApiModelProperty(value = "机器位数")
|
||||
public static final long MACHINE_ID_BITS = 5L;
|
||||
|
||||
/**
|
||||
* 机器ID最大值31,0-31
|
||||
*/
|
||||
@ApiModelProperty(value = "机器ID最大")
|
||||
public static final long MAX_MACHINE_ID = ~(-1L << MACHINE_ID_BITS);
|
||||
|
||||
/**
|
||||
* 数据中心ID所占位数
|
||||
*/
|
||||
@ApiModelProperty(value = "数据中心ID所占位数")
|
||||
public static final long DATACENTER_ID_BITS = 5L;
|
||||
|
||||
/**
|
||||
* 数据中心ID最大值31,0-31
|
||||
*/
|
||||
@ApiModelProperty(value = "数据中心ID最大值")
|
||||
public static final long MAX_DATACENTER_ID = ~(-1L << MACHINE_ID_BITS);
|
||||
|
||||
/**
|
||||
* Sequence所占位数
|
||||
*/
|
||||
@ApiModelProperty(value = "序列所占位数")
|
||||
public static final long SEQUENCE_BITS = 12L;
|
||||
|
||||
/**
|
||||
* 机器ID偏移量12
|
||||
*/
|
||||
@ApiModelProperty(value = "机器ID偏移量")
|
||||
public static final long MACHINE_SHIFT_BITS = SEQUENCE_BITS;
|
||||
|
||||
/**
|
||||
* 数据中心ID偏移量12+5=17
|
||||
*/
|
||||
@ApiModelProperty(value = "数据中心ID偏移量")
|
||||
public static final long DATACENTER_SHIFT_BITS = SEQUENCE_BITS + MACHINE_ID_BITS;
|
||||
|
||||
/**
|
||||
* 时间戳的偏移量12+5+5=22
|
||||
*/
|
||||
@ApiModelProperty(value = "时间戳偏移量")
|
||||
public static final long TIMESTAMP_LEFT_SHIFT_BITS = SEQUENCE_BITS + MACHINE_ID_BITS + DATACENTER_ID_BITS;
|
||||
|
||||
/**
|
||||
* Sequence掩码4095
|
||||
*/
|
||||
@ApiModelProperty(value = "序列掩码")
|
||||
public static final long SEQUENCE_MASK = ~(-1L << SEQUENCE_BITS);
|
||||
|
||||
/**
|
||||
* 机器ID掩码1023
|
||||
*/
|
||||
@ApiModelProperty(value = "机器ID掩码")
|
||||
public static final long MACHINE_MASK = ~(-1L << MACHINE_ID_BITS);
|
||||
|
||||
/**
|
||||
* 数据中心掩码1023
|
||||
*/
|
||||
@ApiModelProperty(value = "数据中心掩码")
|
||||
public static final long DATACENTER_MASK = ~(-1L << MACHINE_ID_BITS);
|
||||
|
||||
/**
|
||||
* 时间戳掩码2的41次方减1
|
||||
*/
|
||||
@ApiModelProperty(value = "时间戳掩码")
|
||||
public static final long TIMESTAMP_MASK = ~(-1L << 41L);
|
||||
|
||||
}
|
Reference in New Issue
Block a user