2006年世界杯歌曲_冰岛世界杯排名 - guoyunzhan.com

  • 首页
  • 世界杯黑马
  • 世界杯直播app
  • 世界杯小组赛规则
  • 2025-06-05 02:20:46

    62进制在短链接场景的妙用

    假如要生成6位的字符 如何才能可靠的生成更多数据。

    10进制 最大只能生成 10 ^ 6 - 1 =999999个

    16进制 最大只能生成 16 ^ 6 - 1 =16777215个

    16进制里面已经包含了 A B C D E F 这几个字母

    62进制 最大竟能生成 62 ^ 6 - 1 =56800235583个 基本上够玩了吧。

    A-Z a-z 0-9刚好等于62位

    64进制 因为包含了特殊字段 用于短链接有点特殊 所以现在大部分都是使用62进制或者其他的算法。

    接下来将使用原有的编码串转换为62进制即可嫁接到现有业务中去 仅需少许改动。

    如果原有的id是10进制数字 那么就可以把10进制转换为62进制即可。

    如果原有的id是字符串或者其他标识 可以用先获取到hashcode后 当作是做个10进制数再进行62进制转换。

    10进制转换62进制的逻辑就是 一直循环用62取余 然后倒序。代码如下

    private static String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    private static int scale = 62;

    private static int minlen = 6;

    public static String base62Encode(long num) {

    StringBuilder sb = new StringBuilder();

    int remainder;

    while (num > scale - 1) {//大于62-1才计算 小于就直接是自身即可

    remainder = Long.valueOf(num % scale).intValue();

    sb.append(chars.charAt(remainder));

    num = num / scale;

    }

    sb.append(chars.charAt(Long.valueOf(num).intValue()));

    String value = sb.reverse().toString();

    return StringUtils.leftPad(value, minlen, '0');

    }

    public static void main(String[] args) {

    System.out.println( base62Encode(9000000000L));

    }

    上面程序输出 9p558K 这么大的数值就用这几个字符表达就能完成了。可想这个玩意还能用于很多场景 比如id 用少量的字符表示更大的数据、临时转码等场景

    在短链接领域我知道是 B站 抖音 估计都是用的62进制。

    用随便一个转换工具网站 转换一个地址 如 http://m6z.cn/5X6an7 看起来也像是62进制。

    上面的chars 还能调整顺序 变为自己的base62编码。这样的玩法还可以变通为58进制等。

    如果你的业务线很大 还可以为62进制编码加业务编码前缀。如 推荐系统的规则为88开头,客户系统为99开头。

    以前觉得金色不好看,现在看来是真香!
    大年二十九欢度除夕,为什么今年起连续五年没有“大年三十”?
    世界杯小组赛规则

    友情链接:

    ©Copyright © 2022 2006年世界杯歌曲_冰岛世界杯排名 - guoyunzhan.com All Rights Reserved.