伙伴匹配项目 笔记
第二个星球项目(伙伴匹配系统)完结撒花!昨天刚结束趁着热乎劲来写下项目总结!感谢鱼皮哥和星球,又学到了好多新知识!从这个项目开始写博客,到项目结束居然已经写了 32 篇,有 400 粉丝了嘿~~
后端技术收获
1、数据库表设计:新增模块时在原有表的基础上新增字段还是新增一张表?设计好之后考虑现有的字段能否满足系统要求,应用到使用场景中进行考虑,进行补充
2、整合 Swagger 接口文档和 Kife4j 接口文档:引入依赖,添加配置类,浏览器查看接口文档,还可以使用 @ApiOperation 等注解个性化定制接口文档
3、跨域问题:前端网关支持(用户中心用的是 Nginx 添加跨域配置) / 后端支持(添加注解或编写跨域配置✔)
4、爬虫的基本思路:网络请求中查看请求地址、查看接口信息、查看网络请求复制 curl
5、使用 EasyExcel 导入 Excel 表格数据:引入依赖、创建读对象、将表格表头与 Java 对象属性关联起来、创建监听器读取数据、清洗数据后导入数据库
6、SQL 查询与内存查询(查询用户标签):前者使用 Mybatis-plus 提供的 like 模糊查询,使用简单;后者先查询出所有用户,然后再内存中计算过滤用户,两者各有优缺点,视情况单独使用或结合使用
7、IDEA 在本地启动多个 SpringBoot 后端服务模拟集群
8、单机登录升级为分布式 Session 登录:登录流程(Session)、单机登录的局限性(登录态只保存在一台服务器上,服务器之间不共享数据)和用 Redis 实现分布式 Session 的实现方式(共享登录态)。重点是理解为什么要使用分布式 Session,理解思路和原理
9、导入数据的几种方式:用可视化界面、执行 SQL 语句(数据量小的情况)、编写程序控制导入(for循环 / 一次性任务)
10、在 Java 中通过 SpringDataRedis 操作 Redis:引入依赖、编写 Redis 配置、注入 RedisTemplate 调用方法来操作 Redis
11、使用 Redis 要注意的问题:缓存穿透、缓存雪崩、误删锁、锁的续期(Redisson 的看门狗机制)问题、锁的主从一致性(在每台 Redis 都要获取锁,所有都获取成功才算获取锁成功)
12、查询性能优化的方向:开启分页查询、使用缓存提前保存需要的数据、只查询需要的字段、取消数据库查询的日志输出、维护固定长度的集合减少占用内存空间
13、使用定时任务进行缓存预热:缓存预热的原因:防止首个进入系统的用户加载缓慢,影响用户体验;定时任务:使用 @EnableScheduling 开启框架对定时任务的支持,在执行的定时任务方法上使用 @Scheduled 注解,通过 cron 表达式指定定时任务执行时机
14、使用 Redisson 提供的分布式锁控制定时任务的执行:普通锁的缺点(锁只对单个服务器有效)
15、请求和响应参数包装类:请求封装 DTO、响应封装 VO,
16、用户匹配思路:使用编辑距离算法根据用户标签匹配用户
Junit 单元测试:写好一个接口 / 工具类 / 算法后先写一个测试类看看有没有 bug
17、Java 8 的 lambda 表达式:简化集合的操作(现在还比较生疏,平时要多用)
18、工具类:Gson 序列化和反序列化、BeanUtils 两个对象的属性快速复制、StringUtils 判断空串、CollectionUtils 判断空集合
19、插件使用:使用 MybatisX 插件简化开发、使用 GenerateAllSetter 快速为对象赋值、浏览器插件 FeHelper 美化接口响应数据查看 JSON
前端技术收获
1、使用 Vue Cli 快速初始化前端项目
2、快速上手 Vant 组件库:查看官方文档,复制示例代码,按需修改
3、vue-router 的使用:查看官方文档,引入路由组件 / 初始化时直接引入,在配置文件中配置路由路径和对应的视图组件;跨页面传参:使用 vue-router 提供的钩子函数 useRoute() 在跨页面时携带参数,通过 query 取出参数(useRouter() 是用来进行页面跳转 / 返回等)
4、使用 Axios 发送请求:安装 Axios 库后按照官方文档示例,封装自己的请求实例 myAxios,添加全局请求拦截器和响应拦截器(统一添加请求地址的前缀、打印日志、登录拦截等)
5、前后端联调数据格式不匹配的问题:安装 qs 库,将 Axios 的请求传参序列化、前端使用 JSON.parse() 解析后端响应的 JSON 格式的字符串
6、组件复用思想:用户信息 / 队伍卡片在多个视图组件中都会用到,将卡片抽取出来,在需要展示的地方引用,减少重复代码,方便后续统一修改样式等操作
编程能力提升
1、遇到报错或与预期不符的异常能通过查看网络请求、前端请求负载、后端响应值和 Debug 来解决
2、测试:后端写完一个接口后通过接口文档发送请求并查看响应数据以及 MySQL / Redis 数据库的变化来判断代码是否有 Bug,响应数据与预期不符再 Debug 寻找问题、解决问题
3、需求分析和接口设计:组队功能分析各个接口的需求、设计接口(请求路径、封装请求参数、封装响应参数)等
后端源码(直接接着用户中心写的):https://github.com/lvxinxinL/user-center
前端源码:https://github.com/lvxinxinL/langhua-frontend
博客:https://blog.csdn.net/m0_74059961?spm=1000.2115.3001.5343
#项目#


