JAVA UUID 生成java
GUID是一個128位長的數字,通常用16進製表示。算法的核心思想是結合機器的網卡、當地時間、一個隨即數來生成GUID。從理論上講,若是一臺機器每秒產生10000000個GUID,則能夠保證(機率意義上)3240年不重複。算法
UUID是1.5中新增的一個類,在java.util下,用它能夠產生一個號稱全球惟一的ID數據庫
package com.mytest;數組
import java.util.UUID;dom
public class UTest {ui
public static void main(String[] args) {.net
UUID uuid = UUID.randomUUID();get
System.out.println(uuid);string
}class
}
UUID(Universally Unique Identifier)全局惟一標識符,是指在一臺機器上生成的數字,它保證對在同一時空中的全部機器都是惟一的。按照開放軟件基金會(OSF)制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。由如下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,若是你在生成一個UUID以後,過幾秒又生成一個UUID,則第一個部分不一樣,其他相同),時鐘序列,全局惟一的IEEE機器識別號(若是有網卡,從網卡得到,沒有網卡以其餘方式得到),UUID的惟一缺陷在於生成的結果串會比較長。
在Java中生成UUID主要有如下幾種方式:
JDK1.5
若是使用的JDK1.5的話,那麼生成UUID變成了一件簡單的事,覺得JDK實現了UUID:
java.util.UUID,直接調用便可.
UUID uuid = UUID.randomUUID();
String s = UUID.randomUUID().toString();//用來生成數據庫的主鍵id很是不錯。。
UUID是由一個十六位的數字組成,表現出來的形式例如
550E8400-E29B-11D4-A716-446655440000
//下面就是實現爲數據庫獲取一個惟一的主鍵id的代碼
public class UUIDGenerator {
public UUIDGenerator() {
}
/**
* 得到一個UUID
* @return String UUID
*/
public static String getUUID(){
String s = UUID.randomUUID().toString();
//去掉「-」符號
return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24);
}
/**
* 得到指定數目的UUID
* @param number int 須要得到的UUID數量
* @return String[] UUID數組
*/
public static String[] getUUID(int number){
if(number < 1){
return null;
}
String[] ss = new String[number];
for(int i=0;i<number;i++){
ss[i] = getUUID();
}
return ss;
}
public static void main(String[] args){
String[] ss = getUUID(10);
for(int i=0;i<ss.length;i++){
System.out.println(ss[i]);
}
}
}