当前位置: 首页 > news >正文

Python3之uuid模块

Python3之uuid模块

 

一. 简介

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

全称为:UUID--Universally Unique IDentifier  在python 中叫做UUID,在C#中称为 GUID--Globally Unique IDentifier.

它通过MAC地址,时间戳,命名空间,随机数,伪随机数来保证生成ID的唯一性。

  UUID主要有五个算法,也就是五种方法来实现。

(1). uuid1()---基于时间戳

  由MAC地址,当前时间戳,随机数字生成。可以保证全球范围内的唯一性。但是由于MAC地址的使用同时带来了安全问题,

局域网中可以使用IP来代替MAC。

(2). uuid2()---基于分布式计算环境DCE(python中没有这个函数)

  算法和uuid1相同,不同的是把时间戳的前4位换位POSIX的UID,实际中很少用到该方法。

(3). uuid3()---基于名字和MD5散列值

  通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,

但同一命名空间的名字生成相同的uuid。

(4). uuid4()---基于随机数

  由伪随机数得到,有一定的重复概率,该概率可以计算出来。

(5). uuid5()---基于名字的SHA-1散列值

  算法和uuid3()相同,不同的是使用Secure Hash Algorithm 1 算法。

 

使用经验:

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

 

二. 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import  uuid
 
# uuid1()
>>>  print (uuid.uuid1())
2cf0fa7e - 48d9 - 11e6 - 93fb - c03fd53413ef
# uuid3()
>>>  print (uuid.uuid3(uuid.NAMESPACE_DNS,  'test' ))
45a113ac - c7f2 - 30b0 - 90a5 - a399ab912716
# uuid4()
>>>  print (uuid.uuid4())
08bffbb6 - 05e1 - 41c1 - 8989 - 6aa07a4a5e5d
# uuid5()
>>>  print (uuid.uuid5(uuid.NAMESPACE_DNS,  'test' ))
4be0643f - 1d98 - 573b - 97cd - ca98a65347dd

  

转载于:https://www.cnblogs.com/meng-wei-zhi/p/8258812.html

相关文章:

  • Jquery学习笔记 - DOM操作
  • 【Java线程安全】 — ThreadLocal
  • python模块之collections模块
  • ElasticSearch集群介绍二
  • jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
  • 06人月神话阅读笔记
  • python之请求报文对比(假定最多二维字典)
  • spring_01介绍,搭建,概念,以及配置和属性注入
  • vue 手机端开发 小商铺 添加购物车 以及结算 功能
  • 【django基础】
  • iptables(1):iptables 基本概念
  • 爬虫-Beautiful Soup模块
  • python07-面向对象的程序设计
  • new Date()时间
  • LeetCode Find Permutation
  • Google 是如何开发 Web 框架的
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • mongo索引构建
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PHP变量
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SQLServer之创建显式事务
  • vue 配置sass、scss全局变量
  • vue-router 实现分析
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 包装类对象
  • 电商搜索引擎的架构设计和性能优化
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 你不可错过的前端面试题(一)
  • 如何选择开源的机器学习框架?
  • 通过git安装npm私有模块
  • 优秀架构师必须掌握的架构思维
  • 湖北分布式智能数据采集方法有哪些?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​决定德拉瓦州地区版图的关键历史事件
  • ###项目技术发展史
  • #NOIP 2014#Day.2 T3 解方程
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $jQuery 重写Alert样式方法
  • (10)STL算法之搜索(二) 二分查找
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (力扣)1314.矩阵区域和
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)用.Net的File控件上传文件的解决方案
  • ./和../以及/和~之间的区别
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net Memory Profiler的使用举例
  • .NET MVC 验证码
  • .net中调用windows performance记录性能信息
  • :not(:first-child)和:not(:last-child)的用法
  • @PreAuthorize注解