一、UUID是什麼
UUID就是Universal Unique IDentifier的縮寫,它是一個128位,16位元組的值,并確定在時間和空間上唯一。
它是把硬體位址、時間以及随機數結合在一起,它保證對在同一時空中的所有機器都是唯一的。
通常平台會提供生成UUID的API。UUID按照開放軟體基金會 (OSF)制定的标準計算,用到了以太網卡位址、納秒級時間、晶片ID碼和許多可能的數字。由以下幾部分的組合:目前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一個部分不同,其餘相同),時鐘序列,全局唯一的IEEE機器識别号(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在于生成的結果串會比較長。關于UUID這個标準使用最普遍的是微軟的GUID (Globals Unique Identifiers)。
一般情況下,生成算法用計算機網卡的位址和一個60位的timestamp生成,時間是以100ns為時間間隔。
例如,一台300PL 6862的計算機,主機闆內建的網卡的MAC位址為00-04-AC-2E-B7-DC,而UUID的最後六個位元組也會是0004AC2EB7DC
一般我們都知道使用Java如何建立UUID,如下:
java類:java.util.UUID
UUID是1.5中新增的一個類,在java.util下,用它可以産生一個号稱全球唯一的ID
1 2 3 4 5 6 7 | |
編譯運作輸出如:c9d6294f-0c62-453f-8626-68c7b0fc9769
二、JS生成UUID
如果想在js中使用uuid我們可以使用如下方法生成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | |
三、JS中生成Guid
全局唯一辨別符,簡稱GUID(發音為 /ˈɡuːɪd/或/ˈɡwɪd/),是一種由算法生成的唯一辨別,通常表示成32個16進制數字(0-9,A-F)組成的字元串,如:{21EC2020-3AEA-1069-A2DD-08002B30309D},它實質上是一個128位長的二進制整數。GUID一詞有時也專指微軟對UUID标準的實作。
GUID的主要目的是産生完全唯一的數字。在理想情況下,任何計算機和計算機叢集都不會生成兩個相同的GUID。GUID的總數也足夠大,達到了2128(3.4×1038)個,是以随機生成兩個相同GUID的可能性是非常小的,但并不為0。是以,用于生成GUID的算法通常都加入了非随機的參數(如時間),以保證這種重複的情況不會發生。
下面是生成Guid代碼實作,優點是代碼量極少:
1 2 3 4 5 6 7 8 | |
下面是幾種生成Guid的算法來自(http://www.cnblogs.com/snandy/p/3261754.html)
1、
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
2.
1 2 3 4 5 6 | |
3、
這個可以指定長度和基數:
// 8 character ID (base=2)
uuid(8, 2)
// "01001010"
// 8 character ID (base=10)
uuid(8, 10)
// "47473046"
// 8 character ID (base=16)
uuid(8, 16)
// "098F4D35"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |