zoukankan      html  css  js  c++  java
  • java 短链接生成

    1. package shorurl;
      import org.apache.commons.codec.digest.DigestUtils;
      import org.apache.commons.lang.StringUtils;
      publicclassShortUrl{
      privatestaticfinalint BINARY =0x2;
      privatestaticfinalint NUMBER_61 =0x0000003d;
      staticfinalchar[] DIGITS ={'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','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'};
      protectedString shorten(String longUrl){
      String shortUrl = shorten(longUrl,5);
      if(StringUtils.isEmpty(shortUrl)){
      shortUrl = shorten(longUrl,6);
      }
      return shortUrl;
      }
      publicString shorten(String longUrl,int urlLength){
      if(urlLength <0|| urlLength >6){
      thrownewIllegalArgumentException("the length of url must be between 0 and 6");
      }
      String md5Hex =DigestUtils.md5Hex(longUrl);
      // 6 digit binary can indicate 62 letter & number from 0-9a-zA-Z
      int binaryLength = urlLength *6;
      long binaryLengthFixer =Long.valueOf(StringUtils.repeat("1", binaryLength), BINARY);
      for(int i =0; i <4; i++){
      String subString =StringUtils.substring(md5Hex, i *8,(i +1)*8);
      subString =Long.toBinaryString(Long.valueOf(subString,16)& binaryLengthFixer);
      subString =StringUtils.leftPad(subString, binaryLength,"0");
      StringBuilder sbBuilder =newStringBuilder();
      for(int j =0; j < urlLength; j++){
      String subString2 =StringUtils.substring(subString, j *6,(j +1)*6);
      int charIndex =Integer.valueOf(subString2, BINARY)& NUMBER_61;
      sbBuilder.append(DIGITS[charIndex]);
      }
      String shortUrl = sbBuilder.toString();
      return shortUrl;
      }
      returnnull;
      }
      }
       
      

        

  • 相关阅读:
    CGI(通用网关接口)
    PHP简介
    SEO搜索引擎优化/URL
    使用表单标签,与用户交互
    认识<img>标签,为网页插入图片
    使用mailto在网页中链接Email地址
    使用<a>标签,链接到另一个页面
    1037. Magic Coupon (25)
    1038. Recover the Smallest Number (30)
    1034. Head of a Gang (30) -string离散化 -map应用 -并查集
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/6661836.html
Copyright © 2011-2022 走看看