在线视频项目学习笔记(六)—项目总结
一、面试的问题
1.自我介绍
我是谁,在哪上学,最近做了个什么项目
2.简单介绍项目
a).项目是一个什么类型项目? 应学项目 "社交类 学习类 APP项目" "社交类项目用户可以发布视频观看别人发布视频这样APP项目 类似"
b).项目整体架构:vue+springcloud;前台+后台;整体采用前后端分离架构;主要负责后端开发
c).项目中有哪些微服务功能模块:用户模块 视频模块 等 主要负责什么: 后端管理系统相关接口开发 以及前端app端视频接口的开发和调试
3.详细项目架构
后端架构: maven 聚合形式进行开发 拆分服务: 短信 搜索 用户服务 视频 公共模块(业务工具类)
通信方式: http+restful json
前端架构: 后台管理系统基于vue进行开发的, 前端APP开发 前端人员
接口文档生成工具: YAPI 接口描述工具
4.Spring Cloud版本
SpringCloud: H版本 SR6
SpringBoot: 2.2.5.RELEASE
SpringCloud Alibaba: 2.2.1.RELEASE
SpringCloud 最新版本多少? 2020版本
5.Spring Cloud常见组件
服务注册中心 & 统一配置中心: nacos
服务间通信组件 : Openfeign 底层默认集成Ribbon组件 实现负载均衡 2.RestTemplate(Spring)+ribbon(负载均衡客户端组件)
服务网关组件 : gateway
服务熔断 限流 : sentinel 流量防卫兵
6.项目的亮点
a).使用redis完成整个系统 喜欢 不喜欢 浏览数 点赞数 存储登录信息? 1.redis存储 2.set结构 3.二次组织 hash 结构
b).视频的存储使用的是阿里云oss存储服务,并且使用了其提供的截取视频中的某一帧作为截图。前台app使用的是阿里云的验证码服务发送的信息。
c).还可以讲讲项目的部署,部署到华为云,过程中需要开放端口。
d).网关过滤中增加权限验证(待学习),现阶段是使用在每次请求都判断一下是否登录了,登录更新redis中token的过期时间,否则就抛异常。
e).新增了一个注解:@RequiredToken
7.做项目过程中遇到了哪些问题
a).redisTemplate的序列化问题,默认的key和value都是按照对象序列化的,如果key需要存储字符串类型的话,会出现乱码,需要设置序列化方式。每次用到redisTemplate都需要单独设置序列化,那么考虑有没有一种方式直接将整个redisTemplate设置序列化。
redis存储优化过程:key上加标识-—标识设置为常量—放进common模块
redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(stringKeySerializer);
b).cookie、session、token的技术选型问题。
c).在数据库中获取到的数据与前端要求返回数据不符合,解决方法:新创建该对象对应的VO对象(View Object)
d).部署到华为云的时候需要开放安全组端口,然后防火墙也需要开放相应端口。
8.项目中使用到的注解总结
@RequestParam
@PathVariable
@RequestBody
@JsonProperty():使用在属性上,用来给后端起别名展示到前端。
@JsonInclude 只展示不为空的数据(修饰类或者属性都可以)
// 1.属性复制 BeanUtils.copyProperties(admin,adminDTO);
// 2.自动生成四位随机数字(验证码) RandomStringUtils.randomNumeric(4);
//3.获取文件后缀 mp4 avi .... String ext = FilenameUtils.getExtension(originalFilename); //4.还有个根据当前时间字符+几位随机数字字符作为oss中存储文件新名称