在職場中,我們越來越發(fā)現(xiàn)短域名生成成為了很多人都需要知道的內(nèi)容和知識,這主要還是因?yàn)槎逃蛎旧淼膬?yōu)勢和好處所導(dǎo)致的,因此很多應(yīng)用場景對于短域名都有很多的需求,接下來我們就一起來了解一下短域名生成的相關(guān)知識。
什么是短域名
短域名(short url) ,顧名思義就是在形式上比較短的域名。通常用的是asp或者php轉(zhuǎn)向,在web 2.0的今天,不得不說,這是一個潮流。目前已經(jīng)有許多類似服務(wù),借助短網(wǎng)址您可以用簡短的網(wǎng)址替代原來冗長的網(wǎng)址,讓使用者可以更容易的分享鏈接。
短域名生成的優(yōu)勢
通過,我們了解到,現(xiàn)在的很多鏈接由于需要帶上很多參數(shù)來提供業(yè)務(wù)所需的數(shù)據(jù),所以往往非常冗長,而相應(yīng)地轉(zhuǎn)換成短網(wǎng)址后能帶來很多益處:
在分發(fā)和使用的時候更方便、清爽
更好地適應(yīng)微博、短信等有字?jǐn)?shù)限制的場景
降低生成二維碼的復(fù)雜度,提升掃碼識別率
可以一定程度上隱藏部分參數(shù),比如 aff 等
能夠?qū)崿F(xiàn)鏈接跳轉(zhuǎn)的跟蹤和各維度數(shù)據(jù)統(tǒng)計(jì)
原網(wǎng)址失效后可以不改變短網(wǎng)址,只修改跳轉(zhuǎn)關(guān)系
個性短網(wǎng)址更有利于品牌建設(shè)和營銷
短域名生成的算法
這個算法就是把長網(wǎng)址,用md5進(jìn)行哈希得到一個128位的16進(jìn)制字符串,然后把128位的md分成4組,對應(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個字符,即組成一個候選短鏈接地址, 然后根據(jù)自己的業(yè)務(wù)返回4個后選中的某一個即可。
由于md5的哈希,可能會hash沖突的,我采用的的就是利用一個存了a-z,a-z,0-1的字符串的數(shù)組,再把hash值做與運(yùn)算,把得到的值當(dāng)下標(biāo)去數(shù)組去獲取字符串組成短鏈接。
開放定址法
①:線性探查法:
線性探查發(fā)會查找發(fā)生沖突周圍+1,-1,+2,-2…地址的儲存空間直到找到地址為止。但線性探測法可能會導(dǎo)致數(shù)組內(nèi)相鄰單元中的數(shù)據(jù)元素會趨近形成聚類,從而使后續(xù)單元探查時間變長且效率更低。
②:平方探查法:
和上面的線性探查法相同發(fā)生沖突會不過是在加上1的平方,減去1的平方…一直查找直到找到儲存的地址為止。
拉鏈法
每次發(fā)生沖突時,用鏈表來儲存數(shù)據(jù),不過缺點(diǎn)是假如很多哈希值相同的數(shù)據(jù)時會儲存到同一個鏈表中,會使查找變成線性。
再哈希法
發(fā)生沖突就再次使用另一個哈希函數(shù)計(jì)算地址直到找到地址為止。
建立一個公共溢出區(qū)
當(dāng)發(fā)生哈希沖突之后將沖突的值都放在另一個地方(數(shù)組等)。
分布式發(fā)號器
分布式系統(tǒng)中,產(chǎn)生唯一流水號的服務(wù)系統(tǒng)
通過以上的介紹,相信大家對于短域名生成的相關(guān)內(nèi)容都有了一定的了解,對于短域名其本身確實(shí)存在很多合理和優(yōu)勢的地方,大家如何還想繼續(xù)了解短域名的相關(guān)內(nèi)容,可以登錄進(jìn)行學(xué)習(xí)和了解。