项目
更新: 2/8/2025 字数: 0 字 时长: 0 分钟
速配
项目地址
前端 https://github.com/lihuibear/friend-frontend
后端 https://github.com/lihuibear/friend-backed
项目介绍
本项目是一个基于 Vue 3 和 Spring Boot 2 的移动端网站,旨在为用户提供高效、便捷的社交和组队功能。项目核心功能包括用户管理、按标签检索用户、推荐相似用户、组队等。通过合理的技术选型和优化,系统在性能、可维护性和用户体验方面都得到了显著提升。
技术栈
- 前端: Vue 3
- 后端: Spring Boot 2
- 数据库: MySQL
- 缓存: Redis
- 分布式锁: Redisson
- 接口文档: Knife4j + Swagger
核心功能
用户管理:
- 实现了用户的注册、登录、信息修改等基础功能。
- 支持用户标签的添加和修改,便于后续的检索和推荐。
按标签检索用户:
- 用户可以通过标签筛选其他用户,系统会根据标签匹配度进行排序。
- 使用编辑距离算法计算用户标签的相似度,确保推荐结果的准确性。
推荐相似用户:
- 基于用户的标签信息,系统会推荐与其兴趣相似的其他用户。
- 通过优先队列优化了 TOP N 相似用户的筛选过程,减少了内存占用。
组队功能:
- 用户可以创建队伍,并邀请其他用户加入。
- 使用 Redisson 分布式锁 解决了同一用户重复加入队伍、队伍人数超限等问题,保证了接口的幂等性。
性能优化
缓存预热:
- 针对首次访问系统的用户主页加载过慢的问题,引入了 Spring Scheduler 定时任务 进行缓存预热。
- 通过 分布式锁 确保在多机部署环境下,定时任务不会重复执行,避免了缓存数据的重复加载。
集合处理优化:
- 在处理复杂的集合操作时(如为队伍列表关联已加入队伍的用户),使用了 Java 8 Stream API 和 Lambda 表达式 ,简化了代码逻辑,提升了代码的可读性和可维护性。
分布式锁:
- 在组队功能中,使用 Redisson 分布式锁 保证了高并发场景下的数据一致性,避免了同一用户重复加入队伍或队伍人数超限的问题。
接口文档与维护
- 使用 Knife4j + Swagger 自动生成后端接口文档,减少了手动编写文档的工作量。