短 URL 系統是怎麼設計的?

時間 2021-05-08 19:21:40

1樓:

2樓:

我之前自己寫的乙個短鏈結生成採用的方法比較詭異…1,隨機生成短鏈結

2,使用 Bloom Filter 檢測這個短鏈結是否存在3,假如存在返回步驟 1

因為Bloom Filter的速度還是可以的,所以這麼玩效果還湊合。

我實現的時候把過濾器用的bit串拆成了很多段,緩解了一下併發同步的問題。

其實我就是想寫個小東西試試Bloom Filter。據我自己觀察,只要短URL的位數夠長,在一開始隨機生成的衝突率還是很低的,一般的KV儲存直接查詢效能也足以支撐了。

3樓:王川

如果這是道面試題,我會推薦使用YOURLS,已有現成和完善的解決方案,重複造輪子的事真心意義不大。短網域名稱的目的是啥?

1、縮短URL滿足字數限制。

2、美觀。

3、統計需要。

要求能夠滿足高併發,各種風格的鏈結名,訪問量統計等功能

4樓:

1. 不要幻想使用壓縮演算法,對於URL這種不超過100bytes的字串,壓縮演算法的壓縮比通常都大於1。

2. 不要幻想使用Hash對映,因為Hash衝突是不可控的。當然,我們有解決Hash衝突的N種方法,但是這只會增加系統的複雜度。

其它觀點和iammutex基本一致。在整數(大整數)空間內分層,每層使用乙個auto increment的primary key,使用id->url的對映來進行儲存與查詢。

後台掛個redis就好了。(當然也可以造輪子

==Update:

親測,64Bit的Url簽名的衝突率非常低(Murmur64),並非不可以應用在系統中。

遊戲的劇情管理系統是怎麼設計的?

李小跳 處理管理的問題的話建議你多建幾個xml,用檔案結構去管理。可以是章節式 事件式的結構,例如第三章就是乙個單獨的資料夾,處於某個事件時就是這個資料夾下的某個檔案。基於角色身上的標籤資訊來生成路徑指向要檢索的檔案,如果同乙個事件也可以加步驟節點這種東西來搞定。不過這種節點不建議加太多,同乙個檔案...

Vue專案啟動後首頁URL帶的 該怎麼去掉

汪洋 import Vuefrom vue import Router from vue router import HelloWorld from components HelloWorld import Home from components Home Vue.use Router expor...

多核下作業系統的設計怎麼學習?

Lele wei cpu多核需要晶元支援硬體虛擬化,同時結合軟體虛擬化,以充分利用多核的效能。汽車平台還有多核硬體虛擬化和軟體虛擬化的操作,可以讓smp上同時跑乙個 多個guest os和乙個rtos,以滿足汽車對實時性和其他非實時性任務的需求,可以參考下green hills的解決方案,能滿足可靠...