2010-06-09 85 views

回答

6

產生具有一些保證是唯一的,而不通過中央「ID提供商」(這需要網絡連接,並且可以是硬組織)依賴於任何一種協調的ID的方法。基本上有兩種方法,對於這一點,沒有實際提供絕對的保證:

  1. 使用本地計算機(通常它的MAC地址)一個合理的唯一的ID,並添加一個本地唯一ID(如時間戳+進程號+自增計數器)。
  2. 使用一個好的隨機數發生器和良好的種子來生成ID並使其足夠長,以至於碰撞不太可能發生。
+2

+1,我只想補充,需要這種東西,所以每一個開發商可能會產生局部爲他的類和接口ID和他得到的值永遠不會發生衝突與其他開發人員創造的價值。 – sharptooth 2010-06-09 13:58:45

0

我搜查了我的本地圖書館和檔案,但找不到具體算法的參考。但通常這種類型的算法用於生成只能出現一次的128位GUID值。使用標準的隨機數生成算法不會產生真正的隨機性。因此,在這種情況下,他們已經採取了幾個值,包括:

  1. 的計算機網絡地址
  2. 計算機時鐘時間值
  3. 值以適應夏令以及手動更改系統時鐘由用戶。

通過利用這樣的功能,程序員可以保證的GUID的值是唯一的,而不必跟蹤和生成所有用戶GUID值集中服務器。

你可以閱讀更多關於隨機數生成here