UUID即通用唯一标识符,对于所有的UUID它可以保证在空间和时间上的唯一性。它是通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性,有着固定的大小(128 bit)。它的唯一性和一致性特点使得可以无需注册过程就能够产生一个新的UUID。UUID可以被用作多种用途,可以用来短时间内标记一个对象,也可以辨别网络中的持久性对象。

  python中uuid模块提供UUID类和函数uuid1()、uuid3()、uuid4()、uuid5()来生成各个版本的UUID。


  1. uuid.uuid1([node[, clock_seq]]):基于时间戳

  使用主机ID,序列号,和当前时间来生成UUID,可保证全球范围的唯一性。但由于使用该方法生成的UUID中包含有主机的网络地址,因此可能危及隐私,不安全。

  该函数有两个参数,如果node参数未指定,系统将会自动调用getnode()函数来获取主机的硬件地址。如果clock_seq参数未指定系统会使用一个随机产生的14位序列号来代替。

  2. uuid.uuid3(namespace, name):基于名字的MD5散列值

  通过计算命名空间和名字的MD5散列值来生成UUID,可以保证同一命名空间中不同名字的唯一性和不同命名空间的唯一性,但同一命名空间的同一名字生成的UUID相同。

  3. uuid.uuid4():基于随机数

  通过随机数来生成UUID。使用的是伪随机数有一定的重复概率。

  4. uuid.uuid5(namespace, name):基于名字的SHA-1散列值

  通过计算命名空间和名字的SHA-1散列值来生成UUID,算法与 uuid.uuid3() 相同。

  5. uuid.getnode():以48位正整数形式获取硬件地址

  第一次运行时,它可能会启动一个单独的程序

  6. uuid模块中支持的四种命名空间,这些命名空间也是uuid对象,根据一定的规则计算得出

  uuid.NAMESPACE_DNS:指定此名称空间后,名称字符串是标准域名。

  uuid.NAMESPACE_URL:指定此名称空间后,名称字符串是URL。

  uuid.NAMESPACE_OID:指定此名称空间后,名称字符串为ISO OID。

  uuid.NAMESPACE_X500:指定此名称空间后,名称字符串是DER或文本输出格式的X.500 DN。

  7. uuid.UUID(hex=None,bytes=None,bytes_le=None,fields=None,int=None,version=None,*,is_safe=SafeUUID.unknown)

  uuid实例对象的属性:

    UUID.bytes:UUID为16字节的字符串。

    UUID.bytes_le:UUID为16字节的字符串。

    UUID.fields:UUID的六个整数字段的元组,也可以作为六个单独的属性和两个派生的属性使用。

    

    UUID.hex:UUID为32个字符的十六进制字符串。

    UUID.int:UUID为128位整数。

    UUID.version:UUID版本号。

    UUID.is_safe:表示平台是否以多处理安全的方式生成了UUID。


使用

  • Python中没有基于DCE的,所以uuid2可以忽略
  • uuid4存在概率性重复,由无映射性,最好不用
  • 若在Global的分布式计算环境下,最好用uuid1
  • 若有名字的唯一性要求,最好用uuid3或uuid5

uuid模块的更多相关文章

  1. 每天一个小程序—第0001题(uuid模块)

    第 0001 题:  做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 一开始以为是 ...

  2. Python内置模块之time、random、hashlib、OS、sys、UUID模块

    Python常用模块 1.time模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间 ...

  3. Python标准库 -- UUID模块(生成唯一标识)

    UUID是什么: UUID: 通用唯一标识符 ( Universally Unique Identifier ),对于所有的UUID它可以保证在空间和时间上的唯一性,也称为GUID,全称为: UUID ...

  4. python中的 uuid 模块使用示例

    此模块提供不可变的 UUID 对象 (类 uuid) 和函数uuid1().uuid3().uuid4().uuid5(), 用于生成在 RFC 4122 中指定版本1.3.4和5UUIDs .如果你 ...

  5. VUE - 引入 npm 安装的模块 以及 uuid模块的使用

    <template>   <div>       <form @submit.prevent="addTodo">         <in ...

  6. Python之uuid模块

    UUID是128位的全局唯一标识符,通常由32字节的字符串表示. 它可以保证时间和空间的唯一性,也称为GUID,全称为: UUID —— Universally Unique IDentifier P ...

  7. [py]Python使用UUID库生成唯一ID(uuid模块)

    https://www.cnblogs.com/dkblog/archive/2011/10/10/2205200.html uuid介绍 UUID是128位的全局唯一标识符,通常由32字节的字符串表 ...

  8. Python3之uuid模块

    一. 简介 UUID是128位的全局唯一标识符,通常由32字节的字母串表示.它可以保证时间和空间的唯一性,也称为GUID. 全称为:UUID--Universally Unique IDentifie ...

  9. python常用uuid模块

    uuid.uuid4(),会根据我们当前的网卡和时间生成的一个随机字符串. 注意:uuid.uuid4()生成的是一个对象,需要强转为字符串. uid = str(uuid.uuid4()) #当前网 ...

随机推荐

  1. 性能对比:aelf智能合约运行环境性能是evm的1000倍

    测试用例及代码库 机器配置 测试结果 3.1 EVM 3.2 AElf 3.2.1 LoopDivAdd10M 3.2.2 LoopExpNop1M 测试结论 近期对标以太坊做了一系列针对测试,在此次 ...

  2. MySchool题目

    题目: 1.查询所有学生记录,包含年级名称2.查询S1年级下的学生记录 一.项目目录 二.com.myschool.dao 2.1 BaseDao package com.myschool.dao; ...

  3. 原生javascript 共享onload事件

    在工作时,我们给一个元素绑定了事件,如果dom还没加载完成,就执行了js代码,就不会绑定成功.常规解决方案就是用: window.onload = EventFunction; 可是如果有两个 事件, ...

  4. 奥展项目笔记06--js弹出框、对话框、提示框、弹窗总结

    JS的三种最常见的对话框: //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 functi ...

  5. mysql 8.0 group by 不对的问题

    select version(),@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

  6. 初探云原生应用管理之:聊聊 Tekton 项目

    [编者的话]“人间四月芳菲尽,山寺桃花始盛开.” 越来越多专门给 Kubernetes 做应用发布的工具开始缤纷呈现,帮助大家管理和发布不断增多的 Kubernetes 应用.在做技术选型的时候,我们 ...

  7. MySQL for OPS 08:MHA 高可用

    写在前面的话 主从架构在一般情况下只能满足我们小公司业务并非一刻都不能中断服务.但是对于大型公司而言,对然数据丢失,数据库挂了,我们可以通过技术找回,修复.但是其中修复过程所消耗的时间是不被允许的.此 ...

  8. SAP PI开发手册-ERP发布服务供外围系统调用(RFC类型)

    1转自:https://www.cnblogs.com/fanjb/p/10677018.html 8年进入国网项目后陆陆续续做了一些接口,按实现方法去分有RFC和代理类sproxy类型,按服务提供方 ...

  9. linq 数据库已存在,直接添加数据

    using System.Data.Linq;using System.Data.Linq.Mapping; namespace ConsoleApplication1388{ class Progr ...

  10. MySQL 的一些批处理

    执行 SQL 脚本文件(https://blog.csdn.net/vebasan/article/details/7619911): mysql –u root –p 123456 < scr ...