import org.apache.commons.lang3.RandomUtils; import java.util.Random; /** * @Description: 全局唯一Id生成器 * @Author: guanfengliang * @Email: guanfengliang@jd.com * @Create: 2018-11-20 16:55 */ public class SnowFlakeWorker { /** 开始时间截 (2015-01-01) */ private final long twepoch = 1420041600000L; /** 机器id所占的位数 */ private final long workerIdBits = 5L; /** 数据标识id所占的位数 */ private final long datacenterIdBits = 5L; /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ private final long maxWorkerId = -1L ^ (-1L << workerIdBits); /** 支持的最大数据标识id,结果是31 */ private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); /** 序列在id中占的位数 */ private final long sequenceBits = 12L; /** 机器ID向左移12位 */ private final long workerIdShift = sequenceBits; /** 数据标识id向左移17位(12+5) */ private final long datacenterIdShift = sequenceBits + workerI
全局唯一ID生成器(SnowFlakeId算法JAVA实现)
最新推荐文章于 2024-07-27 21:10:28 发布