LearnLink伙伴匹配系统笔记

LearnLink伙伴匹配系统笔记
这不是Cola项目介绍
帮助大家找到学习伙伴的移动端 H5 网站(APP 风格),基于 Spring Boot 后端 + Vue3 前端的 全栈项目,包括用户登录、更新个人信息、按标签搜索用户、建房组队、推荐相似用户等功能。
需求分析
- 用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学
- 主动搜索:允许用户根据标签去搜索其他用户
- Redis 缓存
- 组队
- 创建队伍
- 加入队伍
- 根据标签查询队伍
- 邀请其他人
- 允许用户去修改标签
- 推荐
- 相似度计算算法 + 本地实时计算
技术栈
前端
- Vue 3 开发框架(提高页面开发的效率)
- Vant UI(基于 Vue 的移动端组件库)(React 版 Zent)
- Vite 2(打包工具,快!)
- Nginx 来单机部署
后端
- Java 编程语言 + SpringBoot 框架
- SpringMVC + MyBatis + MyBatis Plus(提高开发效率)
- MySQL 数据库
- Redis 缓存
- Swagger + Knife4j 接口文档
前端初始化+前端设计
数据库表设计
标签的分类
新增标签表
建议用标签,不用分类,更灵活
数据库四件套:id、createTime、updateTime、isDelete
用户自定义标签?
:::success
SQL语言分类:
①DDL define建表、操作表
②DML manage更新删除数据,影响实际表里的内容
③DCL control控制,权限
④DQL query查询,select
:::
修改用户表
想修改用户表,就要知道用户有哪些标签
此处选择第一种 (根据自己的实际需求来!!!没有任何一种设计能适用于所有的场景👻**)**
- **直接在用户表补充 tags 字段,[‘Java’, ‘男’] 存 json 字符串 **
优点:查询方便、不用新建关联表,标签是用户的固有属性
(除了该系统、其他系统可能要用到,标签是用户的固有属性) 节省开发成本
应用场景:查询用户列表,查关系表拿到这 100 个用户有的所有标签 id,再根据标签 id 去查标签表。
缺点:用户表多一列,会有点
哪怕性能低,可以用redis缓存
- 加一个关联表,记录用户和标签的关系
关联表的应用场景:查询灵活,可以正查反查
缺点:要多建一个表、多维护一个表
重点:企业大项目开发中尽量减少关联查询,很影响扩展性,而且会影响查询性能
1 | alter table user add COLUMN tags varchar(1024)null comment'标签json列表' |
之后可能要经常通过这个标签名去搜索,给标签名加上唯一索引,上传标签的用户加上普通索引
后端初始化
直接在用户中心的基础上写,其实也可以分离开,但这里就不做了
在UserServiceImpl里写方法,查询tag,老三样了
不再赘述
:::success
问题:SQL查询和内存查询,在特定的情况下,哪个会更快呢?
:::
- SQL查询
- 内存查询
的区别?
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果







