第二周

1.@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的区别

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的区别 - 悠悠南山下 - 博客园 (cnblogs.com)

学了个新知识:幂等性👍

2.Unchecked call to 'PageInfo(List)' as a member of raw type 'com.github.pagehelper.PageInfo'

在使用pageInfo时警告:

Unchecked call to 'PageInfo(List)' as a member of raw type 'com.github.pagehelper.PageInfo'

这是由于在new PageInfo()方法没有写泛型,写了泛型后又警告:

Explicit type argument CommunityActivityProduction can be replaced with <>

隐式类型可以直接用<>替代

3.swagger2忽略字段

方法一:@IgnoreSwaggerParameter
方法二:@ApiModelProperty(value = "XXX", required = false,hidden=true)
方法三:@ApiModelProperty(value = "XXX", required = false)
       @JsonIgnore
* 方法三好像有个弊端,不能toJson

4.swagger2页面字段和接口注解中定义的不一样

  • 第一个情况是因为马虎😂,在@ApiImplicitParam注解中的name中某个字母小写了,导致它与接口中请求参数的值对应不上,所以swagger就给生成了两个,一个是注解手写的,一个是接口中的请求参数自动生成的

  • 第二个情况是在@ApiImplicitParam注解中的name多了个空格,导致对应不上

5.swagger2的接口过时标志

@Deprecated

6. Duplicate column name 'elderly_img_name'

sql查询的结果中出现了重复的列名字,在navicat中没报错,但是接口测试报错的原因是navicat这个软件,自动在重复的列名上加了(1)

7.cap.elderly_id = ?; LIMIT ?

项目使用了PageHelper分页插件,sql语句中不小心在语句末尾加了;,所以就拼接错误了

8.用transient关键字标记的成员变量不参与序列化过程

9.请使用System.currentTimeMillis()代替new Date().getTime()

查看源码发现,原来调用的最终都是System.currentTimeMillis()方法,而每次new的操作比直接调用 System.currentTimeMillis()多消耗了内存

    public Date() {
        this(System.currentTimeMillis());
    }

10.JSONResult为什么要加泛型<T>

发现某个项目中返回前端的实体类中添加了泛型<T>,如下:

public class JsonResult<T> implements Serializable {
}

了解了一下,这是正好搭配swagger使用,显示给前端看返回数据类型,T表示实体类,当实体类中有swagger的注解说明的时候,在调用返回前端的实体类的时候加入<实体类>,可以在swagger页面显示给前端返回前端的数据各是代表什么,当然这只是一个妙用。
泛型是用于约束的

11.java 泛型<E><T> 以及?的区别

Java泛型中的标记符含义:

E - Element (在集合中使用,因为集合中存放的是元素)

T - Type(Java 类)

K - Key(键)

V - Value(值)

N - Number(数值类型)

? - 表示不确定的java类型

S、U、V - 2nd、3rd、4th types

Object跟这些标记符代表的java类型有啥区别呢?

Object是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。

12.Fields in a "Serializable" class should either be transient or serializable

transient,在序列化类中被修饰的字段不序列化

一个对象序列化时,按照Java默认的序列化规则,对象内的所有成员都要序列化,也就是说,这些Class都必须实现Serializable。

所以,你有两种改法,一是Address实现Serializable接口,二是对Person中的address成员加上transient标记,这样该成员就不会被序列化进去

posted @ 2021-08-28 01:11  intTom  阅读(381)  评论(0编辑  收藏  举报