溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

UUID分為幾個(gè)版本

發(fā)布時(shí)間:2021-10-13 14:07:21 來(lái)源:億速云 閱讀:236 作者:iii 欄目:編程語(yǔ)言

本篇內(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

UUID 格式:

在其規(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

ps:上下對(duì)比看,a在十六進(jìn)制中表示10

四位數(shù)字 M表示 UUID 版本,數(shù)字 N的一至三個(gè)最高有效位表示 UUID 變體。在例子中,M 是 1 而且 N 是 a(10xx),這意味著此  UUID 是“變體1”、“版本1”UUID;即基于時(shí)間的 DCE/RFC 4122 UUID。

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:

下面讓我們介紹一下 Java UUID 類中可以用來(lái)生成 UUID 的方法:

1. randomUUID():

它使用加密強(qiáng)度高的偽隨機(jī)數(shù)生成器生成v4偽隨機(jī)UUID:

UUID uuid = UUID.randomUUID();

2. nameUUIDFromBytes():

我們可以使用 nameuidfrombytes ()從字節(jié)數(shù)組生成 UUID:

byte[] byteArr = {11, 23, 33};  UUID uuid = UUID.nameUUIDFromBytes(byteArr);

此方法生成 v3 UUID (基于名稱的)。

3. fromString():

使用 fromString () ,我們可以從一個(gè)標(biāo)準(zhǔn)的字符串表示創(chuàng)建 UUID:

UUID uuid = UUID.fromString("533a4559-e55c-18b3-2456-555563322002");

對(duì)于作為參數(shù)傳入的任何無(wú)效字符串,它將拋出 IllegalArgumentException。

比較兩個(gè) uuid:

Java UUID 實(shí)現(xiàn)了 Comparable 接口,因此,我們可以使用 compareTo ()方法來(lái)比較它們

UUID分為幾個(gè)版本
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í)!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI