只有光头才能变强。
文本已收录至我的github仓库,欢迎star:https://github.com/zhongfucheng3y/3y
最近接了一个需求,涉及到了短链接的相关的知识,于是去查阅了相关的资料,在这里给大家整理分享一下。
举个例子,现在我的github的地址是这个:https://github.com/zhongfucheng3y/3y
(36个字符)
我通过百度的短链接服务可以将上面的地址转成https://dwz.cn/lwlrfg4j
(23个字符)
那我为什么要将原有的url转成较短的链接呢?比如我们发短信提醒用户去xxx,xxx有优惠活动,在文案上往往会带有一个链接进行跳转,方便用户快速去到对应的活动落地页。
而短信的发送是需要成本的,短信的成本主要有两方面组成:
所以在发送短信给用户时:要么就投放更加精准优质的用户,以便控制好发送的数量,要么就尽可能控制文案的字数。
显然,如果在短信上配上普通的url,那真正的文案可写的字数就没多少了。于是我们可以发现,各大公司的短信推送的url都是短链接。
比如在一些平台发布消息时会限制字数,如果我们的发的url过长就很容易就被限制住了:
使用短链接的好处:短、字符少、美观、便于发布、传播。
我们先回到生成好的短链上https://dwz.cn/lwlrfg4j
虽然这个链接看起来有点奇怪,但他终究还是一个链接,从url的特征我们可以分出:
dwz.cn
是域名lwlrfg4j
是参数我们在浏览器请求一下短链接看看是什么情况:
短链接的原理其实就是:
手段
生成一个短链接通过上面的分析我们可以知道的是,我们实际核心要做的是怎么从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的字符)总结:
以下内容来源: ,作者:西西吹雪
综合起来就是:
intent filter
,不过会出弹框让用户选择用哪个 app 打开链接;自定义 scheme
尝试唤起 app;自定义 scheme
的浏览器。这篇文章主要是简单了解一下短链接的相关知识,一个完备的短链服务肯定还要考虑更多的事,这里我就不展开了(毕竟我也没真正写过,可以在下方的链接继续学习)~
更多资料查阅:
本已收录至我的github精选文章,欢迎star:https://github.com/zhongfucheng3y/3y
乐于输出干货的java技术公众号:java3y。公众号内有300多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!
非常感谢人才们能看到这里,如果这个文章写得还不错,觉得「三歪」我有点东西的话 求点赞 求关注️ 求分享
如对本文有疑问,
点击进行留言回复!!
您可能感兴趣的文章:
Unity UGUI 之 实现按钮 Button 长按和双击的功能效果
[U3D Learning Note] Unity C# Surival Guide (1) -- Quick Tips and Assets
网友评论