配置IdWorker ID生成工具

Java 雪花算法生成器及其原理解析 package com.dongbawen.hppa.support.utils; /** * Twitter_Snowflake<br> * SnowFlake的结构如下(每部分用-分开):<br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 00000000000... 阅读详情

配置IdWorker ID生成工具

idworker是一个ID生成工具,可以生成一个全局唯一的长整形ID。也支持分布式环境下的使用。idworker采用了Snowflake算法,并在此基础上增加了奇偶抖动功能,避免在低并发的环境下生成全是偶数的情况。
1.springboot项目启动类中扫描一下

@SpringBootApplication
@ComponentScan(basePackages = {"com.cxl","org.n3r.idworker"})
public class MybatisPlusApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }

}

2.就可以用了

@Resource
    private IdWorker idWorker;

public void test1(){
	idWorker.nextId();
}
Java 数据库主键生成类 IdWorker 高并发分布式系统中生成全局唯一Id汇总 数据在分片时,典型的是分库分表,就有一个全局ID生成的问题。 单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求: 1 不能有单点故障。 2 以时间为序,或者ID里包含时间。这样一是可以少一个索引,二是冷热数据容易分离。 3 可以控制ShardingId。比如某一个用户的文章要放在同一个分片内,这样查询效率高,修改也容易。 4 不要太长,最好64bit。使用long比较好操作,如果是96bit,那就要各种移位相当的不方便,还有可能有些组件不能支持这么大的ID。 一 twitter twitter在把存储系统从MySQL迁移到Cassandra的过程中由于Cassandra没有顺序ID生成机制,于是自己开发了一套全局唯一ID生成服务:Snowflake。 1 41位的时间序列(精确到毫秒,41位的长度可以使用69年) 2 10位的机器标识(10位的长度最多支持部署1024个节点) 3 12位的计数顺序号(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号) 最高位是符号位,始终为0。 优点:高性能,低延迟;独立的应用;按时间有序。 缺点:需要独立的开发和部署。 原理 java 实现代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 public class IdWorker { private final long workerId; private final static long twepoch = 1288834974657L; private long sequence = 0L; private final static long workerIdBits = 4L; public final static long maxWorkerId = -1L ^ -1L << workerIdBits; private final static long sequenceBits = 10L; private final static long workerIdShift = sequenceBits; private final static long timestampLeftShift = sequenceBits + workerIdBits; public final static long sequenceMask = -1L ^ -1L < this.maxWorkerId || workerId < 0) { throw new IllegalArgumentException(String.format( "worker Id can&#39;t be greater than %d or less than 0", this.maxWorkerId)); } this.workerId = workerId; } public synchronized long nextId() { long timestamp = this.timeGen(); if (this.lastTimestamp == timestamp) { this.sequence = (this.sequence + 1) & this.sequenceMask; if (this.sequence == 0) { System.out.println("###########" + sequenceMask); timestamp = this.tilNextMillis(this.lastTimestamp); } } else { this.sequence = 0; } if (timestamp < this.lastTimestamp) { try { throw new Exception( String.format( "Clock moved backwards. Refusing to generate id for %d milliseconds", this.lastTimestamp - timestamp)); } catch (Exception e) { e.printStackTrace(); } } this.lastTimestamp = timestamp; long nextId = ((timestamp - twepoch << timestampLeftShift)) | (this.workerId << this.workerIdShift) | (this.sequence); System.out.println("timestamp:" + timestamp + ",timestampLeftShift:" + timestampLeftShift + ",nextId:" + nextId + ",workerId:" + workerId + ",sequence:" + sequence); return nextId; } private long tilNextMillis(final long lastTimestamp) { long timestamp = this.timeGen(); while (timestamp <= lastTimestamp) { timestamp = this.timeGen(); } return timestamp; } private long timeGen() { return System.currentTimeMillis(); } public static void main(String[] args){ IdWorker worker2 = new IdWorker(2); System.out.println(worker2.nextId()); } } 立即下载

相关推荐

idworker:idworker是一个基于zookeeper和snowflake算法的分布式ID生成工具,通过zookeeper自动注册机器(最多1024台),无需手动指定workerId和datacenterId

idworker-基于zookeeper,snowflake的分布式统一ID生成工具 是什么 idworker是一个基于zookeeper和snowflake算法的分布式统一ID生成工具,通过zookeeper自动注册机器(最多1024台),无需手动指定workerId和dataCenterId 怎么用 Maven < dependency> < groupId>com.imadcn.framework</ groupId> < artifactId>idworker</ artifactId>  < version>${latest.version}</ version> </ dependency> XML格式 <? xml version = " 1.0 " encoding = " UTF-8 " ?> < beans xmlns = " http://www.springframework.org/schema/beans " xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance

mybatis-plus雪花算法增强:idworker

本文主要介绍如何在mybatis-plus中引入idworker框架,通过zookeeper管理snowflake算法中workerId和dataCenterId`的生成,保证其唯一性,避免出现id重复的情况。

弹指天下 1万+

直升机空气动力学基础--005翼型的升阻比和气动力矩

焦点与翼型有关,总升力矩可以视为附加升力与零升力迎角升力的合成,对于对称翼型,零升力力矩为0,附加升力就是总升力,其焦点就是其压力中心。对于对称翼型,零升力力矩为0,对于非对称翼型,零升力力矩存在,与不对称度成正比。对于不对称翼型,升力对焦点的力矩保持不变。

ygf666的博客 4131

org.n3r.idworker idworker-client生成唯一id

主要是基于github上的一个开源id生成框架。 引入依赖: <!--a client of idworker to generate global unique id--> <dependency> <groupId>com.githu...

s_156的博客 2637

嘉立创EDA报错:元件引脚与焊盘未对应报错解决记录

原件引脚与焊盘未对应报错解决方法,一文总结!

2303_77013775的博客 1万+

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

m0_45877477的博客 1632

配置IdWorker ID生成工具

配置IdWorker ID生成工具 dworker是一个ID生成工具,可以生成一个全局唯一的长整形ID。也支持分布式环境下的使用。idworker采用了Snowflake算法,并在此基础上增加了奇偶抖动功能,避免在低并发的环境下生成全是偶数的情况。 1.IdWorkerProperties 为配置类,用于封装 application.yml中配置信息 IdWorkerConfig 根据配置类ID...

qq1192360489的博客 3986

基于Multisim设计电子密码锁

一、设计任务与要求:(可软件仿真实现)1)基本要求:设计一个数字密码锁,要求只有按正确的顺序,输入正确的密码,方能输出开锁信号,实现开锁。设置三个正确的密码键和若干个伪键,任何伪键按下后,密码锁都无法打开。每次只能接受四次按键信号,而且第四个键只能是“确定”或者“重输键”,其他无效。能显示已输入键的个数2)扩展要求:第一次密码输错后,可以输入第二次,但是连续三次输错,密码将被锁,必须按复位键才能解锁。

ablinger的博客 4418

idworker 分布式ID生成工具使用教程

idworker 分布式ID生成工具使用教程 idworkeridworker 是一个基于zookeeper和snowflake算法的分布式ID生成工具,通过zookeeper自动注册机器(最多1024台),无需手动指定workerId和datacenterId项目地址:https://gitcode.com/gh_mirrors/id/idworker 项目介绍 idworker 是一个基于 ...

gitblog_00877的博客 1649

C# Winform使用Monaco打造代码编辑器

本文介绍了如何在Winform项目中集成Monaco代码编辑器。通过NuGet安装WebView2控件,创建monaco-editor.html文件加载编辑器,并实现与C#代码的交互。关键步骤包括:初始化WebView2环境、配置Monaco编辑器参数、设置代码变更监听事件以及处理C#与JavaScript之间的通信。注意事项提示了依赖库安装问题的解决方法。该方案实现了功能完整的代码编辑器,支持代码自动保存和实时显示功能。

遇见--专栏 346

【网络】叶脊(Spine-Leaf)网络拓扑下全三层网络设计与实践(二) - 网络规划

2. 全三层架构设计思路 采用全三层网络架构设计的出发点是: 使用尽量少的交换机高级功能,可以尽可能减少由于功能bug故障造成的问题; 使用尽量少的网络协议,以兼容不通厂商的网络设备 实现简单,易于维护,绝对可靠的路由协议; 通过控制路由来调度流量,尽量减少设备或协议的故障域; 牺牲高级功能带来的便捷,得到更高的可用性和性能; 由上述原则,本文的设计选择只使用静态路由和BGP...

因吹斯汀 1万+

分布式ID生成解决方案(Idworker)

分布式ID生成解决方案 ​ 对于互联网应用,某个表可能会占用很大的存储空间,比如电商项目中的订单表,而且在项目部署时,我们会用到数据库分片,把一个数据库进行拆分,通过数据库中间件进行连接,这样的话如果采用数据自增,可能产生重复的ID. ​ 因此,分布式ID生成解决方案应运而生: UUID(缺点,太长,无法排序) 优点: 简单,代码方便。 生成ID性能非常好,基本不会有性能问题。 全球唯一...

weixin_44297716的博客 1444

【WiFi】T830 MT7992 WMM测试修改操作说明

WiFi WMM(Wi-Fi Multimedia)是Wi-Fi联盟推出的一项技术,用于优化无线网络中的多媒体内容传输。WMM通过优先处理不同类型的数据流来改善网络性能,特别是在网络拥堵时。:WMM通过提供服务质量支持,确保语音、视频和其他多媒体应用在无线网络中获得优先处理。这有助于减少延迟和抖动,改善用户体验。:WMM将数据流分为四个优先级队列:语音、视频、最佳效果(Best Effort)和背景(Background)。语音和视频流通常被赋予更高的优先级,以确保它们在网络中得到及时传输。

wgl307293845的博客 1018

分布式id生成器(雪花算法)和分库分表设计

title: 分布式id生成器(雪花算法) date: 2020-01-22 updated: 2020-01-22 tags: 分布式id生成器 categories: java工具类 top: true 在采用分库分表的数据库结构设计时,往数据库中新增数据(insert)不能在通过自增id来保证id唯一了,因为分表两个同样的表在不同服务器上自增id会重复,所有必须通过手动添加id来保证id的唯一性,snowflake (雪花)算法(twitter出品)就是用来生成唯一主键值很好的选择 1.概述 .

lishuwen7986的博客 1360

PHP与Node.js的对比及优缺点分析

PHP和Node.js是两种常用的服务器端编程语言,它们在不同的应用场景下各有优势和劣势。本文将全方位比较PHP和Node.js的特点,以及它们在编程中的优缺点,并提供相应的源代码示例供参考。需要注意的是,本文只是对PHP和Node.js的一些优缺点进行了简要介绍,实际应用中还需要考虑其他因素,如团队经验、项目规模和预算等。最终的选择应该基于全面的评估和需求分析。PHP:PHP是一种同步阻塞的编程语言,它的处理方式是一次只处理一个请求。Node.js:Node.js的性能较高,特别适合处理高并发的请求。

ByteSparkX的博客 888

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

springboot分布式id,基于snowflake的分布式统一id生成工具

springboot分布式id,基于snowflake的分布式统一id生成工具

计算机专业课程设计,毕业设计源码开发 706

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Mybatis在mapper.xml中获取分布式唯一id

Mybatis在mapper.xml中获取分布式唯一id前言一、Mybatis生成主键ID的方法二、使用步骤1.引入Mybatis相关依赖2.mapper.xml的写法总结 前言 当前端传入的列表数据,后端需要做批量插入的时候,肯定是缺少主键ID的,如果在内存中去循环生成添加UUID,是不是会显得不够优雅,而且影响性能和效率 提示:以下是本篇文章正文内容,下面案例可供参考 一、Mybatis生成主键ID的方法 如下图所示: 可以在mybatis的这个包中看到有生成long类型的UUID 二、使用.

qq_42397932的博客 1674

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

分布式ID之snowflake

1、编写工具类 具体看注解 package com.changgou.util; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkInterface; /** * <p>名称:IdWorker.java</p> * <p>描述:分布式自增长ID</p> * <pre> * Twi

今晚一定要早睡 224

若依框架集成sharding-jdbc

本文基于4.X版本在若依框架上集成sharding-jdbc, 实现了精准查询与范围查询, 通过雪花id反推时间进行分配查询等操作

始末丶Yzx的博客 3066

idworker 开源项目使用教程

idworker 开源项目使用教程 1. 项目的目录结构及介绍 idworker 项目的目录结构如下: idworker/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── cn/ │ │ │ └── imadcn/ │ │ │ └── idworker/ │ │ │ ...

gitblog_00338的博客 536

SpringBoot @Bean注解的作用

SpringBoot中,我们可以使用@Bean将自定义的一个类注入到spring容器中,让spring容器去管理bean 其相当于之前在xml里的配置 <bean id="IdWorker" class="utils.IdWorker"/> 首先我们定义一个自定义的工具类,拿分布式雪花ID工具类来举例,这里的工具类作用是生成一段随机ID package utils; import java.lang.management.ManagementFactory; import java.net.

weixin_44232093的博客 1332

探索未来标识管理:idworker——开启分布式ID生成新篇章

探索未来标识管理:idworker——开启分布式ID生成新篇章 idworkeridworker 是一个基于zookeeper和snowflake算法的分布式ID生成工具,通过zookeeper自动注册机器(最多1024台),无需手动指定workerId和datacenterId项目地址:https://gitcode.com/gh_mirrors/id/idworker 在这个数字化高速发展的...

gitblog_00979的博客 1182

MyBatis-Plus 中 IdWorker.getId() 方法

在分布式系统中,生成全局唯一标识符(ID)是一个常见的需求。MyBatis-Plus 提供了多种 ID 生成策略,其中基于 Twitter 的 Snowflake 算法实现的方法因其高效性和适应分布式环境的特点而备受青睐。然而,根据最新的官方文档,所关联的 ID 类型(如ID_WORKERUUID, 和)已经被弃用,推荐使用新的策略如ASSIGN_ID或。

小李同学的博客 2153

Mybatis Plus通过idworker解决雪花算法重复问题

华为云的服务器的/etc/hosts中都会生成一条 127.0.1.1 hostname的记录 ,导致获取network为null ,datacenterId 会取默认值1,导致重复概率大大增加。

Winn~ 6161

分布式自增长ID-IdWorker(雪花算法生成随机id)

package util; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkInterface; /** 名称:IdWorker.java 描述:分布式自增长ID Twitter的 Snowflake JAVA实现方案 核...

as_you_like_zx的博客 601

使用(IdWorker)推特雪花算法生成id

package com.atguigu.springboot.utils; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkInter...

chizi7811的博客 1458
上一篇: mybatis的id策略
下一篇: mybatis-plus的自动填充时间,@TableField 注解,
code_mzh
博客等级 码龄7年 17粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值