当前位置:  开发笔记 > 编程语言 > 正文

GUID究竟是什么?为什么以及在哪里使用它?

如何解决《GUID究竟是什么?为什么以及在哪里使用它?》经验,为你挑选了6个好方法。

GUID究竟是什么?为什么以及在哪里使用它?
我在很多地方和维基百科都看到了对GUID的引用,但是告诉你在哪里使用它并不是很清楚.如果有人能回答这个问题,那就太好了.谢谢



1> Brian Rudolp..:

GUID在技术上代表全局唯一标识符.实际上,它是一个128位结构,不太可能重复或产生碰撞.如果你进行数学运算,那么价值域就是不成功的.

当您有多个独立系统或客户端生成需要唯一的ID时,请使用guids.

例如,如果我有5个客户端应用程序创建并将事务数据插入到对ID具有唯一约束的表中,则使用guids.这可以防止必须首先强制客户端从服务器请求已发布的ID.

这对于具有存储在不同表中的大量对象类型的对象工厂和系统也很有用,在这些表中您不希望任何2个对象具有相同的ID.这使得缓存和清理模式更容易实现.


非常干净/简洁的答案谢谢.然而,这只是一个方面(可能已经是我意识到的另一个问题),当创建说基于javascript/HTML的应用程序,并且你需要返回记录说消息或其他东西时,最好只返回GUID到前端而不是比实际身份证?推理当然是如果它是ID(自动生成的prim.key),那么猜测另一个是相当容易的 - 而GUID显然更难猜测?

2> James Curran..:

GUID是"全球唯一的标识符".您可以在任何需要保证与其他标识符不同的标识符的地方使用它.

通常,您只需要一个"本地唯一"的值 - 例如,数据库表中的主键标识只需要与该表中的其他行不同,但可以与其他表中的ID相同.(这里不需要GUID)

GUID通常在您定义ID时必须与其他人(您的控件之外)将定义的ID不同时使用.ActiveX控件上的接口标识符中的一个这样的位置.任何人都可以创建一个ActiveX,而不知道有人将使用它们的其他控件 - 并且没有什么可以阻止每个人给他们的控件同名.GUID使它们与众不同.

GUID是时间的组合(在非常小的一秒中)(因此它确保与之前或之后定义的任何GUID不同),以及定义您的位置的数字(有时取自您网卡的MAC地址) (所以它确保与其他人现在定义的任何其他GUID不同).

它们有时也称为UUID(通用唯一ID).


使用Guid作为主键会降低数据库的速度,因为索引数字比索引varchar更快
哎呀,不是varchars

3> splattne..:

作为所有其他答案的补充,这里是一个在线GUID生成器:

http://www.guidgenerator.com/

什么是GUID?

GUID(或UUID)是"全球唯一标识符"(或"通用唯一标识符")的首字母缩写.它是一个128位整数,用于标识资源.术语GUID通常由使用Microsoft技术的开发人员使用,而UUID在其他任何地方使用.

GUID的独特之处是什么?

128位是足够大的,并且生成算法足够独特,如果1年内生成每秒1,0000,000,000个GUID,则重复的概率仅为50%.或者,如果地球上的每个人都产生了600,000,000个GUID,那么重复的概率只有50%.

如何使用GUID?

GUID在软件开发中用作数据库密钥,组件标识符,或者几乎在任何其他地方都需要真正唯一的标识符.GUID还用于标识COM编程中的所有接口和对象.



4> Michael Burr..:

GUID是"全球唯一ID".也称为UUID(通用唯一ID).

它基本上是以某种方式生成的128位数(参见RFC 4112 http://www.ietf.org/rfc/rfc4122.txt),这使得几乎不可能生成重复项.通过这种方式,我可以生成GUID,而不会让某些第三方组织向我提供这些GUID,以确保它们是唯一的.

GUID的一种广泛使用是作为Windows上COM实体的标识符(类,类型库,接口等).使用GUID,开发人员可以构建他们的COM组件,而无需前往Microsoft获取唯一标识符.即使识别COM实体是GUID的主要用途,它们也可用于许多需要唯一标识符的事物.一些开发人员将为数据库记录生成GUID,以便为他们提供可以使用的ID,即使它们在许多不同的数据库中必须是唯一的.

通常,您可以将GUID视为任何人都可以随时生成的序列号,并且他们知道序列号将是唯一的.

获取唯一标识符的其他方法包括获取域名.为了确保域名的唯一性,您必须从某个组织(最终由ICANN管理)获取.

因为GUID可能很笨拙(从人类可读的角度来看,它们是一串十六进制数字,通常分组如下:aaaaaaaa-bbbb-cccc-dddd-ffffffffffff),一些需要在不同组织中使用唯一名称的名称空间使用另一种方案(通常基于互联网域名).

因此,按照惯例,Java包的命名空间以机构的域名(反向)开头,后跟以某种组织特定方式确定的名称.例如,Java包可能被命名为:

com.example.jpackage

这意味着处理名称冲突成为每个组织的责任.

XML命名空间也以类似的方式变得独特 - 按照惯例,创建XML命名空间的人应该在其控制下的"注册域名"下面.例如:

xmlns="http://www.w3.org/1999/xhtml"

管理唯一ID的另一种方法是用于以太网MAC地址.制造以太网卡的公司必须获得IEEE分配给它们的地址块(我认为它是IEEE).在这种情况下,该方案运行良好,即使制造商搞砸并发布具有重复MAC地址的卡,只要这些卡不在同一子网上,因为超出子网,只有IP,事情仍然可以正常工作address用于路由数据包.虽然可能会影响MAC地址的其他一些用途 - 但生成GUID的算法之一使用MAC地址作为一个参数.此GUID生成方法不再广泛使用,因为它被视为隐私威胁.

微软为Windows 9x中的"VxD"驱动程序提供了ID,提供了一个不能很好地运行的唯一标识符的方案.第三方VxD驱动程序的开发人员应该向Microsoft询问一组用于第三方编写的驱动程序的ID.这样,Microsoft可以确保没有重复的ID.不幸的是,许多驱动程序编写者从不打扰,只是使用他们用作起点的示例VxD中的任何ID.我不确定这引起了多少麻烦 - 我不认为VxD ID的唯一性是绝对必要的,但它可能会影响某些API中的某些功能.



5> Keltia..:

GUID或UUID(全局vs普遍)唯一IDentifier是一个唯一的ID :)当你需要一些真正独特的机器生成时,有一些库可以让你获得一个.

有关详细信息,请参阅维基百科上的GUID.

至于何时不需要GUID,当您控制的计数器(以某种方式,如SERIAL SQL类型或序列)增加时.索引"文本"值(文本形式的GUID)或128位二进制值(GUID是)比整数要昂贵得多.



6> skiphoppy..:

有人说它们在概念上是128位随机值,这基本上是正确的,但是对UUID做了一点阅读(GUID通常是指微软的UUID实现),我看到有几个不同的UUID版本,其中大部分都是实际上并不是随意的.因此,可以为机器(或其他东西)生成UUID,并能够可靠地重复该过程以获得相同的UUID,这对于某些应用程序很重要.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有