【有关长短链接映射问题】

简介: 【有关长短链接映射问题】
工作中遇到的有关长链接生成的二维码过于密集,导致扫码识别效率低下的问题
解决思路:将长链接映射为短链接,使用短链接生成二维码,根据短链接查询长链接即可。
//长链接生成短链接方法:
public String gererateShortUrl(String url) {
        // 可以自定义生成 MD5 加密字符传前的混合 KEY
        String key = "caron";
        // 要使用生成 URL 的字符
        String[] chars = new String[]{"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", "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"
        };
        // 对传入网址进行 MD5 加密
        String sMD5EncryptResult = Md5Utils.hash(key + url);
        String hex = sMD5EncryptResult;
        // 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算
        String sTempSubString = hex.substring(2 * 8, 2 * 8 + 8);    //固定取第三组
        // 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 , 如果不用 long ,则会越界
        long lHexLong = 0x3FFFFFFF & Long.parseLong(sTempSubString, 16);
        String outChars = "";
        for (int j = 0; j < 6; j++) {
            // 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引
            long index = 0x0000003D & lHexLong;
            // 把取得的字符相加
            outChars += chars[(int) index];
            // 每次循环按位右移 5 位
            lHexLong = lHexLong >> 5;
        }
        return outChars;
    }
相关文章
|
5月前
【有关长短链接映射问题】
【有关长短链接映射问题】
34 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
存储 前端开发 应用服务中间件
区分WEB服务器与数据服务器
WEB服务器和数据服务器是两个不同的概念噢,它们分别承担着不同的任务和功能。
515 0
区分WEB服务器与数据服务器
|
JSON 前端开发 数据格式
djangVue_前后端配置动态的数据字段标
前后端配置动态的数据字段标签(django_vue)
67 1
|
UED
怎么集成短链接生成,短链接的作用
短链接也称为短网址,是指长度较短的URL链接
474 0
|
数据采集 存储 监控
如何利用爬虫技术从HTTP代理池中筛选出高质量IP?
对于HTTP代理池的维护,可以从以下4个方面入手
|
缓存 算法 JavaScript
网络拾遗之Http缓存
缓存:何时起作用 缓存的常见淘汰机制 HTTP缓存策略 缓存场景应用(Vue内部组件KeepAlive)
110 0
|
网络协议 Linux 应用服务中间件
一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)
一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)
1172 0