日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java生成uuid_Java UUID

發(fā)布時間:2023/12/10 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java生成uuid_Java UUID 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

java生成uuid

介紹:

UUID(通用唯一標(biāo)識符)表示一個128位長的唯一值。 它也被普遍稱為GUID(全球唯一標(biāo)識符)。

UUID的標(biāo)準(zhǔn)表示形式由十六進(jìn)制數(shù)字組成:

533a4559-e55c-18b3-8456-555563322002

并具有36個字符,其中包括四個連字符'-' 。

Java中的java.util.UUID類表示一個不變的UUID。

我們可以使用UUID類來生成隨機文件名,會話或事務(wù)ID。 UUID的另一種流行用法是在數(shù)據(jù)庫中生成主鍵值。

Java UUID類具有一種用于處理Leach-Salz變體(變體2)的方法。 但是,其構(gòu)造函數(shù)允許生成任何類型的UUID :

new UUID(long mostSigBits, long leastSigBits)

一個變體確定UUID的布局。 讓我們來一個樣本UUID :

533a4559-e55c-18b3-8456-555563322002 xxxxxxxx-xxxx-Bxxx-Axxx-xxxxxxxxxxxx

此處, A的值表示變量,并由其前三個MSB(最高有效位)確定:

MSB1 MSB2 MSB3 變體 變體說明
0 X X 0 保留用于NCS向后兼容
1個0 X 2 里奇-薩爾茨
1個1個0 6 保留,Microsoft Corporation向后兼容
1個1個7 保留以供將來定義

對于我們來說, A = 8(1000) ,因此前三個MSB為100 。 這意味著我們的UUID具有2的變體。

對于版本2 UUID ,有五個不同的版本:

版 描述
v1 基于時間的
v2 DCE-安全
v3和v5 基于名稱
v4 隨機生成的UUID

生成

讓我們介紹一下Java UUID類中的方法,這些方法可用于生成UUID :

1.

使用加密強度高的偽隨機數(shù)生成器生成v4偽隨機UUID

UUID uuid = UUID.randomUUID();

2.

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

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

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

3.

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

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

對于作為參數(shù)傳入的任何無效字符串,它將引發(fā)IllegalArgumentException 。

比較兩個

Java UUID類實現(xiàn)Comparable接口。 因此,我們可以使用compareTo()方法進(jìn)行比較:

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)行比較。

其他方法:

讓我們介紹一下Java UUID類的其他一些方法:

1.

顧名思義, getLeastSignificantBits()和getMostSignificantBits()分別返回64個最低有效位和64個最高有效位

UUID uuid = UUID.randomUUID();long leastSignificantBits = uuid.getLeastSignificantBits(); long mostSignificantBits = uuid.getMostSignificantBits();

這兩種方法都返回一個long值。

2.

我們還可以查詢UUID的變體和版本:

UUID uuid = UUID.randomUUID();int variant = uuid.variant(); int version = uuid.version();

使用基于時間的

讓我們從在POM中為java- uuid -generator添加一個依賴關(guān)系開始:

<dependency><groupId>com.fasterxml.uuid</groupId><artifactId>java-uuid-generator</artifactId><version>3.1.5</version> </dependency>

請注意,該庫提供了各種類型的UUID生成器。

要創(chuàng)建基于時間的UUID ,我們將具有:

UUID uuid = Generators.timeBasedGenerator().generate();

處理v1 UUID時,方便使用的java.util包中的其他方法包括:

1. timestamp():返回與給定的v1 UUID關(guān)聯(lián)的時間戳值。 與任何其他類型的UUID一起使用時,此方法將引發(fā)UnsupportedOperationException 。

2. clockSequence():它返回一個14位值,該值由給定UUID的時鐘序列字段構(gòu)成。 它還會為v1類型以外的UUID拋出UnsupportedOperationException 。

結(jié)論:

在本教程中,我們了解了什么是UUID及其變體。 我們討論了變量類型2的不同可用版本。 我們還介紹了Java UUID類公開的許多方法。

翻譯自: https://www.javacodegeeks.com/2019/03/java-uuid.html

java生成uuid

總結(jié)

以上是生活随笔為你收集整理的java生成uuid_Java UUID的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。