`
gembler
  • 浏览: 36487 次
  • 性别: 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

    PHP网址缩短设计程序经典代码PHP URL shortening the design process classic code

    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에...

    linkfollower

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

    urlshorteningservice:URL缩短

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

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

    url_shortening_project 使用Flask制作的网址缩短服务(例如tiny.url)

    vurl:Veez 的 url 缩短器

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

    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来替换此扩展名。 此扩展程序不与外界通信。 它仅在您的浏览器中有效。

    Shorty: Another URL Shortening Service-开源

    SAUSS是用PHP编写的功能齐全的URL缩短服务。

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

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

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

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

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

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

    leetcode不会-url-shortening:网址缩短

    URL,我们的服务应该为其生成一个更短且唯一的别名。 当用户访问一个短链接时,我们的服务应该将他们重定向到原始链接。 用户应该能够选择为其 URL 选择自定义短链接。 链接将在标准默认时间跨度后过期。 用户应该...

    url-shortening-api

    用户应该能够: 根据设备的屏幕尺寸查看站点的最佳布局缩短任何有效的 URL 即使在刷新浏览器之后,也可以查看其缩短链接的列表单击一下即可将缩短的链接复制到剪贴板在以下情况下提交form时收到错误消息: input框...

    url-shortening-api-master

    前端导师-简短的URL缩短API挑战 欢迎! :waving_hand: 感谢您检查此前端编码挑战。 挑战可帮助您构建现实的项目,从而提高您的编码技能。 为了应对这一挑战,您需要对HTML,CSS和JavaScript有基本的了解。 挑战 ...

    url-shortening-service

    网址缩短服务

    url-shortening-api-landing-page:着陆页设计-创建缩短的URL

    前端导师-简短的URL缩短API挑战解决方案 这是的解决方案。 前端导师挑战可帮助您通过构建现实的项目来提高编码技能。 挑战 用户应该能够: 根据设备的屏幕尺寸查看网站的最佳布局 缩短任何有效的URL 即使刷新...

Global site tag (gtag.js) - Google Analytics