您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“UUID分為幾個(gè)版本”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“UUID分為幾個(gè)版本”吧!
通用唯一識(shí)別碼(英語(yǔ):Universally Unique Identifier,縮寫:UUID)是用于計(jì)算機(jī)體系中以識(shí)別信息數(shù)目的一個(gè)128位標(biāo)識(shí)符,還有相關(guān)的術(shù)語(yǔ):全局唯一標(biāo)識(shí)符(GUID)。
根據(jù)標(biāo)準(zhǔn)方法生成,不依賴中央機(jī)構(gòu)的注冊(cè)和分配,UUID具有唯一性,這與其他大多數(shù)編號(hào)方案不同。重復(fù)UUID碼概率接近零,可以忽略不計(jì)。
UUID是由一組32位數(shù)的16進(jìn)制數(shù)字所構(gòu)成,故UUID理論上的總數(shù)為16^32=2^128,約等于3.4 x 10^38。也就是說(shuō)若每納秒(ns)產(chǎn)生1萬(wàn)億個(gè)UUID,要花100億年才會(huì)將所有UUID用完。
UUID的標(biāo)準(zhǔn)型式包含32個(gè)16進(jìn)制數(shù)字,以連字號(hào)分為五段,形式為 8-4-4-4-12 的32個(gè)字符。
示例:550e8400-e29b-41d4-a716-446655440000
在其規(guī)范的文本表示中,UUID 的 16 個(gè) 8 位字節(jié)表示為 32 個(gè)十六進(jìn)制(基數(shù)16)數(shù)字,顯示在由連字符分隔 '-' 的五個(gè)組中,"8-4-4-4-12" 總共 36 個(gè)字符(32 個(gè)字母數(shù)字字符和 4 個(gè)連字符)。例如:
123e4567-e89b-12d3-a456-426655440000 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
四位數(shù)字 M表示 UUID 版本,數(shù)字 N的一至三個(gè)最高有效位表示 UUID 變體。在例子中,M 是 1 而且 N 是 a(10xx),這意味著此 UUID 是“變體1”、“版本1”UUID;即基于時(shí)間的 DCE/RFC 4122 UUID。
對(duì)于“變體(variants)1”和“變體2”,標(biāo)準(zhǔn)中定義了五個(gè)版本(versions),并且在特定用例中每個(gè)版本可能比其他版本更合適。
版本由 M 字符串中指示。
版本1 - UUID 是根據(jù)時(shí)間和節(jié)點(diǎn) ID(通常是MAC地址)生成;
版本2 - UUID是根據(jù)標(biāo)識(shí)符(通常是組或用戶ID)、時(shí)間和節(jié)點(diǎn)ID生成;
版本3、版本5 - 確定性UUID 通過(guò)散列(hashing)名字空間(namespace)標(biāo)識(shí)符和名稱生成;
版本4 - UUID 使用隨機(jī)性或偽隨機(jī)性生成。
下面讓我們介紹一下 Java UUID 類中可以用來(lái)生成 UUID 的方法:
它使用加密強(qiáng)度高的偽隨機(jī)數(shù)生成器生成v4偽隨機(jī)UUID:
UUID uuid = UUID.randomUUID();
我們可以使用 nameuidfrombytes ()從字節(jié)數(shù)組生成 UUID:
byte[] byteArr = {11, 23, 33}; UUID uuid = UUID.nameUUIDFromBytes(byteArr);
此方法生成 v3 UUID (基于名稱的)。
使用 fromString () ,我們可以從一個(gè)標(biāo)準(zhǔn)的字符串表示創(chuàng)建 UUID:
UUID uuid = UUID.fromString("533a4559-e55c-18b3-2456-555563322002");
對(duì)于作為參數(shù)傳入的任何無(wú)效字符串,它將拋出 IllegalArgumentException。
Java UUID 實(shí)現(xiàn)了 Comparable 接口,因此,我們可以使用 compareTo ()方法來(lái)比較它們
UUID uuid1 = UUID.randomUUID(); UUID uuid2 = UUID.randomUUID(); int` `result = uuid1.compareTo(uuid2);
如我們所知,compareTo ()方法返回:
1: 如果uuid1大于uuid2
0:如果uuid1=uuid2
-1: 如果uuid1小于uuid2
我們也可以選擇使用 equals ()方法進(jìn)行比較。
到此,相信大家對(duì)“UUID分為幾個(gè)版本”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。