Day01
1.前后端分离项目的全局异常处理怎么做
使用@ControllerAdvice+@ExceptionHandler(类.class)来实现异常处理
@ControllerAdvice: Controller增强器。将异常处理器应用到所有的控制器
@ExceptionHandler:异常处理器,只要发生异常就会捕捉。根据异常类型不同做不同的处理
@ResponseBody:将异常直接写入到HTTP响应体中。
2.用户自定义异常怎么实现的
自定义异常类继承RuntimeException,属性是枚举类型,里面有各种异常信息。通过有参构造器构造。
throw new CustomException(异常信息)
Day02
1.用户登录是怎样设计的,怎样保证密码的安全呢?
①在service里调用mapper的方法根据id获取对象user
②如果user为空,那么账号不存在。然后判断密码是否错误,账号是否锁定,是否有权限
③然后根据用户id根据jwt生成token,返回给前端调用
密码安全:
通过密码+盐(随机生成字符串),然后生成MD5(密码MD5+盐)
2.你项目用到的nacos的作用是什么
①nacos是注册中心,配置管理。让程序读取配置的
②nacos的地址是保存在项目的bootstrap.yml,优先级高。
③nacos配置更新,程序无需重启。所以需要将运行调整的参数放在nacos配置中心
3.用户登录jwt怎样生成的token
①首先创建HashMap,存储JWT的声明claim。把用户id存放在这个声明里面。
②通过Jwts工厂类创建一个JWT构建器
③JWT的唯一标识UUID,根据当前时间设置JWT的签发时间,设置主题,签发者,接收者,通过密钥进行签名,一个小时过期。
④将创建的声明claim(用户id)加入到jwt的body
JWT用户身份验证和信息传递,包括用户自定义的id,过期时间,接收者等信息
4.你用过哪些接口测试工具
①postman
②swagger
③knife4j
Day03
1.项目的网关是怎样配置的,网关的作用是什么
①导入依赖
gateway
nacos-discovery
nacos-config
②创建配置文件bootstrap.yml,包括服务的基本信息,nacos地址,路由
③在nacos里面进行yml配置
端口请求访问的是网关,基于路由规则判断,拉取服务列表,进行负载均衡发送请求。
2.全局拦截器jwt是怎样设计的
/**实现Ordered,GlobalFilter接口
* 全局路由:
* 1.根据请求体的路径,如果是login那么就放行。
* 否则
* 1.通过请求头获取token
* 2.如果token为空,请求拦截
* 3.token不为空,根据claims判断是否过期,如果过期就拦截,不过期就放行。
*/
3.Nginx的作用是什么
①通过反向代理访问后台的网关资源
②通过静态服务器访问前端静态页面
Day04
1.滚屏分页的逻辑是怎样实现的?
加载上面的最新 发表时间>0
加载下面的更多 发表时间<2053
2.为什么文章表要拆分?
垂直拆分:将一个表的字段分散到多个表中,每个表保存一部分字段
优势:
①减少IO争抢,减少锁表的几率。查看文章概述和文章详情不影响
②高频数据的操作效率,对文章概述的操作高效率不会被操作文章详情低效率拖累。
拆分规则:
①不常用的放一个表
②经常查询的放一个表
③把大字段放一个表