已经不少朋友问我(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,>>
这里拿<<
分享到:
相关推荐
因此,通常会采用Base62编码(包含0-9,A-Z,a-z),将哈希值转化为更友好的字符串。 3. **短码与长URL关联**:生成的短码会与对应的长URL在数据库中建立映射关系,以便于后续的短码解析。 4. **短码解析**:当...
- 概括 URL缩短服务,通过输入缩短的URL并在输入缩短的URL时将其重定向到原始URL。示例) => - 要求 提供URL输入表格和输出结果 缩短的网址不超过8位数字 来自相同URL的请求将...cd Shortening/ mvn package java -j
对于那些想要短网址但不能或不想使用公共网址缩短器的人来说,这是一个方便的实用程序。 例如,我将它与 weechat 插件一起使用,因为人们可能会向我发送私人、敏感的 URL,而这些 URL 可能不适合发送到带有可猜测 ...
URL을 입력받아 짧게 줄여주고, Shortening된 URL을 입력하면 원래 URL로 리다이렉트하는 URL Shortening Service 요구사항 URL입력폼공공결과결과 URL缩短密钥8个字符。 URL동일한缩短密钥합니다。 동일한URL에...
**短链接服务——Shorty: 另一种URL缩短服务** 短链接服务,也称为URL缩短服务,是一种在互联网上广泛使用的工具,它将长且复杂的网址转化为简短、易记的链接,便于分享和传播。"Shorty: Another URL Shortening ...
链接跟随者 基于Node.js的命令行实用程序,用于查找缩短的(或任何其他)HTTP URL的结束位置。 最多跟踪10个重定向。 现在,由于Facebook不会从fb.me地址...https://en.wikipedia.org/wiki/URL_shortening -> 200
除了哈希函数,还可以使用自增ID结合Base62或Base36编码将数字ID转化为字母数字字符串,这样可以生成更易读的短码。自增ID可以通过分布式锁(如Redis)保证全局唯一性。 6. **URL重定向**: 重定向可通过HTTP状态...
总的来说,"url_shortening_project"是一个利用Python Flask框架构建的实用工具,它提供了一个简单的URL缩短服务,通过本地数据库存储和解析短URL,同时利用HTML来呈现用户界面。这个项目对于学习Web开发、数据库...
为了解决这个问题,可以使用自增ID加上Base62(或Base36)编码,将数字转换为字母数字字符串,增加可用字符范围,降低冲突概率。 3. 重定向功能:当用户访问短码时,前端JavaScript可以通过Ajax向服务器发送请求,...
标题 "URL-shortening-API-" 暗示我们讨论的主题是一个基于API的URL缩短服务,它可能是用JavaScript构建的,特别是与React库结合使用。在这个项目中,开发者通过API与某个URL缩短服务交互,该服务接收长URL并返回一...
http://vurl.me/shorten?url=http://mycrazylongurlthat/desperately/needs/shortening 将返回带有缩短的 url 的纯文本响应: http :/ / vurl . me / OMG或使用json: ...
URL Shortener服务接受有效的http或https URL,并以以下格式缩短URL 如果我们选择相同的URL,它将返回实际的完整URL并在URL中填充一个新的浏览器标签。... 您将在“短URL”文本字段中收到短URL。 如果单击获取原始URL
此应用程序用于为长URL创建较短的别名。 依存关系 Docker Docker组成Symfony php框架Graphql MariaDB 结构 docker │ ├── database │ ├── logs │ ├── nginx │ └── php-fpm └── src ├── ...
语言:English,日本語 您可以缩短Amazon URL。 按下按钮将缩短的URL复制到剪贴板。 人们还可以通过手写Amazon URL来替换此扩展名。 此扩展程序不与外界通信。 它仅在您的浏览器中有效。
【标题】"url-shortening-api-master" 是一个前端开发项目,专注于实现URL缩短功能的API。这个API大师项目旨在提供一种高效的方法,将长网址转化为短小精悍的链接,便于分享和管理。 【描述】"前端导师-网址缩短API...
本项目名为“url-shortening-landing-page”,是使用React库来构建的URL缩短服务的登录页面。React是Facebook推出的一款用于构建用户界面的JavaScript库,以其组件化开发模式和高效的虚拟DOM更新机制而闻名。 **...
:laptop: 简短(网址缩短) 一种简单而有用的 Web 服务,可将长 URL 压缩为较短的 URL。特征通用网址缩短自定义 URL 缩短易于与其他应用程序集成开放端点缩短给定的长 URL : POST /api/short 使用自定义代码缩短 URL...
语言:English此扩展名将使用户能够缩短他们当前正在浏览的页面的URL。我们通常会在网上遇到有趣的文章和媒体,其中大多数没有有趣或容易记住的URL。使用XYZurl,用户可以将任何庞然大物的url缩短为几个字符。免费...
URL缩短器 介绍 这个项目是我尝试创建类似于TinyURL或Bit.ly的服务的尝试。 用户应该能够输入URL,而我的服务将缩短该URL并将其存储在表中。 我进行了大约4个小时的实施工作,并实施了缩短服务的关键功能。 怎么跑 ...