成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_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国内精品久久久久久久
欧美伦理影视网| 蜜桃视频在线一区| 久久久久国色av免费看影院| 欧美日韩激情一区二区| 久久av一区二区三区亚洲| 亚洲精品乱码| 9国产精品视频| 国产亚洲欧美另类一区二区三区| 国外精品视频| 亚洲精品久久| 在线日本高清免费不卡| 99在线|亚洲一区二区| 国产日韩一区欧美| 久久久久久亚洲精品杨幂换脸 | 国产精品一区专区| 国产在线日韩欧美| 成人黄色大片在线观看| 91麻豆国产精品久久| 91视视频在线直接观看在线看网页在线看| www.亚洲人| 亚洲亚洲精品三区日韩精品在线视频| 很黄很黄激情成人| 久久成人一区| 久久日韩精品| 7777女厕盗摄久久久| 精品国产免费一区二区三区四区 | 99精品视频免费观看视频| 国产亚洲一区在线| 在线观看亚洲a| 精品国产免费一区二区三区四区| 欧美经典一区二区三区| 一区二区三区中文在线| 天堂在线亚洲视频| 国产成a人亚洲精品| 欧美日产一区二区三区在线观看| 亚洲人www| 久久免费高清| 欧美精品第1页| 国产精品久久久一区麻豆最新章节| 1000部国产精品成人观看| 首页亚洲欧美制服丝腿| 成人视屏免费看| 99精品国产高清一区二区| 欧美日韩亚洲综合一区| 国产夜色精品一区二区av| 亚洲一区二区成人在线观看| 久久99在线观看| 国内揄拍国内精品久久| 在线视频国内自拍亚洲视频| 久久亚区不卡日本| 午夜成人在线视频| 北条麻妃国产九九精品视频| 久久国产精品亚洲va麻豆| 精品少妇一区二区| 一区二区国产视频| 成人一区二区在线观看| 久久精品女人天堂| 国产日韩欧美精品电影三级在线 | 色综合色综合色综合色综合色综合| 亚洲一区二区三区免费观看| 91精品国产福利| 亚洲国产精品人人做人人爽| av一区二区三区四区| 欧美亚洲一区二区在线观看| 欧美国产精品中文字幕| 国产一区二区三区av电影| 99视频在线精品国自产拍免费观看| 欧美一区二区精品在线| 丝袜诱惑制服诱惑色一区在线观看 | 色噜噜狠狠成人中文综合| 中文字幕乱码久久午夜不卡| 精品午夜久久福利影院| 一区二区日本视频| 国产农村妇女精品| 国产精品1区二区.| 色哟哟精品一区| 亚洲欧洲av一区二区三区久久| 国产精品77777| 色久综合一二码| 一区二区高清免费观看影视大全| 91在线观看高清| 日韩一区二区中文字幕| 免费高清成人在线| 亚洲一卡久久| 亚洲少妇中出一区| 欧美日韩亚洲一区二区三区在线 | 丝袜a∨在线一区二区三区不卡| 伊人久久成人| 欧美激情在线看| 欧美一区二区视频在线 | 国产传媒日韩欧美成人| 欧美性猛片xxxx免费看久爱| 亚洲一区二区三区四区在线观看| 欧美三区在线| 国产精品久久久久影院老司| 99久免费精品视频在线观看| 日韩一区二区在线观看视频播放| 精品一区二区免费视频| 欧美色图在线观看| 精品伊人久久久久7777人| 老牛国产精品一区的观看方式| 亚洲综合av网| 久久国产精品高清| 亚洲bt欧美bt精品777| 亚洲综合电影一区二区三区| 一个色在线综合| 亚洲一区二区三区精品在线观看| 一区二区在线免费观看| 国产精品一区二区欧美| 亚洲成人你懂的| 久久久噜噜噜| 蜜臀精品一区二区三区在线观看| 欧美视频一二三区| 国产一区二区91| 久久女同性恋中文字幕| 国产精品成人一区二区网站软件| 中文字幕日本不卡| 国产欧美91| 老司机一区二区| 欧美一区在线视频| 91丨九色porny丨蝌蚪| 国产精品午夜在线观看| 日韩香蕉视频| 日本色综合中文字幕| 在线不卡的av| 欧美高清一区二区| 亚洲一区二区三区四区不卡| 色婷婷国产精品综合在线观看| 美女被吸乳得到大胸91| 日韩欧美一级在线播放| 欧美午夜国产| 首页欧美精品中文字幕| 91精品国产欧美一区二区成人| 9色porny自拍视频一区二区| 亚洲人成伊人成综合网小说| 色婷婷综合视频在线观看| 国产很黄免费观看久久| 国产日韩欧美精品在线| 亚洲一区日本| 夫妻av一区二区| 亚洲视频电影在线| 欧美日韩第一区日日骚| 女主播福利一区| 日韩精品一二三四| www激情久久| 国产精品尤物| 成人免费高清视频| 亚洲精品美国一| 91精品国产品国语在线不卡| 影音先锋亚洲精品| 国产精品99久久久久久宅男| 亚洲欧美怡红院| 91精品婷婷国产综合久久性色| 黄色亚洲在线| 狠狠久久亚洲欧美| 亚洲精品中文在线观看| 日韩欧美电影一区| 国产精品午夜av在线| 成人网在线播放| 五月婷婷综合网| 中文字幕免费不卡在线| 欧美日韩不卡在线| 99亚洲精品| 欧美 亚欧 日韩视频在线| 久久精品99国产精品日本| 国产精品传媒入口麻豆| 欧美精品99久久久**| 国产一区二区高清| 欧美国产高清| 精品一区二区国语对白| 亚洲精品高清在线| 国产日韩欧美电影| 欧美一区二区人人喊爽| 裸体丰满少妇做受久久99精品 | 欧美一级搡bbbb搡bbbb| 久久精品人人| 亚洲香蕉视频| 97久久精品人人澡人人爽| 久久狠狠亚洲综合| 亚洲国产中文字幕在线视频综合| 国产视频视频一区| 精品美女在线播放| 欧美人伦禁忌dvd放荡欲情| 国产欧美亚洲日本| 在线播放日韩| 欧美视频久久| 91蜜桃在线免费视频| 成人午夜激情片| 国产精品一区二区三区99| 免费观看在线色综合| 亚洲自拍偷拍网站| 91精品国产色综合久久| 久久精品国产色蜜蜜麻豆| 欧美日本一区二区视频在线观看| 久久免费电影网| 欧美久久高跟鞋激| 欧美色图12p| 在线精品观看国产| 色哟哟精品一区| 色94色欧美sute亚洲线路二|