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位十六进制数。比如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

GUID特点

★GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。 ★世界上的不论什么两台计算机都不会生成反复的 GUID 值。

★须要GUID的时候,能够全然由算法自己主动生成。不须要一个权威机构来管理。 ★GUID的长度固定,而且相对而言较短小。很适合于排序、标识和存储。

GUID生成算法

网上流传。用到了以太网卡地址、纳秒级时间、芯片ID码和很多可能的数字。有待验证。

GUID样例

1.注冊表,GUIDs被用于整个Windows环境。

当你在一个Windows系统中细致阅读注冊表时,你能够看到GUIDs被广泛用于唯一识别程序。

特别地。它们作为程序的Ids集中在HKEY_CLASSES_ROOT部分(AppID键)。

2.C#。Sqlserver的唯一表示。当基于web的应用程序。并发量非常大的情况下。并发訪问上千以上时,在数据中,使用 int id identiy(1,1),出现同样的概率会大,GUID,就有所改善。

class Program
{
// Guid for the interface IMyInterface.
[Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")]
interface IMyInterface
{
void MyMethod();
} // Guid for the coclass MyTestClass.
[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public class MyTestClass : IMyInterface
{
// Run regasm on this assembly to create .reg and .tlb files.
// Reg file can be used to register this coclass in the registry.
// Tlb file will be used to do interop. public void MyMethod() { } public static void Main(string[] args)
{
// Example addresses the following in System.Runtime.InterOpServices.GuidAttribute.
// How to specify the attribute on interface/coclass.
// Retrieve the GuidAttribute from an interface/coclass.
// Value property on GuidAttribute class. // Example addresses the following in System.Guid.
// Constructor Guid(string).
// Constructor Guid(ByteArray).
// Equals.
// Operator ==.
// CompareTo. Attribute IMyInterfaceAttribute = Attribute.GetCustomAttribute(typeof(IMyInterface), typeof(GuidAttribute)); // The Value property of GuidAttribute returns a string.
System.Console.WriteLine("IMyInterface Attribute: " + ((GuidAttribute)IMyInterfaceAttribute).Value); // Using the string to create a guid.
Guid myGuid1 = new Guid(((GuidAttribute)IMyInterfaceAttribute).Value);
// Using a byte array to create a guid.
Guid myGuid2 = new Guid(myGuid1.ToByteArray()); // Equals is overridden and so value comparison is done though references are different.
if (myGuid1.Equals(myGuid2))
System.Console.WriteLine("myGuid1 equals myGuid2");
else
System.Console.WriteLine("myGuid1 not equals myGuid2"); // Equality operator can also be used to determine if two guids have same value.
if (myGuid1 == myGuid2)
System.Console.WriteLine("myGuid1 == myGuid2");
else
System.Console.WriteLine("myGuid1 != myGuid2"); // CompareTo returns 0 if the guids have same value.
if (myGuid1.CompareTo(myGuid2) == 0)
System.Console.WriteLine("myGuid1 compares to myGuid2");
else
System.Console.WriteLine("myGuid1 does not compare to myGuid2"); System.Console.ReadLine(); //Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2 //GENERATE GUIDS
//for (int i = 0; i <100; i++)
//{
// Console.WriteLine(System.Guid.NewGuid().ToString());
//} //Console.ReadLine(); } } }

GUID概念的更多相关文章

  1. COM 组件基础——GUID 和 接口

    一.前言 书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时 ...

  2. com学习(一)GUID 和 接口

    话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 E ...

  3. 【转载】COM 组件设计与应用(二)——GUID 和 接口

    原文:http://vckbase.com/index.php/wv/1203.html COM 组件设计与应用 系列文章:http://vckbase.com/index.php/piwz?& ...

  4. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  5. USB编程研究之二(常见设备类型的GUID)

    在USB编程之前要事先了解一下GUID的概念. 应用其他网页中的定义: 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体 ...

  6. 基于WDF的PCI/PCIe接口卡Windows驱动程序(2)-开发者需要了解的WDF中的一些重要的概念

    原文出处:http://www.cnblogs.com/jacklu/p/4646601.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...

  7. kafka概念

    一.结构与概念解释 1.基础概念 topics: kafka通过topics维护各类信息. producer:发布消息到Kafka topic的进程. consumer:订阅kafka topic进程 ...

  8. linux入门基础_centos(一)--基础命令和概念

    闲来无事干,看看2014自己整理的一些学习笔记.独乐了不如众乐乐吗! 贴出来和大家分享一下,由于篇幅比较长,分成几篇发布吧,由于是学习笔记,可能有些地方写的不是很正确或者说不详细,或者你会看到上面的课 ...

  9. Delphi 提示在Delphi的IDE中,按Ctrl+Shift+G键可以为一个接口生成一个新的GUID。

    对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两 ...

随机推荐

  1. 201621123034 《Java程序设计》第1周学习总结

    1. 本周学习总结 知道了java的用途有安卓手机应用,企业服务器后端,java web.学到了新概念:类.HelloWorld.java 中 HelloWorld 是主文件名,区分 .java和 . ...

  2. 使用 Python 获取 Linux 系统信息

    探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数.让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧: ...

  3. BZOJ 1087:[SCOI2005]互不侵犯King(状压DP)

    [SCOI2005]互不侵犯King [题目描述] 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...

  4. 多线程(实现Runnable接口)

    /** * 创建一个子线程, 完成1-100之间自然数的输出,同样的主线程执行同样的操作 *创建多线程的第二种方式,通过实现的方式 * 继承和实现的方式对比 * 一,联系: *  public cla ...

  5. ionic2 解决白屏问题

    ionic2下创建项目后,运行启动页后白屏几秒,解决方案 问题描述 最近在学习过程中发现ionic2项目运行在真机上,启动页后会有3-5秒的白屏时间,用户体验不是太好. 解决过程 查看到了一篇关于这个 ...

  6. g2o初始化一些

    今天看了一下智能指针的东西,发现更简单的思路: 就是Block和solver构造时,需要传递unique_ptr,那我们将普通指针转换成unique_ptr不就可以了么: // 初始化g2o //第一 ...

  7. [暑假集训--数论]poj2909 Goldbach's Conjecture

    For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 ...

  8. vs2017 出现“文件中的类都不能进行设计,因此未能为该文件显示设计器”问题处理

    今天拷贝了以前的一个项目.打算出一个新版本. 但是拷贝了sln文件后,去除掉以前的项目,新增了一个  winfrom项目中 出现了:文件中的类都不能进行设计,因此未能为该文件显示设计器.错误 百度了一 ...

  9. ofbiz数据库表结构设计(2)- CONTACT_MECH

    ofbiz中,party的电话.地址等联系方式设计得非常巧妙,让我们来仔细分析一下. 有一个叫做CONTACT_MECH的表,这张表我们把它称作联系方式表,一个电话号码.一个通讯地址.一个电子邮件,都 ...

  10. Treblecross(uva 10561)

    题意:一个 1 × n 的棋盘,有 X 和 :,当棋盘上出现三个连续的X 时游戏结束,两人轮流操作,每次能把一个 : 变成 X,问先手必胜方案数以及先手可以放的位置. /* 对于先手,当有一个'X'时 ...