zoukankan      html  css  js  c++  java
  • c#.net 实现短网址的简单方法

    短网址,现在很流行了,本文为大家介绍用c#.net实现短网址的方法,有兴趣的朋友,不妨参考下。

    短网址,也被叫做网址缩短、网址压缩选装。

    这里我们用一个例子来说明其原理吧,假如您带了一包东西去超市购物,进超市前把东西塞到超市的储物柜,然后拿到一个号码牌,您进超市就不用再背一大包东西了,只需要拿着一个小小的号码牌,出来时再把号码牌还回去,把您的背包拿出来,是一个道理。

    实现起来很简单,无非就是接收一个URL,然后分配一个号码,当有人读取这个号码时,我们再把对应的URL调出来并重定向,就完事了。
    所以表其实很简单,简单到只需要两个字段,一个自增ID,一个URL地址。

    提交一个URL,得到的URL就类似:http://9520.me/10086

    拿到的自增ID是一个10进制的数字,而我们看到的大多数短网址后面的参数肯定不是全数字的,而是带了字母的,毕竟10进制表示的话,数据量上来后还是会显得有点长,那我们就可以把字母也用上吧,大小写字母加数字,相当于是62进制,那我们还需要再实现一个进制转化的方法来对ID进行压缩,进制转换其实也是很简单的东西。

    简单示例:

    static string Number = "056656454";
    /// <summary>
    /// 压缩ID标识
    /// </summary>
    /// <param name="n"></param>
    /// <returns></returns>
    public string Short(long n) {
    string result = string.Empty;
    int l = Number.Length;
    while (n / l >= 1) {
    result = Number[(int)(n % l)] + result;
    n /= l;
    }
    result = Number[(int)n] + result;
    return result;
    }
    /// <summary>
    /// 还原ID标识
    /// </summary>
    /// <param name="s"></param>
    /// <returns></returns>
    public long UnShort(string s) {
    long result = 0;
    if (s.HasValue()) {
    s = s.Trim();
    int l = s.Length;
    int m = Number.Length;
    for (int x = 0; x < l; x++) {
    result += Number.IndexOf(s[l - 1 - x]) * (long)Math.Pow(m, x);
    }
    }
    return result;
    }

  • 相关阅读:
    聊聊Docker数据卷和数据卷容器
    Nginx虚拟主机
    Shell文本处理四剑客
    Docker镜像、容器剖析
    Tomcat性能优化及JVM内存工作原理
    Nginx动静分离架构&&HA-LB集群整合
    Mysql主从复制架构实战
    Mysql编译安装详解
    Apache虚拟主机实战
    Ansible性能调优
  • 原文地址:https://www.cnblogs.com/hclw/p/5995923.html
Copyright © 2011-2022 走看看