UUID原理以及使用

2021-10-10 02:02:53 字數 1819 閱讀 6267

不用導包,直接寫了全路徑

public

static string generatoruuidandreplace

(boolean replace)

return uuid;

}

傳值true則去除-,傳值false保留-

點到randomuuid()方法裡面可以看到

public

static uuid randomuuid()

打個斷點檢視一下流程

可以看出

securerandom ng = holder.numbergenerator;

byte

randombytes =

newbyte[16

];

這兩句**是建立乙個16位的byte陣列,後續**賦值。

說明了

ng.

nextbytes

(randombytes)

;

這句**是給byte陣列賦值的。

這裡只是將byte陣列設定為版本4,並設定為ietf變體;

點開uuid的有參構造

private

uuid

(byte

data)

使用位元組陣列構造新uuid的私有建構函式。這裡有兩個屬性值mostsigbits和leastsigbits在tostring()方法裡面有呼叫。點進去可以看到

public string tostring()

將uuid物件轉換成uuid格式的字串,點進digits方法裡面

private

static string digits

(long val,

int digits)

digits方法的作用是返回由指定數量的十六進製制數字表示的val。tohexstring將long型別轉換成字串型別,substring是切割字串用的,這裡是除去第乙個字元

最後,看一下是怎麼生成隨機byte陣列的:

通過 ng.nextbytes(randombytes); 可以點進去看到

public

synchronized

void

enginenextbytes

(byte

var1)

int var7 =

this

.remcount;

int var3;

int var6;

if(var7 >0)

this

.remcount += var3;

var2 += var3;

}while

(var2 < var1.length)

this

.remcount += var3;

}this

.remainder = var4;

this

.remcount %=20;

}

UUID的使用及其原理

首先,uuid的使用 生成隨機的uuid string uuid uuid.randomuuid tostring replaceall 而它的原理呢?uuid由以下幾部分的組合 1 當前日期和時間,uuid的第乙個部分與時間有關,如果你在生成乙個uuid之後,過幾秒又生成乙個uuid,則第乙個部分...

磁碟UUID以及卷標

背景 使用再生龍整個磁碟對拷後,存在uuid一樣,卷標一樣的情況,需要進行修改,否則啟動可能出現問題。命令如下 1 sudo blkid 或blkid 顯示磁碟資訊 檢視硬碟uuid blkid dev sda5 ls l dev disk by uuid 2 修改uuid uuidgen 會返回乙...

UUID的定義以及作用

uuid含義是通用唯一識別碼 universally unique identifier 這 是乙個軟體建構的標準,也是被開源軟體 會 open software foundation,osf 的組織應用在分布式計算環境 distributed computing environment,dce 領...