`
sls0919
  • 浏览: 125730 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

短URL生成转换

阅读更多

主要逻辑:

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)




 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    2021最新PHP短网址生成系统短链接生成系统URL缩短器系统源码.zip

    3. **URL编码与解码**:在生成短链接时,需要将哈希值转换为可读的字符集,例如使用Base62或Base36编码。在用户访问短链接时,系统需要解码这个短码并查找对应的长URL。 4. **路由与重定向**:短链接被请求时,...

    URL.cn短网址生成器.rar

    其中,URL.cn短网址生成器就是一种常见的工具,它可以帮助用户快速将冗长的URL转换为简洁的短链接。本文将深入探讨URL.cn短网址生成器的原理、功能及应用。 一、URL.cn短网址生成器的工作原理 URL.cn短网址生成器...

    SharePoint 2010 短URL生成器

    本项目添加了这样的功能,在SP网站中可以生成短URLs。这些URLs指向列表或文档。例如http://smallville-pc/url/nnefhmo。 本项目的目的是允许用户创建短URLs,指向文档或列表/库,这样可以轻松分享。

    短链批量生成器

    在实际操作中,短网址批量生成转换工具(爆破版)可能会包含以下功能: 1. **URL输入**:用户可以输入或导入多个长URL。 2. **自定义设置**:允许用户选择短链服务商,设定短链前缀,或者自定义短链长度。 3. **生成...

    java-根据网站链接url生成二维码qrcode

    本篇文章将详细介绍如何在Java环境中,基于给定的网站链接URL生成二维码图片并存储到本地目录。 首先,我们需要引入一个Java二维码生成库,例如`com.google.zxing`库中的`javase`模块,这个模块提供了生成和解码...

    短链接生成系统源码-网址生成系统-短链防红域名系统.zip

    短链接生成系统是一种常见的互联网工具,它通过将长网址转换为较短的、易于记忆的链接,方便用户分享和传播。这种系统的核心在于其背后的算法和技术实现,包括URL编码、哈希函数、数据库管理和分布式系统设计等。接...

    ShortUrl 短网址生成工具 支持新浪 腾讯 百度.zip

    在互联网世界中,短网址(ShortUrl)生成工具是一种广泛使用的工具,它能够将长的、复杂的URL转换成简短的、易于记忆的链接。"ShortUrl 短网址生成工具 支持新浪 腾讯 百度.zip"这个压缩包文件提供了一个程序,可以...

    url编码转换器

    使用“url编码转换器”这样的工具,用户可以便捷地处理URL中的编码问题,无论是手动输入的链接还是程序生成的链接,都能确保其在传输过程中不会因为特殊字符而引起问题。在开发网页应用或者处理HTTP请求时,理解并...

    73083全新PHP短网址生成系统短链接生成系统URL缩短器系统源码站长亲测.rar

    1. URL编码:在生成短链接前,首先需要对原始长URL进行编码,通常采用的是Base64编码,将URL转换为一串可打印的字符。 2. 哈希算法:然后使用哈希函数(如MD5或SHA-1)将编码后的URL转换为固定长度的哈希值。这样...

    短网址生成网站源码_短网址生成_防红_防红源码_

    因此,一般会通过二次编码或者自定义的短码表进行转换,使得短网址更便于输入和记忆。 防红机制在短网址服务中起到关键作用,主要是通过对原始长网址进行某种形式的处理,比如加密、混淆或者通过代理服务器转发,来...

    全新PHP短网址生成系统,短链接生成系统,URL缩短器系统源码

    短网址生成系统,顾名思义,是一种能够将长URL转化为短链接的服务。它主要通过哈希算法或自增ID结合编码方式来实现。在这个系统中,我们使用的编程语言是PHP,这是一种广泛应用的开源脚本语言,特别适合于Web开发。 ...

    URL转换为PDF的Java实现

    在IT行业中,转换URL到PDF是一项常见的需求,例如为了保存网页内容、制作电子文档或进行离线阅读。Java作为一种广泛使用的编程语言,提供了多种方法来实现这个功能。本篇文章将详细探讨如何在Java环境中将一个网页...

    短网址生成器短网址生成器

    短网址生成器是一种工具,它将较长的URL(统一资源定位符)转化为简短的、易于分享和记忆的短链接。这种技术在社交媒体、电子邮件、市场营销以及任何需要节省字符空间的场景中尤其有用。短网址生成器的工作原理是...

    .NET短URL压缩算法

    通过下载提供的"短URL压缩算法"项目,你可以深入研究其具体实现,包括源代码、数据库设计和配置文件等内容,进一步理解.NET环境中短URL生成的细节。该项目提供了学习和研究短URL算法的良好实践,对于提升.NET开发者...

    Go-shorturl-短链接生成算法

    本项目"Go-shorturl"专注于实现一个短链接生成算法,让我们来详细探讨其中涉及的知识点。 1. **哈希函数与哈希表**: 短链接生成通常会用到哈希函数,如MD5或SHA系列,将长链接转化为固定长度的哈希值。然而,哈希...

    通过URL地址获取网页生成jpg图片

    本教程将详细介绍如何通过URL地址获取网页并生成jpg图片,同时解决32位和64位运行环境下的兼容性问题。我们将主要使用Java语言来实现这一功能,因为它具有丰富的库和跨平台的特性。 首先,我们需要一个能够处理网络...

    网页URL生成图片.zip

    这个“网页URL生成图片.zip”文件很可能包含一个或多个程序或库,用于将网页转换为图像格式,比如JPG或PNG。在这个过程中,主要涉及到的技术包括网络请求、网页解析和图像渲染。 首先,我们要理解的是网络请求。在...

    百度短网址生成器

    【百度短网址生成器】是一种在线工具或软件应用程序,它旨在帮助用户将长网址转换为简短、易于记忆的短网址。在互联网上,长网址可能会导致诸多不便,例如在社交媒体上占据过多空间,或者在短信和邮件中因字符限制而...

    短链接生成网源码.zip

    递增ID编码则是将每个新链接对应一个不断增长的数字,再通过某种编码方式(如Base62)转换成字母数字组合的短链接。根据描述,这个系统可能采用了更为简洁的编码方式,以减少可能出现的冲突。 数据库方面,短链接...

    短连接生成图文教程

    短连接生成的原理是基于 URL 重写和 URL 短链技术。在短连接生成器网站中,输入的长网址将被重写为短网址,并将其存储在服务器上。当用户访问短网址时,服务器将自动重定向到原始的长网址。 使用短连接生成器可以...

Global site tag (gtag.js) - Google Analytics