java-實體類 uuid 注解配置 及使用uuid生成id的方法


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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM