1 // 發現資產主鍵 2 @Id 3 @GeneratedValue(generator="system-uuid") 4 @GenericGenerator(name="system-uuid",strategy="uuid") 5 private Long id;
GUID是一個128位長的數字,一般用16進制表示。算法的核心思想是結合機器的網卡、當地時間、一個隨即數來生成GUID。從理論上講,如果一台機器每秒產生10000000個GUID,則可以保證(概率意義上)3240年不重復。
UUID是1.5中新增的一個類,在java.util下,用它可以產生一個號稱全球唯一的ID
UUID(Universally Unique Identifier)全局唯一標識符,是指在一台機器上生成的數字,它保證對在同一時空中的所有機器 都是唯一的。按照開放軟件基金會(OSF)制定的標准計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。由以下幾部分的組合:當前日期 和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同),時鍾序列,全局唯一 的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在於生成的結果串會比較長。
1 //4cdbc040-657a-4847-b266-7e31d9e2c3d9 2 for(int i=0;i<5;i++){ 3 UUID uuid = UUID.randomUUID(); 4 String str = uuid.toString(); 5 // 刪除uuid中的"-" 6 String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24); 7 //System.out.println(str +" ====" + temp + " uuid.hashCode() --> " + uuid.hashCode()); 8 // 獲取uuid 的hashcode 9 int a = uuid.hashCode(); 10 // hashcode 的絕對值 因為uuid的hashcode可能為負數 11 int b = Math.abs(a); 12 System.out.println(a + " ========== " +b); 13 }