go語言實現短連接生成算法

短連接服務git

在一些應用的分享文案中,常常須要包含一個打開實際頁面的連接,而這個連接可能會很是的長(由於可能會有不少不少參數。。)這樣的分享文案不只不夠美觀,並且在一些平臺會受到限制,好比weibo的140字。這時候咱們就須要採用一個短連接服務了。github

短鏈服務其實是對長連接的一個1對N映射。在訪問短鏈的時候,經過應用或web服務器進行跳轉,就能訪問到實際的頁面。咱們只需將長鏈完成映射,存儲這樣的對應關係,就實現了短鏈生成服務。web

算法算法

將任意一條長連接映射爲6位字符長度的字符串,而不會形成短連接的重複。(不是絕對的,在一個很大數量級的數值以內)數組

  1. 將原長連接進行md5校驗和計算,生成32位字符串。
  2. 將32位字符串每8位劃分一段,獲得4段子串。將每一個字串(16進制形式)轉化爲整型數值,與0x3FFFFFFF(30位1)按位與運算,生成一個30位的數值。
  3. 將上述生成的30位數值按5位爲單位依次提取,獲得的數值與0x0000003D按位與,獲取一個0-61的整型數值,做爲從字符數組中提取字符的索引。獲得6個字符就生成了一個短鏈。
  4. 4段字串共能夠生成4個短鏈。

實現服務器

https://github.com/by-zhang/s... (求star。。)url

相關文章
相關標籤/搜索