魔改雪花ID,1秒生成5000万个,支持时钟回拨、手动初始化、配置文件初始化(2)

High performance snowflake ID generator springboot autoconfigure 高性能雪花ID生成器自动配置

点击查看第一篇

项目地址

Github源码
Gitee源码

Github测试
Gitee测试

高性能雪花ID生成器项目地址

Github源码
Gitee源码

Github测试
Gitee测试

简介

本项目使用了SpringBoot的自动配置,只需要在配置文件中写入初始化参数即可,不用写死在代码中。

依赖导入

最新版本

maven

<!-- 必须依赖 -->
<dependency>
    <groupId>cn.404z</groupId>
    <artifactId>id-spring-boot-autoconfigure</artifactId>
    <version>2.1.0</version>
</dependency>
<!-- 额外依赖(运行未报错,不需要加) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.4.3</version>
</dependency>

gradle

// 必须依赖
implementation 'cn.404z:id-spring-boot-autoconfigure:2.1.0'
// 额外依赖(运行未报错,不需要加)
implementation 'org.springframework.boot:spring-boot-starter:2.4.3'

使用方法

正常使用

配置文件

id:
  machine-id: 0
  machine-bits: 8
  sequence-bits: 14

代码

System.out.println("ID为:" + Id.next());

结果

[main] INFO cn.z.id.autoconfigure.IdAutoConfiguration - 读取到配置文件,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为14
[main] INFO cn.z.id.Id - 预初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为12
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为4096,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为278年,失效日期为2299-09-27 23:10:22.207
[main] INFO cn.z.id.Id - 手动初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为14
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为16384,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为69年,失效日期为2090-09-07 23:47:35.551
[main] INFO com.demo.App - Started App in 0.798 seconds (JVM running for 1.632)
ID为:22502074365247488

不配置属性

不需要配置文件
代码

System.out.println("ID为:" + Id.next());

结果

[main] INFO com.demo.App - Started App in 0.735 seconds (JVM running for 1.401)
[main] INFO cn.z.id.Id - 预初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为12
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为4096,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为278年,失效日期为2299-09-27 23:10:22.207
ID为:5625838540161024

配置部分属性

配置文件

id:
  machine-id: 10

代码

System.out.println("ID为:" + Id.next());

结果

[main] INFO cn.z.id.autoconfigure.IdAutoConfiguration - 读取到配置文件,MACHINE_ID为10
[main] INFO cn.z.id.Id - 预初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为12
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为4096,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为278年,失效日期为2299-09-27 23:10:22.207
[main] INFO cn.z.id.Id - 手动初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为10,MACHINE_BITS为8,SEQUENCE_BITS为12
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为4096,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为278年,失效日期为2299-09-27 23:10:22.207
[main] INFO com.demo.App - Started App in 0.825 seconds (JVM running for 1.509)
ID为:5626263803830272

配置属性后又手动初始化

配置文件

id:
  machine-id: 0
  machine-bits: 8
  sequence-bits: 6

代码

Id.init(20, 6, 10);
System.out.println("ID为:" + Id.next());

结果

[main] INFO cn.z.id.autoconfigure.IdAutoConfiguration - 读取到配置文件,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为6
[main] INFO cn.z.id.Id - 预初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为12
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为4096,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为278年,失效日期为2299-09-27 23:10:22.207
[main] INFO cn.z.id.Id - 手动初始化...
[main] INFO cn.z.id.Id - 初始化,MACHINE_ID为0,MACHINE_BITS为8,SEQUENCE_BITS为6
[main] INFO cn.z.id.Id - 最大机器码MACHINE_ID为255,1ms内最多生成Id数量为64,时钟最早回拨到2021-01-01 08:00:00.0,可使用时间大约为17851年,失效日期为19860-03-05 19:03:41.311
[main] INFO com.demo.App - Started App in 0.754 seconds (JVM running for 1.378)
[main] WARN cn.z.id.Id - 已经初始化过了,不可重复初始化!
ID为:87913675669504

许可证

BSD

交流

QQ:1416978277
微信:1416978277
支付宝:1416978277@qq.com
交流

赞助

赞助

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值