全栈工程师开发手册 (作者:栾鹏)
架构系列文章

简介

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs包中的UUID库找到实现。

uuid.py

UUID是128位的全局唯一标识符,通常由32字节的字符串表示。
它可以保证时间和空间的唯一性,也称为GUID,全称为:
UUID —— Universally Unique IDentifier Python 中叫 UUID
GUID —— Globally Unique IDentifier C# 中叫 GUID

它通过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 算法

使用方面:

首先,Python中没有基于DCE的,所以uuid2可以忽略;
其次,uuid4存在概率性重复,由无映射性,最好不用;
再次,若在Global的分布式计算环境下,最好用uuid1;
最后,若有名字的唯一性要求,最好用uuid3或uuid5。

测试demo


import uuidname = "test_name"
namespace = uuid.NAMESPACE_URL print(uuid.uuid1())  # 带参的方法参见Python Doc
print(uuid.uuid3(namespace, name))
print(uuid.uuid4())
print(uuid.uuid5(namespace, name))

uuid和python中的uuid.py的使用教程相关推荐

  1. 关于python中的setup.py

    关于python中的setup.py 2013-12-23 声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://lingxiankong.github.io/ 内容系本人及本人团队学 ...

  2. class括号里的object_听说你在找python中class的定义及使用教程?看这里就对了

    这篇文章主要介绍了python中class的定义及使用,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下. 类的定义 class classname[(父类名)]: ...

  3. linux设备的uuid,Linux设备中的UUID

    UUID简介 UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的.如果你在系统中启动的时候,使用盘符挂载时,可能找不到设备而加载失败,而使用UUID挂载时,则不会有这样的问题.( ...

  4. 详解Python中的setup.py

    软硬件环境 ubuntu 18.04 64bit anaconda with python 3.6 setup.py 前言 科技发展到今日,软件开发已经变得越来越复杂,再也不是单单靠一个人的力量就能够 ...

  5. python中summary_python summary_study.py

    #!/usr/bin/env python #-*- coding:utf-8 -*- import os,sys,time,shutil,re from _ast import Num from d ...

  6. python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块

    什么是正则: 正则表达式是可以匹配文本片段的模式. 正则表达式'Python'可以匹配'python' 正则是个很牛逼的东西,python中当然也不会缺少. 所以今天的Python就跟大家一起讨论一下 ...

  7. python 中cookie_Python 处理Cookie的菜鸟教程(一)Cookie库

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理.要在用户浏览器上安装cookie ...

  8. python中if控制语句_Python 极简教程(十二)逻辑控制语句 if else

    计算机软件之所以能够对不同的情况进行不同的处理,就是我们在编码的时候,通过逻辑控制语句,告诉软件在不同的情况下应该做什么处理. 比如我们在登录的时候,那么当你输入正确的账号密码和错误的账号密码,完全是 ...

  9. python中的real函数_RealPython基础教程:Python 基本数据类型介绍

    数据是业务的核心,任何编程语言都要支持各种数据类型.我们一起来学习一下 Python 支持的数据类型. Python 内置了 numeric.string 和 Boolean 等基本数据类型,同时也提 ...

最新文章

  1. php或js判断网站访问者来自手机或者pc端源码
  2. 海天学院的打造IT人才讲座准备
  3. delphi listview动态添加图片_网站图片如何优化适合收录
  4. 021Python路--单例设计模式
  5. 【多线程】ThreadPoolExecutor类源码解析----续(二进制相关运算)
  6. C++ Opengl绘制3D源码
  7. CentOS压缩命令zip
  8. android 取色器_音乐剪辑器手机版下载-音乐剪辑器app下载v9.10.15 安卓免费版
  9. [转帖]TLS 版本问题
  10. c语言判断字符配对,【C语言】判断花括号{}是否匹配
  11. 21位美国名校学生领袖在湖北了解中国媒体情况
  12. centos6.5下iscsi多路径配置
  13. 操作系统 汤子瀛版 读书总结
  14. [菜鸟必学]网络以及***命令行全收录
  15. 深度干货!一文读懂人脸识别技术(建议收藏)
  16. 松下A5伺服驱动器的A/B/Z相脉冲输出,怎样与PLC的输入端连接的?
  17. 矩阵特征值的求解例子
  18. 中国旅行包行业市场供需与战略研究报告
  19. 从SO_REUSEPORT服务器的一个弊端看多队列服务模型
  20. 软件设计师近10年上午真题解析知识点(并非绝对完整版)

热门文章

  1. python必备基础代码-Python初学者必会的3款代码编辑器
  2. 国内智能语音识别产业的增长,可能源于三大技术突破
  3. 语音识别及其定点DSP实现
  4. 字符流读取的全部方法
  5. element-ui主表格多选后 二级弹框表格默认全选数据
  6. vue中使用flexible.js并配合px2rem-loader实现移动端布局
  7. LIRe提供的图像检索算法的速度
  8. LIRe提供的6种图像特征描述方法的评测
  9. python怎么隔一个读取一个_Python实现中一次读取多个值的方法
  10. java 内嵌机制_[转] Java中public,private,final,static等概念的解读