国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

雪花算法(07)雪花算法最終版

piapia / 2763人閱讀

摘要:雪花算法初步完成后,我們討論了幾個(gè)位運(yùn)算的寫法,大家知道雪花算法一旦確定后,很多數(shù)字都是定死的,比如機(jī)器占多少位,或者時(shí)間向左位移多少,這些在算法具體邏輯確定后就不會(huì)變了。

雪花算法初步完成后,我們討論了幾個(gè)位運(yùn)算的寫法,大家知道雪花算法一旦確定后,很多數(shù)字都是定死的,比如機(jī)器占多少位,或者時(shí)間向左位移多少,這些在算法具體邏輯確定后就不會(huì)變了。那么寫成最后的數(shù)字和用位運(yùn)算計(jì)算出來有什么區(qū)別呢?

其實(shí)沒有區(qū)別,我們的程序分為編譯期和運(yùn)行期,我們直接把程序編譯好,然后查看class文件,就會(huì)發(fā)現(xiàn),兩種寫法編譯結(jié)果是一樣的。用位運(yùn)算計(jì)算出來只是更加靈活而已,定義很多死的數(shù)字也容易寫錯(cuò),后期維護(hù)混亂。所以,下面我們來一個(gè)最終版,首先看基本的幾個(gè)常量定義:

然后看時(shí)間部分的常量:

再看機(jī)器信息的常量:

最后看毫秒內(nèi)序列的常量定義:

上面的常量中,只要修改最開始的四個(gè)部分的長(zhǎng)度,下面的所有常量都會(huì)自動(dòng)修改。

再來看一下主程序:

注意上面判斷統(tǒng)一毫秒內(nèi)序列的變化。其它輔助方法都沒有什么變化,不再討論。現(xiàn)在我們?cè)倏纯淳幾g完后生成的class文件:

可以看到編譯后的文件其實(shí)就是最終定義了死的常數(shù)。包括主程序也是一樣:

上面就是雪花算法的最終版!!!

最后來測(cè)試一下效率,我們來生成300萬(wàn)個(gè)id看看花費(fèi)的時(shí)間:

代碼地址:https://gitee.com/blueses/sno... 07

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/76166.html

相關(guān)文章

  • Twitter的分布式雪花算法 SnowFlake 每秒自增生成26個(gè)萬(wàn)個(gè)可排序的ID (Java

    摘要:原理的雪花算法,使用語(yǔ)言實(shí)現(xiàn)。生成的整體上按照時(shí)間自增排序,并且整個(gè)分布式系統(tǒng)內(nèi)不會(huì)產(chǎn)生碰撞由和作區(qū)分,并且效率較高。據(jù)說每秒能夠產(chǎn)生萬(wàn)個(gè)。 分布式系統(tǒng)中,有一些需要使用全局唯一ID的場(chǎng)景,這種時(shí)候?yàn)榱朔乐笽D沖突可以使用36位的UUID,但是UUID有一些缺點(diǎn),首先他相對(duì)比較長(zhǎng),另外UUID一般是無(wú)序的。 有些時(shí)候我們希望能使用一種簡(jiǎn)單一些的ID,并且希望ID能夠按照時(shí)間有序生成。 ...

    Awbeci 評(píng)論0 收藏0
  • 雪花算法(03)生成時(shí)間

    摘要:前面的理論基礎(chǔ)和位運(yùn)算都了解了,下面我們來生成雪花算法的第一部分,也就是時(shí)間部分。這個(gè)時(shí)候就有一個(gè)問題了,如果我們系統(tǒng)的時(shí)鐘錯(cuò)了會(huì)不會(huì)有問題會(huì)所以要做判斷而且系統(tǒng)的時(shí)鐘錯(cuò)誤也是雪花算法的一個(gè)致命問題,所以要一定要保證服務(wù)器的系統(tǒng)時(shí)間正確。 前面的理論基礎(chǔ)和位運(yùn)算都了解了,下面我們來生成雪花算法的第一部分,也就是時(shí)間部分。時(shí)間部分的邏輯起始很簡(jiǎn)單,就是規(guī)定一個(gè)起始時(shí)間戳,然后用當(dāng)前時(shí)間戳...

    張紅新 評(píng)論0 收藏0
  • 雪花算法(01)介紹

    摘要:雪花算法生成的最終結(jié)果其實(shí)就是一個(gè)類型的長(zhǎng)整型數(shù)字,這是一個(gè)大前提算法所有的內(nèi)容都是針對(duì)這個(gè)數(shù)字進(jìn)行運(yùn)算的。根據(jù)上面的理論可以開始學(xué)習(xí)雪花算法。 針對(duì)每個(gè)公司,隨著服務(wù)化演進(jìn),單個(gè)服務(wù)越來越多,數(shù)據(jù)庫(kù)分的越來越細(xì),有的時(shí)候一個(gè)業(yè)務(wù)需要分成好幾個(gè)庫(kù),這時(shí)候自增主鍵或者序列之類的主鍵id生成方式已經(jīng)不再滿足需求,分布式系統(tǒng)中需要的是一個(gè)全局唯一的id生成規(guī)則。既然號(hào)稱在全局分布式系統(tǒng)中唯一...

    or0fun 評(píng)論0 收藏0
  • 雪花算法(05)毫秒內(nèi)序列

    摘要:前面的內(nèi)容把雪花算法的時(shí)間部分和機(jī)器信息部分都生成了,下面來生成最后一部分,就是毫秒內(nèi)的序列。這樣毫秒內(nèi)的序列數(shù)就算獲取成功了。 前面的內(nèi)容把雪花算法的時(shí)間部分和機(jī)器信息部分都生成了,下面來生成最后一部分,就是毫秒內(nèi)的序列。什么意思呢?我們?cè)谏蓵r(shí)間部分獲取時(shí)間戳的時(shí)候,使用 long now = System.currentTimeMillis(); 獲取,是個(gè)毫秒級(jí)的時(shí)間戳,但是即...

    時(shí)飛 評(píng)論0 收藏0
  • 雪花算法(02)算法中的位運(yùn)算

    摘要:前面介紹了雪花算法的理論基礎(chǔ),可以對(duì)大概的算法有個(gè)了解,但是細(xì)節(jié)上可能還是模糊,下面來說一下雪花算法中用到的位運(yùn)算。這就是雪花算法中兩個(gè)位移操作的作用。 前面介紹了雪花算法的理論基礎(chǔ),可以對(duì)大概的算法有個(gè)了解,但是細(xì)節(jié)上可能還是模糊,下面來說一下雪花算法中用到的位運(yùn)算。這里先介紹兩個(gè),一個(gè)是:

    wangbjun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<