工具类:根据URL获取短链接,根据短链接获取真实URL

该博客介绍了一个工具类,用于根据URL生成6位的MD5短链接并保存到XML文件,同时提供根据短链接查找真实URL的功能。由于MD5的不可逆性,从短链接恢复真实URL需要搜索XML文件,导致效率降低。作者测试了XML文件的读写速度,并邀请读者分享优化思路。
摘要由CSDN通过智能技术生成

提供三个功能:
根据短网址查找真实地址
删除短网址
获取真实地址的短网址,如果没有,生成一个
思路:将真实地址进行md5加密,并分割生成一个6位的短链接,并保存到xml文件中,当然也可以保存到数据库中。无法实现将短链接反转成真实地址,因为md5的不可逆性。只能根据短链去持久化xml文件中去查找,这样必然会造成效率上的损失。
测试开销如下(xml文本大约80000行,约15000个短网址,读取速度:308ms,写入速度:314ms)。如果有更好的思路,欢迎留言,我将继续尝试
ShortUrlUtil.class


public class ShortUrl {
   
    public static void main(String[] args) {
        String longUrl = "http://www.test.com";
        String shortUrl = "uUN3E3";
        // 转换成的短链接后6位码
       Long start=System.currentTimeMillis();
//        System.out.println(getLongUrl(shortUrl));
//        System.out.println(getShortUrl(longUrl));
        System.out.println(deleteUrl(shortUrl));
        Long end=System.currentTimeMillis();
        System.out.println("重写xml结束"+((end-start)));

    }

    /**
     *根据短网址查找真实地址
     */
    public static  String getLongUrl(String shortUrl){
        String longUrl =getLongUrl(0,shortUrl);
        return  longUrl;
    }

    /**
     *根据短网址查找真实地址
     */
    public static  boolean deleteUrl(String shortUrl){
        String longUrl =getLongUrl(0,shortUrl);
        boolean isSuccess=true;
        if(Validate.noNull(longUrl)){
            isSuccess=deleteUrl(0,shortUrl);
        }
        return  isSuccess;
    }
    /**
     *获取真实地址的短网址,如果没有,生成一个
     */
    public static  String getShortUrl(String longUrl){
        String shortUrl=getShortUrl(0,longUrl);
        if(Validate.isNull(shortUrl)){
            final String _shortUrl=shortUrl(longUrl);
            new Thread(
                    new Runnable() {
                        @Override
                        public void run() {
                            createXml(_shortUrl, longUrl);
                        }
                    }
            ).start();
            return  _shortUrl;
        }
        return  shortUrl;
    }

    /**
     *将请求生成短网址
     */
    private static String shortUrl(String url) {
        // 可以自定义生成 MD5 加密字符传前的混合 KEY
        String key = "";
        // 要使用生成 URL 的字符
        String[] chars = new String[]{
  "a", "b", "c"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值