方案一:自己寫演算法,把長url 轉換為短的 1--10,a--z,a--z 62個元素。這有點難啊,需要跑多久。並且對方輸入的url長度的不固定,所以,很難。
方案二:表的對映,使用k-v,形式。乙個短的key,去對映長的url,長的url依然還是那個url,只不過起了乙個外號(別名)。
注意:1.key的唯一性,
my function :我採用的是方案二,專案背景(公司的專案中使用,暫且不考慮惡意生成,模擬真實請求,生成短鏈結,占用資料池)。
實現,獲取長連線值,通過md5函式(壓縮),當作key,為了防止重複,我們再加上時間戳,這樣就有效的防止key的重複。
可能此處有人認為,這個生成的鏈結也不是太短。的確,在專案中發現,帶上網域名稱,再帶上key,這樣以來也不是太短,不過可以保證在100以內。
為了優化,我們可以考慮用最短的網域名稱,然後後面的key,可以不用md5,可以用插入之後返回的自增id,來當作唯一的key。自增主鍵索引,就保證了key的唯一性。這樣也有效。方法的實現的宗旨就是對映,保證k-v一一對應。
再次優化,針對併發的操作,可以使用佇列,或者加鎖,或則分庫分表。假如有兩個庫,那麼就求摸,來增加。
**很簡單,主要是實現思路,我的可能有沒考慮到的地方,多多指教。
/**
* @param $url
* name: shorturl
* date: 2018-02-05
*/function weizaojiaoshorturl($url,$org_id = '0')else
}else
}
public function index()else
}}
短 URL 系統是怎麼設計的?
tang minyi 的回答,也非常不錯,如果面試者這麼回答,我也會很高興的。對於我用詞比較激烈的問題,我面試時真實想法既是如此,也懶得潤色了。這個問題看到就想答。而這個問題,也是我現在招聘面試題裡面必考的一道,這一道題裡面有很多可考的地方,能夠相對綜合的考察候選人的功力。最爛的回答實現乙個演算法,...
設計短鏈結系統
短鏈結轉換是將任意乙個長的 url 如 轉為乙個固定長度的url,如itlym.cn sd5d1r,並可以通過訪問短 url 來跳轉到長url上。呼叫簡訊服務傳送簡訊時,會有字數限制或因字數長短收取不同費用。如何設計乙個可靠的短鏈結系統 由於url字元限制,推薦為大小寫字母加數字,共62種字元。一般...
系統設計 短鏈結系統 short url
最近看了一些關於短址 short url 方面的一些部落格,有些部落格說到一些好的東西,但是,也不是很全,所以,這篇部落格算是對其它部落格的乙個總結吧 短址,顧名思義,就是把長的 url 轉成短的 url,現在提供這種服務的有很多公司,我們以google家的 url shortener 服務 為例。...