成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

mybatis-plus雪花算法自動生成機器id原理及源碼

瀏覽:7日期:2023-10-19 10:44:29
目錄1、雪花算法原理2、自動生成唯一機器號源碼1、雪花算法原理

雪花算法使用一個 64 bit 的 long 型的數字作為全局唯一 id。這 64 個 bit 中,其中 1 個 bit 是不用的,然后用其中的 41 bit 作為毫秒數,用 10 bit 作為工作機器 id,12 bit 作為序列號。

mybatis-plus雪花算法自動生成機器id原理及源碼

1bit,不用,因為二進制中最高位是符號位,1表示負數,0表示正數。生成的id一般都是用整數,所以最高位固定為0。 41bit-時間戳,用來記錄時間戳,毫秒級。 10bit-工作機器id,用來記錄工作機器id。 12bit-序列號,序列號,用來記錄同毫秒內產生的不同id。即可以用0、1、2、3、…4094這4095個數字,來表示同一機器同一時間截(毫秒)內產生的4095個ID序號。

SnowFlake可以保證:

所有生成的id按時間趨勢遞增整個分布式系統內不會產生重復id(因為有datacenterId和workerId來做區分)

如上大概了解了雪花算法的原理,而且也知道機器號對于雪花算法的重要性。如果機器號一樣,可能會出現id重復的情況。

mybatis-plus自3.3.0開始,默認使用雪花算法+UUID(不含中劃線),但是它并沒有強制讓開發者配置機器號。這一點很是疑惑,這樣可能會讓不了解雪花算法的人埋下了一個坑。但是這么強大的一個框架難道真的沒有做優化嗎?帶著問題,查看了下mybatis-plus雪花算法源碼com.baomidou.mybatisplus.core.toolkit.Sequence。最終發現在沒有設置機器號的情況下,會通過當前物理網卡地址和jvm的進程ID自動生成。這真的是一個較好的解決方案。一般在一個集群中,MAC+JVM進程PID一樣的幾率非常小。

2、自動生成唯一機器號源碼

核心代碼。有兩個構造方法,一個無參構造,一個有參構造。

public Sequence() { //通過當前物理網卡地址獲取datacenterId this.datacenterId = getDatacenterId(maxDatacenterId); //物理網卡地址+jvm進程pi獲取workerId this.workerId = getMaxWorkerId(datacenterId, maxWorkerId);}/** * 有參構造器 * * @param workerId 工作機器 ID * @param datacenterId 序列號 */public Sequence(long workerId, long datacenterId) { Assert.isFalse(workerId > maxWorkerId || workerId < 0, String.format('worker Id can’t be greater than %d or less than 0', maxWorkerId)); Assert.isFalse(datacenterId > maxDatacenterId || datacenterId < 0, String.format('datacenter Id can’t be greater than %d or less than 0', maxDatacenterId)); this.workerId = workerId; this.datacenterId = datacenterId;} 無參構造 開發者沒有設置機器號時 有參構造 開發者自行設置機器號

protected static long getDatacenterId(long maxDatacenterId) { long id = 0L; try {//獲取本機(或者服務器ip地址)//DESKTOP-123SDAD/192.168.1.87InetAddress ip = InetAddress.getLocalHost();NetworkInterface network = NetworkInterface.getByInetAddress(ip);//一般不是null會進入elseif (network == null) { id = 1L;} else { //獲取物理網卡地址 byte[] mac = network.getHardwareAddress(); if (null != mac) {id = ((0x000000FF & (long) mac[mac.length - 2]) | (0x0000FF00 & (((long) mac[mac.length - 1]) << 8))) >> 6;id = id % (maxDatacenterId + 1); }} } catch (Exception e) {logger.warn(' getDatacenterId: ' + e.getMessage()); } return id;}

/** * 獲取 maxWorkerId */protected static long getMaxWorkerId(long datacenterId, long maxWorkerId) { StringBuilder mpid = new StringBuilder(); mpid.append(datacenterId); //獲取jvm進程信息 String name = ManagementFactory.getRuntimeMXBean().getName(); if (StringUtils.isNotBlank(name)) {/* * 獲取進程PID */mpid.append(name.split(StringPool.AT)[0]); } /* * MAC + PID 的 hashcode 獲取16個低位 */ return (mpid.toString().hashCode() & 0xffff) % (maxWorkerId + 1);}

以上就是mybatis-plus雪花算法自動生成機器id原理的詳細內容,更多關于mybatis plus雪花id的資料請關注好吧啦網其它相關文章!

標簽: Mybatis 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美视频1区| 国模无码大尺度一区二区三区| 日韩电影免费一区| 日韩亚洲国产欧美| 国产精品久久久久久久岛一牛影视| 成人天堂资源www在线| 在线综合亚洲欧美在线视频| 久草中文综合在线| 欧美一a一片一级一片| 麻豆国产欧美日韩综合精品二区| 91久久精品一区二区| 日本不卡高清视频| 精品视频123区在线观看| 久久99国产精品久久99 | 日韩精品1区2区3区| 国产精品日韩欧美一区| 亚洲综合图片区| 欧美亚洲一级| 亚洲电影欧美电影有声小说| 先锋影音一区二区三区| 亚洲午夜一区二区| 久久三级视频| 美女国产一区二区三区| 欧美视频一区在线观看| 国模冰冰炮一区二区| 欧美一卡在线观看| 99精品视频在线观看| 国产日韩精品久久久| 欧美体内she精视频在线观看| 国产精品久久久久婷婷| 亚洲午夜激情在线| 一区二区欧美精品| 久久久久国产一区二区| 久久99精品久久久| 日韩一级二级三级| 欧美在线播放| 亚洲日本中文字幕区| 国产精品视频| 奇米影视一区二区三区| 欧美一区在线视频| 欧美99久久| ...av二区三区久久精品| 国产精品日韩高清| 免费黄网站欧美| 日韩欧美亚洲一区二区| 欧美jizzhd精品欧美巨大免费| 亚洲国产精品99久久久久久久久| 9国产精品视频| 人妖欧美一区二区| 欧美成人r级一区二区三区| 欧美日韩国产一区精品一区| 一区二区三区成人| 欧美三级日韩在线| 91在线观看一区二区| 亚洲天天做日日做天天谢日日欢| 久久久99爱| 国产一区二区三区在线观看免费 | 亚洲日本在线观看| 久久久蜜桃一区二区人| 国产精品一区专区| 国产清纯美女被跳蛋高潮一区二区久久w | 久久精品国产久精国产| 欧美xingq一区二区| 亚洲性图久久| 蜜乳av一区二区三区| 精品国产不卡一区二区三区| 99精品国产在热久久| 麻豆成人在线观看| 26uuu亚洲综合色| 国产精品毛片在线| 激情综合色综合久久综合| 久久奇米777| 亚洲欧美大片| 国产精品一二三区| 综合电影一区二区三区 | 欧美日韩一区二区三区高清| 91麻豆高清视频| 亚洲风情在线资源站| 日韩欧美你懂的| 亚洲精选国产| 国精品**一区二区三区在线蜜桃| 国产欧美精品一区二区色综合| 久久久久久国产精品一区| caoporn国产精品| 无码av中文一区二区三区桃花岛| 日韩视频免费观看高清完整版在线观看 | 精品91久久久久| 九色porny丨国产精品| 国产欧美日本一区视频| 老司机精品久久| 欧美成人69av| 日韩av中文字幕一区二区三区| 欧美xxxxxxxxx| 色先锋资源久久综合| 欧美一区二区三区久久精品| 三级欧美在线一区| 国产欧美一区二区精品久导航| 久久久久国产精品午夜一区| 亚洲欧美亚洲| 免费看日韩a级影片| 国产清纯在线一区二区www| 在线中文字幕一区| 在线观看一区欧美| 国产91精品久久久久久久网曝门| 亚洲乱码国产乱码精品精小说| 在线电影院国产精品| 夜夜精品视频| 99精品视频一区| 美女视频黄免费的久久| 中文字幕一区二区在线播放| 欧美疯狂性受xxxxx喷水图片| 日韩一级在线| 成人高清在线视频| 日韩精品电影在线| 欧美高清在线精品一区| 欧美天天综合网| 国产九九精品| 91色九色蝌蚪| 久久99精品久久久久久国产越南| 亚洲天堂av老司机| 日韩欧美国产午夜精品| 色婷婷综合中文久久一本| 亚洲国产一区二区三区高清 | 在线观看不卡| 暴力调教一区二区三区| 日本在线不卡一区| 亚洲免费在线视频| 国产欧美日韩精品在线| 日韩一区二区在线看片| 91福利区一区二区三区| 99精品国产高清一区二区| 欧美一区二区三区免费看| 国产精品资源在线| 日本欧美在线观看| 亚洲人午夜精品天堂一二香蕉| 久久精品人人爽人人爽| 欧美一区二区在线不卡| 色成年激情久久综合| 国产精品视频免费观看| 国产精品国产一区二区 | 美女日韩在线中文字幕| 亚洲东热激情| 欧美三级小说| 99re热视频精品| 国产高清一区日本| 午夜精品免费在线| 一区二区在线观看不卡| 国产精品久久久久久久第一福利| 精品久久久久久综合日本欧美| 欧美美女bb生活片| 91传媒视频在线播放| 狂野欧美一区| 久久精品一区二区国产| 一本综合久久| 激情自拍一区| 好吊色欧美一区二区三区四区 | 黄色成人免费在线| 奇米精品一区二区三区在线观看 | 亚洲专区免费| 99在线观看免费视频精品观看| 欧美国产专区| 午夜国产欧美理论在线播放| 91视频国产观看| 91蜜桃婷婷狠狠久久综合9色| 成人精品免费网站| 成人av免费在线观看| 成人深夜视频在线观看| 国产69精品久久久久毛片| 国产精品一区专区| 国产成人精品影院| 国产精品一区二区不卡| 国产宾馆实践打屁股91| 不卡高清视频专区| 91色综合久久久久婷婷| 欧美99久久| 欧美三级第一页| 91久久国产自产拍夜夜嗨| 亚洲开发第一视频在线播放| 一区二区三区欧美在线| 国产伦精品一区二区三区四区免费 | 26uuu色噜噜精品一区二区| 免费在线观看不卡| 欧美激情一区二区三区在线| 欧美视频一二三区| 免费在线观看一区二区三区| 亚洲一区二区在线免费观看视频| 国产欧美日韩亚洲| 91丨porny丨户外露出| 91亚洲精品一区二区乱码| 91视频.com| 国产精品成人一区二区网站软件| 成人国产亚洲欧美成人综合网| 亚洲伦理在线精品| 亚洲精品视频观看| 亚洲国产精品天堂| 蜜桃精品视频在线观看| 精品在线观看免费| 国产·精品毛片| 欧美连裤袜在线视频| 最新国产拍偷乱拍精品|