2008-11-07 49 views
0

我看過GUID Collisons 的討論,但只是想知道如果兩個客戶端訪問的網頁完全相同( - 可能低至微秒)時生成GUID的網頁是否可能存在GUID衝突?ASP.NET服務器可以爲多個用戶生成相同的GUID嗎?

+0

查看http://stackoverflow.com/questions/184869/are-guid-collisions-possible – 2008-11-07 14:44:21

+0

也http://stackoverflow.com/questions/39771/is-a-guid-unique-100-of-the時間 – 2008-11-07 17:52:26

回答

8

這在理論上是可能的,但極不可能。

+0

你不太可能會發生這種情況,你遠比在別的地方度過時間要好得多。您的服務器更容易着火,而不是兩次生成相同的GUID。 – 2008-11-07 14:29:59

3

不會。如果發生這種情況,衝出去買彩票!

1

From Wikipedia, the free encyclopedia

全局唯一標識符或GUID(發音/guːɪd/或/gwɪd/)是爲了提供參考號碼是在任何情況下獨特的特殊類型的軟件應用程序中使用的識別符的(因此,「全局」),例如,爲軟件應用程序中的某種類型的接入點定義內部參考,或者用於在數據庫中創建唯一密鑰。 儘管每個生成的GUID都不能保證是唯一的,但唯一鍵(2128或3.4×1038)的總數非常大,以致相同數字生成兩次的概率非常小,爲。例如,考慮可觀測的宇宙,其中包含約5×1022星;每顆恆星可以擁有6.8×1015個通用唯一GUID。

3

在單個服務器上,不,這是不可能的。第4版Guids是由一個僞隨機54位值組成的(除其他之外),據我所知,它們在重複之前遍歷所有值。

如果在多臺服務器上創建,那麼可能會發生guid衝突,儘管這是非常不可能的。

請參考RFC 4122,具體是第4.1.5節。我相信現代Windows使用v4 UUID。

1

如果您生成很多很多的GUID,那麼由於Birthday paradox,碰撞的可能性變得相當高。理論上GUID碰撞應該不太可能(天真的直覺),但實際上偶爾會發生。

當然,以編程方式處理這些碰撞是浪費時間,但您仍然應該以某種方式編寫代碼,如果發生這種情況,那麼您的代碼應該會大聲地失敗,而不是悄悄地並且未被發現。

相關問題