鐵公尺
本來是要給例項新增唯一標識,想了乙個偽隨機的方法:
# 我想的偽隨機辦法
# 用時間戳和隨機數來生成唯一數字id
import scipy as sp
import time
def create_id():
return time.time() + sp.rand()
if __name__ == "__main__":
id = create_id()
print id
網友建議使用現成的uuid庫,遂研究了一下。
資料:python官方doc:《20.15. uuid — uuid objects according to rfc 4122》
uuid的演算法介紹:《a universally unique identifier (uuid) urn namespace》
概述:
uuid是128位的全域性唯一識別符號,通常由32位元組的字串表示。
它可以保證時間和空間的唯一性,也稱為guid,全稱為:
uuid —— universally unique identifier python 中叫 uuid
guid —— globally unique identifier c# 中叫 guid
它通過mac位址、時...
本來是要給例項新增唯一標識,想了乙個偽隨機的方法:
# 我想的偽隨機辦法
# 用時間戳和隨機數來生成唯一數字id
import scipy as sp
import time
def create_id():
return time.time() + sp.rand()
if __name__ == "__main__":
id = create_id()
print id
網友建議使用現成的uuid庫,遂研究了一下。
資料:python官方doc:《20.15. uuid — uuid objects according to rfc 4122》
uuid的演算法介紹:《a universally unique identifier (uuid) urn namespace》
概述:
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。
2、uuid2()——基於分布式計算環境dce(python中沒有這個函式)
演算法與uuid1相同,不同的是把時間戳的前4位置換為posix的uid。
實際中很少用到該方法。
3、uuid3()——基於名字的md5雜湊值
通過計算名字和命名空間的md5雜湊值得到,保證了同一命名空間中不同名字的唯一性,
和不同命名空間的唯一性,但同一命名空間的同一名字生成相同的uuid。
4、uuid4()——基於隨機數
由偽隨機數得到,有一定的重複概率,該概率可以計算出來。
5、uuid5()——基於名字的sha-1雜湊值
演算法與uuid3相同,不同的是使用 secure hash algorithm 1 演算法
使用方面:
首先,python中沒有基於dce的,所以uuid2可以忽略;
其次,uuid4存在概率性重複,由無對映性,最好不用;
再次,若在global的分布式計算環境下,最好用uuid1;
最後,若有名字的唯一性要求,最好用uuid3或uuid5。
編碼方法:
# -*- coding: utf-8 -*-
import uuid
name = "test_name"
namespace = "test_namespace"
print uuid.uuid1() # 帶參的方法參見python doc
print uuid.uuid3(namespace, name)
print uuid.uuid4()
print uuid.uuid5(namespace, name)
(備忘)c 中生成全域性唯一id
c 在要生成唯一標示的id,不用自己去設計演算法,直接用boost中的boost uuids random generator 隨機生成器即可。生成隨機數 guid 即globally unique identifier 全球唯一識別符號 也稱作 uuid universally unique id...
Python使用UUID庫生成唯一ID
資料 python官方doc 20.15.uuid uuid objects according to rfc 4122 uuid的演算法介紹 a universally unique identifier uuid urn namespace 概述 uuid 是128位的全域性唯一識別符號,通常由...
Python使用UUID庫生成唯一ID
資料 python官方doc 20.15.uuid uuid objects according to rfc 4122 uuid的演算法介紹 a universally unique identifier uuid urn namespace 概述 uuid 是128位的全域性唯一識別符號,通常由...