网络协议和支持(一)、uuid模块
发布日期:2021-05-20 07:34:38 浏览次数:7 分类:精选文章

本文共 1583 字,大约阅读时间需要 5 分钟。

1. 背景知识

UUID(通用唯一标识符)是一种用于确保在时间和空间上唯一性的标识符。它通过MAC地址、时间戳、命名空间、随机数以及伪随机数等多个因素来保证唯一性,确保每个UUID拥有固定的128位大小。这种独特性使得UUID无需繁琐的注册过程,就可以生成一个全新的、可靠的标识符。

ANCED reason for using UUIDs is that many applications need a unique identifier without any specific meaning, often used for database fields or dynamic UI elements in front-end libraries.

2. Python的uuid模块

Python的uuid模块提供了多种函数来生成不同版本的UUID,包括 uuid1()、uuid3()、uuid4() 和 uuid5()。以下是这些函数的常见用法:
  • uuid.uuid1([node[, clock_seq]]):基于主机ID、序列号和当前时间生成UUID。

    如果未指定node参数,会自动获取主机的硬件地址(通过getnode()函数)。如果未指定clock_seq,系统会使用随机生成的14位序列号。
    该方法生成的UUID包含了主机的网络地址,因此可能存在隐私问题。

  • uuid.uuid3(namespace, name):通过计算命名空间和名称的MD5散列值生成UUID。

    这种方法可以确保同一命名空间中的不同名称生成唯一的UUID,同时不同命名空间的UUID也具有唯一性。需要注意的是,同一命名空间中的相同名称会生成相同的UUID。

  • uuid.uuid4():基于随机数生成UUID。

    该函数使用伪随机数,由于产生随机数的机制,存在一定的重复概率。

  • uuid.uuid5(namespace, name):通过计算命名空间和名称的SHA-1散列值生成UUID。

    该方法与uuid.uuid3()相似,算法实现相同。

3. uuid模块的典型使用方法

以下是通过Python的uuid模块生成UUID的典型示例:
import uuid# 基于主机ID和当前时间生成UUIDuuid.uuid1()  # 返回一个类似 "a8098c1a-f86e-11da-bd1a-00112444be1e" 的UUID# 使用命名空间的MD5散列值和网站名称生成UUIDuuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')  # 返回一个类似 "6fa459ea-ee8a-3ca4-894e-db77e160355e" 的UUID# 生成随机UUIDuuid.uuid4()  # 返回一个随机的UUID类似 "16fd2706-8baf-433b-82eb-8c7fada847da"# 使用SHA-1散列值生成UUIDuuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')  # 返回一个类似 "886313e1-3b8a-5372-9b90-0c9aee199e5d" 的UUID# 从一个字符串生成UUIDx = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')# 将其转换为标准形式str(x)# 获取UUID的原始16字节表示x.bytes # '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'# 从16字节字符串生成UUIDuuid.UUID(bytes=x.bytes)

通过上述方法,可以轻松生成和验证UUID的各个版本,满足不同场景的需求。

上一篇:Python快速转换numpy数组中Nan和Inf的方法
下一篇:港中大、商汤开源目标检测工具包mmdetection,对比Detectron如何?

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月30日 09时09分54秒