1.@JSONIgnore 该注解写在字段的上面,可以将其表示为在springMVC在将对象转换为json字符串的时候,可以将其字段内容忽略. @JsonFormat可以格式化输出的方式(日期格式化)
2.@RestControllerAdvice 注解在类名上,告知该注解是全局异常处理变量
3.Validation用于参数的校验 需要导入Maven坐标,然后使用@Validated注解在类名上,
要进行实体参数的校验(在字段上表明)@NotNull 值不能为null @NotEmpty 值不能为null 且值不能空 @Email 满足邮箱规格(要让这些注解实现,需要在接口方法的实体参数上添加@Validated)
如果校验参数是url地址 ,把@URL注解添加到接口方法的实体参数上
如何对validated规则进行分组 :1:在实体类内部定义接口 2:在注解上通过groups属性指定是哪个分组 3:给@Validated注解的value属性进行复制 校验项默认属于什么组:Deault
4.在项目中我们会碰到循环依赖的问题,如何解决呢,这时候我们要在配置文件中写
spring.main.allow-circular-references:true 让spring来处理循环依赖的问题
5。什么是缓存,优势如何,有什么技术可以实现缓存?
缓存是一种临时存储数据的技术,用于提高数据的访问速度和性能。缓存通过将经常访问的数据存储在快速访问的位置,以便在后续情况下可以,更快的获取数据
优势如下:提高性能,减少服务器压力,通过减少对数据库和其他数据源的频繁访问,缓存可以降低服务器的负载。提高可伸缩性,可以更好的处理高并发请求。改善用户体验。
实现缓存的技术包括如下,但不限于
1.内存缓存:将数据缓存到内存中,例如:redis,Memcached等内存数据库。
2.分布式缓存:将缓存数据分布在多台服务器上
3.CDN(内容分发网络,核心理念:将内容缓存到终端用户附近)
4.数据库查询缓存:数据库系统自身提供的查询结果缓存功能
5.web服务器缓存:web服务器,例如:Nginx,Apache等提供的页面缓存功能,减少页面缓存的生产次数。
6.在springboot的序列化和反序列化
(1)认识序列化和反序列化
java序列化就是把java对象转换为字节序列的过程,反序列化就是把字节序列转换为java对象的过程。
(2)为什么要实现对象的序列化和反序列化
①我们创建的java对象存储在java堆中,在程序运行结束后JVM会将其回收,实际中,程序运行结束后可能还会需要这些数据,所以需要我们序列化这些数据
②:当java对象进行网络传输时,只能传输二进制的数据,所以在发送时我们需要将java对象序列化成二进制数据,在接收端接收到数据后,在反序列化成java对象,即可。
(3)如何实现序列化和反序列化
在jdk中提供了输入流和输出流来实现序列化和反序列化, 需要实现serializable接口。
serialVersionUID的作用
虚拟机是否允许反序列化不仅类路径和功能代码是否相同,一个重要的点是两个类的serialVersionUID是否相同,不相同就不能反序列化