文档章节

Python生成UUID(GUID)

yehun
 yehun
发布于 2017/03/30 12:53
字数 486
阅读 262
收藏 0

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

  • UUID —— Universally Unique IDentifier      Python 中叫 UUID
  • GUID —— Globally Unique IDentifier     C#中叫 GUID


傻傻的在百度查python怎么生成guid, 结果可想而知. 人家在python不叫guid, 叫uuid

它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。 
UUID主要有五个算法,也就是五种方法来实现: 

 

  • uuid1()——基于时间戳 由MAC地址、当前时间戳、随机数生成。可以保证全球范围内的唯一性, 但MAC的使用同时带来安全性问题,局域网中可以使用IP来代替MAC。 
  • uuid2()——基于分布式计算环境DCE(Python中没有这个函数) 算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。 实际中很少用到该方法。 
  • uuid3()——基于名字的MD5散列值 通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性, 和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。 
  • uuid4()——基于随机数 由伪随机数得到,有一定的重复概率,该概率可以计算出来。 
  • uuid5()——基于名字的SHA-1散列值 算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法 


使用方面: 
首先,Python中没有基于DCE的,所以uuid2可以忽略
其次,uuid4存在概率性重复,由无映射性,最好不用
再次,若在Global的分布式计算环境下,最好用uuid1

 

 

最后,若有名字的唯一性要求,最好用uuid3或uuid5

 

# -*- coding: utf-8 -*-
import uuid
name = "test_name"
namespace = "test_namespace"
print uuid.uuid1()
print uuid.uuid3(namespace, name)
print uuid.uuid4()
print uuid.uuid5(namespace, name)

© 著作权归作者所有

yehun
粉丝 8
博文 218
码字总数 137315
作品 0
长宁
高级程序员
私信 提问
Python uuid 模块

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

阿豪boy
2018/06/13
14
0
【Python模块】Python UUID模块

uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管...

等你的破船
2018/08/13
0
0
python之uuid模块详解

uuid是一种唯一标识,在许多领域作为标识用途。python的uuid模块就是用来生成它的。闲话不说,python提供的生成uuid的方法一共有4种,分别是: 从硬件地址和时间生成 .从md5算法生成 随机生成...

北方攻城师
2014/07/02
152
0
java UUID GUID获得方式的疑问?

我看一段生成JAVA的GUID,和UUID的代码,生成GUID的就不说了。下面生成UUID的我摘出来:方法如下: 通过这个方法可以看到UUID实际上是把GUID的小写字母转成大写字母以后,再加上四个“-”. 因...

烧饼加肉
2011/08/06
3.6K
7
Linux & Windows上生成UUID/GUID

http://blog.csdn.net/ghlfllz/article/details/17128393 Linux & Windows上生成UUID/GUID 请见如下相关文章: boost uuid uuid in linux vs uuid in window[Parser] 各种OS中生成UUID的方法......

心如明镜
2016/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
47分钟前
5
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
今天
97
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
今天
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部