zoukankan      html  css  js  c++  java
  • Python标准库--UUID

    UUID(Universally Unique Identifier)是128位通用唯一识别码,通常由32字节的字符串表示。它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Universally Unique IDentifier,Python 中叫 UUID。

    在许多领域用作标识,比如我们常用的数据库也可以用它来作为主键,原理上它是可以对任何东西进行唯一的编码的。


    它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。
            下面就简单说明一下python是如何生成UUID的:
            python有一个模块叫做uuid,导入它就可以使用它的四个方法了。注意这四个方法依次是uuid1(),uuid3(),uuid4(),uuid5(),
    然而并没有uuid2()。

    #! coding:utf-8
    import uuid
    print u"uuid1  生成基于计算机主机ID和当前时间的UUID"
    print uuid.uuid1() # UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
     
    print u"
    uuid3  基于命名空间和一个字符的MD5加密的UUID"
    print uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org') #UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
     
    print u"
    uuid4  随机生成一个UUID"
    print uuid.uuid4()       #'16fd2706-8baf-433b-82eb-8c7fada847da'
     
    print u"
    uuid5  基于命名空间和一个字符的SHA-1加密的UUID"
    uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') #UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
     
    print u"
    根据十六进制字符生成UUID"
    x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
    print u"转换成十六进制的UUID表现字符"
    print str(x)       # '00010203-0405-0607-0809-0a0b0c0d0e0f'
    

    乍一看全都是36个字符,那么他们到底有什么不同呢,下面一一分析。

            uuid1():这个是根据当前的时间戳和MAC地址生成的,最后的12个字符408d5c985711对应的就是MAC地址,因为是MAC地址,那么唯一性应该不用说了。但是生成后暴露了MAC地址这就很不好了。

            uuid3():里面的namespace和具体的字符串都是我们指定的,然后呢···应该是通过MD5生成的,这个我们也很少用到,莫名其妙的感觉。

            uuid4():这是基于随机数的uuid,既然是随机就有可能真的遇到相同的,但这就像中奖似的,几率超小,因为是随机而且使用还方便,所以使用这个的还是比较多的。

            uuid5():这个看起来和uuid3()貌似并没有什么不同,写法一样,也是由用户来指定namespace和字符串,不过这里用的散列并不是MD5,而是SHA1.

            下面再来说一下简单的处理,UUID中间的'-'是个比较奇怪的字符,那么应该去掉它,这其实超简单:

    uid = str(uuid.uuid4())
    suid = ''.join(uid.split('-'))
    
  • 相关阅读:
    ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending
    如何从vss中分离程序
    String or binary data would be truncated
    the pop3 service failed to retrieve authentication type and cannot continue
    The POP3 service failed to start because
    IIS Error he system cannot find the file specified _找不到页面
    pku2575Jolly Jumpers
    pku2940Wine Trading in Gergovia
    pku3219二项式系数
    pku1029false coin
  • 原文地址:https://www.cnblogs.com/niuli1987/p/10273987.html
Copyright © 2011-2022 走看看