日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全球唯一标识GUID

發布時間:2024/6/21 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全球唯一标识GUID 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.GUID概念

? ? ??GUID:?即Globally?Unique?Identifier(全球唯一標識符)?也稱作?UUID(Universally?Unique?IDentifier)?。?GUID是一個通過特定算法產生的二進制長度為128位的數字標識符,用于指示產品的唯一性。GUID?主要用于在擁有多個節點、多臺計算機的網絡或系統中,分配必須具有唯一性的標識符。 ?

? ? ?在?Windows?平臺上,GUID?廣泛應用于微軟的產品中,用于標識如如注冊表項、類及接口標識、數據庫、系統目錄等對象。

二.GUID格式

? ? ?GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個 x 是 0-9 或 a-f 范圍內的一個32位十六進制數。(8-4-4-4-12)例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即為有效的 GUID 值。

三.GUID特點?

? ? 1.GUID在空間上和時間上具有唯一性,保證同一時間不同地方產生的數字不同。??
? ? 2.世界上的任何兩臺計算機都不會生成重復的?GUID?值。?
? ? 3.需要GUID的時候,可以完全由算法自動生成,不需要一個權威機構來管理。??
? ? 4.GUID的長度固定,并且相對而言較短小,非常適合于排序、標識和存儲。

四.GUID優缺點?

? ?1.優點

? ? ? 同 IDENTITY 列相比,uniqueidentifier 列可以通過 NewID() 函數提前得知新增加的行 ID,為應用程序的后續處理提供了很大方便。 ??

? ? ? 便于數據庫移植,其它數據庫中并不一定具有 IDENTITY 列,而 Guid 列可以作為字符型列轉換到其它數據庫中,同時將應用程序中產生的 GUID 值存入數據庫,它不會對原有數據帶來影響。 ?

? ? ? 便于數據庫初始化,如果應用程序要加載一些初始數據, IDENTITY 列的處理方式就比較麻煩,而 uniqueidentifier 列則無需任何處理,直接用 T-SQL 加載即可。 ??

? ? ? 便于對某些對象或常量進行永久標識,如類的 ClassID,對象的實例標識,UDDI 中的聯系人、服務接口、tModel標識定義等。
2) 缺點

? ? ? GUID 值較長,不容易記憶和輸入,而且這個值是隨機、無順序的,所以使用時要注意場合,最好不要嘗試用它來作為你的電子郵件地址 J

? ? ? GUID 的值有 16 個字節,與其它那些諸如 4 字節的整數相比要相對大一些。這意味著如果在數據庫中使用 uniqueidentifier 鍵,可能會帶來兩方面的消極影響:存儲空間增大;索引時間較慢。

五.GUID爭議

? ? ? ?由于GUID值產生的潛在弊端已經引起了保密性提倡者的關注。1999年3月,美國聯邦商務委員會接到要求,對微軟的GUID值使用進行調查。爭議主要涉及Office?97和Office?2000文檔對GUID值的使用。Office文檔,如Word文件或Excel電子數據表,所使用的GUID值對用戶是不可見的。但有很多報道宣稱,文檔的作者是可以通過GUID值的跟蹤查到的,即使作者已經采用特殊方法,他們還是可以被追蹤到。?為了回應上述問題,微軟已經發布了一個Office?97修補版SR2,它禁止了GUID功能的使用,并且還可以將現存文檔的GUID去除。??
? ? ? 潛在的對Intel處理器序列號濫用的問題與上述GUID值的問題本質是一樣的。

? ? ? 在?API?參數中,需要給出的往往不是類或者?DLL/EXE?文件的真是名稱,而是使用他們的?GUID(全局統一ID)。GUID?是微軟對?UUID(統一唯一標識)的解釋,理論上在整個空間和時間維上是唯一的,因此使用?GUID?來代替真實名稱,可以防止系統中有兩個相同名稱的對象而造成混淆。?
??????一個?GUID?是一個128位長(16字節)的數,形如?xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。其中前4字節為隨機數;5-8字節為時間戳,記錄了從1490年開始到該GUID的生成時間(低16位字在前,以分鐘為單位),從而保證了時間上的唯一;9-10字節與機器重啟次數有關;最后6字節一般為該機器的網卡地址(如果這臺機器沒有網卡,則使用另一常數),從而保證了空間上的唯一。?
??????在系統中,GUID?保存在注冊表(運行→regedit)的?HKEY_CLASSES_ROOT?項下。HKEY_CLASSES_ROOT?其實是?HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\?的快捷鍵,里面有很多長長的字串命名的子項,這些字串就是?GUID。在?HKEY_CLASSES_ROOT?下的?GUID?又分為4部分:

? ? 1.程序ID

? ? ??如 Access.Application 等,其中 Access 表示類所在 DLL/EXE 文件名,Application 是類的名稱。雖然程序ID較類ID易用,但因為它并不一定是唯一的,因此可能造成混亂。在 VB 和 VJ++ 中程序員只能使用程序ID,不過這兩種語言允許程序ID長達39個字符,因此完全可以取一個與 GUID 完全相同的程序ID,從而保證程序ID也是唯一的。

? ? 2.CLSID

? ? ? 在這個子鍵下列出了在機器上注冊過的所有類ID。在每個GUID鍵下。可以找到所有關于這個類ID的信息。如果該類ID對應一個DLL,則DLL文件名在 InprocServer32 子鍵下;如果是本地的一個EXE程序,則文件名在 LocalServer32 子鍵下;如果是遠程EXE,則有一個 AppID 子鍵指向 AppID 鍵的入口。

? ? 3.?AppID

? ? ? 在這個子鍵下列出了每個遠程 DLL/EXE 的啟動參數,包括對象位置、文件名等。

? ? 4.Interface

? ? ? 在這個子鍵下列出了本地系統中所有注冊過的類的 GUID。在其中每個 GUID 鍵下,都保存著代理的類ID,當其他應用程序要與它通信時就使用這個ID傳入傳出參數

?

小結:

? ? ? GUID(全局統一標識符)是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成GUID的API。生成算法很有意思,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。GUID的唯一缺陷在于生成的結果串會比較大。”?
?
1.?一個GUID為一個128位的整數(16字節),在使用唯一標識符的情況下,你可以在所有計算機和網絡之間使用這一整數。?
?
2.?GUID?的?格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個?x?是?0-9?或?a-f?范圍內的一個十六進制的?數字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8?即為有效的?GUID?值。?
?
3.?世界上任何兩臺計算機都不會生成重復的?GUID?值。GUID?主要用于在擁有多個節點、多臺計算機的網絡或系統中,分配必須具有唯一性的標識符。?
?
4.?在?Windows?平臺上,GUID?應用非常廣泛:注冊表、類及接口標識、數據庫、甚至自動生成的機器名、目錄名等。

轉載于:https://www.cnblogs.com/arxk/p/5538551.html

總結

以上是生活随笔為你收集整理的全球唯一标识GUID的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。