# 寻友系统-前端 **Repository Path**: the-future-world-only/partner-matching-frontend ## Basic Information - **Project Name**: 寻友系统-前端 - **Description**: 一个帮助大家找到志同道合的伙伴的移动端网站(APP 风格),包括用户登录注册、更新个 人信息、按标签搜索用户、推荐相似用户、组队等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-04 - **Last Updated**: 2023-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 寻友系统 ##项目介绍 一个帮助大家找到志同道合的伙伴的移动端网站(APP 风格),包括用户登录注册、更新个人信息、按标签搜索用户、推荐相似用户、组队等功能。 ##技术栈 前端:Ant Design pro+Umi开发框架+Vue 3+Vant UI组件库+Vite脚手架 后端:SSM+Mybatis-Plus+SpringBoot框架+MySQL+Redis缓存+Redisson分布式锁+Spring Scheduler定时任务+Swagger+Knife4j接口文档+相似度匹配算法+Nginx部署 ##技术亮点 * 添加全局请求拦截和全局异常处理逻辑,减少重复代码,提高项目可维护性;采用统一的结果封装类,规范了返回的结果,并且开发了相应工具类,使用静态方法提高了开发效率。 * 数据进行了脱敏处理,隐藏敏感信息,防止数据库中的字段泄露,实现了敏感隐私数据的可靠保护。 * 使用 Jaccard相似度算法 实现了根据标签匹配最相似用户的功能,并通过优先队列来减少TOP N 运算过程中的内存占用。 * 使用 Redis 缓存首页高频访问的用户信息列表,实测将接口平均响应时长从 813毫秒缩短至 14 毫秒。且通过自定义 Redis 序列化器来解决数据乱码、空间浪费的问题。 * 为解决同一用户重复加入队伍、入队人数超限的问题,使用 Redisson 分布式锁来实现操作互斥,保证了接口幂等性。 * 为解决首次访问系统的用户主页加载过慢的问题,使用 Spring Scheduler 定时任务来实现缓存预热,并通过分布式锁保证多机部署时定时任务不会重复执行。 * 使用Knife4j + Swagger 自动生成后端接口文档,并通过编写 ApiOperation 等注解补充接口注释,避免了人工编写维护文档的麻烦。 * 对于项目中复杂的集合处理(比如为队伍列表关联已加入队伍的用户),使用 Java 8 Stream API 和 Lambda 表达式来简化编码。 * 采用Mybatis+Mybatis-Plus进行数据访问层的开发,复用通用方法,大大提升了项目的开发效率。