GUID到底是什么?为什么在哪里使用?
我已经在很多地方和Wikipedia中看到了对GUID的引用,但是告诉您在哪里使用它并不是很清楚。如果有人可以回答这个问题,那就太好了。谢谢
Answers:
GUID是“全局唯一标识符”。您可以在需要标识符保证彼此不同的任何地方使用它。
通常,您只需要一个值是“本地唯一的”-例如,数据库表中的主键标识只需要与该表中的其他行不同,但可以与其他表中的ID相同。(这里不需要GUID)
当您要定义的ID必须与其他人(控件外部)要定义的ID不同时,通常会使用GUID。ActiveX控件的接口标识符中的此类位置之一。任何人都可以创建ActiveX,却不知道别人会用---与其他控件一起使用,并且没有什么可以阻止每个人给控件使用相同的名称。GUID使它们与众不同。
GUID是时间(以很小的几分之一秒为单位)(因此可以确保与之前或之后定义的任何GUID都不一样)和定义您的位置的数字(有时取自网卡的MAC地址)的组合(因此可以确保与其他人现在定义的任何其他GUID不同)。
它们有时也称为UUID(通用唯一ID)。
除了所有其他答案之外,这里还有一个在线GUID生成器:
什么是GUID?
GUID(或UUID)是“全球唯一标识符”(或“通用唯一标识符”)的首字母缩写。它是用于标识资源的128位整数。GUID术语通常由使用Microsoft技术的开发人员使用,而UUID则在其他任何地方使用。
GUID有多独特?
128位足够大,并且生成算法也足够独特,如果在一年内每秒生成1,0000,000,000 GUID,则重复的可能性仅为50%。或者,如果地球上每个人都产生600,000,000 GUID,那么复制的可能性只有50%。
GUID如何使用?
GUID在软件开发中用作数据库密钥,组件标识符或几乎其他任何需要真正唯一标识符的地方。GUID还用于识别COM编程中的所有接口和对象。
GUID是“全局唯一ID”。也称为UUID(通用唯一ID)。
它基本上是一个以某种方式生成的128位数字(请参阅RFC 4112 http://www.ietf.org/rfc/rfc4122.txt),这使得几乎不可能生成重复项。这样,我可以生成GUID,而无需某些第三方组织将它们提供给我以确保它们是唯一的。
GUID的一种广泛用途是用作Windows上COM实体(类,类型库,接口等)的标识符。使用GUID,开发人员可以构建其COM组件,而无需前往Microsoft获得唯一标识符。尽管识别COM实体是GUID的主要用途,但它们用于许多需要唯一标识符的事物。一些开发人员将为数据库记录生成GUID,以为其提供ID,即使它们在许多不同的数据库中必须是唯一的,也可以使用该ID。
通常,您可以将GUID视为可以由任何人随时生成的序列号,他们会知道该序列号将是唯一的。
获取唯一标识符的其他方法包括获取域名。为了确保域名的唯一性,您必须从某个组织(最终由ICANN管理)获得该域名。
因为GUID可能很笨拙(从人类可读的角度来看,它们是一串十六进制数字,通常按如下方式进行分组:aaaaaaaa-bbbb-cccc-dddd-ffffffffffffff),因此在不同组织中需要唯一名称的某些名称空间会使用另一种方案(通常基于Internet域名)。
因此,按照惯例,Java包的名称空间以组织的域名(反向)开头,后跟以某种组织特定方式确定的名称。例如,一个Java包可能被命名为:
com.example.jpackage
这意味着处理名称冲突成为每个组织的责任。
XML名称空间也以类似的方式变得唯一-按照惯例,创建XML名称空间的人应该使其在其控制下的注册域名“下方”。例如:
xmlns="http://www.w3.org/1999/xhtml"
管理唯一ID的另一种方法是针对以太网MAC地址。制造以太网卡的公司必须获得IEEE(我认为是IEEE)分配给它们的地址块。在这种情况下,该方案运行良好,即使制造商拧紧并发行具有重复MAC地址的卡,只要这些卡不在同一个子网中(因为在子网之外,也只有IP),一切仍然可以正常进行。地址用于路由数据包。尽管MAC地址还有其他用途可能会受到影响-生成GUID的算法之一使用MAC地址作为一个参数。此GUID生成方法不再被广泛使用,因为它被认为是隐私威胁。
Microsoft提供的ID标识用于Windows 9x中的“ VxD”驱动程序,该方案无法很好地使用唯一标识符的方案的一个示例。第三方VxD驱动程序的开发人员应要求Microsoft提供一组ID,以供第三方编写的任何驱动程序使用。这样,Microsoft可以确保没有重复的ID。不幸的是,许多驱动程序编写者从不打扰,只是简单地使用了他们用作起点的示例VxD中的任何ID。我不确定这会造成多少麻烦-我认为VxD ID唯一性不是绝对必要的,但是它可能影响了某些API中的某些功能。
有人说它们从概念上讲是128位随机值,这确实是对的,但是在对UUID进行了一些阅读之后(GUID通常指的是Microsoft的UUID的实现),我看到有几种不同的UUID版本,其中大多数是UUID版本实际上不是随机的。因此,有可能为机器(或其他东西)生成一个UUID,并能够可靠地重复该过程,从而在以后获得相同的UUID,这对于某些应用程序很重要。
对我来说,将它们简单地视为“ 128位随机值”会更容易。本质上就是它们。有一些算法可以在GUID的几位数中包含一些信息(因此,随机部分会变小),但是它们仍然是相当大的几乎随机的值。
由于它们太大,因此非常不可能生成两个相同的GUID。出于所有实际目的,曾经生成的每个GUID在世界上都是唯一的。
我将留给您确定在哪里使用它们,但是其他答案已经有一些示例。让想象力自由驰骋。:)