python之uuid通用唯一标识符模块
长安古道马迟迟,高柳乱蝉嘶。夕阳岛外,秋风原上,目断四天垂。
归云一去无踪迹,何处是前期?狎兴生疏,酒徒萧索,不似少年时。
一、UUID的介绍:
UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, 命名空间, 随机数, 伪随机数来保证生成ID的唯一性, 有着固定的大小( 128 bit ). 它的唯一性和一致性特点使得可以无需注册过程就能够产生一个新的UUID. UUID可以被用作多种用途, 既可以用来短时间内标记一个对象, 也可以可靠的辨别网络中的持久性对象.
为什么要使用UUID?
很多应用场景需要一个id, 但是又不要求这个id 有具体的意义, 仅仅用来标识一个对象. 常见的例子有数据库表的id 字段. 另一个例子是前端的各种UI库, 因为它们通常需要动态创建各种UI元素, 这些元素需要唯一的id , 这时候就需要使用UUID了.
二、uuid模块的使用:
python的uuid模块提供UUID类和函数uuid1(), uuid3(), uuid4(), uuid5() 来生成1, 3, 4, 5各个版本的UUID ( 需要注意的是: python中没有uuid2()这个函数). 对uuid模块中最常用的几个函数总结如下:
uuid.uuid1(node, clock_seq) : 基于MAC地址,时间戳,随机数
基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。但由于使用该方法生成的UUID中包含有主机的网络地址, 因此可能危及隐私。 该函数有两个参数, 如果 node 参数未指定, 系统将会自动调用 getnode() 函数来获取主机的硬件地址. 如果 clock_seq 参数未指定系统会使用一个随机产生的14位序列号来代替uuid.uuid2()
算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。uuid.uuid3(namespace, name) : 基于名字的MD5散列值
通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。uuid.uuid4() : 基于随机数
通过随机数来生成UUID. 使用的是伪随机数有一定的重复概率uuid.uuid5(namespace, name) : 基于名字的SHA-1散列值
和uuid3基本相同,只不过采用的散列算法是sha1
三、uuid的简单使用:
import uuid name = 'wangjifei' namespace = uuid.NAMESPACE_OID print(uuid.uuid1()) print(uuid.uuid3(namespace,name)) print(uuid.uuid4()) print(uuid.uuid5(namespace,name))
42a5d474-d276-11e8-be0c-001cc2340bf8
1c0451f9-4b46-381a-8039-43ecc91bc0c0
c5207330-6c9c-4285-bcca-163e24aaeac3
41e1be5c-b568-5e5d-8ce2-f4609fd3bec5
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[爬虫+数据分析] 分析北京Python开发的现状
爬虫的第一步自然是从分析请求和网页源代码开始。从网页源代码中我们并不能找到发布的招聘信息。但是在请求中我们看到这样一条POST请求 如下图我们可以得知 url:https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false 请求方式:post result:为发布的招聘信息 totalCount:为招聘信息的条数 通过实践发现除了必须携带headers之外,拉勾网对ip访问频率也是有限制的。一开始会提示 '访问过于频繁',继续访问则会将ip拉入黑名单。不过一段时间之后会自动从黑名单中移除。 针对这个策略,我们可以对请求频率进行限制,这个弊端就是影响爬虫效率。 其次我们还可以通过代理ip来进行爬虫。网上可以找到免费的代理ip,但大都不太稳定。付费的价格又不太实惠。 具体就看大家如何选择了 1思路 通过分析请求我们发现每页返回15条数据,totalCount又告诉了我们该职位信息的总条数。 向上取整就可以获取到总页数。然后将所得数据保存到csv文件中。这样我...
- 下一篇
程序员的真实生活写照:拿命换钱
北京的西北角是个特别的区域,这里汇集了众多互联网及IT企业,实力雄厚的上市公司将自家logo悬挂在大厦的顶端,而刚起步的创业公司也会选择在这里租下一亩三分地。 中关村、上地、西二旗、后厂村……它们成为了一个个地标,而在这里工作的年轻人,总是第一时间被打上“码农”“程序员”的标签。在大家眼中,他们往往身着格子衬衫,头戴耳机身背双肩包,披星戴月地上下班,每天十几个小时面对着电脑屏幕。 西二旗地铁站 我们习惯把他们看作一个整体,从性格、着装到消费水平都大致定型。然而,他们也许曾在某个地铁站多次擦肩而过,但每个人心中的目标、理想和焦虑,都各不相同。 我把家从三环里搬到了六环外 老田今年28岁,北京生北京长,是个标准的“土著”。10年前的他大概没有想过,自己会来到当时名不见经传的后厂村工作。 2013年夏天,老田本科毕业,专业是当年正吃香的计算机与科学技术。他顺利地找到了一份某大型电信公司的内勤工作,但入职后发现,工作的内容与所学的专业知识并无相关。 “就是天天处理人际关系,没别的。”他回忆道。 不是没有考虑过换行,老田曾经要求过调岗,但却在面试的时候受了挫。“对方本来要问我一个专业问题,后来突...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路