Java短网址生成工具类(Murmurhash算法实现)
  TuKgtV27aHkY 2023年11月02日 36 0


Java短网址生成工具类(Murmurhash算法实现)_java

 

目录

一、 短网址的优点

二、程序代码 

三、运行结果


一、 短网址的优点

1、节省空间: 短网址相比原始网址长度更短,可以节省字符空间,特别是在限制字符数的场景下,比如发送短信。

2、美观简洁: 短网址通常由随机字符或者简短的关键词组成,看起来更美观、简洁,易于记忆和分享。

3、提升用户体验: 用户可以更方便地复制、粘贴或输入短网址,减少了输入错误的可能性。

4、防止链接截断: 一些应用或平台可能会在显示较长的链接时进行截断,使用短网址可以避免这种情况。

5、追踪与统计: 短网址服务通常会提供统计功能,可以追踪链接的点击次数、来源等信息,对于营销活动和数据分析很有帮助。

6、防止链接泄露: 长网址可能包含敏感信息,使用短网址可以在一定程度上保护原始链接的隐私。

7、增加安全性: 有些短网址服务提供安全策略,可以检测和阻止恶意网址,提升用户安全体验。

二、程序代码 

package learnProject.csdn;

import org.apache.commons.lang.StringUtils;
import com.google.common.hash.Hashing;

/**
 * 短网址工具类
 * 
 * @author Roc-xb
 *
 */
public class DwzUtil {
	/**
	 * 10个数字+26个小写字母+26个大写字母
	 */
	private static String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	/**
	 * 62进制
	 */
	private static int scale = 62;
	/**
	 * 最小长度
	 */
	private static int minLength = 5;
	/**
	 * 种子
	 */
	private static int seed = 0;

	/**
	 * 长链接转短链接
	 * 
	 * @param longUrl 长链接
	 * @return 短链接
	 */
	public static String shortUrl(String longUrl) {
		// 用MurmurHash算法得出长链接的hash值
		int hash = Hashing.murmur3_32(seed).hashBytes(longUrl.getBytes()).asInt();
		return hex10To62(hash);
	}

	/**
	 * 10进制转62进制
	 * 
	 * @param hash
	 * @return 短链接
	 */
	public static String hex10To62(long hash) {
		// 解决hash值小于0时,会触发异常。
		hash = Math.abs(hash);
		StringBuilder sb = new StringBuilder();
		int remainder;
		while (hash > scale - 1) {
			// 对 scale 进行求余,然后将余数追加至 sb 中,由于是从末位开始追加的,因此最后需要反转字符串
			remainder = Long.valueOf(hash % scale).intValue();
			sb.append(chars.charAt(remainder));
			// 除以进制数,获取下一个末尾数
			hash /= scale;
		}
		sb.append(chars.charAt(Long.valueOf(hash).intValue()));
		String value = sb.reverse().toString();
		// value长度小于minLength时,在左侧填充字符‘0’
		return StringUtils.leftPad(value, minLength, '0');

	}

	public static void main(String[] args) {
		// 长链接
		String longUrl = "https://www.ewbang.com/community/service";
		// 短链接
		String shortUrl = shortUrl(longUrl);
		System.out.println(String.format("长链接:%s", longUrl));
		System.out.println(String.format("短链接:https://www.ewbang.com/%s", shortUrl));
	}

}

三、运行结果

Java短网址生成工具类(Murmurhash算法实现)_短网址_02

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
TuKgtV27aHkY