全局唯一标识符(GUID,Globally Unique Identifier)

What is GUID

  也称作 UUID(Universally Unique IDentifier) 。

  GUID是一种由算法生成的二进制长度为128位的数字标识符。

  GUID主要用于在拥有多个节点、多台计算机的网络或系统中。

Why to use GUID

  在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。

  (1). GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

  通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。

  (2). GUID永远是方便的

  对于程序开发的各个方面,.NET Framework简化了建立和处理GUID数值的过程。在.NET程序需要的地方,这一功能很容易地生成唯一的数值。

  缺点 优点
           GUID

1. GUID过长,看表现形式,至少都有32位,长的38位,浪费存储空间

2. GUID是根据硬件设备相关ID以及时间戳生成的

3. GUID不利于检索、外键关联

1. 一般来说不担心有冲突的影响,而且,根据GUID的生成规则,还能大致知道生成的计算机硬件设备、时间等信息(但这个有多少意义呢)

2. 能在业务层就知道目标ID,而不是数据提交给数据库系统后才确定

           自增长  1. 多数据库同步、读写分离十分不方便。  1. 使用简单

How to use GUID

    C# 中使用GUID

Guid.NewGuid().ToString()    : 1f13a943-4c7e-4bfc-aac5-935886591424
Guid.NewGuid().ToString("N"): 3a81013f9ee549b38f11ee3d50f5bd78
Guid.NewGuid().ToString("D"): c4219375-c2c8-4639-86e8-8d910ed12186  -- 默认为:D
Guid.NewGuid().ToString("B"): {a793927d-9a1b-4d25-9562-0a59522db9c0}
Guid.NewGuid().ToString("P"): (a99839b9-da94-40fd-87a5-4a5e73677b1f)
Guid.NewGuid().ToString("X"): {0xb294a44e,0x43d9,0x4b60,{0xb5,0xb9,0x32,0x29,0xae,0x46,0x45,0x17}}

补充说明[2017/5/26]

遇到一个关于“-”转码的问题, 手机端对“-”二次编码后传递给后台,导致后台识别不了,Request.Form, QueryString会自动解码一次

C# GUID使用总结的更多相关文章

  1. UniqueIdentifier 数据类型 和 GUID 生成函数

    UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...

  2. System.Guid ToString五中格式

    参考:https://msdn.microsoft.com/en-us/library/97af8hh4.aspx 测试代码: using System; using System.Collectio ...

  3. EF里Guid类型数据的自增长、时间戳和复杂类型的用法

    通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...

  4. 为Guid数据类型的属性(property)赋值

    先来看看数据库表中的字段设计: 在数据库的数据类型为uniqueidentifier. 而在程序中对应的数据类型为GUID. property有get和set,也就是说能获取值也可以赋值.

  5. Guid的使用

    今天在公司做修改功能时,老大让使用部分更新,但是表中的主键是UNIQUEIDENTIFIER类型,它会在我们添加纪录时,默认生成一个unicode码, 但是我现在必须要将获取到的已经是string类型 ...

  6. GUID生成器

    这个GUID生成器是一个小巧的软件,属于笔者在空余时间开发的. http://pan.baidu.com/s/1sk6VGpn

  7. 使用Guid做主键和int做主键性能比较

    使用Guid做主键和int做主键性能比较 在数据库的设计中我们常常用Guid或int来做主键,根据所学的知识一直感觉int做主键效率要高,但没有做仔细的测试无法 说明道理.碰巧今天在数据库的优化过程中 ...

  8. 生成GUID唯一值的方法汇总(dotnet/javascript/sqlserver)

    一.在 .NET 中生成1.直接用.NET Framework 提供的 Guid() 函数,此种方法使用非常广泛.GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的任何两台计 ...

  9. SQLSERVER如何使用递增排序的GUID做主键

    场景: 产品表数据量较大想用Guid做表的主键,并在此字段上建立聚簇索引. 因为Guid是随机生成的,生成的值大小是不确定的,每次生成的数可能很大,也可能很小.这样会影响插入的效率 1.NEWSEQU ...

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

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

随机推荐

  1. CentOS 6.9上安装Mysql 5.7.18 安装

    CentOS 6.9上安装Mysql 5.7.18 安装 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-g ...

  2. centOS中如何修改运行级别!

    在图形化界面可以用Ctrl+Alt+F2进入命令行窗口 * 假如你使用了虚拟机,有可能会出现不能进去的问题,原因是因为热键冲突 * 解决办法:修改热键就行了 edit→parameter→hot ke ...

  3. MySQL技术内幕InnoDB存储引擎(表&索引算法和锁)

    表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...

  4. Asp.Net中判断是否登录,及是否有权限?

    不需要在每个页面都做判段, 方法一:只需要做以下处理即可 using System; using System.Collections.Generic; using System.Linq; usin ...

  5. sed命令使用举例

    选择操作的行范围 sed -n '1,2p' testsed2.txt  匹配第1到2行 sed -n '/a/,/b/p' testsed2.txt  匹配从包含a的行到包含b的行 sed -n ' ...

  6. 该 Bucket 已存在,或被其他用户占用

  7. HDFS relaxes a few POSIX requirements to enable streaming access to file system data

    https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html Introduction [ ...

  8. 我的Java开发学习之旅------>解惑Java进行三目运算时的自动类型转换

    今天看到两个面试题,居然都做错了.通过这两个面试题,也加深对三目运算是的自动类型转换的理解. 题目1.以下代码输出结果是(). public class Test { public static vo ...

  9. Machine Learning No.7: Support Vector Machines

    1. SVM hypothsis 2. large margin classification 3. kernals and similarity if  f1 = 1; if x if far fr ...

  10. <密码学入门>关于DES加密算法解密算法相关问题

    题外话:个人觉得DES加密解密真的是一种过程冗长的方法,S盒,P盒还有各种各样的变换让人眼花缭乱. (一)Feistel密码结构 要先说Feistel密码结构的原因是DES加密过程是和Feistel密 ...