專(zhuān)業(yè)的短鏈接生成工具
鏈接域名
短網(wǎng)址有效期
較長(zhǎng)URL簡(jiǎn)短化,在線生成短鏈接系統(tǒng)
更新時(shí)間:2025-4-21 01:16:26 作者:愛(ài)短鏈
短鏈接系統(tǒng)可以將長(zhǎng) URL URL 轉(zhuǎn)換為短 URL 字符串。短鏈接的優(yōu)點(diǎn)是易于傳播。適合在一些對(duì)字符串長(zhǎng)度有要求的場(chǎng)景下使用,比如短信、微博等,比如
設(shè)計(jì)要求
根據(jù)面試要求,需要設(shè)計(jì)短鏈接系統(tǒng),鏈接長(zhǎng)度盡量短,每天產(chǎn)生1億個(gè)網(wǎng)址,服務(wù)10年。
首先在線生成短鏈接,讓我們看看短鏈接的工作原理。
它是如何工作的?
當(dāng)我在 Chrome 上輸入短鏈接時(shí)會(huì)發(fā)生什么?
打開(kāi)開(kāi)發(fā)者工具,可以看到服務(wù)器收到請(qǐng)求后,會(huì)將短鏈接轉(zhuǎn)換為長(zhǎng)鏈接,然后返回瀏覽器,進(jìn)行301重定向,請(qǐng)求長(zhǎng)鏈接地址。
另一個(gè)問(wèn)題,如何將長(zhǎng)鏈接轉(zhuǎn)換為短鏈接?
可以使用一些加密算法嗎?顯然不行,因?yàn)榧用芎笞址畷?huì)變長(zhǎng)。
哈希算法:
其實(shí)我們可以使用哈希算法和哈希表來(lái)實(shí)現(xiàn),如下
長(zhǎng)鏈接經(jīng)過(guò)哈希算法后,會(huì)生成一個(gè)固定長(zhǎng)度的哈希值key,即短鏈接的值,并存入哈希表中。
使用短鏈接查詢長(zhǎng)鏈接時(shí),只需要查詢哈希表即可。
以上是常用的哈希算法,至少8位。
我們需要多少個(gè)短鏈接?按照以上要求,每天產(chǎn)生1億個(gè)短鏈接,運(yùn)行10年,1億*365*10=3650億。
短鏈接的字符在[0-9,a-z,A-Z]之間在線生成短鏈接,共有62個(gè)不同的字符,可以計(jì)算出以下數(shù)據(jù)。
可見(jiàn),要滿足系統(tǒng)要求,短鏈路的長(zhǎng)度至少要7比特。實(shí)際上,許多短鏈接系統(tǒng)也是 7 位長(zhǎng)。有興趣的同學(xué)也可以看看米勒定律7±2。
上面的CRC32算法至少有8位。但是我們可以截?cái)嗲?7 位并丟棄最后一個(gè)。但是,可能存在哈希沖突的問(wèn)題。我們可以遞歸地為長(zhǎng)鏈接拼接一個(gè)值,直到不再發(fā)現(xiàn)沖突。當(dāng)然,也可以使用其他的哈希沖突解決方法。
Base 62 轉(zhuǎn)換
這是另一種常用的方法,Base 62字符由大寫(xiě)字母A-Z、小寫(xiě)字母a-z和數(shù)字0-9組成,共62位,如下
與 base 64 相比,base 62 僅少了 2 個(gè)字符 + 和 /。大家可以想想為什么我們這里不用base 64。
Base 62 與上述哈希算法不同。哈希算法根據(jù)長(zhǎng)鏈接計(jì)算哈希值,然后保存在哈希表中。而base 62需要為每個(gè)長(zhǎng)鏈接生成一個(gè)唯一的數(shù)字ID,如下
那么如何計(jì)算 ShortURL?因?yàn)閕d是唯一的十進(jìn)制數(shù),我們只需要把它轉(zhuǎn)成十六進(jìn)制,就和二進(jìn)制轉(zhuǎn)十進(jìn)制一樣。
如果有ID為11157,則轉(zhuǎn)換過(guò)程如下
最終短鏈接的值為。
總結(jié)
本文介紹了兩種實(shí)現(xiàn)短鏈接的方法在線生成短鏈接,分別是hash算法和base 62。
hash算法的特點(diǎn)是具有固定的短鏈接長(zhǎng)度,不需要生成唯一ID,可能會(huì)發(fā)生hash沖突。
base 62轉(zhuǎn)換的特點(diǎn)是長(zhǎng)度不固定,取決于ID的大小,1000轉(zhuǎn)換后為G8短鏈接系統(tǒng)可以把比較長(zhǎng)的URL網(wǎng)址轉(zhuǎn)換成簡(jiǎn)短的網(wǎng)址字符串,1000億轉(zhuǎn)換后為1l9Zo9o。還需要生成沒(méi)有哈希沖突問(wèn)題的唯一數(shù)字 ID。
以上就是關(guān)于《較長(zhǎng)URL簡(jiǎn)短化,在線生成短鏈接系統(tǒng)》的全部?jī)?nèi)容了,感興趣的話可以點(diǎn)擊右側(cè)直接使用哦!》》在線短鏈接生成器