`
gembler
  • 浏览: 37197 次
  • 性别: Icon_minigender_1
  • 来自: 妖都
社区版块
存档分类
最新评论

短域名/URL Shortening/Base36/Base62

阅读更多
已经不少朋友问我(gembler),短域名URL的编码该怎么实现。当时可能我答得比较笼统,所以写个文章统一分享。

据我(gembler)所知的方法有以下几种:
  • Base62 或 Base36
  • Hash
  • 随机数
  • 自定义
  • 等等等等等.......


恩,我选了 Base62 或 Base36

首先,给一个简单处理步骤,这纯粹是我(gembler)个人想法。
  • URL入库(K/V,MySQL...),同时带个顺序增长的number
  • 拿着那个number进行编码(Base62/Base36),编码后的结果也存库(K/V,MySQL...)
  • 直接拿着那个编码后的结果查字典(K/V,MySQL...)


我(gembler)在Base62和Base36之间选了Base62,为什么?因为比Base36更短。

	/**
	 * 码表
	 */
	ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";


编码部份:
	private static String encoding(long num) {
		if(num < 1)
			throw new IllegalArgumentException("num must be greater than 0.");
		
		StringBuilder sb = new StringBuilder();
		for (; num > 0; num /= 62) {
			sb.append(ALPHABET.charAt((int) (num % 62)));
		}
		
		return sb.toString();
	}


有朋友说,不想用编码结果查字典,直接解码行不行?
行,当然行。

解码部份:
	private static long decoding(String str) {
		str = str.trim();
		if(str.length() < 1)
			throw new IllegalArgumentException("str must not be empty.");

		long result = 0;
		for (int i = 0; i < str.length(); i++) {
			result += ALPHABET.indexOf(str.charAt(i)) * Math.pow(62, i);
		}
		
		return result;
	}


完整源码,里面包含Base62和Base36,>>这里拿<<
3
3
分享到:
评论
2 楼 song_in_china 2013-07-04  
为什么下载下来的东西不对啊
1 楼 thebye85 2013-01-31  

相关推荐

    PHP.URL.design.process.code.rar_The Process_url shortening

    因此,通常会采用Base62编码(包含0-9,A-Z,a-z),将哈希值转化为更友好的字符串。 3. **短码与长URL关联**:生成的短码会与对应的长URL在数据库中建立映射关系,以便于后续的短码解析。 4. **短码解析**:当...

    Shortening:创建一个简短的URL

    - 概括 URL缩短服务,通过输入缩短的URL并在输入缩短的URL时将其重定向到原始URL。示例) =&gt; - 要求 提供URL输入表格和输出结果 缩短的网址不超过8位数字 来自相同URL的请求将...cd Shortening/ mvn package java -j

    shortening:个人网址缩短器

    对于那些想要短网址但不能或不想使用公共网址缩短器的人来说,这是一个方便的实用程序。 例如,我将它与 weechat 插件一起使用,因为人们可能会向我发送私人、敏感的 URL,而这些 URL 可能不适合发送到带有可猜测 ...

    URL_Shortening_Service

    URL을 입력받아 짧게 줄여주고, Shortening된 URL을 입력하면 원래 URL로 리다이렉트하는 URL Shortening Service 요구사항 URL입력폼공공결과결과 URL缩短密钥8个字符。 URL동일한缩短密钥합니다。 동일한URL에...

    Shorty: Another URL Shortening Service-开源

    **短链接服务——Shorty: 另一种URL缩短服务** 短链接服务,也称为URL缩短服务,是一种在互联网上广泛使用的工具,它将长且复杂的网址转化为简短、易记的链接,便于分享和传播。"Shorty: Another URL Shortening ...

    linkfollower

    链接跟随者 基于Node.js的命令行实用程序,用于查找缩短的(或任何其他)HTTP URL的结束位置。 最多跟踪10个重定向。 现在,由于Facebook不会从fb.me地址...https://en.wikipedia.org/wiki/URL_shortening -&gt; 200

    url-shortening-service

    除了哈希函数,还可以使用自增ID结合Base62或Base36编码将数字ID转化为字母数字字符串,这样可以生成更易读的短码。自增ID可以通过分布式锁(如Redis)保证全局唯一性。 6. **URL重定向**: 重定向可通过HTTP状态...

    url_shortening_project:使用Python开发的URL缩短服务。 它将长URL和文件名缩短为短URL,从而减少了出错的可能性。 它将短URL存储在本地数据库中,我们的Web应用程序从该短数据库中获取原始URL

    总的来说,"url_shortening_project"是一个利用Python Flask框架构建的实用工具,它提供了一个简单的URL缩短服务,通过本地数据库存储和解析短URL,同时利用HTML来呈现用户界面。这个项目对于学习Web开发、数据库...

    url短

    为了解决这个问题,可以使用自增ID加上Base62(或Base36)编码,将数字转换为字母数字字符串,增加可用字符范围,降低冲突概率。 3. 重定向功能:当用户访问短码时,前端JavaScript可以通过Ajax向服务器发送请求,...

    URL-shortening-API-

    标题 "URL-shortening-API-" 暗示我们讨论的主题是一个基于API的URL缩短服务,它可能是用JavaScript构建的,特别是与React库结合使用。在这个项目中,开发者通过API与某个URL缩短服务交互,该服务接收长URL并返回一...

    vurl:Veez 的 url 缩短器

    http://vurl.me/shorten?url=http://mycrazylongurlthat/desperately/needs/shortening 将返回带有缩短的 url 的纯文本响应: http :/ / vurl . me / OMG或使用json: ...

    urlshorteningservice:URL缩短

    URL Shortener服务接受有效的http或https URL,并以以下格式缩短URL 如果我们选择相同的URL,它将返回实际的完整URL并在URL中填充一个新的浏览器标签。... 您将在“短URL”文本字段中收到短URL。 如果单击获取原始URL

    url-shortening-application

    此应用程序用于为长URL创建较短的别名。 依存关系 Docker Docker组成Symfony php框架Graphql MariaDB 结构 docker │ ├── database │ ├── logs │ ├── nginx │ └── php-fpm └── src ├── ...

    URL shortening tool for Amazon-crx插件

    语言:English,日本語 您可以缩短Amazon URL。 按下按钮将缩短的URL复制到剪贴板。 人们还可以通过手写Amazon URL来替换此扩展名。 此扩展程序不与外界通信。 它仅在您的浏览器中有效。

    url-shortening-api-master

    【标题】"url-shortening-api-master" 是一个前端开发项目,专注于实现URL缩短功能的API。这个API大师项目旨在提供一种高效的方法,将长网址转化为短小精悍的链接,便于分享和管理。 【描述】"前端导师-网址缩短API...

    url-shortening-landing-page

    本项目名为“url-shortening-landing-page”,是使用React库来构建的URL缩短服务的登录页面。React是Facebook推出的一款用于构建用户界面的JavaScript库,以其组件化开发模式和高效的虚拟DOM更新机制而闻名。 **...

    URL-shortener:将长 URL 缩短为较短 URL 的服务

    :laptop: 简短(网址缩短) 一种简单而有用的 Web 服务,可将长 URL 压缩为较短的 URL。特征通用网址缩短自定义 URL 缩短易于与其他应用程序集成开放端点缩短给定的长 URL : POST /api/short 使用自定义代码缩短 URL...

    XYZurl.me {free url shortening}-crx插件

    语言:English此扩展名将使用户能够缩短他们当前正在浏览的页面的URL。我们通常会在网上遇到有趣的文章和媒体,其中大多数没有有趣或容易记住的URL。使用XYZurl,用户可以将任何庞然大物的url缩短为几个字符。免费...

    URL缩短服务:URL缩短器的基本实现,类似于TinyURL

    URL缩短器 介绍 这个项目是我尝试创建类似于TinyURL或Bit.ly的服务的尝试。 用户应该能够输入URL,而我的服务将缩短该URL并将其存储在表中。 我进行了大约4个小时的实施工作,并实施了缩短服务的关键功能。 怎么跑 ...

Global site tag (gtag.js) - Google Analytics