## ?導(dǎo)入模塊
import uuid
## ?
概述:UUID是128位的全局唯一標(biāo)識(shí)符柔吼,通常由32字節(jié)的字符串表示拇派。它可以保證時(shí)間和空間的唯一性,也稱為GUID昧甘,全稱為: UUID ——Universally Unique IDentifierPython 中叫 UUID GUID —— Globally Unique IDentifier C# 中叫 GUID?
?它通過MAC地址、時(shí)間戳战得、命名空間充边、隨機(jī)數(shù)、偽隨機(jī)數(shù)來保證生成ID的唯一性常侦。
?UUID主要有五個(gè)算法浇冰,也就是五種方法來實(shí)現(xiàn):
?1、uuid1()——基于時(shí)間戳 由MAC地址聋亡、當(dāng)前時(shí)間戳肘习、隨機(jī)數(shù)生成∑戮螅可以保證全球范圍內(nèi)的唯一性漂佩, 但MAC的使用同時(shí)帶來安全性問題,局域網(wǎng)中可以使用IP來代替MAC罪塔。
?2投蝉、uuid2()——基于分布式計(jì)算環(huán)境DCE(Python中沒有這個(gè)函數(shù)) 算法與uuid1相同,不同的是把時(shí)間戳的前4位置換為POSIX的UID征堪。 實(shí)際中很少用到該方法墓拜。?
?3、uuid3()——基于名字的MD5散列值 通過計(jì)算名字和命名空間的MD5散列值得到请契,保證了同一命名空間中不同名字的唯一性咳榜, 和不同命名空間的唯一性,但同一命名空間的同一名字生成相同的uuid爽锥。 4涌韩、uuid4()——基于隨機(jī)數(shù) 由偽隨機(jī)數(shù)得到,有一定的重復(fù)概率氯夷,該概率可以計(jì)算出來臣樱。
?5、uuid5()——基于名字的SHA-1散列值 算法與uuid3相同,不同的是使用 Secure Hash Algorithm 1?
算法使用方面:
?首先雇毫,Python中沒有基于DCE的玄捕,所以u(píng)uid2可以忽略;
?其次棚放,uuid4存在概率性重復(fù)枚粘,由無(wú)映射性,最好不用飘蚯;
?再次馍迄,若在Global的分布式計(jì)算環(huán)境下,最好用uuid1局骤;
?最后攀圈,若有名字的唯一性要求,最好用uuid3或uuid5峦甩。
print(uuid.uuid1())
print(uuid.uuid3(uuid.NAMESPACE_DNS,'textname'))
print(uuid.uuid4())
print(uuid.uuid5(uuid.NAMESPACE_DNS,'textname'))