ShortURL

java长链接转短链接代码和如何跳转使用

╄→гoц情女王★ 提交于 2019-11-30 19:37:19
一、实现原理 1. 将长网址用md5算法生成32位签名串,分为4段,,每段8个字符。 2. 对这4段循环处理,取每段的8个字符, 将他看成16进制字符串与0x3fffffff(30位1)的位与操作,超过30位的忽略处理。多了也没用因为下面要分成6段 嘿嘿正好取整。注意用Long型变量(长度问题 你懂得) 3. 将每段得到的30位字符(后台以long十进制显示)又分成6段,通过移位运算将每5位分别与字符数组求与运算(0x0000003D),得到其在字符数组中的索引并取出拼串。 4. 这样一个md5字符串可以获得4个6位串,取里面的任意一个就可作为这个长url的短url地址。 二、代码实现 import org.apache.commons.codec.digest.DigestUtils; public class ShortUrl { public static void main(String[] args) { // 长连接 String longUrl = "http://data.13322.com/basket/team/27_0_1.html"; // 转换成的短链接后6位码 String[] shortCodeArray = shortUrl(longUrl); for (int i = 0; i < shortCodeArray.length; i++) {

14年百度某次笔试题

时光总嘲笑我的痴心妄想 提交于 2019-11-28 20:07:54
本文转载于: 猿2048 网站 14年百度某次笔试题 最近看架构师的博文里面,提到short URL的方法。于是搬运一下。 YOURLS貌似在米国很火的样子,从图上看出中非刚果用的很少。 该博文的作者提到的算法两种: 自增序列算法 http://tool.lu/hexconvert/ 算法2据说是新浪微博的算法: 将长网址md5生成32位签名串,分为四段,每段8个bits。原文说8个字节,明显写错了。 将四段循环处理,堪称16进制位串和0x3fffffff的与操作。超过30位的舍去 然后再将30位分成六段,每五位数字作为字母表的索引取得特定字符 总的md5串可获得4个6位串,取任意一个作为最终的短url 看完想起硕士毕业当时笔试时候自己只答对了一部分。看来好多还得在网上多跟老鸟大神们飞。 来源: https://my.oschina.net/u/4191619/blog/3098927