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;
}
c#.net 实现短网址的简单方法的更多相关文章
- 向android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
- php生成短网址的思路与方法
生成短网址的思路以及使用php生成短网址的实现方法. 生成短网址的思路:如果把短网址还原了,你知道是个什么样子的吗?比如:http://www.jbxue.com/sitejs-17300-1.htm ...
- Clojure实现的简单短网址服务(Compojure、Ring、Korma库演示样例)
用clojure写了一个简单的短网址服务(一半抄自<Clojure 编程>).在那基础上增加了数据库,来持久化数据. 功能 用Get方法缩短一个网址: 然后在短网址列表就能够查看了, 接下 ...
- php 两种短网址生成方法
使用以下PHP代码可以生成唯一的6位的短网址. 代码如下: <?php //生成短网址方法1 function shortUrl1($url) { if (empty($url)) { retu ...
- 【转】C# URL短地址压缩算法及短网址原理解析
这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...
- PHP实现长网址与短网址
原文地址:http://www.qqdeveloper.com/detail/29/1.html 什么是长链接.短链接 顾名思义,长链接就是一个很长的链接:短链接就是一个很短的链接.长链接可以生成短链 ...
- XYIXY.COM短网址在线生成,快速、稳定、永久有效,免费开放网址缩短API接口。
在PHP中使用API 要在PHP程序中使用API,您必须通过file_get_contents或cURL发送GET请求:两者都是可靠的方法,您可以直接复制下面的代码. <?php /**** S ...
- 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)
短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代 ...
- Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode
Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HO ...
随机推荐
- position的五个不同的位置值
一.position: static 无定位 HTML 元素默认情况下的定位方式为 static(静态). 静态定位的元素不受 top.bottom.left 和 right 属性的影响. posi ...
- Parameter index out of range(1 > number of parameters, which is 0)参数索引超出范围
今天在写项目的过程中,有一个模块是做多选删除操作,通过servlet获得多选框的value组,然后执行sql操作.如下: 1 @RequestMapping( "/delteCouse.do ...
- 【Python123】练习1: Python基本语法元素 (第1周)
实例1: 温度转换 这是"实例"题,与课上讲解实例相同,请作答检验学习效果. ...
- 力扣 - 剑指 Offer 29. 顺时针打印矩阵
题目 剑指 Offer 29. 顺时针打印矩阵 思路1 其实就是按照理解题目的意思一步步从外层到内层打印出来,同时将一个外层分成四个部分分步打印 可以用一个变量count来维护当前打印的第几层 判断打 ...
- Flink sql 之 join 与 StreamPhysicalJoinRule (源码解析)
源码分析基于flink1.14 Join是flink中最常用的操作之一,但是如果滥用的话会有很多的性能问题,了解一下Flink源码的实现原理是非常有必要的 本文的join主要是指flink sql的R ...
- VS2015+OpenCV+Qt
VS2015+OpenCV+Qt 01.OpenCV 下载 进入官网链接: https://opencv.org,下载所需要的版本: 下载完成后直接双击,选择解压路径,解压到响应的文件夹中: 若之后需 ...
- [BZOJ3307] 雨天的尾巴-----------------线段树进阶
虽然是个板子,但用到了差分思想. Description N个点,形成一个树状结构.有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最 ...
- series和读取外部数据
1.为什么学习pandas 我们并不是不愿意学习新的知识,只是在学习之前我们更想知道学习他们能够帮助我们解决什么问题.--伟哥 numpy虽然能够帮助我们处理数值,但是pandas除了处理数值之外(基 ...
- Flutter应用在夜神模拟器启动白屏问题
Flutter应用在夜神模拟器启动白屏问题 flutter run 出现如下错误 [ERROR:flutter/shell/gpu/gpu_surface_gl.cc(39)] Failed to ...
- 使用 ASP.NET Core 3.1 的微服务开发指南
使用 ASP.NET Core 3.1 的微服务 – 终极详细指南 https://procodeguide.com/programming/microservices-asp-net-core/ A ...