只有光頭才能變強。git
文本已收錄至個人GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3ygithub
最近接了一個需求,涉及到了短連接的相關的知識,因而去查閱了相關的資料,在這裏給你們整理分享一下。算法
舉個例子,如今個人GitHub的地址是這個:https://github.com/ZhongFuCheng3y/3y
(36個字符)瀏覽器
我經過百度的短連接服務能夠將上面的地址轉成https://dwz.cn/LwlrfG4j
(23個字符)服務器
轉短連接學習
那我爲何要將原有的URL轉成較短的連接呢?好比咱們發短信提醒用戶去XXX,XXX有優惠活動,在文案上每每會帶有一個連接進行跳轉,方便用戶快速去到對應的活動落地頁。編碼
而短信的發送是須要成本的,短信的成本主要有兩方面組成:url
因此在發送短信給用戶時:要麼就投放更加精準優質的用戶,以便控制好發送的數量,要麼就儘量控制文案的字數。spa
顯然,若是在短信上配上普通的URL,那真正的文案可寫的字數就沒多少了。因而咱們能夠發現,各大公司的短信推送的URL都是短連接。.net
短連接案例之一
好比在一些平臺發佈消息時會限制字數,若是咱們的發的URL過長就很容易就被限制住了:
限制字數
使用短連接的好處:短、字符少、美觀、便於發佈、傳播。
咱們先回到生成好的短鏈上https://dwz.cn/LwlrfG4j
雖然這個連接看起來有點奇怪,但他終究仍是一個連接,從URL的特徵咱們能夠分出:
dwz.cn
是域名LwlrfG4j
是參數域名
咱們在瀏覽器請求一下短連接看看是什麼狀況:
302跳轉
短連接的原理其實就是:
手段
生成一個短連接大體原理圖
經過上面的分析咱們能夠知道的是,咱們實際核心要作的是怎麼從LwlrfG4j
相似這樣的參數找到對應的完整URL:https://github.com/ZhongFuCheng3y/3y
腦子第一時間想到的是:能不能經過一個壓縮算法將https://github.com/ZhongFuCheng3y/3y
壓縮更小的字符?
顯然,不能,壓縮算法大多數都是針對大文本才奏效,自己的URL也不見得有多大…壓縮出來確定比原來的URL還大。
腦子第二時間想到的是:能不能用Hash算法?仍是不能,用Hash存在哈希碰撞的問題
腦子第三時間想到的是?腦子想不到了。
如今業內用得比較多的是發號器(ID自增)+62進制編碼:
https://github.com/ZhongFuCheng3y/3y
看做是10000
,而後將10000
進行62進制編碼獲得的結果是:2Bi
那個人短鏈URL就能夠弄成https://3y.cn/2Bi
,其中3y.cn
是域名,2Bi
是通過62進制轉換後的參數。
爲何要用62進制轉換?64進制轉換卻是聽得多了
/
,+
這樣的符號(不符合正常URL的字符)6位字符
總結:
短連接過程
如下內容來源:https://sq.163yun.com/blog/article/158315832059072512 ,做者:西西吹雪
綜合起來就是:
intent filter
,不過會出彈框讓用戶選擇用哪一個 App 打開連接;自定義 scheme
嘗試喚起 App;自定義 scheme
的瀏覽器。短信連接喚醒APP
這篇文章主要是簡單瞭解一下短連接的相關知識,一個完備的短鏈服務確定還要考慮更多的事,這裏我就不展開了(畢竟我也沒真正寫過,能夠在下方的連接繼續學習)~
更多資料查閱:
本已收錄至個人GitHub精選文章,歡迎Star:https://github.com/ZhongFuCheng3y/3y
樂於輸出乾貨的Java技術公衆號:Java3y。公衆號內有300多篇原創技術文章、海量視頻資源、精美腦圖,關注便可獲取!
轉發到朋友圈是對我最大的支持!
很是感謝人才們能看到這裏,若是這個文章寫得還不錯,以爲「三歪」我有點東西的話 求點贊 求關注️ 求分享👥 求留言💬 對暖男我來講真的 很是有用!!!
創做不易,各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!