基于 SpringBoot 开发的在线短链生成系统(附源码)

前言

分享一个基于 SpringBoot 开发的在线短链生成系统,在线短链接生成器。

完整项目源码在文章结尾处,大家自行下载即可~

一、实现功能

1、将长链接转换成短链接,访问短链接时, 302重定向至原始长链接

2、支持设置短链有效期

3、支持记录访问次数

二、界面展示

三、技术选型

依赖说明
SpringBoot基础框架
Thymeleaf模板引擎
JdbcTemplate持久层框架
Redis缓存
guavaHash算法、布隆过滤器

四、实现逻辑

1、使用 MurmurHash 算法将原始长链接 hash 为 32 位散列值,将散列值转为 BASE62编码 ,即为短链接。

2、用户访问短链接时,在 Redis 中查找是否存在缓存,存在则刷新缓存时间; 缓存中不存在,则去数据库查找,查找成功则添加到 Redis 缓存,302 重定向至原始长链接,并自增短链接访问量; 数据库中若也不存在,则跳转到404页面。

五、部分技术介绍

1、MurmurHash

MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。 与其它流行的MD5等哈希函数相比,对于规律性较强的 key,MurmurHash 的随机分布特征表现更良好。 非加密意味着着相比 MD5,SHA 这些函数它的性能肯定更高(实际上性能是 MD5 等加密算法的十倍以上)。 MurmurHash 有 32 bit、64 bit、128 bit 的实现,32 bit 已经足够表示近 43 亿个短链接。 使用 Java 的话,在 Google 的 
guava 或 
hutool 中有相应实现,这里使用 guava。

2、base62

MurmurHash 生成的哈希值最长有 10 位十进制数,为了进一步缩短短链接长度,可以将哈希值转为 base62 编码,这样最长就只有 6 个字符了。

3、301 和 302 重定向的区别

  • 301,代表 永久重定向,也就是说第一次请求拿到长链接后,下次浏览器再去请求短链的话,不会向短网址服务器请求了,而是直接从浏览器的缓存里拿,这样在 server 层面就无法获取到短网址的点击数了,如果这个链接刚好是某个活动的链接,也就无法分析此活动的效果。所以我们一般不采用 301。
  • 302,代表 临时重定向,也就是说每次去请求短链都会去请求短网址服务器(除非响应中用 Cache-Control 或 Expired 暗示浏览器缓存),这样就便于 server 统计点击数,所以虽然用 302 会给 server 增加一点压力,但在数据异常重要的今天,这点代码是值得的,所以推荐使用 302!

六、项目源码下载

项目源码下载链接https://download.csdn.net/download/weixin_47367099/85397360

点击此处即可下载SpringBoot开发的在线短链生成系统源码一个基于SpringBoot开发的在线短链生成系统源码实现功能1、将长链接转换成短链接,访问短更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_47367099/85397360

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
SpringBoot是一个开源的Java框架,可以简化Java应用程序的开发。它提供了很多方便的功能,可以帮助我们快速构建稳定可靠的应用程序。 要实现短链生成和统计,可以借助SpringBoot的特性和第三方库来完成。以下是一个基本的实现思路: 1. 短链生成 首先,我们需要设计一个用于生成短链的算法或方法。常见的方法是将长链接通过哈希算法转换为字符串。你可以选择使用MD5、SHA1等哈希算法,并取其中一部分字符作为短链接。另外,为了避免生成过长的短链,可以将其进一步进行压缩。 在SpringBoot中,可以通过创建一个生成短链的Controller来实现。Controller接收长链接作为参数,调用短链生成的方法,然后将生成短链接返回给前端。 2. 短链重定向 当用户点击短链接时,服务器需要将其重定向到原始的长链接地址。可以在SpringBoot中创建一个Controller,设置一个路由映射,并在该Controller中获取短链接对应的长链接,然后进行重定向。 3. 统计短链点击量 为了统计短链的点击量,我们可以在数据库中创建一个表,用于记录短链的相关信息,例如短链、长链接、点击次数等。 在SpringBoot中,可以定义一个点击事件的Controller,当用户点击短链时,将触发该Controller。该Controller负责将点击事件信息保存至数据库,并更新短链对应的点击次数。 以上是一个基本的实现思路,你可以根据具体需求和场景进行进一步的优化和改进。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员-张凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值