亚洲精品国产精品乱码视色,下载应用成人电影AVapp,成人影院下载视频

      <track id="gfhue"><i id="gfhue"></i></track><input id="gfhue"></input>

      1. 更多精彩內(nèi)容,歡迎關(guān)注:

        視頻號
        視頻號

        抖音
        抖音

        快手
        快手

        微博
        微博

        php生成唯一uid的解決方法詳解

        導(dǎo)讀在用戶系統(tǒng)中,生成唯一uid,是很多初級程序員頭痛的事情,因?yàn)槟悴⒉荒鼙WC完全的唯一性,如果要保證唯一性,必須要查一次數(shù)據(jù)庫。本文將介紹php生成唯一uid的思路,希望能對大家有所幫助。

        一、生成唯一uuid

        二、生成唯一uid

        三、生成唯一uid的正確方法

        一、生成唯一uuid

        看到某些人會用uuid去代替用戶的uid

        從代碼中可以看出,通過unique生成一個以毫秒級時間戳為前綴的字符后md5加密

        再通過分隔符進(jìn)行分割后得到uuid

        這種方式雖然極大程度的避免了uid的重復(fù)

        但是生成的uid太長,足足36個字符,而且是混雜英文和數(shù)字符號的,可讀性很差

        而一般的uid中都是純數(shù)值組成的

        function?generateUUid($strtoupper?=?false)
        {
        ????$charid?=?call_user_func($strtoupper???'strtoupper'?:?'strtolower',?md5(uniqid(microtime(true),?true)));
        ????$hyphen?=?chr(45);
        ????$uuid?=?substr($charid,?0,?8)?.?$hyphen?.?substr($charid,?8,?4)?.?$hyphen?.?substr($charid,?12,?4)?.?$hyphen?.?substr($charid,?16,?4)?.?$hyphen?.?substr($charid,?20,?12);
        ????return?$uuid;
        }
        ?
        //結(jié)果:37f14a07-cb18-2e54-4e40-da1e2fa0456d
        二、生成唯一uid

        由于一般正常的uid都是純數(shù)值型的

        而要保證唯一性,必然要跟時間戳有關(guān)系,因此有了以下代碼

        為了盡可能的在同一秒中注冊人數(shù)的uid不同,將時間戳進(jìn)行打亂隨機(jī)排序,也不失為一個好辦法

        但是這種缺點(diǎn)就是,uid長度是固定的,無法進(jìn)行改變,雖然呢,打亂字符是一個很好的解決重復(fù)的方式

        但是事情無絕對,如果真的因?yàn)殡S機(jī)碰撞導(dǎo)致的uid相同該如何

        為了更保險起見,必然還是要走一次數(shù)據(jù)庫的查詢

        大大增加了數(shù)據(jù)庫的I/O壓力

        function?generateUid()
        {
        ????return?call_user_func('str_shuffle',?time());
        }
        ?
        //結(jié)果:4067524162
        三、生成唯一uid的正確方法

        雖然說上面的兩種方式并非不可取

        但是在大型公司必然不可取,一種是uid的格式必然純數(shù)值,所以uuid方式可以排除

        另外由于對數(shù)據(jù)庫的壓力起見,必然也不會采用第二種方式

        而最經(jīng)常采用的方式應(yīng)該是使用數(shù)據(jù)庫的主鍵索引,因?yàn)橹麈I索引必然唯一

        這里很多人會疑惑,主鍵索引不是會從1開始嗎,這uid會有1位數(shù)的?

        小了,格局小了,你可以設(shè)置主鍵索引的offset,讓他從100000開始,不就可以解決這個問題了嗎

        這時候有人又問,那主鍵索引增加不是有規(guī)律的嗎,比如插一條,會自增1

        這時候就可以設(shè)置主鍵索引的增長步長,讓他插入一條的步長不為1即可

        而為了讓uid看起來更加沒有關(guān)聯(lián)性,你可以設(shè)置步長為基數(shù),比如3

        這樣增長起來,就會是100000,100003,100006,100009,100012....

        補(bǔ)充

        php中生成標(biāo)準(zhǔn)uuid的方法

        UUID是指在一臺機(jī)器上生成的數(shù)字,它保證對在同一時空中的所有機(jī)器都是唯一的。

        通常平臺 會提供生成UUID的API。UUID按照開放軟件基金會(OSF)制定的標(biāo)準(zhǔn)計(jì)算,用到了以太網(wǎng)卡地址、納秒級時間、芯片ID碼和許多可能的數(shù)字。

        由以 下幾部分的組合:當(dāng)前日期和時間(UUID的第一個部分與時間有關(guān),如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相 同),時鐘序列,全局唯一的IEEE機(jī)器識別號(如果有網(wǎng)卡,從網(wǎng)卡獲得,沒有網(wǎng)卡以其他方式獲得),UUID的唯一缺陷在于生成的結(jié)果串會比較長。

        關(guān)于 UUID這個標(biāo)準(zhǔn)使用最普遍的是微軟的GUID(Globals Unique Identifiers)。

        在ColdFusion中可以用CreateUUID()函數(shù)很簡單的生成UUID,其格式為:xxxxxxxx-xxxx-xxxx- xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內(nèi)的一個十六進(jìn)制的數(shù)字。

        而標(biāo)準(zhǔn)的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)

        function?guid(){
        ?if?(function_exists('com_create_guid')){
        ??return?com_create_guid();
        ?}else{
        ??mt_srand((double)microtime()*10000);//optional?for?php?4.2.0?and?up.
        ??$charid?=?strtoupper(md5(uniqid(rand(),?true)));
        ??$hyphen?=?chr(45);//?"-"
        ??$uuid?=?chr(123)//?"{"
        ????.substr($charid,?0,?8).$hyphen
        ????.substr($charid,?8,?4).$hyphen
        ????.substr($charid,12,?4).$hyphen
        ????.substr($charid,16,?4).$hyphen
        ????.substr($charid,20,12)
        ????.chr(125);//?"}"
        ??return?$uuid;
        ?}
        }
        echo?guid();
        ?>

        到此這篇關(guān)于php生成唯一uid的解決方法詳解的文章就介紹到這了。

        ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

        為你推薦
        資訊專欄
        熱門視頻
        相關(guān)推薦
        php兩種基本的輸出方及實(shí)例詳解 PHP遍歷數(shù)組的6種方式總結(jié) JS截取字符串的三種方法詳解 Python常用的正則表達(dá)式處理函數(shù)詳解 一文秒懂python正則表達(dá)式常用函數(shù) python正則表達(dá)式語法學(xué)習(xí)筆記 Python&nbsp;垃圾回收機(jī)制詳解 Python實(shí)現(xiàn)城市公交網(wǎng)絡(luò)分析與可視化 Python數(shù)據(jù)分析處理(三)--運(yùn)動員信息的分組與聚合 基于Python實(shí)現(xiàn)PDF區(qū)域文本提取工具 詳解python的循環(huán) python實(shí)現(xiàn)新年倒計(jì)時實(shí)例代碼 Python實(shí)現(xiàn)消消樂小游戲 學(xué)習(xí)python的while循環(huán)嵌套 提升Python運(yùn)行速度的5個小技巧 Python按鍵或值對字典進(jìn)行排序 圖像檢索之基于vlfeat實(shí)現(xiàn)SIFT特征 python繪圖中的四個繪圖技巧 js中toString方法3個作用 信息系統(tǒng)項(xiàng)目管理師報考條件 PHP7中對十六進(jìn)制字符串處理的問題詳解 PHP對接抖音開發(fā)平臺接口的詳細(xì)教程 php7安裝mysqli實(shí)例講解 php去掉一維數(shù)組的鍵值的實(shí)例方法 PHP中empty()和isset()的區(qū)別介紹 PHP實(shí)現(xiàn)JWT的Token登錄認(rèn)證 php判斷時間戳是否為今天實(shí)例講解 PHP7 preg_replace出錯及解決辦法 五年班的學(xué)習(xí)計(jì)劃怎么寫 五年級的學(xué)習(xí)計(jì)劃 初中新學(xué)期學(xué)習(xí)計(jì)劃怎么寫 關(guān)于英語的學(xué)習(xí)計(jì)劃怎么寫 怎么寫暑假學(xué)習(xí)計(jì)劃書 4年級數(shù)學(xué)學(xué)習(xí)計(jì)劃怎么寫 后半學(xué)期的學(xué)習(xí)計(jì)劃怎么寫 上學(xué)期學(xué)習(xí)計(jì)劃怎么寫 五年級的學(xué)習(xí)計(jì)劃書怎么寫 小學(xué)一年級學(xué)習(xí)計(jì)劃怎么寫 暑假學(xué)習(xí)計(jì)劃表怎么寫 八年級學(xué)習(xí)計(jì)劃怎么寫 暑期學(xué)習(xí)計(jì)劃表怎么寫
        Top