日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:30日期: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 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品普通话对白| 日韩av不卡在线观看| 国产三级一区| 免费欧美在线视频| 伊人成人网在线看| 午夜久久99| 亚洲区第一页| 日韩一区二区三区高清在线观看 | 麻豆久久一区| 不卡专区在线| 亚洲激情中文| 亚洲香蕉视频| 国产精品xxx在线观看| 久久精品国产免费| 桃色av一区二区| 久久精品亚洲欧美日韩精品中文字幕| 精品国模一区二区三区| 国产一区观看| 中文字幕av一区二区三区四区| 亚洲欧洲av| 水蜜桃久久夜色精品一区| 成人久久久久| 日韩超碰人人爽人人做人人添| 久久国产精品色av免费看| 国产66精品| 亚洲欧美日韩精品一区二区 | 综合一区av| 国产一区日韩| 蜜臀精品久久久久久蜜臀| 国产精品久久久久久模特| 成人精品中文字幕| 国产调教一区二区三区| 久久久久久美女精品| 欧美日韩夜夜| 国产高清不卡| 国产精品主播在线观看| 午夜一级在线看亚洲| 国产91在线精品| 日韩国产欧美视频| 日韩精品视频网站| 国产欧美亚洲精品a| 女主播福利一区| 97国产成人高清在线观看| 亚洲九九精品| 久久一区二区三区电影| 免费在线亚洲| 国模大尺度视频一区二区| 久久精品国产久精国产爱| 国产中文欧美日韩在线| 奇米色欧美一区二区三区| 亚洲天堂av资源在线观看| 丝瓜av网站精品一区二区| 亚洲一区日本| 国产欧美一区二区色老头| 亚洲一区二区三区高清| 激情欧美丁香| 亚洲精品影视| 日本91福利区| 麻豆一区二区三| 成人美女视频| 日本久久成人网| 99riav1国产精品视频| 一区在线视频观看| 日本不卡不码高清免费观看 | 国产日韩欧美一区二区三区在线观看 | 亚洲电影在线一区二区三区| 97精品中文字幕| 色黄视频在线观看| 亚洲四虎影院| 综合欧美精品| 日韩大片在线播放| 麻豆成人在线| 国产精品99久久免费观看| 99久久精品费精品国产| 成人日韩av| 国产成人精品一区二区三区视频 | 久久中文字幕av一区二区不卡| 成人羞羞视频播放网站| 亚洲成av在线| 免费在线成人网| 国产伦精品一区二区三区在线播放| 国产视频网站一区二区三区| 国产精品久久久久久久久久10秀 | 日韩欧美中文字幕一区二区三区| 欧美在线黄色| 国产日韩电影| 视频一区欧美精品| 97se亚洲| 亚洲v在线看| 91嫩草精品| 久久三级福利| 日韩精品免费视频一区二区三区| 黄色网一区二区| 首页国产欧美久久| 国产在线不卡一区二区三区| 亚洲1234区| 日韩av成人高清| 激情久久中文字幕| 麻豆一区二区三| 久久国产精品久久w女人spa| 国产va在线视频| 国产探花一区二区| 视频一区欧美精品| 亚洲福利久久| 四虎国产精品免费观看| 蜜臀国产一区二区三区在线播放| 成人台湾亚洲精品一区二区| 亚洲精品欧洲| 欧美特黄一级| 欧美日韩一区二区三区视频播放| 日韩欧美中文在线观看| 日韩和的一区二在线| 国产精品毛片久久久| 亚洲va在线| 日韩三区四区| 91久久久精品国产| 久久久男人天堂| 欧美一区91| 日韩在线电影| 免费在线观看成人| 欧美大黑bbbbbbbbb在线| 日本不良网站在线观看| 国产乱码精品一区二区三区亚洲人 | 亚洲婷婷丁香| 狠狠色综合网| 美女尤物久久精品| 在线一区免费观看| 黄色国产精品| 不卡中文一二三区| 亚洲午夜电影| 午夜日韩av| 免费欧美在线视频| 三级久久三级久久久| 日韩欧美中文在线观看| 亚洲精品无播放器在线播放| 羞羞答答国产精品www一本| 日韩精品麻豆| 激情婷婷综合| 男女性色大片免费观看一区二区 | 国产极品久久久久久久久波多结野| 日韩成人精品一区二区三区 | 免费日韩av片| 亚洲一区av| 国产精品一二| 国产一区二区三区日韩精品| 九九九精品视频| 欧洲亚洲一区二区三区| 日韩一级精品| 国产精品永久| 亚洲特级毛片| 国产精品一区二区99| 亚洲va中文在线播放免费| 欧美精品激情| 美女视频黄免费的久久| 国产专区一区| 国产美女久久| 久久精品播放| 国产欧美日韩精品一区二区免费| 91综合网人人| 亚洲综合激情在线| 久久av中文| 欧洲激情综合| 国产欧美日韩一区二区三区在线| 亚洲精品**中文毛片| 日韩高清电影免费| 日韩一区电影| 国产精品v亚洲精品v日韩精品| 久久国产免费| 久久免费影院| 日韩中文字幕一区二区高清99| 亚洲精品成人图区| 麻豆久久一区二区| 亚洲精品影视| 国产亚洲永久域名| 久久久夜夜夜| 欧美成人精品一级| 亚洲香蕉视频| 日本大胆欧美人术艺术动态| 国产精品久久久久av电视剧| 精品视频黄色| 国产亚洲一卡2卡3卡4卡新区| 午夜久久福利| 精品中文字幕一区二区三区av| 97精品国产福利一区二区三区| 国产图片一区| 天堂精品久久久久| 午夜在线一区二区| 五月综合激情| 国户精品久久久久久久久久久不卡 | 国产精品.xx视频.xxtv| 91欧美极品| 日本aⅴ精品一区二区三区 | 欧美日一区二区| 午夜av成人| 久久久久国产| 国产在线不卡| 尤物在线精品| 香蕉久久久久久久av网站| 99国产精品久久久久久久| 狠狠爱www人成狠狠爱综合网|