# 寻友项目后端 **Repository Path**: h00ngyee/ffriends ## Basic Information - **Project Name**: 寻友项目后端 - **Description**: 基于Vue3+Spring Boot3的网站,实现了用户管理、按标签检索用户、推荐相似用户、组队等功能。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-30 - **Last Updated**: 2025-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 寻友项目后端 > 技术栈: Java , Spring Boot , MyBatis , MyBatis-Plus , MySQL , Maven , JUnit , redis , docker ## 项目介绍 基于 Vue + Spring Boot3的网站,实现了用户管理、按标签检索用户、推荐相似用户、组队等功能。 ## 主要功能 1. 用户登录:使用Redis实现分布式Session,解决集群间登录态同步问题;并使用Hash代替String来存储用户信息,节约了20%的内存并便于单字段的修改。 2. 对于项目中复杂的集合处理(比如为队伍列表关联已加入队伍的用户),使用Java8 Stream API和Lambda表达式来简化编码。 3. 使用Easy Excel读取收集来的基础用户信息,并通过自定义线程池+CompletableFuture并发编程提高批量导入数据库的性能。实测导入100万行的时间从50秒缩短至7秒。 4. 使用Redis缓存首页高频访问的用户信息列表,将接口响应时长从10秒缩短至20毫秒。且通过自定义Redis序列化器来解决数据乱码、空间浪费的问题。 5. 为解决首次访问系统的用户主页加载过慢的问题,使用Spring Scheduler定时任务来实现缓存预热,并通过分布式锁保证多机部署时定时任务不会重复执行。 6. 为解决同一用户重复加入队伍、入队人数超限的问题,使用Redisson分布式锁来实现操作互斥,保证了接口幂等性。 7. 使用编辑距离算法实现了根据标签匹配最相以用户的功能,并通过优先队列来减少运算过程中的内存占用。 ## 实现功能 ### 用户管理 在用户中心项目的基础上进行改造和优化,实现了管理员对注册用户的CRUD操作。 比如搜索用户功能: ![管理员对用户搜索](./images/userSearch.png) ### 根据标签搜索用户 通过与用户相关联的标签搜索用户,实现对目标用户的精确查找。 ![标签搜索页面](./images/searchUsersByTags.png) ### 推荐相似用户功能 使用编辑距离算法实现,通过求取两个用户标签的最小交集来计算匹配度。(开启心动模式来匹配用户) ![匹配用户](./images/userRecommend.png)