java订单号生成算法_JAVA 实现雪花算法生成唯一订单号工具类

该博客介绍了如何在Java中使用雪花算法实现一个生成唯一订单号的工具类。通过设置工作进程ID和最大容忍时钟回退时间,确保在分布式环境中生成的订单号全局唯一。同时提供了Spring Boot配置示例,展示如何在项目中集成和配置这个工具类。
摘要由CSDN通过智能技术生成

import lombok.SneakyThrows;

import lombok.extern.slf4j.Slf4j;

import java.util.Calendar;

/**

* Default distributed primary key generator.

*

*

* Use snowflake algorithm. Length is 64 bit.

*

*

*

 
 

* 1bit sign bit.

* 41bits timestamp offset from 2016.11.01(ShardingSphere distributed primary key published data) to now.

* 10bits worker process id.

* 12bits auto increment offset in one mills

*

*

*

* Call @{@code DefaultKeyGenerator.setWorkerId} to set worker id, default value is 0.

*

*

*

* Call @{@code DefaultKeyGenerator.setMaxTolerateTimeDifferenceMilliseconds} to set max tolerate time difference milliseconds, default value is 0.

*

*

* @author gaohongtao

*/

@Slf4j

public final class SnowflakeKeyGenerator {

public static final long EPOCH;

private static final long SEQUENCE_BITS = 12L;

private static final long WORKER_ID_BITS = 10L;

private static final long SEQUENCE_MASK = (1 << SEQUENCE_BITS) - 1;

private static final long WORKER_ID_LEFT_SHIFT_BITS &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值