文章目录

  • 1. 简介
  • 2. 五中算法
  • 3. 示例
    • 3.1 打印各个算法生成数
    • 3.2 格式化打印

1. 简介

UUID(全称为Universally Unique IDentifier)是128位的全局唯一标识符。UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。为了提高效率,常用的UUID可缩短至16位。保证在一定的空间和时间上的唯一性,通常定义用来做唯一标识对象。也称为GUID,全称为:
UUID —— Universally Unique IDentifier Python 中叫 UUID
GUID —— Globally Unique IDentifier C# 中叫 GUID

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

2. 五中算法

  • 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。

3. 示例

3.1 打印各个算法生成数

# -*- coding: utf-8 -*-import uuidname = "test_name"
namespace = "test_namespace"print uuid.uuid1()  # 带参的方法参见Python Doc
print uuid.uuid3(namespace, name)
print uuid.uuid4()
print uuid.uuid5(namespace, name)

3.2 格式化打印

root@test1:~/python/uuid# cat test3.py
#! /usr/bin/env python3
import uuidi = 1while(i< 6):print( "No-", i, ' ', uuid.uuid4)i = i + 1
root@test1:~/python/uuid# python test3.py
('No-', 1, ' ', <function uuid4 at 0x7f90c0497488>)
('No-', 2, ' ', <function uuid4 at 0x7f90c0497488>)
('No-', 3, ' ', <function uuid4 at 0x7f90c0497488>)
('No-', 4, ' ', <function uuid4 at 0x7f90c0497488>)
('No-', 5, ' ', <function uuid4 at 0x7f90c0497488>)

python uuid详解相关推荐

  1. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  2. python区块链开发_Fabric区块链Python开发详解

    Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...

  3. python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...

    上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一.    案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...

  4. 【python】详解类class的继承、__init__初始化、super方法

    原文链接; https://blog.csdn.net/brucewong0516/article/details/79121179?utm_medium=distribute.pc_relevant ...

  5. python与golang_Golang与python线程详解及简单实例

    Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...

  6. python 最小二乘法_最小二乘法及其python实现详解

    最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...

  7. 【python】详解multiprocessing多进程-Pool进程池模块(二)

    [python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...

  8. 【python】什么是序列,Python序列详解

    什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...

  9. python多线程详解 Python 垃圾回收机制

    文章目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 二.线程实现 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 ...

最新文章

  1. ASP.NET MVC实现一个用户只能登录一次 单用户登录
  2. C# 字符串操作学习总结
  3. 【网络知识】4. linux抓包工具tcpdump的使用
  4. 如何用windbg查看_eprocess结构
  5. 数据库改名方法-第三种脚本
  6. 备忘录AIX主机下用SHELL脚本编写FTP传某个目录下的文件到LINUX主机
  7. Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
  8. 计算机组成原理平均cpi怎么算_【计算机考研】每日一题数网操组130
  9. Linux笔记常规部分总结(待续)
  10. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置
  11. 2012年中国大学最新排名
  12. 认知神经学lecture1---感受与感知
  13. android 拨打带有分机号的电话
  14. springboot日志配置logback-spring.xml
  15. Flutter高仿微信-第26篇-新的朋友
  16. vb.net获取汉字串拼音首字母
  17. c++语言绝对值函数,由C++绝对值函数想到的 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  18. 1. Win 10 :在此处打开命令窗口
  19. android 远程控制 盒子,真正远程控制你的盒子(局域网和互联网)
  20. android studio json格式化,Android json格式化显示,可展开与折叠

热门文章

  1. 第五届蓝桥杯决赛B组C/C++——Log大侠
  2. 新手小白怎么做抖音运营,怎么在电脑上玩抖音呢?
  3. python list转换成树形结构_列表数据(包含父节点关系)转化为树形结构
  4. 用EXCEL预处理一个多准则电影评分数据集
  5. Linux如何赋予普通用户权限
  6. java中的编译器是什么,java – JVM中的JIT编译器究竟是什么?
  7. 余华:把悲伤留给读者,把快乐留给自己
  8. matlab中用于数据的标准化处理的zscore函数
  9. 这9个免费可商用图片素材下载网站,凭什么得到知乎10万+用户推荐!!!
  10. C++对象的内存分析(4)