使用java生成UUID在測試過程中使用

UUID簡介

UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構(gòu)的標(biāo)準(zhǔn),亦為開放軟件基金會組織在分布式計算環(huán)境領(lǐng)域的一部分。其目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。如此一來,每個人都可以創(chuàng)建不與其它人沖突的UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫創(chuàng)建時的名稱重復(fù)問題。目前最廣泛應(yīng)用的UUID,是微軟公司的全局唯一標(biāo)識符(GUID),而其他重要的應(yīng)用,則有Linux ext2/ext3文件系統(tǒng)、LUKS加密分區(qū)、GNOME、KDE、Mac OS X等等。另外我們也可以在e2fsprogs包中的UUID庫找到實現(xiàn)。
UUID 的目的是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人沖突的 UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫建立時的名稱重復(fù)問題。目前最廣泛應(yīng)用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應(yīng)用,則有 Linux ext2/ext3 檔案系統(tǒng)、LUKS 加密分割區(qū)、GNOME、KDE、Mac OS X 等等。(摘自百度百科

UUID組成

UUID是指在一臺機(jī)器上生成的數(shù)字,它保證對在同一時空中的所有機(jī)器都是唯一的。通常平臺會提供生成的API。按照開放軟件基金會(OSF)制定的標(biāo)準(zhǔn)計算,用到了以太網(wǎng)卡地址、納秒級時間、芯片ID碼和許多可能的數(shù)字

UUID由以下幾部分的組合:

(1)當(dāng)前日期和時間,UUID的第一個部分與時間有關(guān),如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。

(2)時鐘序列。

(3)全局唯一的IEEE機(jī)器識別號,如果有網(wǎng)卡,從網(wǎng)卡MAC地址獲得,沒有網(wǎng)卡以其他方式獲得。

UUID的唯一缺陷在于生成的結(jié)果串會比較長。關(guān)于UUID這個標(biāo)準(zhǔn)使用最普遍的是微軟的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函數(shù)很簡單地生成UUID,其格式為:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內(nèi)的一個十六進(jìn)制的數(shù)字。而標(biāo)準(zhǔn)的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以從cflib 下載CreateGUID() UDF進(jìn)行轉(zhuǎn)換。(摘自百度百科

UUID在測試過程中的使用

@Test
    public void GetUUID(){
        logger.info(UUID.randomUUID().toString());
    }

需要導(dǎo)包
import java.util.UUID;
輸出的是這樣一串

image.png

為了驗證不會出現(xiàn)重復(fù)的ID,代碼修改如下:

@Test
    public void GetUUID() throws Exception{
        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                while (true) {
                    logger.info(UUID.randomUUID().toString());
                }
            }).start();
        }
        Thread.sleep(10000);
    }

開啟十個線程,跑十秒,結(jié)束后抽查生成的UUID,沒有發(fā)現(xiàn)重復(fù)。適用于在測試過程中需要不重復(fù)的ID時使用。在2017年的時候還不知道這個,如果知道,當(dāng)初性能測試過程中有一個新增數(shù)據(jù),需要使用到ID,導(dǎo)致獲取的ID重復(fù),插入失敗,性能可想而知,當(dāng)時要知道這個應(yīng)該會提供這種解決方案給研發(fā)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JAVA UUID 生成 GUID是一個128位長的數(shù)字,一般用16進(jìn)制表示。算法的核心思想是結(jié)合機(jī)器的網(wǎng)卡、當(dāng)?shù)?..
    藝龍閱讀 13,035評論 1 3
  • UUID含義是通用唯一識別碼(Universally Unique Identifier),這是一個軟件建構(gòu)的標(biāo)準(zhǔn)...
    小拿_8eef閱讀 3,000評論 0 0
  • 先來摘抄一段百度百科的資料:UUID含義是通用唯一識別碼 (Universally Unique Identifi...
    Dosun閱讀 8,581評論 0 5
  • 外面大雪紛飛,客棧里燙著一壺酒與幾碟小菜,一個男人在自斟自飲。 門被一個紅袍女子推開,風(fēng)雪吹進(jìn)來,小二忙把門栓上,...
    青燈古佛丶龍樹閱讀 925評論 0 0
  • 統(tǒng)計作為數(shù)學(xué)的分支,由于應(yīng)用廣,目前經(jīng)常被拉出來作為獨立的學(xué)科。統(tǒng)計在生物,金融和工程類領(lǐng)域都有應(yīng)用。當(dāng)然很多專業(yè)...
    旺媽聊留學(xué)閱讀 929評論 0 4

友情鏈接更多精彩內(nèi)容