j9国际官网-j9九游会真人游戏第一 / / 长链接转短连接的方法及技术原理

普通短链

活码系统

随机短链

跳转微信小程序

更多

长链接转短连接的方法及技术原理-j9国际官网

更新时间:2024-7-30 02:28:08 作者:爱短链

什么是短链接?

顾名思义,它将长链接转短链接。为了轻松应对某些场景下的字数限制,除了支持将长链接转短链接外,还可以将已经生成的短链接还原为长链接。


使用方法:

1.点击进入爱短链j9国际官网-j9九游会真人游戏第一(https://www.ifabu.com),在顶部输入框中输入要转换的链接,然后点击输入框后面的“生成”按钮即可长链接转短连接,转化后可以一键复制转化链接

2.点击右下角的“≡”,然后在弹出的菜单栏中点击“统计”跳转到统计页面,在上面的输入框中粘贴你的短网址后缀,你可以查看网站点击总数统计


一、为什么要设计短链接?
1、在内容长度有限的平台上发布时,链接变短,可编辑文本增加。
例如:微博限制为140字。如果直接发布一个长链,那么剩下的其他可编辑内容就很少了。如果使用短链,链接的长度会大大缩短,自然可以编辑的文字会更多。很多。
2、我们经常需要将链接转换成二维码分享给他人。如果是长链,二维码密集,难以识别,但短链则没有这个问题。
3、链接太长,在某些平台上无法自动识别为超链接。


二. 为什么这里所有的网址都很短?有什么好处?

长链接转短连接的好处:

1.short:短信和很多平台(比如微博)都有字数限制,所以文字不能加长链接。

2.好看:与很多未知参数相比,短链接更加简洁友好。

3.方便做一些统计:点击链接会有人记录分析。

4.安全性:不要公开访问参数


三、长链接转短连接的实现原理:
首先我们看一下当当的短链接http://localhost:8060/1j0vea
它由两部分组成
http://localhost:8060 域短链接系统名称地址或ip 端口
1j0vea:请求参数
请求http://localhost:8060/1j0vea地址后,返回状态如下


四、长链接转短连接的实现的方法
1、murmurhash 非加密散列函数 将链接转换为一串数字。
public static string hashtobase62(string str) {
int i = murmurhash.hash32(str);
long num = i < 0 ? integer.max_value - (long) i : i;
return convertdectobase62(num);
}



2、由于我们的短链接是由a-z、a-z和0-9组成的,总共可以选择 62 个字符。因此,我们可以将hashtobase62方法转换的十进制数从长链接转换为62位数字,例如:http://www.cnblogs.com/rjzheng/p/11827426.html变成1j0vea
private static char[] chars = new char[]{
'0', '1', '2', '3', '4', '5', ' 6'、'7'、'8'、'9'、
'a'、'b'、'c'、'd'、'e'、'f'、'g'、'h' 、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'、'q'、'r'、's'、't'、' u'、'v'、'w'、'x'、'y'、'z'、
'a'、'b'、'c'、'd'、'e'、' f','g','h','i','j','k','l','m','n','o','p','q','r' , 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
};
private static int size = chars.length ;
private static string convertdectobase62(long num) {
stringbuilder sb = new stringbuilder();
while (num > 0) {
int i = (int) (num % size);
sb.append(chars[i]);
num /= size;
}
return sb.reverse().tostring ();
}


3、短链接生成方法。
@override
public string saveurlmap(string shorturl, string longurl, string originalurl) {
//保留长度为1的短链接
if (shorturl.length() == 1) {
longurl = duplicate;
shorturl = saveurlmap(hashutils.hashtobase62(longurl), longurl, originalurl);
}
//寻找布隆过滤器中是否存在
else if (filter.contains(shorturl)) {
//存在,从redis中查找是否有缓存
string redislongurl = redistemplate.opsforvalue().get(shorturl);
if (redislongurl != null && originalurl.equals( redislongurl)) {
//redis有缓存,重置过期时间
redistemplate.expire(shorturl, timeout, timeunit.minutes);
return shorturl;
}
//不缓存,在长链接后面加上指定字符串,重新hash
longurl = duplicate;
shorturl = saveurlmap(hashutils.hashtobase62(longurl), longurl, originalurl);
} else {
//不存在,直接存入数据库
try {
urlmapper.saveurlmap(new urlmap(shorturl, originalurl));
filter.add (短网址);
//广告d cache
redistemplate.opsforvalue().set(shorturl, originalurl, timeout, timeunit.minutes);
} catch (exception e) {
if (e instanceof duplicatekeyexception) {
//这个短链接已经存在于数据库中,可能是布隆过滤器误判,在长链接后面加上指定字符串,重新hash
longurl = duplicate;
shorturl = saveurlmap(hashutils.hashtobase62(longurl), longurl, originalurl);
} else {
throw e;
}
}
}
return shorturl;
}

以上就是《长链接转短连接的方法及技术原理》的全部内容啦,赶紧去试试吧~

© 爱短链 2019|南京角浪网络科技有限公司j9国际官网的版权所有|简单易用的在线生成短链接工具

j9国际官网
联系客服
微信客服
扫码添加服务顾问微信
四重好礼免费领取

顾问1v1

超长试用

专属优惠

私域sop

网站地图