全網最通俗易懂的【短連接】入門

前言

只有光頭才能變強。git

文本已收錄至個人GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3ygithub

最近接了一個需求,涉及到了短連接的相關的知識,因而去查閱了相關的資料,在這裏給你們整理分享一下。算法

1、短連接介紹

舉個例子,如今個人GitHub的地址是這個:https://github.com/ZhongFuCheng3y/3y (36個字符)瀏覽器

我經過百度的短連接服務能夠將上面的地址轉成https://dwz.cn/LwlrfG4j(23個字符)服務器

轉短連接

轉短連接學習

那我爲何要將原有的URL轉成較短的連接呢?好比咱們發短信提醒用戶去XXX,XXX有優惠活動,在文案上每每會帶有一個連接進行跳轉,方便用戶快速去到對應的活動落地頁。編碼

而短信的發送是須要成本的,短信的成本主要有兩方面組成:url

  1. 發送的人數(發的人越多,天然短信的花費就越大,這個我就不解釋了)
  2. 短信發送的字數(好比,文案總字數超過70個字,那就算兩條短信計費,超過140個字就算三條短信計費)

因此在發送短信給用戶時:要麼就投放更加精準優質的用戶,以便控制好發送的數量,要麼就儘量控制文案的字數。spa

顯然,若是在短信上配上普通的URL,那真正的文案可寫的字數就沒多少了。因而咱們能夠發現,各大公司的短信推送的URL都是短連接.net

短連接案例之一

短連接案例之一

好比在一些平臺發佈消息時會限制字數,若是咱們的發的URL過長就很容易就被限制住了:

限制字數

限制字數

使用短連接的好處:短、字符少、美觀、便於發佈、傳播

2、短連接它是怎麼幹的呢?

咱們先回到生成好的短鏈上https://dwz.cn/LwlrfG4j

雖然這個連接看起來有點奇怪,但他終究仍是一個連接,從URL的特徵咱們能夠分出:

  • dwz.cn是域名
  • LwlrfG4j是參數

域名

域名

咱們在瀏覽器請求一下短連接看看是什麼狀況:

302跳轉

302跳轉

短連接的原理其實就是:

  • 將長連接經過必定的手段生成一個短連接
  • 訪問短連接時實際訪問的是短連接服務器,而後根據短連接的參數找回對應的長連接
  • 重定向跳轉

大體原理圖

大體原理圖

2.1 核心的要解決的問題

經過上面的分析咱們能夠知道的是,咱們實際核心要作的是怎麼從LwlrfG4j相似這樣的參數找到對應的完整URL:https://github.com/ZhongFuCheng3y/3y

腦子第一時間想到的是:能不能經過一個壓縮算法將https://github.com/ZhongFuCheng3y/3y壓縮更小的字符?

顯然,不能,壓縮算法大多數都是針對大文本才奏效,自己的URL也不見得有多大…壓縮出來確定比原來的URL還大。

腦子第二時間想到的是:能不能用Hash算法?仍是不能,用Hash存在哈希碰撞的問題

  • 什麼是哈希碰撞?兩個不相同的字符串(值)進行Hash操做後,獲得的哈希值相同。
  • 這就意味着,兩個徹底不一樣的長鏈獲得的哈希值如出一轍,而個人短鏈是依賴哈希值去找到長鏈的(此時一個短鏈對應多個長鏈,這不合理)。

腦子第三時間想到的是?腦子想不到了

如今業內用得比較多的是發號器(ID自增)+62進制編碼

  • 好比,我將https://github.com/ZhongFuCheng3y/3y看做是10000,而後將10000進行62進制編碼獲得的結果是:2Bi

那個人短鏈URL就能夠弄成https://3y.cn/2Bi,其中3y.cn是域名,2Bi是通過62進制轉換後的參數。

爲何要用62進制轉換?64進制轉換卻是聽得多了

  • 62進制轉換是由於62進制轉換後只含數字+小寫+大寫字母。而64進制轉換會含有/,+這樣的符號(不符合正常URL的字符)
  • 10進制轉62進制能夠縮短字符,若是咱們要6位字符的話,已經有560億個組合了。

6位字符

6位字符

總結:

  • ID自增後,轉成62進制,在DB保存映射關係,生成短連接

短連接過程

短連接過程

3、短信的連接直接跳轉到APP

如下內容來源:https://sq.163yun.com/blog/article/158315832059072512 ,做者:西西吹雪

綜合起來就是:

  • 經過 Deep Links(iOS 則是Universal Links),能夠實現點擊短信連接直接喚起 App;
  • 若是系統由於各類緣由不支持 Deep Links,備選方案是 intent filter,不過會出彈框讓用戶選擇用哪一個 App 打開連接;
  • 若是用戶沒有選擇咱們的 App 而是選擇了瀏覽器打開,則經過 自定義 scheme 嘗試喚起 App;
  • 因爲技術和成本問題,咱們忽略不支持 自定義 scheme 的瀏覽器。

短信連接喚醒APP

短信連接喚醒APP

最後

這篇文章主要是簡單瞭解一下短連接的相關知識,一個完備的短鏈服務確定還要考慮更多的事,這裏我就不展開了(畢竟我也沒真正寫過,能夠在下方的連接繼續學習)~

更多資料查閱:

本已收錄至個人GitHub精選文章,歡迎Starhttps://github.com/ZhongFuCheng3y/3y

樂於輸出乾貨的Java技術公衆號:Java3y。公衆號內有300多篇原創技術文章、海量視頻資源、精美腦圖,關注便可獲取!

轉發到朋友圈是對我最大的支持!

轉發到朋友圈是對我最大的支持!

很是感謝人才們能看到這裏,若是這個文章寫得還不錯,以爲「三歪」我有點東西的話 求點贊 求關注️ 求分享👥 求留言💬 對暖男我來講真的 很是有用!!!

創做不易,各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!

相關文章
相關標籤/搜索