Uuid 模块 | 学习笔记

简介: 快速学习 Uuid 模块

开发者学堂课程【Python 入门 2020年版:Uuid 模块】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10361


Uuid 模块

uuid 模块的应用

UUID 是 128 位的全局唯一标识符,通常由 32 字节的字母串表示,它可以保证时间和空间的唯一性,也称为 GUID- 通过 MAC 地址时间戳。命名空间,随机数、伪随机数来保证生产的 ID 的唯一性。

随机生成字符串,可以当成 token 使用,当成用户账号使用,当成订单号使用。

Import uuid

1.print(uuid.uuid())生成结果为

91817e5c-56a8-11ea-005056c00008的 32 个字母。每一个字符有 16 个选择,这也说明有 16**32 个选择。

这时会出来非常大的数字。注意,不需要保证全球唯一,只需要保证自己系统内的唯一。也就是全局唯一。

2.方法:uuid.uuid1()

(1).作用:基于 MAC 地址,时间戳,随机数来生成唯一的 uuid,可以保证全球范围内的唯一性。

(2).注:规格比较麻烦,虽然唯一性很强,但是效率不高,花的时间比较长

3.方法:uuiduuid2()

作用:算法与 uuid1 相同,不同的是把时间戳的前 4 位置换为 POSIX 的 UID。

不过需要注意的是 python 中没有基于 DCE 的算法,所以 python 的 uuid  模块中没有 uuid2 这个方法。

4.方法:uuid.uuid3(namespace.name)

是需要 namespace 与 name 两个算法

(1).作用

①.通过计算一个命名空间和名字的 md5 散列值来给出一 uuid,之所以可以保证命名空间中的不同名字具有不同的 uuid,但是相同的名字就是相同的 uuid 了。

②.Namespace 并不是一个自己手动指定的字符串或其他量,而是在 uuid 模块中本身给出的一些值。

比如 uuid.NAMESPACEDNS,uuid.NAMESPACEOID 这些值。这些值本身也是 UUID 对象,根据一定的规则计算得出。

(2).举例说明

①.print(uuid.uuid3(uuid.NAMESPACE_DNS,’zhangsan’))

运行出来的结果为 d51a47a6-3157-94d3-70ecb9fda86e,结果是不变的。生成固定的 uuid。

②.注意,uuid3 以及 uuid5 是使用传入的字符串根据指定的算法算出来的。是固定的。

5.方法:uuid.uuid4()

(1).作用

通过伪随机数得到 uuid,是有一定概率重复的

uuiduuid5(namespace,name)uuid3 基本相同,只不过采用的散列算法是 sha1

(2).举例

①.print(uuid.uuid4())的结果是变化的,uuid4  是使用的最多的,是随机生成的。

②.注:一般用 uuid,uuid4() 是够用的。

③.比如说去网站的时候,登入注册的时候会有写邮箱,紧跟着服务器跟着邮箱发邮件,发邮件的会给链接,同时让你激活,如果一天注册好多个用户,打比方一天注册一百个,那怎样标示一百多个用户?

这时可以用 uuuid 标识,就可以知道,是全局唯一的标识符,是一串数字,这个数字保证在整个系统里只有一个不重复。

6.方法:uuid.uuid5()

作用:

和 uuid3 基本相同,只不过采用的散列算法是 sha1

相关文章
|
6月前
|
算法
自定义UUID算法
自定义UUID算法
60 0
|
Java 数据库
如何使用JPA的UUID主键生成策略
这篇文章只写给主键用uuid并且用jpa的小伙伴。 1. 数据实体类 @Entity @Table(name = "ip_user") @GenericGenerator(name = "jpa-uuid", strategy = "uuid") ...
3709 0
|
6月前
|
算法 云计算 索引
生成UUID和自定义UUID算法
生成UUID和自定义UUID算法
421 0
|
消息中间件 JavaScript 算法
ULID - 一种比UUID更好的方案
ULID - 一种比UUID更好的方案
|
算法 Java 数据库
如何在java中使用uuid(1)-随机uuid的获取
UUID是国际标准化组织ISO提出的一个概念。UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。为了提高效率,常用的UUID可缩短至16位。UUID用来识别属性类型,在所有空间和时间上被视为唯一的标识。一般来说,可以保证这个值是真正唯一的任何地方产生的任意一个UUID都不会有相同的值。使用UUID的一个好处是可以为新的服务创建新的标识符。
413 0
如何在java中使用uuid(1)-随机uuid的获取
|
存储 JavaScript 前端开发
UUID 正在被 NanoID 取代。。。
UUID 正在被 NanoID 取代。。。
223 0
UUID 正在被 NanoID 取代。。。
|
Rust Dart 前端开发
从现在开始用 NanoID 会取代UUID
如果你的项目有生成唯一 key 或者使用 uuid 的场合,那么从现在开始,请使用 NanoID。之前在文章《分享8个可以提高开发效率的JavaScript库》介绍过 NanoID 。NanoID 是一个创建唯一 key 的轻量级的脚本库,在过去有类似需求首先想到的是 uuid ,与其相比 NanoID 要小得多。
474 0
从现在开始用 NanoID 会取代UUID
|
Python
Python:Flask-UUID 注册一个uuid的url转换器
Python:Flask-UUID 注册一个uuid的url转换器
115 0
|
分布式计算 算法 Python
Python编程:使用uuid库生成唯一ID
Python编程:使用uuid库生成唯一ID
183 0
|
Java 开发者
UUID 类|学习笔记
快速学习 UUID 类
124 1