長 URL 轉短連結的簡單設計與實現

發表於2017-03-20

非常多的時候,我們不想在分享的時候採用長長的連結,主要的原因有:

  1. URL太長佔顯示空間、難於輸入,轉成二維碼點點小,難於識別
  2. 長的URL提供的資訊太多,不利於資訊保安,甚至容易造成倒庫
  3. 其他理由……

今天的理由不是重點,重點是如何用一點點程式碼實現這個短連結的生成。

我們的注意點有:

  1. 生成的短連結地址長度可調整,畢竟不能因為4位、5位、6位的長度變化就讓我們重新寫一套程式
  2. 要有防衝突處理機制,不能因為演算法導致兩個長連結地址生成的短地址一樣就把前一個覆蓋掉
  3. 有時候,一個地址用過之後覺得不需要使用了,哪麼這個地址失效之後,短地址可以有效收回。

首先設計介面

只是個示例,註釋比較簡陋,接下來是抽象類實現,把公共的內容放這裡

實際的需要在資料庫層實現,這裡在記憶體裡面儲存的實現一個意思一下

弄點測試程式碼,試試看效果怎麼樣

這裡是執行結果

感覺還可以,當然裡面還有一些不完善的地方

  1. 當產生的數量達到一定程度的時候,再獲取時由於衝突比較大,導致效能會降低
  2. 因此如果是小型系統,建議採用4個長度,大型系統建議採用6個長度
  3. 現在還沒有多長時間之後自動失效的API,建議新增
  4. 需要實現支援序列化的方案
  5. 現在沒有同步處理,實際實現中需要考慮

這個只是化幾分鐘展示一個思路,並沒有經過系統的思考的驗證,正式系統請慎重使用。

相關文章