主要逻辑:
1, 确定一个包括大小写字母、数据的字符串LS,长度为 L = 26+26+10 = 62
2, 初始化L**N个整数,并作为一个序列push到redis里
3, 当需要转换一个长URL时,先从以上的序列中随机pop出一个整数I
4, 对整数I取模(除数为L),余数对应到LS的一个字母,取完模后再除以L取整,当结果等于0时停止除模,否则结果继续取模。
5, 将所有余数对应的字母按顺序排列得到一个简短的字符串SS
6, 将长URL的md5哈希值作为KEY,将字符串SS作为VALUE,写入redis
7, 将字符串SS作为KEY, 将长URL作为VALUE,写入redis
8, 将前缀(短url域名)加上字符串SS,作为短URL结果返回
9, 当用户使用短url访问时,将短URL中的字符串SS取出,并作为KEY从redis中取出长URL,跳转长URL
注意:
当redis中序列数字快使用完时,要及时增加(可以写个脚本随时监控,数量少于10%时就自动增加数量),切忌不能存已经用过的数字
#encoding=utf-8 import string import redis import hashlib LETTERS = string.digits + string.ascii_letters LETTERS_NUM = len(LETTERS) COUNTER_KEY = 'url:counter' def init(rd,num): for i in xrange(LETTERS_NUM * num): rd.sadd('url:id:set',i) #通过urlid取得短url对应的字符串 def get_url(urlid): result = [] q = urlid/LETTERS_NUM r = urlid%LETTERS_NUM result.append(LETTERS[r]) while q: r = q%LETTERS_NUM q = q/LETTERS_NUM result = [LETTERS[r]] + result return ''.join(result) #得到短url字符串 def parse_url(rd, longurl): ret = longurl if (longurl.startswith("http://") or longurl.startswith("https://")) and len(longurl)>7: m = hashlib.md5() m.update(longurl) urlkey = m.digest() old_param = rd.get(urlkey) if old_param: ret = old_param else: urlid = int(rd.spop('url:id:set')) param = get_url(urlid) rd.incr(COUNTER_KEY, 1) rd.set(param,longurl) rd.set(urlkey,param) ret = param print "short url:",ret return ret if __name__ == "__main__": url = "http://www.google.com/" rd = redis.Redis('127.0.0.1',6379,db=0) init(rd,3) parse_url(rd,url)
相关推荐
3. **URL编码与解码**:在生成短链接时,需要将哈希值转换为可读的字符集,例如使用Base62或Base36编码。在用户访问短链接时,系统需要解码这个短码并查找对应的长URL。 4. **路由与重定向**:短链接被请求时,...
其中,URL.cn短网址生成器就是一种常见的工具,它可以帮助用户快速将冗长的URL转换为简洁的短链接。本文将深入探讨URL.cn短网址生成器的原理、功能及应用。 一、URL.cn短网址生成器的工作原理 URL.cn短网址生成器...
本项目添加了这样的功能,在SP网站中可以生成短URLs。这些URLs指向列表或文档。例如http://smallville-pc/url/nnefhmo。 本项目的目的是允许用户创建短URLs,指向文档或列表/库,这样可以轻松分享。
在实际操作中,短网址批量生成转换工具(爆破版)可能会包含以下功能: 1. **URL输入**:用户可以输入或导入多个长URL。 2. **自定义设置**:允许用户选择短链服务商,设定短链前缀,或者自定义短链长度。 3. **生成...
本篇文章将详细介绍如何在Java环境中,基于给定的网站链接URL生成二维码图片并存储到本地目录。 首先,我们需要引入一个Java二维码生成库,例如`com.google.zxing`库中的`javase`模块,这个模块提供了生成和解码...
短链接生成系统是一种常见的互联网工具,它通过将长网址转换为较短的、易于记忆的链接,方便用户分享和传播。这种系统的核心在于其背后的算法和技术实现,包括URL编码、哈希函数、数据库管理和分布式系统设计等。接...
在互联网世界中,短网址(ShortUrl)生成工具是一种广泛使用的工具,它能够将长的、复杂的URL转换成简短的、易于记忆的链接。"ShortUrl 短网址生成工具 支持新浪 腾讯 百度.zip"这个压缩包文件提供了一个程序,可以...
使用“url编码转换器”这样的工具,用户可以便捷地处理URL中的编码问题,无论是手动输入的链接还是程序生成的链接,都能确保其在传输过程中不会因为特殊字符而引起问题。在开发网页应用或者处理HTTP请求时,理解并...
1. URL编码:在生成短链接前,首先需要对原始长URL进行编码,通常采用的是Base64编码,将URL转换为一串可打印的字符。 2. 哈希算法:然后使用哈希函数(如MD5或SHA-1)将编码后的URL转换为固定长度的哈希值。这样...
因此,一般会通过二次编码或者自定义的短码表进行转换,使得短网址更便于输入和记忆。 防红机制在短网址服务中起到关键作用,主要是通过对原始长网址进行某种形式的处理,比如加密、混淆或者通过代理服务器转发,来...
短网址生成系统,顾名思义,是一种能够将长URL转化为短链接的服务。它主要通过哈希算法或自增ID结合编码方式来实现。在这个系统中,我们使用的编程语言是PHP,这是一种广泛应用的开源脚本语言,特别适合于Web开发。 ...
在IT行业中,转换URL到PDF是一项常见的需求,例如为了保存网页内容、制作电子文档或进行离线阅读。Java作为一种广泛使用的编程语言,提供了多种方法来实现这个功能。本篇文章将详细探讨如何在Java环境中将一个网页...
短网址生成器是一种工具,它将较长的URL(统一资源定位符)转化为简短的、易于分享和记忆的短链接。这种技术在社交媒体、电子邮件、市场营销以及任何需要节省字符空间的场景中尤其有用。短网址生成器的工作原理是...
通过下载提供的"短URL压缩算法"项目,你可以深入研究其具体实现,包括源代码、数据库设计和配置文件等内容,进一步理解.NET环境中短URL生成的细节。该项目提供了学习和研究短URL算法的良好实践,对于提升.NET开发者...
本项目"Go-shorturl"专注于实现一个短链接生成算法,让我们来详细探讨其中涉及的知识点。 1. **哈希函数与哈希表**: 短链接生成通常会用到哈希函数,如MD5或SHA系列,将长链接转化为固定长度的哈希值。然而,哈希...
本教程将详细介绍如何通过URL地址获取网页并生成jpg图片,同时解决32位和64位运行环境下的兼容性问题。我们将主要使用Java语言来实现这一功能,因为它具有丰富的库和跨平台的特性。 首先,我们需要一个能够处理网络...
这个“网页URL生成图片.zip”文件很可能包含一个或多个程序或库,用于将网页转换为图像格式,比如JPG或PNG。在这个过程中,主要涉及到的技术包括网络请求、网页解析和图像渲染。 首先,我们要理解的是网络请求。在...
【百度短网址生成器】是一种在线工具或软件应用程序,它旨在帮助用户将长网址转换为简短、易于记忆的短网址。在互联网上,长网址可能会导致诸多不便,例如在社交媒体上占据过多空间,或者在短信和邮件中因字符限制而...
递增ID编码则是将每个新链接对应一个不断增长的数字,再通过某种编码方式(如Base62)转换成字母数字组合的短链接。根据描述,这个系统可能采用了更为简洁的编码方式,以减少可能出现的冲突。 数据库方面,短链接...
短连接生成的原理是基于 URL 重写和 URL 短链技术。在短连接生成器网站中,输入的长网址将被重写为短网址,并将其存储在服务器上。当用户访问短网址时,服务器将自动重定向到原始的长网址。 使用短连接生成器可以...