天天看點

java生成全局唯一辨別UUID

轉載自https://blog.csdn.net/yangxin_blog/article/details/49328551

GUID是一個128位長的數字,一般用16進制表示。算法的核心思想是結合機器的網卡、當地時間、一個随即數來生成GUID。從理論上講,如果一台機器每秒産生10000000個GUID,則可以保證(機率意義上)3240年不重複。UUID是1.5中新增的一個類,在java.util下,用它可以産生一個号稱全球唯一的ID。

UUID含義是通用唯一識别碼 (Universally Unique Identifier),這 是一個軟體建構的标準,也是被開源軟體基金會 (Open Software Foundation, OSF) 的組織在分布式計算環境 (Distributed Computing Environment, DCE) 領域的一部份。UUID 的目的,是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人沖突的 UUID。在這樣的情況下,就不需考慮資料庫建立時的名稱重複問題。目前最廣泛應用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應用,則有 Linux ext2/ext3 檔案系統、LUKS 加密分割區、GNOME、KDE、Mac OS X 等等。

UUID的唯一缺陷在于生成的結果串會比較長

/**
	 * 得到一個字元串形式的格式化UUID
	 * @return
	 */
	public static String getStrUUID(){
		Random random = new Random();
		int end = random.nextInt(999);
		//如果不足三位前面補0
		String endStr =String.format("%03d", end);
		return UUID.randomUUID().toString().replace("-", "")+endStr;
	}