public class idgenerator
public idgenerator(long processid)
this.processid = processid;
}protected long timegen()
public synchronized long nextid()
// 剛剛生成的時間戳跟上次的時間戳一樣,則需要生成乙個sequence序列號
if (ts == lastts)
// 如果ts>lastts,時間戳序列已經不同了,此時可以不必生成sequence了,直接取0
} else
// 更新lastts時間戳
lastts = ts;
return ((ts - begints) << (processidbits + sequencebits)) | (processid << sequencebits) | sequence;
}public long nextshortid()
return shortid;
}protected long nextts(long lastts)
return ts;}}
試一下這個演算法的效率:
public static void main(string args) throws exception
system.out.println(set.size());
system.out.println(system.currenttimemillis() - start);
}結果:
set.size(): 100000time:115
php 生成唯一ID
function guid factor prefix suffix 生成因子 機器毫秒,使用者瀏覽器與作業系統資訊,使用者ip,隨機因子,及自定義 factor 因子 原理 自定義 factor 因子 例如可使用使用者 user id 模組標識 product,order.字首 prefix 可用...
php生成唯一id
網上查了下,有很多的方法 1 md5 time mt rand 1,1000000 這種方法有一定的概率會出現重複 2 php內建函式uniqid uniqid 函式基於以微秒計的當前時間,生成乙個唯一的 id.w3school參考手冊有一句話 由於基於系統時間,通過該函式生成的 id 不是最佳的。...
MySql唯一ID生成
前陣子,一直在折騰阿里雲。寫的一些文章也放到自己的wordpress部落格上了。但自己前陣子在做系統更換操作的時候未備份磁碟,大部分心血付諸東流。真是乙個悲傷的故事。現在決定用.net搞搞自己的部落格。正好把wordpress給拋棄掉。言歸正傳,這個唯一號類似自增id,自增id雖然好用,但進行資料庫...