<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      UUID的生成策略:


      UUID的方式能生成一串唯一隨機(jī)32位長度數(shù)據(jù),它是無序的一串?dāng)?shù)據(jù),按照開放軟件基金會(huì)(OSF)制定的標(biāo)準(zhǔn)計(jì)算,UUID的生成用到了以太網(wǎng)卡地址、納秒級(jí)時(shí)間、芯片ID碼和許多可能的數(shù)字。UUID的底層是由一組32位數(shù)的16進(jìn)制數(shù)字構(gòu)成,是故
      UUID 理論上的總數(shù)為 ,約等于,也就是說若每納秒產(chǎn)生1百萬個(gè) UUID,要花100億年才會(huì)將所有 UUID
      用完(100億年啊,地球都沒了),所以這足夠我們的使用了,也能夠保證唯一性。

      UUID的格式:

      UUID 的十六個(gè)八位字節(jié)被表示為 32個(gè)十六進(jìn)制數(shù)字,以連字號(hào)分隔的五組來顯示,形式為 8-4-4-4-12,總共有
      36個(gè)字符(即三十二個(gè)英數(shù)字母和四個(gè)連字號(hào))。例如:
      123e4567-e89b-12d3-a456-426655440000 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
      上面的以數(shù)字 M開頭的四位表示 UUID 版本,目前UUID的規(guī)范有5個(gè)版本,M可選值為1, 2, 3, 4, 5 ;各個(gè)版本的具體介紹如下所示:

      version 1:0001?;跁r(shí)間和 MAC 地址。由于使用了 MAC 地址,因此能夠確保唯一性,但是同時(shí)也暴露了 MAC 地址,私密性不夠好。
      version 2:0010。DCE 安全的 UUID。該版本在規(guī)范中并沒有仔細(xì)說明,因此并沒有具體的實(shí)現(xiàn)。
      version 3:0011。基于名字空間 (MD5)。用戶指定一個(gè)名字空間和一個(gè)字符串,通過 MD5 散列,生成 UUID。字符串本身需要是唯一的。
      version 4:0100?;陔S機(jī)數(shù)。雖然是基于隨機(jī)數(shù),但是重復(fù)的可能性可以忽略不計(jì),因此該版本也是被經(jīng)常使用的版本。
      version 5:0101?;诿挚臻g (SHA1)。跟 Version 3 類似,但是散列函數(shù)編程了 SHA1。

      上面以數(shù)字 N開頭的四個(gè)位表示 UUID 變體( variant ),變體是為了能兼容過去的
      UUID,以及應(yīng)對(duì)未來的變化,目前已知的變體有如下幾種,因?yàn)槟壳罢谑褂玫?UUID 都是 variant1,所以取值只能是 8,9,a,b
      中的一個(gè)(分別對(duì)應(yīng)1000,1001,1010,1011)。

      variant 0:0xxx。為了向后兼容預(yù)留。
      variant 1:10xx。當(dāng)前正在使用的。
      variant 2:11xx。為早期微軟 GUID 預(yù)留。
      variant 3:111x。為將來擴(kuò)展預(yù)留。目前暫未使用。

      Java實(shí)現(xiàn)UUID:

      Java已經(jīng)寫好一個(gè)UUID類供我們使用,如下所示
      package com.one.util; import java.util.UUID; public class Test { public static
      void main(String[] args) { String uuid=
      UUID.randomUUID().toString().replace("-", "").toLowerCase();
      System.out.println(uuid); } }
      結(jié)果如下所示


      UUID是否適合做分布式id:

      如果需求是只保證唯一性,那么UUID也是可以使用的,但是按照上面的分布式id的要求, UUID其實(shí)是不能做成分布式id的,原因如下:

      * 首先分布式id一般都會(huì)作為主鍵,但是安裝mysql官方推薦主鍵要盡量越短越好,UUID每一個(gè)都很長,所以不是很推薦
      *
      既然分布式id是主鍵,然后主鍵是包含索引的,然后mysql的索引是通過b+樹來實(shí)現(xiàn)的,每一次新的UUID數(shù)據(jù)的插入,為了查詢的優(yōu)化,都會(huì)對(duì)索引底層的b+樹進(jìn)行修改,因?yàn)閁UID數(shù)據(jù)是無序的,所以每一次UUID數(shù)據(jù)的插入都會(huì)對(duì)主鍵地城的b+樹進(jìn)行很大的修改,這一點(diǎn)很不好
      * 信息不安全:基于MAC地址生成UUID的算法可能會(huì)造成MAC地址泄露,這個(gè)漏洞曾被用于尋找梅麗莎病毒的制作者位置。
      那么UUID可以用到哪些方面呢

      比如阿里云每一條短信發(fā)送的唯一id,這個(gè)是可以的,比如從阿里云官網(wǎng)截圖所示:

      看到這里的同學(xué),覺得好的話就幫忙推薦下吧,Thanks?(?ω?)?

      大佬網(wǎng)址:

      https://tech.meituan.com/2017/04/21/mt-leaf.html
      <https://tech.meituan.com/2017/04/21/mt-leaf.html>
      https://segmentfault.com/a/1190000011282426
      <https://segmentfault.com/a/1190000011282426>
      https://www.jianshu.com/p/9d7ebe37215e <https://www.jianshu.com/p/9d7ebe37215e>
      https://www.jianshu.com/p/da6dae36c290 <https://www.jianshu.com/p/da6dae36c290>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          欧美综合成人网 | 女人扒开让男人桶爽小说 | 波多野结衣网站 | 国产又白又嫩又紧又爽18p | 黄片av在线播放 亚洲熟女乱Aⅴ | 亚洲精品内射 | 人妻天天爽夜夜爽 | 成人区人妻精品久久 | 黄色小说五月天 | 早川濑里奈~极囗交饮精天国 |