短域名生成的算法?短域名生成的優(yōu)勢(shì)
??什么是短域名
??短域名(Short URL) ,顧名思義就是在形式上比較短的域名。通常用的是asp或者php轉(zhuǎn)向,在Web 2.0的今天,不得不說(shuō),這是一個(gè)潮流。目前已經(jīng)有許多類似服務(wù),借助短網(wǎng)址您可以用簡(jiǎn)短的網(wǎng)址替代原來(lái)冗長(zhǎng)的網(wǎng)址,讓使用者可以更容易的分享鏈接。
??短域名生成的優(yōu)勢(shì)
??通過(guò)新網(wǎng),我們了解到,現(xiàn)在的很多鏈接由于需要帶上很多參數(shù)來(lái)提供業(yè)務(wù)所需的數(shù)據(jù),所以往往非常冗長(zhǎng),而相應(yīng)地轉(zhuǎn)換成短網(wǎng)址后能帶來(lái)很多益處:
??在分發(fā)和使用的時(shí)候更方便、清爽
??更好地適應(yīng)微博、短信等有字?jǐn)?shù)限制的場(chǎng)景
??降低生成二維碼的復(fù)雜度,提升掃碼識(shí)別率
??可以一定程度上隱藏部分參數(shù),比如 aff 等
??能夠?qū)崿F(xiàn)鏈接跳轉(zhuǎn)的跟蹤和各維度數(shù)據(jù)統(tǒng)計(jì)
??原網(wǎng)址失效后可以不改變短網(wǎng)址,只修改跳轉(zhuǎn)關(guān)系
??個(gè)性短網(wǎng)址更有利于品牌建設(shè)和營(yíng)銷
??短域名生成的算法
??這個(gè)算法就是把長(zhǎng)網(wǎng)址,用MD5進(jìn)行哈希得到一個(gè)128位的16進(jìn)制字符串,然后把128位的MD分成4組,對(duì)應(yīng)的4組候選短鏈接;把每一組的32位的數(shù),將它與0x3FFFFFFF進(jìn)行位與運(yùn)算,取其低30位的數(shù)據(jù)。把得到的值與0x0000003D進(jìn)行位與運(yùn)算,再把得到的結(jié)果當(dāng)成下標(biāo)在定義的隨機(jī)字符串列表里面獲取真正的字符串,再把原數(shù)字右移5位進(jìn)行相同操作,重復(fù)進(jìn)行6次得到6個(gè)字符,即組成一個(gè)候選短鏈接地址, 然后根據(jù)自己的業(yè)務(wù)返回4個(gè)后選中的某一個(gè)即可。
??由于MD5的哈希,可能會(huì)hash沖突的,我采用的的就是利用一個(gè)存了a-z,A-Z,0-1的字符串的數(shù)組,再把hash值做與運(yùn)算,把得到的值當(dāng)下標(biāo)去數(shù)組去獲取字符串組成短鏈接。
??開放定址法
??①:線性探查法:
??線性探查發(fā)會(huì)查找發(fā)生沖突周圍+1,-1,+2,-2…地址的儲(chǔ)存空間直到找到地址為止。但線性探測(cè)法可能會(huì)導(dǎo)致數(shù)組內(nèi)相鄰單元中的數(shù)據(jù)元素會(huì)趨近形成聚類,從而使后續(xù)單元探查時(shí)間變長(zhǎng)且效率更低。
??②:平方探查法:
??和上面的線性探查法相同發(fā)生沖突會(huì)不過(guò)是在加上1的平方,減去1的平方…一直查找直到找到儲(chǔ)存的地址為止。
??拉鏈法
??每次發(fā)生沖突時(shí),用鏈表來(lái)儲(chǔ)存數(shù)據(jù),不過(guò)缺點(diǎn)是假如很多哈希值相同的數(shù)據(jù)時(shí)會(huì)儲(chǔ)存到同一個(gè)鏈表中,會(huì)使查找變成線性。
??再哈希法
??發(fā)生沖突就再次使用另一個(gè)哈希函數(shù)計(jì)算地址直到找到地址為止。
??建立一個(gè)公共溢出區(qū)
??當(dāng)發(fā)生哈希沖突之后將沖突的值都放在另一個(gè)地方(數(shù)組等)。
??分布式發(fā)號(hào)器
??分布式系統(tǒng)中,產(chǎn)生唯一流水號(hào)的服務(wù)系統(tǒng)
??通過(guò)以上的介紹,相信大家對(duì)于短域名生成的相關(guān)內(nèi)容都有了一定的了解,對(duì)于短域名其本身確實(shí)存在很多合理和優(yōu)勢(shì)的地方,大家如何還想繼續(xù)了解短域名的相關(guān)內(nèi)容,可以登錄新網(wǎng)進(jìn)行學(xué)習(xí)和了解。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科