【毕业设计/前后端分离/开源】用户匹配系统-速配SUPER

这是一个区别于传统中后台的毕业设计项目,如果你想脱颖而出,可以看一看!源码在最后噢!

在线体验:

SUPER速配icon-default.png?t=N7T8https://ochiamalu.top测试账号:admin

密码:12345678

文档网站:速配SUPER文档icon-default.png?t=N7T8http://doc.ochiamalu.top

项目简介

一个帮助大家找到志同道合的伙伴的移动端网站(APP 风格),包括用户登录注册、更新个人信息、按标签搜索用户、推荐相似用户、组队等功能。技术难点包括登录注册、批量数据导入、信息检索展示、定时任务、资源抢占等。并且涵盖了分布式、并发编程、锁、事务、缓存、性能优化、幂等性、数据一致性、大数据、算法。

需求分析

  1. 用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学

  2. 主动搜索:允许用户根据标签去搜索其他用户

    1. Redis 缓存

  3. 组队

    1. 创建队伍

    2. 加入队伍

    3. 根据标签查询队伍

    4. 邀请其他人

  4. 允许用户去修改标签

  5. 推荐

    1. 相似度计算算法 + 本地分布式计算

核心功能

  1. 用户注册和登录:用户可以通过注册账号并登录使用该网站。
  2. 标签匹配:用户可以选择自己的技能和需求标签,系统会根据标签匹配合适的队友。
  3. 组队功能:用户可以与其他用户组建队伍,一起参加编程比赛。
  4. 帖文发布、点赞和关注:用户可以发布自己的帖文,其他用户可以对其进行点赞和关注,以便更好地了解和交流。
  5. 实时聊天:队伍中的用户可以进行实时聊天,方便沟通和协作。
  6. 用户管理:管理员可以对用户进行管理,包括审核用户信息和处理用户投诉等。

技术选型

前端

  • Vue 3

  • Vite 脚手架

  • Vant UI 移动端组件库

  • Axios 请求库

后端

  • JAVA SpringBoot 框架

  • MySQL 数据库

  • Mybatis-Plus

  • Mybatis X

  • Redis缓存

  • Redisson 分布式锁

  • Spring Scheduler 定时任务

  • Swagger + Knife4j 接口文档

  • Gson JSON序列化库

  • 最短编辑距离算法

  • WebSocket

亮点

  1. 用户登录:使用 Redis 实现分布式 Session,解决集群间登录态同步问题;使用token储存用户信息并实现续签和超时自动退出。

  2. 对于项目中复杂的集合处理(比如为队伍列表关联已加入队伍的用户),使用 Java 8 Stream API 和 Lambda 表达式来简化编码。

  3. 使用 Redis 缓存首页高频访问的用户信息列表,将接口响应时长从 12520ms缩短至400ms。且通过自定义 Redis 序列化器来解决数据乱码、空间浪费的问题。

  4. 为解决首次访问系统的用户主页加载过慢的问题,使用 Spring Scheduler 定时任务来实现缓存预热,并通过分布式锁保证多机部署时定时任务不会重复执行。

  5. 为解决同一用户重复加入队伍、入队人数超限的问题,使用 Redisson 分布式锁来实现操作互斥,保证了接口幂等性。

  6. 使用编辑距离算法实现了根据标签匹配最相似用户的功能,并通过优先队列来减少 TOP N 运算过程中的内存占用。

  7. 自主编写 Dockerfile,并通过第三方容器托管平台实现自动化镜像构建及容器部署,提高部署上线效率。

  8. 使用 Knife4j + Swagger 自动生成后端接口文档,并通过编写 ApiOperation 等注解补充接口注释,避免了人工编写维护文档的麻烦。

  9. 前端使用 Vant UI 组件库,并封装了全局通用的 Layout 组件,使主页、搜索页、组队页布局一致、并减少重复代码。

  10. 基于 Vue Router 全局路由守卫实现了根据不同页面来动态切换导航栏标题, 并通过在全局路由配置文件扩展 title 字段来减少无意义的 if else 代码。

  11. 使用component is标签自定义少数页面的基本布局,优化用户体验。

  12. 封装前端卡片组件,对数据做统一处理,减少重复代码。

  13. 使用defineEmits为子组件绑定事件,并使用emits将事件发送给父组件,优化用户在操作后的体验。

  14. 使用本地+云服务储存用户头像,并自定义cdn加速域名指向项目专用储存空间。

  15. 使用WebSocket在单个TCP连接上进行全双工通信,创建持久性的连接,实现队伍聊天室中的实时聊天。

  16. 使用quartz定时任务进行缓存预热、清理过期数据,减少数据库压力并加快用户访问速度。

软件架构

数据库架构

image-20230623201717125

功能介绍

模拟数据

功能介绍:模拟数据功能是一种用于生成虚拟数据的工具,可以用于测试、演示或开发目的。通过使用模拟数据功能,您可以快速生成大量的虚拟数据,例如用户信息、订单信息、商品信息等,而不必手动输入这些数据,同时也可以减少手动输入数据所带来的错误风险。

模拟数据功能通常具有可定制性,您可以根据自己的需求来生成不同类型的数据。例如,您可以指定生成的数据类型、数据格式、数据范围等。此外,模拟数据功能还可以生成随机数据,以模拟真实的数据情况。

功能使用:首次启动可执行测试类中的方法生成一定数量的随机用户模拟数据。

主页

功能简介:当用户首次访问该网站的主页时,他们将会看到一个简洁而直观的界面,该界面将展示当前最热门的帖子和用户。此外,用户还可以通过搜索栏来查找特定的帖子或用户。在主页的底部,有一个导航栏,其中包括主页、消息、个人中心等功能。用户可以通过导航栏快速访问这些功能。

功能使用:

1)匹配用户:用户未登录时为随机查询,用户登录后若用户填写了标签,则将根据标签的相似度进行匹配。

2)热门帖文:展示用户发布的博文,按照时间顺序,新发布的帖文在前。

3)滚动分页查询:用户可上滑匹配用户或热门帖文,将不断查询下一页的数据,下拉超过一定高度后显示回到顶部按钮。

4)下拉刷新:用户可下拉匹配用户或热门帖文,将从第一页开始重新加载。

用户注册

功能简介:用户注册是该网站的核心功能之一。用户可以通过注册一个账户来访问网站的全部功能。在注册页面,用户需要填写一些基本信息,例如用户名、密码、手机号等。为了确保用户信息的安全性,网站会对用户密码进行加密存储,并采用验证码等措施来防止恶意注册。一旦用户完成注册,他们就可以使用自己的账户来登录网站,享受到更多的功能和服务。

功能使用:

1)用户未登录时点击个人页将跳转至登录页。

2)点击发送验证码后显示验证码输入框,并进入60秒倒计时,在此期间不可再次发送验证码。注意:用户名为登录所用。

3)若配置正确将发送短信至手机号,若不进行配置可将验证码打印至控制台。

4)注册成功后将跳转至标签编辑页,用户可选择与自己匹配的标签,也可以自定义标签。若希望以后再填写,可以点击右上角跳过。

个人主页

功能简介:每个用户都有一个个人主页,该主页展示了该用户的基本信息、创建的队伍、加入的队伍等。用户可以在自己的个人主页上编辑自己的个人资料,例如头像、个人简介等。此外,用户还可以在自己的主页上查看自己发布的帖子的信息,例如帖子点赞数等。

功能使用:

1)注册成功后或登陆后可以进入个人页,用户可点击修改信息修改除登录账号外的信息。

2)创建的队伍:用户创建的队伍信息。

3)加入的队伍:用户加入的队伍信。

4)我写的帖文:用户创建的帖文信息。

5)联系客服:用户遇到问题可联系客服。

忘记密码或账号

功能简介:当用户忘记了他们的密码或账号时,网站通常提供找回密码或账号的功能。这可以通过用户提供他们的手机号码来实现。网站会向用户提供的手机号码发送一封包含验证码的短信。用户可以使用这些信息来重置他们的密码或找回他们的账号。

功能使用:

1)忘记密码:用户可点击登录页中的忘记密码进入。

2)输入注册时使用的手机号。

3)此时将显示绑定的账号,若忘记密码可输入验证码。

4)验证通过后即可修改新密码

修改信息

功能简介:用户可以通过修改个人资料来更新自己的信息。网站提供了一个编辑资料的页面,用户可以在该页面上修改自己的用户名、密码、电子邮件地址、个人简介、头像等信息。用户需要输入当前的密码才能进行修改,以确保账户的安全性。修改信息功能还可以帮助用户及时更新自己的个人资料,保持与其他用户的联系和互动。

功能使用:

1)头像修改:用户点击后可上传喜欢的头像。

2)昵称修改:用户可修改展示的昵称。

3)标签修改:用户可以更新自己的标签。

4)个性签名:用户可以简略地描述自己。

5)性别修改:用户可修改性别。

6)电话修改:用户填写新手机号后,若配置正确,将发送验证码至手机,验证通过后将更新手机号。

7)邮箱修改:用户填写新邮箱后,若配置正确,将发送验证码至邮箱,验证通过后将更新邮箱。

搜索用户

功能简介:网站提供了一个搜索用户的功能,让用户可以方便地查找其他用户。用户可以在搜索框中输入关键词,系统会自动匹配相关的用户,并将搜索结果展示给用户。用户可以通过搜索结果页面查看其他用户的个人主页。搜索用户功能可以帮助用户快速找到自己感兴趣的用户,扩大自己的社交圈子。

功能使用:

1)标签搜索:用户可以点击右上角的搜索按钮,通过标签搜索用户。

用户详情

功能简介:用户详情功能是网站中的一个页面,用户可以在该页面上查看其他用户的详细信息。用户详情页面通常包括用户的用户名、昵称、头像、个人简介等信息。更好地了解其他用户并与其进行互动。

功能使用:

1)用户详情:用户点击任意其他用户后可跳转至用户详情页。

创建队伍

功能简介:创建队伍是该网站的一个核心功能,它可以让用户在网站上创建一个团队,并邀请其他用户加入。用户可以在创建队伍时设置队伍的名称、描述、隐私设置等信息,以便其他用户更好地了解该团队的性质和目的。创建者还可以设定加入条件,例如需要审核或需要特定的技能等。其他用户可以通过搜索或接受邀请的方式找到并加入队伍。加入队伍后,用户可以与队友沟通、协作和共享资源,共同完成团队目标。

功能使用:

1)点击队伍页右下角的加号可以跳转至创建队伍页面。

2)若不填写过期时间则队伍永久有效。

3)公开状态所有人可加入,私有状态仅自己可见,加密状态其他用户输入正确的密码则可以加入。

队伍详情

功能简介:队伍详情是指用户在进入一个队伍页面后所能看到的所有信息,包括队伍的名称、描述、标签、成员列表、队伍动态等。在队伍详情页面,用户可以查看队伍的基本信息,了解队伍的性质和目的,以及查看队伍成员的信息。总之,队伍详情功能可以让用户更好地了解和管理自己所在的团队。

功能使用:

1)在队伍页可以看到非私有队伍,队长和管理员可以更新队伍和解散队伍。加入加密队伍需要输入密码。

2)搜索队伍:输入队伍名可搜索队伍。

3)队伍详情:点击队伍后可进入队伍详情页,可以看到队伍加入的队员,队长或管理员可以修改队伍封面图片。

4)队伍聊天室:队员可以进入队伍聊天室,进行实时聊天。

博文

功能简介:博文功能是该网站的一个核心功能之一,它可以让用户在网站上发表自己的文章、观点、经验和想法等。用户可以在博文中插入图片、视频和链接等多媒体内容,以丰富文章的表现形式。用户还可以在博文下面进行评论、点赞和分享等操作,与其他用户进行互动和交流。总之,博文功能可以让用户在该网站上分享自己的知识、经验和见解,同时也可以与其他用户进行交流和互动。

功能使用:

1)用户可以点击导航栏的加号新建博文。

2)新博文将显示在热门帖文中。

3)点击博文将进入博文详情页。

4)用户可以关注其他用户.

5)更多操作:点击右上角可显示弹框。复制链接可将博文链接复制

6)点赞博文:用户可以点击右下角点赞博文。

评论

功能简介:评论功能是该网站的一个重要功能,它可以让用户在博文、动态、任务和队伍等页面下方发表自己的评论。用户可以在评论框中输入文字、表情等内容,此外,管理员还可以对评论进行管理,例如删除不当言论或屏蔽垃圾信息等。总之,评论功能可以让用户在该网站上与其他用户进行交流和互动,分享自己的观点和看法。

功能使用:

1)博文评论:用户可以在博文下评论。

2)点赞评论:用户可以点赞评论。

3)删除评论:评论作者和管理员可以删除评论。

消息中心

功能简介:消息中心功能是该网站的一个重要功能,它可以让用户在一个地方查看和管理自己的消息。当其他用户对自己的博文、评论、动态、点赞、关注等操作时,用户可以在消息中心中看到相关的通知。此外,用户还可以在消息中心中查看系统发出的通知,例如账户信息、更新提示和重要通知等。用户可以通过点击消息中心的通知,直接跳转到相关的页面,方便快捷地查看和管理自己的消息。总之,消息中心功能可以让用户方便地查看和管理自己的消息,及时了解网站上的动态和变化。

功能使用:

1)新消息提醒:用户收到新消息时将提醒用户。

2)我的关注:用户关注的其他用户在更新博文后将把消息推送给所有粉丝,并在粉丝的我的关注中显示。

3)聊天室列表:这里将展示公共聊天室和已加入的队伍聊天室。

4)所有评论:展示用户所有的评论。可以进行点赞和删除。

5)赞:当用户收到点赞后将在这里显示。

6)关注:展示用户关注的其他用户。

7)粉丝:展示用户的粉丝。

项目地址

本项目使用Apache2.0开源协议。详细请见项目地址,有任何问题请通过gitee私聊。

如果可以的话点一点star~

后端地址:用户匹配系统super-backend: 用户匹配系统速配(super),快速匹配志同道合的队友,后端基于springboot整合SSM+MybatisPlus、Quarz定时任务,使用WebSocket实现实时聊天icon-default.png?t=N7T8https://gitee.com/ochiamaluo/super-backend

 前端地址:

用户匹配系统super-backend: 用户匹配系统速配(super),快速匹配志同道合的队友,后端基于springboot整合SSM+MybatisPlus、Quarz定时任务,使用WebSocket实现实时聊天icon-default.png?t=N7T8https://gitee.com/ochiamaluo/super-frontend

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茶然o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值