如何使用Java和Spring Boot创建短链接生成器 您所在的位置:网站首页 免费的短链接生成 如何使用Java和Spring Boot创建短链接生成器

如何使用Java和Spring Boot创建短链接生成器

2023-12-24 13:10| 来源: 网络整理| 查看: 265

[[433165]]

【51CTO.com快译】URL短链接生成器是一种根据冗长的URL,创建短链接的服务。通常,短链接的长度只有原始URL的三分之一、甚至四分之一。因此它们更容易被输入、呈现、以及推送。用户只需单击短链接,便可被自动重定向到原始的URL处。

目前,tiny.cc、bitly.com和cutt.ly都能够提供在线式的URL缩短服务。当然,您也可以为应用系统自行设计和开发出缩短URL的服务。下面,我和您讨论具体的实现过程。首先,让我们来探讨一下与之相关的功能性和非功能性的需求。

功能要求: 保存用户输入的长URL,并据此生成相应的短链接。 允许用户选择到期日期,以便生成的短链接在该日期后自动无效。 方便用户在单击短链接后,重定向到原始的长链接处。 作为可选的方式,允许用户创建服务帐户,并让生成的短链接仅对该账户有效。 以可选的方式,允许用户自行创建短链接。 以可选的方式,允许用户标记出那些最常访问的链接。 非功能性要求: 生成服务具有持续的有效性和可访问性。 重定向的用时应不超过2秒。 URL转换的方式

URL短链接生成器中最重要的是转换算法。不同的转换方式通常会产生不同的输出,而且它们各有优、缺点。假设我们需要一个最长为7个字符的短链接。那么我们可以采用MD5或SHA-2之类的哈希函数,对原始的URL进行散列处理。由于散列的结果会超过7个字符,因此我们只取前7个字符。不过,由于前7个字符可能已经被用于其他短链接,并由此会引发冲突,因此我们需要依次截取后面的7个字符,直至找到一个被使用过的短链接为止。

生成短链接的第二种方法是使用UUID。UUID被复制的概率近似为零,因此可以完全忽略冲突的可能。由于UUID是由36个字符组成,仍然可能遇到上述问题,因此我们应当截取前7个字符,然后检查该组合是否已被占用。

第三种方法是将数字从Base 10转换为Base 62。Base是可用于表示特定数字的字符数。Base 10是我们日常生活中使用的数字,即:[0-9],而Base 62则是:[0-9][az][AZ]。这意味着,以10为Base的四位数字,将与以62为Base、但具有两个字符的数字相同。因此在URL转换中,使用最大长度为7个字符的Base 62,将允许我们为短链接提供62^7个唯一值。

Base 62的转换机制

我使用如下算法,将一个Base为10的数字转换为Base为62:

while(number > 0)     remainder = number % 62     number = number / 62     attach remainder to start of result collection 

据此,我们只需要将结果集中的数字映射到Base为62的字符 [0,1,2,...,a,b,c...,A,B,C,...]即可。

下面,我通过将1000从Base 10转换为Base 62的例子,来讨论其工作机制。

1st iteration:          number = 1000          remainder = 1000 % 62 = 8          number = 1000 / 62 = 16          result list = [8] 2nd iteration:          number = 16          remainder = 16 % 62 = 16          number = 16 / 62 = 0          result list = [16,8]          There is no more iterations since number = 0 after 2nd iteration 

[16,8] 被映射到Base 62后为g8,即1000base10 = g8base62。

而从Base 62转换为Base 10的过程也很简单,即:

i = 0     while(i 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有