- https://baijiahao.baidu.com/s?id=1739005250686153914&wfr=spider&for=pc
- https://blog.csdn.net/weixin_49190101/article/details/124612004?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124612004-blog-5589573.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124612004-blog-5589573.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=2
注解
注解都是搭配拦截器使用
不然没法获取谁在使用注解
常用的拦截器:通过实现HandlerMethod 然后注册到总配置WebMvcConfigurer
AOP拦截器:通过使用@Aspect
疑问
@SuppressWarnings("unchecked")
JSON.toJSONString 可以把map转为 JSONString 然后用equals进行对比一致性
Map.containsKey
HttpServletRequest
https://juejin.cn/post/6844903669905752078
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
继承至ServletRequest
客户端和服务端乱码问题:客户端utf-8,服务端通过设置
1. POST请求:req.setCharacterEncoding("UTF-8");rep.setCharacterEncoding("UTF-8");
2. GET请求:new String(name.getBytes("ISO8859-1") , "UTF-8")
StringBuilder
currentTimeMillis
获取系统的当前时间的毫秒代表;是Long类型
与new date的区别在于性能更好
用法:
1. 计算任务耗时
2. 当前时间
3. 给文件命名
RedisTemplate
抽象类
如果一个class定义了方法,但没有具体执行代码,这个方法就是抽象方法,抽象方法用abstract修饰。
因为无法执行抽象方法,因此这个类也必须申明为抽象类(abstract class)。
使用abstract修饰的类就是抽象类。我们无法实例化一个抽象类:
无法实例化的抽象类有什么用?
因为抽象类本身被设计成只能用于被继承,因此,抽象类可以强迫子类实现其定义的抽象方法,否则编译会报错。因此,抽象方法实际上相当于定义了“规范”。
AOP生命周期
@After @Before @Around
@AfterRunning (log使用了这个办法,可以写入数据库)
会返回res
@AfterThrowing
会返回Exception
日志AOP
枚举值有ordinal方法,获取该值的序号
collections.singletonlist
Collections.singletonList 和 Arrays.asList 都是长度不可变的集合,Collections.singletonList 长度为1,元素初始化完成就不可修改, Arrays.asList 长度不可变,元素初始化完成还可以进行修改
Collections.singletonList 中的唯一一个元素可以是null,但是如果 Arrays.asList 只存入一个元素的话,那就一定不允许为null,否则的话会抛出 NullPointerException 异常
Arrays.asList 中创建的 ArrayList 和我们常用的java.util.ArrayList并不是同一个,所以不要以为 java.util.ArrayList 中可以使用的方法在 Arrays.asList 中也都可以使用,否则的话分分钟教你重新做人
Collections.singletonList 中保存元素的是一个对象, Arrays.asList 中保存元素的是一个数组,在这一点上,它俩的差别还是很大的,当然,如果你喜欢,也可以在 Collections.singletonList中保存一个数组对象
异步任务管理器有什么用