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

简介: 【有关长短链接映射问题】
工作中遇到的有关长链接生成的二维码过于密集,导致扫码识别效率低下的问题
解决思路:将长链接映射为短链接,使用短链接生成二维码,根据短链接查询长链接即可。
//长链接生成短链接方法:
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;
    }
相关文章
|
网络协议 网络安全 网络虚拟化
IPv6地址详解
IPv4地址资源的紧张限制了Internet的进一步发展。NAT、CIDR、VLSM等技术的使用仅仅暂时缓解IPv4地址紧张,但不是根本解决办法。
930 0
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
|
机器学习/深度学习 自然语言处理 搜索推荐
Multi-Agent
基于Multi-Agent架构的智能导购助手,通过多个智能代理的协同工作,实现了顾客需求收集、商品匹配、个性化推荐及自动化交易的全流程自动化。该系统利用自然语言处理、机器学习、大数据等技术,显著提升顾客购物体验和商家运营效率,具有广泛的商业应用前景。
|
人工智能 自然语言处理 文字识别
几步轻松定制私人AI助手
这两年大模型的发展持续火热,以至于许多资本和学者认为AI出现了泡沫,根本原因还是因为大模型目前还没有出现能够结合行业切实落地的应用。我才不关注泡沫不泡沫呢,我只关注大模型能给我带来哪些帮助即可。大模型离用户最近的助力方式就是AI智能体。
几步轻松定制私人AI助手
|
JSON 测试技术 API
API接口:原理、实现及应用
API接口:原理、实现及应用
|
机器学习/深度学习 算法 数据可视化
【机器学习】描述K-means算法的步骤
【5月更文挑战第11天】【机器学习】描述K-means算法的步骤
|
弹性计算 Kubernetes 容器
利用Rancher管理ACK集群
本文演示了利用Rancher的集群导入功能把ACK集群导入到Rancher中并进行管理的过程。阿里云Kubernetes服务(ACK)已在全球十六个地区推出,为客户提供云原生方式和开放式容器技术,帮助企业加速数字化转型。
7313 134
|
设计模式 算法 Java
Android逆向——定位到某书 Sign 算法(上)
Android逆向——定位到某书 Sign 算法
|
算法 大数据 Linux
大数据基本开发工具的FTP/SFTP工具的FileZilla
大数据是当今的热门话题,而在大数据的开发过程中,FTP/SFTP工具是非常重要的一个环节。本文将介绍一款优秀的FTP/SFTP工具——FileZilla。
466 0