Python 标准库 —— uuid(生成唯一 ID)
有時我們在百度貼吧,在一個網站,保存網頁上的一些圖片時,圖片名有時會是一串很長的數字和字母組成的,但無一例外,圖像之間不會出現重名。這個唯一的 id,一般通過 uuid 的方式獲得,uuid 根據的是從 1970年1月1日到現在經歷的秒數。
1. 基礎
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。注意 uuid1() 返回的不是普通的字符串,而是一個 uuid 對象,其內含有豐富的成員函數和變量。
2、uuid2()——基于分布式計算環境DCE(Python中沒有這個函數)
算法與uuid1相同,不同的是把時間戳的前 4 位置換為 POSIX 的 UID。
實際中很少用到該方法。3、uuid3()——基于名字的MD5散列值
通過計算名字和命名空間的MD5散列值得到,保證了同一命名空間中不同名字的唯一性,
和不同命名空間的唯一性,但同一命名空間的同一名字生成相同的uuid。4、uuid4()——基于隨機數
由偽隨機數得到,有一定的重復概率,該概率可以計算出來。
5、uuid5()——基于名字的SHA-1散列值
算法與uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法
2. 實戰
使用方面:
首先,Python中沒有基于 DCE 的,所以uuid2可以忽略;
其次,uuid4存在概率性重復,由無映射性,最好不用;
再次,若在Global的分布式計算環境下,最好用uuid1;
最后,若有名字的唯一性要求,最好用uuid3或uuid5。
轉載于:https://www.cnblogs.com/mtcnn/p/9423425.html
總結
以上是生活随笔為你收集整理的Python 标准库 —— uuid(生成唯一 ID)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 GTK+/GNOME 3 环境下
- 下一篇: PHP基础知识--函数