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. keras.preprocessing.text.Tokenizer

    说明:num_words的参数设置,对应着sequences_to_matrix方法返回的arrray的shape[1],用于约束返回数组的第2个维度.对texts_to_sequences(text ...

  2. [算法模版]Tarjan爷爷的几种图论算法

    [算法模版]Tarjan爷爷的几种图论算法 前言 Tarjan爷爷发明了很多图论算法,这些图论算法有很多相似之处(其中一个就是我都不会).这里会对这三种算法进行简单介绍. 定义 强连通(strongl ...

  3. 数据仓库009 - SQL命令实战 - where GROUP BY join 部门综合案例

    一.where条件 WHERE 子句中主要的运算符,可以在 WHERE 子句中使用,如下表: 运算符 描述 = 等于 <> 不等于.注释:在 SQL 的一些版本中,该操作符可被写成 != ...

  4. Jenkins安装第一个插件和通过离线安装包进行安装

    1.打开左侧Manage Jenkins 选择Manage Plugins菜单 2.搜索Folders插件,该插件用于创建一个目录 3.点击安装进入插件安装状态,Jenkins会自动下载相关联的插件 ...

  5. Loj #2553. 「CTSC2018」暴力写挂

    Loj #2553. 「CTSC2018」暴力写挂 题目描述 temporaryDO 是一个很菜的 OIer .在 4 月,他在省队选拔赛的考场上见到了<林克卡特树>一题,其中 \(k = ...

  6. h5中的audio音频标签与对应的dom对象

    HTML5中提供了一个<audio>标签,同时也提供了一个Audio对象给JavaScript去操作,这个对象属于HTML的DOM对象. H5中的<audio>标签 此标签是H ...

  7. FIddler+Proxifer 实现PC客户端抓包

    Proxifier设置 1.安装Proxifier 下载地址:http://www.hanzify.org/software/13717.html 2.配置代理服务器 A.开启HTTP协议 Proxi ...

  8. DAX 第九篇:文本函数

    DAX中用于处理文本的函数,和其他语言很相似. 一,文本连接 文本连接也可以使用操作符 & 来实现,也可以使用函数CONCATENATE来实现: CONCATENATE(<text1&g ...

  9. Spring-AOP源码分析随手记(一)

    1.@EnableAspectJAutoProxy(proxyTargetClass = true) 就是弄了个"org.springframework.aop.config.interna ...

  10. 如何取消 SqlDataAdapter.Fill() 的执行(转载)

    问 Scenario: We have a DataGridView which is attached to DataAdapter (datatable), we load the data in ...