• G# GUID


    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. 世界上(Koffer注:应该是地球上)的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。

    4. 在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。

    .NET中使用GUID

    GUID 在 .NET 中使用非常广泛,而且 .NET Framework 提供了专门 Guid 基础结构。
    Guid 结构的常用法包括:
    1) Guid.NewGUID() 
    生成一个新的 GUID 唯一值
    2) Guid.ToString()
    将 GUID 值转换成字符串,便于处理
    3)构造函数 Guid(string) 
    由 string 生成 Guid 结构,其中string 可以为大写,也可以为小写,可以包含两端的定界符“{}”或“()”,甚至可以省略中间的“-”,Guid 结构的构造函数有很多,其它构造用法并不常用。

    .NET Framework 中可以使用类 GuidConverter 提供将 Guid 结构与各种其他表示形式相互转换的类型转换器。

    在C#中生成一个GUID

    处理一个唯一标识符使得存储和获得信息变得更加容易。在处理一个数据库中这一功能变得尤其有用,因为一个GUID能够操作一个主键。

    同样,SQL Server也很好地集成了GUID的用途。SQL Server数据类型uniqueidentifier能够存储一个GUID数值。你可以通过使用NEWID()函数在SQL Server中生成这一数值,或者可以在SQL Server之外生成GUID,然后再手动地插入这一数值。

    在.NET中,后面一种方法显得更加直接。.NET Framework中的基本System类包括GUID数值类型。除此之外,这一数值类型包含了处理GUID数值的方法。特别地,NewGUID方法允许你很容易地生成一个新的GUID。


     1using System; 
     2namespace DisplayGUID
     3{
     4    class Program
     5    {
     6        static void Main(string[] args)
     7        {
     8            GenerateGUID();
     9        }
    10        static void GenerateGUID()
    11        {
    12            Console.WriteLine("GUID:" + System.Guid.NewGuid().ToString());
    13        }
    14    }
    15}

    下面为这一程序的输出:(虽然不同系统之间的GUID是变化的。)

    GUID: 9245fe4a-d402-451c-b9ed-9c1a04247482

    以上范例使用到System.Guid空间名称的NewGuid函数来返回一个数值。在这一点上,你可以看到GUID是一个很好的功能,但在程序的什么地方使用到它们,并如何使用它们?

    在程序中使用一个GUID

    一个GUID可以在后台数据库中操作一个主键。以下代码使用一个GUID在一个后台数据库中存储信息,这一数据库包含以下的列:

    pk_guid  —uniqueidentifier  数据类型 
    name      —nvarchar  数据类型 
    这样出现一个包含文本框的简单Windows窗体。当选择按钮时,文本框中的数据被插入到数据库中name列。通过程序代码可以生成一个GUID并存储在pk_guid列中:


     1using System;
     2using System.Collections.Generic;
     3using System.ComponentModel;
     4using System.Data;
     5using System.Drawing;
     6using System.Linq;
     7using System.Text;
     8using System.Windows.Forms;
     9using System.Data.SqlClient;
    10
    11namespace GuidSqlDBExample
    12{
    13    public partial class Form1 : Form
    14    {
    15        public Form1()
    16        {
    17            InitializeComponent();
    18        }
    19
    20        private void btnInsert_Click(object sender, EventArgs e)
    21        {
    22            string _str = "server=(local);Initial Catalog=TestGuid;Integrated Security=SSPI";
    23            using (SqlConnection conn = new SqlConnection(_str))
    24            {
    25                try
    26                {
    27                    string _sqlInsert = "INSERT INTO dbo.Guid(pk_guid, name) VALUES ('"+ System.Guid.NewGuid().ToString() + "', '" + txtName.Text + "')";
    28                    conn.Open();
    29                    SqlCommand _cmd = new SqlCommand(_sqlInsert, conn);
    30                    _cmd.ExecuteNonQuery();   
    31                }
    32                catch (Exception ex)
    33                {
    34                    System.Console.Write("Error: " + ex.Message);
    35                }
    36            }
    37        }
    38    }
    39
    40}


    另一个GUID程序将一个唯一的标识符分配给一个.NET类或者接口,也就是说,GUID作为一个属性被分配给类或者接口。可以使用标准属性语法来实现这一过程: 本

    我们可以扩展第一个范例来分配一个GUID。System.Runtime.InteropServices空间名称必须被引用来使用GUID属性。以下C#代码实现了这一过程:


     1using System;
     2using System.Collections.Generic;
     3using System.Linq;
     4using System.Text;
     5using System.Runtime.InteropServices; 
     6
     7namespace GuidTest
     8{
     9    [Guid("9245fe4a-d402-451c-b9ed-9c1a04247482")] 
    10    class Program
    11    {
    12        static void Main(string[] args)
    13        {
    14            GenerateGUID();
    15        }
    16        static void GenerateGUID()
    17        {
    18            Console.WriteLine("GUID:" + System.Guid.NewGuid().ToString());
    19        }
    20    }
    21}


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

    原文链接:https://www.cnblogs.com/dongqi/archive/2008/10/13/1310128.html

  • 相关阅读:
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    OA办公系统 Springboot Activiti6 工作流 集成代码生成器 vue.js 前后分离 跨域
    java企业官网源码 自适应响应式 freemarker 静态引擎 SSM 框架
    java OA办公系统源码 Springboot Activiti工作流 vue.js 前后分离 集成代码生成器
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    java 视频播放 弹幕技术 视频弹幕 视频截图 springmvc mybatis SSM
    最后阶段总结
    第二阶段学习总结
    第一阶段学习总结
  • 原文地址:https://www.cnblogs.com/my-cat/p/7873039.html
Copyright © 2020-2023  润新知