python uuid详解
文章目录
- 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详解相关推荐
- Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)
文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...
- python区块链开发_Fabric区块链Python开发详解
Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...
- python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...
上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一. 案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...
- 【python】详解类class的继承、__init__初始化、super方法
原文链接; https://blog.csdn.net/brucewong0516/article/details/79121179?utm_medium=distribute.pc_relevant ...
- python与golang_Golang与python线程详解及简单实例
Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...
- python 最小二乘法_最小二乘法及其python实现详解
最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...
- 【python】详解multiprocessing多进程-Pool进程池模块(二)
[python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...
- 【python】什么是序列,Python序列详解
什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...
- python多线程详解 Python 垃圾回收机制
文章目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 二.线程实现 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 ...
最新文章
- ASP.NET MVC实现一个用户只能登录一次 单用户登录
- C# 字符串操作学习总结
- 【网络知识】4. linux抓包工具tcpdump的使用
- 如何用windbg查看_eprocess结构
- 数据库改名方法-第三种脚本
- 备忘录AIX主机下用SHELL脚本编写FTP传某个目录下的文件到LINUX主机
- Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
- 计算机组成原理平均cpi怎么算_【计算机考研】每日一题数网操组130
- Linux笔记常规部分总结(待续)
- CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置
- 2012年中国大学最新排名
- 认知神经学lecture1---感受与感知
- android 拨打带有分机号的电话
- springboot日志配置logback-spring.xml
- Flutter高仿微信-第26篇-新的朋友
- vb.net获取汉字串拼音首字母
- c++语言绝对值函数,由C++绝对值函数想到的 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- 1. Win 10 :在此处打开命令窗口
- android 远程控制 盒子,真正远程控制你的盒子(局域网和互联网)
- android studio json格式化,Android json格式化显示,可展开与折叠
热门文章
- 第五届蓝桥杯决赛B组C/C++——Log大侠
- 新手小白怎么做抖音运营,怎么在电脑上玩抖音呢?
- python list转换成树形结构_列表数据(包含父节点关系)转化为树形结构
- 用EXCEL预处理一个多准则电影评分数据集
- Linux如何赋予普通用户权限
- java中的编译器是什么,java – JVM中的JIT编译器究竟是什么?
- 余华:把悲伤留给读者,把快乐留给自己
- matlab中用于数据的标准化处理的zscore函数
- 这9个免费可商用图片素材下载网站,凭什么得到知乎10万+用户推荐!!!
- C++对象的内存分析(4)