• Guid(全局统一标识符)


    Guid(全局统一标识符)

    一、简介

    1.什么是GUID?
    全局唯一标识符(GUID,Globally Unique Identifier),GUID也称作 UUID(Universally Unique IDentifier) 。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。
    2.为什么要使用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程序需要的地方,这一功能很容易地生成唯一的数值。

    二、代码案例

     class Program
        {
            static void Main(string[] args)
            {
    
                var uuid = Guid.NewGuid().ToString(); // 67b69599-5026-4765-8707-def49a214219
    
                var uuidN = Guid.NewGuid().ToString("N"); // f93618e93beb4a4181526d7a38c169a4
    
                var uuidD = Guid.NewGuid().ToString("D"); //c747ac63-a9c2-46f9-80d7-f635c330a59f
    
                var uuidB = Guid.NewGuid().ToString("B"); // {2a77d03e-0366-4977-97f1-229c17fe906f}
    
                var uuidP = Guid.NewGuid().ToString("P"); // (8165193f-8595-439d-bbaf-9ce55171eecf)
    
                var uuidX = Guid.NewGuid().ToString("X"); // {0x48645e66,0xbe0c,0x4990,{0x8e,0xee,0x3c,0x84,0xba,0xda,0x0d,0x83}}
    
                var guid1 = GenerateId1();//5a0aec9398c64e09
    
                var guid2 = GenerateId2();//4976172849618296785
            }
            private static  string GenerateId1()
            {
                long i = 1;
                foreach (byte b in Guid.NewGuid().ToByteArray())
                {
                    i *= ((int)b + 1);
                }
                return string.Format("{0:x}", i - DateTime.Now.Ticks);
            }
    
    
            private static  long GenerateId2()
            {
                byte[] buffer = Guid.NewGuid().ToByteArray();
                return BitConverter.ToInt64(buffer, 0);
            }
         
    
        }

    三、总结

    这里的D,N,B,P是不区分大小写的,如果传入空字符串,则使用的默认的D类型,其它情况都会报异常。


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    使用.Net Core RT 标准动态库
    X509 颁发者和使用者 详解
    .Net Core 中X509Certificate2 私钥保存为 pem 的方法
    dpkg:处理软件包 mysql-server-5.5 (--configure)时出错
    sql server time(7) 默认值
    如何 打包整合linux系统文件夹 用于刷机包等等, 其中包括打包 句号开头 . 开头的文件, 排除系统文件 等
    Visual Studio 2015中 安卓环境 cannot find adb.exe in specified sdk path
    PuTTY 命令行改进 有效解决 中文乱码
    System.Windows.Forms.WebBrowser中 处理 js 脚本 window.Open 禁止新建窗口 的方法
    rest_framework之认证与权限 token不存数据库认证
  • 原文地址:https://www.cnblogs.com/wml-it/p/14832583.html
Copyright © 2020-2023  润新知