国庆项目训练营回放的时间轴及知识点分布(三、四天)

上一篇:国庆项目训练营回放的时间轴及知识点分布(前两天) (zsxq.com)


第三天:前后端协作,如何做好开发第一步

时间轴和知识点


00:00:00~00:02:09 介绍今天的主题(看回放的同学直接跳过)

00:02:09~00:04:21 总结和回答前两天的问题(看回放的同学直接跳过)

00:04:22~00:09:45 怎么做好前后端协作?

  1. 接口文档
  2. 大家一起参加需求评审,都知道要做什么事情
  3. 前端和后端分别考虑怎么实现这个需求
  4. 前端找后端要哪些接口?
  5. 后端数据库表怎么设计?提供给前端哪些接口?
  6. 本质上前后端对接依赖于接口文档
  7. 前后端对齐,确认了字段信息,接口信息,前后端并行开发
  8. 后端独立写接口
  9. 前端mock数据或者写死数据

00:09:45~00:15:14 点评大家的项目(看回放的同学直接跳过)

00:15:15~00:46:56 如何做好开发第一步

拿到新项目,搭建好demo之后,第一步要做哪些:

  1. 开发第一步:先把增删改查做好
  2. 字段规范以团队内部约定为准

以寻爱项目为例,讲解项目结构

  1. 简单逻辑可以按需放到controller层中,稍复杂的业务逻辑一定写到service层中(controller写接口,service写业务逻辑)

00:46:56~00:59:55 根据数据库设计如何快速开发增删改查

  1. mybatis-x插件生成代码,逻辑删除
  2. 创建 controller,生成增删改查接口
  3. 创建请求类DTO,方便前端
  4. 最好是编写单元测试

00:59:56~01:04:44 接口设计规范

  1. 自己定义开发规范
  2. 遵循业内的开发标准
  3. RESTful接口设计规范
  4. OpenAPI

01:04:45~01:27:37 前端部分讲解

  1. 前端目录结构
  2. 前端增删改查步骤讲解
  3. 前端开发经验分享

01:27:38~01:28:50(结束) 任务分配(看回放的同学直接跳过)


第四天:如何聪明地写代码

时间轴和知识点


00:00:00~00:03:10 介绍本次直播内容

  1. 原则:先做设计,再写代码
  2. 寻爱网项目功能具体设计+讲解
  3. 从设计到开发一个新的功能

00:03:11~00:52:15 寻爱网项目功能(点赞功能)具体设计+讲解

后端部分到00:48:29,之后是前端部分到00:52:15

  1. 需求分析:功能的一些需求上的限制,比如每个用户只能点赞一次等
  2. 方案设计:为什么要写:
  3. 便于开发
  4. 自己总结
  5. 明确依赖
  6. 更好地沉淀,给他人给团队做参考
  7. 流程设计要清晰、详细,后期实现和调试方便,提升开发效率
  8. 方案设计:业务流程,描述越详细越好,以点赞功能为例
  9. 基本流程
  10. 输入:接收请求参数:用户id、帖子id等,分析参数:尽量让用户传递最少的、最安全的参数
  11. 校验原则:”高性能校验原则“
  12. 优先校验不需要查数据库的、操作第三方资源的
  13. 参数校验
  14. 业务无关的校验:判断请求参数是否为null、id是否>0
  15. 业务相关的校验:帖子是否存在,帖子的状态是要能点赞的(比如必须审核通过)
  16. 权限校验
  17. 判断用户是否登录:获取当前用户信息
  18. 执行点赞操作
  19. 单独点赞表
  20. 1、用户是否已点赞:根据userId和postId查询点赞表,如果存在表示已点赞,否则未点赞
  21. 2、如果已点赞,执行【取消点赞】操作
  22. 从点赞表删除数据
  23. 帖子表点赞数量-1
  24. 两个操作要用事务(可以用事务注解),下同
  25. 3、如果未点赞,执行【点赞】操作
  26. 点赞表增加数据
  27. 帖子表点赞数量+1
  28. 返回一个能区分是点赞成功还是取消点赞成功的值,比如返回1、-1表示点赞成功、失败
  29. 除了基本流程,还要考虑
  30. 安全性
  31. 权限
  32. 幂等性
  33. 用户不能重复点赞/取消点赞,加锁保证幂等性(注意锁力度,给用户id加锁,注意加锁要是同一个对象,比如String.valueOf(xxx).intern())
  34. 性能
  35. Redis实现点赞-》提升接口性能,减少响应时长
  36. 存储
  37. 硬删除等
  38. 前端要做什么
  39. 请求后端接口
  40. 根据后端返回数据改变图标和帖子点赞数

00:52:15~00:54:30 测试根据什么测试?

  1. 测试左移:在需求分析阶段考虑要做哪些测试。
  2. 自动化测试

00:54:31~00:57:10 回答问题

  1. 加锁会影响性能,尽量减小锁的粒度
  2. 为什么要做详细地设计,特别是详细和流程?在设计方案找出问题成本是最低的,理清逻辑很重要

00:57:14~01:34:38(结束) 从设计到开发一个新的功能

切换 banner

  1. 需求分析
  2. 管理员在管理后台可以切换首页的 banner 图
  3. 切换方式
  4. 本地上传文件
  5. 上传图片地址
  6. 在线裁切
  7. 程序员关注:怎么实现方便
  8. 产品关注:用户怎么用方便
  9. 选用那种方式根据情况具体分析
  10. 没有最好的实现,只有最合适的。要灵活。
  11. 系统设计(以上传图片地址的实现方式为例)
  12. 图片的地址如何存储
  13. 存配置中心里
  14. 存数据库表里
  15. 本地文件/内存(不推荐)
  16. 库表设计
  17. 四件套
  18. 根据具体情况设计
  19. 避免上线对数据库的改动
  20. 表可以思考通用
  21. 尽量保证扩展性
  22. 跟着需求走,灵活一些
  23. 实现
  24. 后端提供给管理员的接口
  25. 前端提供页面

理性分析,不要到代码实现阶段再改来改去的


0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
CarreyWu
下载 APP