如何可以實現給定的版本1 TimeUUID甲函數增量(UUID)產生一個有效版本1 TimeUUID B其中:如何遞增/遞減(版本1)TimeUUID?
- B> A
- 不存在C,其中B> C>該給定版本1 TimeUUID A A
與同爲遞減(UUID)產生一個有效版本1 TimeUUID B其中:
- 乙<甲
- 存在着其中B <Ç<甲
如何可以實現給定的版本1 TimeUUID甲函數增量(UUID)產生一個有效版本1 TimeUUID B其中:如何遞增/遞減(版本1)TimeUUID?
與同爲遞減(UUID)產生一個有效版本1 TimeUUID B其中:
版本1 UUID測序在timestamp和clock sequence字段表示NO℃。時間戳是一個60位的日期標記(代表100納秒時間增量,fwiw),時鐘序列是一個14位計數器,保證在給定時鐘週期內生成的uuids是唯一的。因此,您可以將v1 uuids視爲74位序列號,時間戳爲高階位,時鐘序列爲低階。因此,要通過一個原子地遞增UUID,你只需要...
注意,步驟#1和#4稍微複雜的,因爲包含時鐘序列中的兩個字節,也包含UUID的變體,所以你需要做一些雜耍按位的提取/只設置clockseq的14位。
要遞減uuid,只需重複上述操作,除了步驟2 & 3,如果時鐘順序爲零,則將其設置爲2 ^^ 14-1,並將時間戳減1。
最後,如果60位時間戳超過/下溢,您將不得不自己決定要執行什麼操作。考慮到0的時間戳意味着UUID是在莎士比亞結婚的時候(公元1582年)產生的,並且時間標記2 ^^ 60-1意味着它是在公元5238年你的(偉大的^^ 150)孫輩生成的。 ..我期望這不是太多的關注。