短网址一直都在微博上应用。例如腾讯微博的短网址url.cn,新浪的sinaurl.cn等。 他们是如何实现呢,本文将介绍一下该技术算法!
比如我们在腾讯微博上发布网址的时候,微博会自动判别网址,并将其转换,例如转换为:http://url.cn/3fVZf1
为什么要这样做的,原因有以下几点:
1、腾讯微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运而生了。
2、短网址可以在我们项目里可以很好的对开放级URL进行管理。有一部分网址可以会涵盖seqing,暴力,广告等信息,这样我们可以通过用户的举报,完全管理这个连接将不出现在我们的应用中,应为同样的URL通过加密算法之后,得到的地址是一样的。
3、我们可以对一系列的网址进行流量,点击等统计,挖掘出大多数用户的关注点,这样有利于我们对项目的后续工作更好的作出决策。
其实以上三点纯属个人观点,因为在我接下来的部分项目中会应用到,所以就了解了一下,下面先来看看短网址映射算法的理论(网上找到的资料)
1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
很简单的理论,我们并不一定说得到的URL是唯一的,但是我们能够取出4组URL,这样几乎不会出现太大的重复。
下面来看看程序部分:
php代码
function shorturl($url) {
$base_key = '';
$base_str = array(
"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","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" );
$hex = md5($base_key.$url);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();
for ($i = 0; $i < $subHexLen; $i++) {
$k = $i + 1;
$subHex = substr ($hex, $i * 8, 8*$k);
$int = 0x3FFFFFFF & (1 * ('0x'.$subHex));
$out = '';
for ($j = 0; $j < 6; $j++) {
$val = 0x0000003D & $int;
$out .= $base_str[$val];
$int = $int >> 5;
}
$output[] = $out;
}
return $output;
}
分享到:
相关推荐
操作系统原理算法总结 操作系统原理是计算机科学中的一门重要学科,涉及到计算机系统的底层机理和算法。本文总结了操作系统原理中的四个重要算法:进程调度算法、存储器分配算法、页面置换算法和磁盘调度算法。 一...
下面将详细讨论分布式计算的原理、算法以及相关系统。 ### 原理 1. **资源共享**:分布式计算系统中的各个节点可以共享计算资源、存储资源和网络资源,使得整体系统能够处理更大的数据量和更高的计算需求。 2. **...
并行遗传算法能够在短时间内处理大量数据,具有较高的计算效率,因此在工程应用中具有重要意义。而第六章则深入探讨了遗传算法的数学理论基础,包括模式定理、遗传算法的收敛性质以及适度函数的自相关分析等内容。 ...
### 蚂蚁算法原理详解 #### 一、引言 蚂蚁算法,也称为蚁群算法(Ant Colony Optimization, ACO),是由意大利学者Marco Dorigo于1992年在其博士论文中首次提出的一种启发式搜索算法。该算法灵感来源于自然界中蚂蚁...
本文将深入探讨C#实现的URL短地址压缩算法及其原理。URL短网址服务的主要目的是解决长URL在有限字数限制下的传播问题,比如在社交媒体平台如微博上,每条消息的字数通常被限制在140字以内。长URL可能会占据过多的...
其中,数据加密标准(DES)曾是最广泛应用的算法之一,但由于其56位密钥长度相对较短,已经无法满足现代网络安全的需求。因此,美国国家标准技术研究所(NIST)启动了一个项目,旨在寻找一种能够替代DES的新加密标准...
**Dijkstra算法**,由荷兰计算机科学家艾兹格·迪科斯彻提出,是一种用于解决单源最短路径问题的算法。它适用于加权有向图或无向图,但不适用于负权重边的情况,因为该算法无法处理负权重导致的最短路径问题。在寻找...
在本文中,我们将深入探究RIP算法的原理和实现,通过C++语言实现RIP算法的编程。 一、RIP算法的基本原理 RIP算法是一种基于距离矢量路由协议,它使用hop count(跳数)作为路由 metric(度量),以确定网络中最短...
蚁群算法,又称为蚂蚁算法或Ant Colony Optimization (ACO),是一种模拟自然界中蚂蚁寻找食物路径行为的优化算法。在自然环境中,蚂蚁通过在路径上留下化学信息素(信息素)来相互沟通,找到从巢穴到食物源的最短...
总的来说,KSP算法的源码分析有助于我们深入理解路径搜索算法的底层工作原理,而提供的数据集则能让我们直观地看到算法在实际问题上的表现。无论是对于学习图论算法、优化网络系统还是进行相关研究,这些资源都是...
### 短进程优先(SPF)调度算法 短进程优先(Shortest Process Next,SPN)或称为短作业优先(Shortest Job First,SJF)是一种常用的进程调度算法,在操作系统中用于提高系统的效率和响应时间。该算法的核心思想是...
#### 短作业优先算法原理 在SJF算法中,系统根据进程的预计运行时间(或服务时间)来决定哪个进程应该先执行。当一个新进程进入就绪队列时,如果它比当前正在执行的进程更短,则会在当前进程完成后被优先调度执行。...
【短网址系统实现原理】 短网址服务是一种将长网址转换为较短的网址形式,方便在网络上传播和记忆。在实现短网址系统时,主要涉及数据结构和算法的应用。这里我们将探讨如何使用学过的数据结构和算法来创建一个短...
在操作系统设计中,进程调度是核心任务之一,用于决定如何分配CPU时间给系统中的各个进程。本文将深入探讨两种常见的进程...同时,通过编程实现这些算法,可以帮助我们更好地理解它们的工作原理,提升解决问题的能力。
短作业优先算法是一种基于优先级的调度算法。该算法的工作原理是:将作业按照执行时间升序排序,然后按照排序后的顺序执行作业。这意味着,执行时间最短的作业将被优先执行。 在上述代码中,SJF算法的实现通过...
### FAT32文件系统原理和FAT32文件系统算法 #### 文件系统简介与核心概念 文件系统是操作系统用于组织和管理存储设备上的文件的方法。它不仅提供了存储和检索文件的机制,还定义了文件如何在物理存储介质上布局...
DES 算法原理 DES 算法是一种基于 Feistel 密码体制的分组加密算法。它将明文分成 64 位的分组,然后使用 56 位的密钥对每个分组进行加密。加密过程中,使用 16 轮的迭代运算,每轮迭代使用不同的子密钥。解密过程...