日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最近学到的「短链接」知识

發布時間:2025/3/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最近学到的「短链接」知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

只有光頭才能變強。

文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y

最近接了一個需求,涉及到了短鏈接的相關的知識,于是去查閱了相關的資料,在這里給大家整理分享一下。

一、短鏈接介紹

舉個例子,現在我的GitHub的地址是這個:https://github.com/ZhongFuCheng3y/3y (36個字符)

我通過百度的短鏈接服務可以將上面的地址轉成https://dwz.cn/LwlrfG4j(23個字符)

轉短鏈接

那我為什么要將原有的URL轉成較短的鏈接呢?比如我們發短信提醒用戶去XXX,XXX有優惠活動,在文案上往往會帶有一個鏈接進行跳轉,方便用戶快速去到對應的活動落地頁。

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

  • 發送的人數(發的人越多,自然短信的花費就越大,這個我就不解釋了)

  • 短信發送的字數(比如,文案總字數超過70個字,那就算兩條短信計費,超過140個字就算三條短信計費)

  • 所以在發送短信給用戶時:要么就投放更加精準優質的用戶,以便控制好發送的數量,要么就盡可能控制文案的字數。

    顯然,如果在短信上配上普通的URL,那真正的文案可寫的字數就沒多少了。于是我們可以發現,各大公司的短信推送的URL都是短鏈接

    短鏈接案例之一

    比如在一些平臺發布消息時會限制字數,如果我們的發的URL過長就很容易就被限制住了:

    限制字數

    使用短鏈接的好處:短、字符少、美觀、便于發布、傳播

    二、短鏈接它是怎么干的呢?

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

    雖然這個鏈接看起來有點奇怪,但他終究還是一個鏈接,從URL的特征我們可以分出:

    • dwz.cn是域名

    • LwlrfG4j是參數

    域名

    我們在瀏覽器請求一下短鏈接看看是什么情況:

    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位字符

    總結:

    • ID自增后,轉成62進制,在DB保存映射關系,生成短鏈接

    短鏈接過程

    三、短信的鏈接直接跳轉到APP

    以下內容來源:

    https://sq.163yun.com/blog/article/158315832059072512

    作者:西西吹雪

    綜合起來就是:

    • 通過 Deep Links(iOS 則是Universal Links),可以實現點擊短信鏈接直接喚起 App;

    • 如果系統因為各種原因不支持 Deep Links,備選方案是 intent filter,不過會出彈框讓用戶選擇用哪個 App 打開鏈接;

    • 如果用戶沒有選擇我們的 App 而是選擇了瀏覽器打開,則通過 自定義 scheme 嘗試喚起 App;

    • 由于技術和成本問題,我們忽略不支持 自定義 scheme 的瀏覽器。

    短信鏈接喚醒APP

    最后

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

    更多資料查閱:

    • https://www.zhihu.com/question/29270034/answer/46446911

    • https://hufangyun.com/2017/short-url/

    • https://blog.csdn.net/c10WTiybQ1Ye3/article/details/78098840

    有道無術,術可成;有術無道,止于術

    歡迎大家關注Java之道公眾號

    好文章,我在看??

    新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

    總結

    以上是生活随笔為你收集整理的最近学到的「短链接」知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。