最近北京居家办公了,端午也出不去,随便看点东西
1.策略模式
诸葛亮的锦囊妙计,每一个锦囊就是一个策略。根据不同得情况选择不同的策略
1.1.例子1
1.创建一个接口,接口有不同得实现
2.创建一个上下文,上下文构造函数得入参就是这个接口
3.上下文根据需要,去选择不同得实现
1.2.例子2
私(myself)以为得策略模式
1.有多个方法,增删改查
2.方法得入参都相同
3.总入口operate,根据行为得不同,执行不同的方法,可以用switch
2.算法书籍推荐
算法入门书籍--2022.04.04_dllglvzhenfeng的博客-CSDN博客
有时间我可能要买一本《小灰的算法之旅》,看起来挺好玩的
3.Bean扫描过程
默认情况下,@ComponentScan扫描入口类同级及其子级包下的所有文件。

4.享学课堂讲解spring的老师在课堂上分享的博客

5.IOC
浅谈IOC--说清楚IOC是什么_ivan820819的博客-CSDN博客_ioc
5.1IOC是什么
IOC之所以叫控制反转,是因为获取依赖的方式被反转了,原来是自己获取,现在依赖IOC容器,IOC容器看哪里用到这个Bean,就把这个Bean注入到哪里。

5.2IOC优点
降低耦合度




6.多环境配置spring.profiles.active
6.1配置示例

6.2可以配置多个,就这几个都会读,形成一个set

7.gradle的依赖引入配置
8.LOG级别设置
百度安全验证https://baijiahao.baidu.com/s?id=1712341417738355243&wfr=spider&for=pc
一般开发,测试环境用DEBUG级别,一个是因为DEBUG日志级别较低,可以把INFO级别等都打印出来,再一个DEBUG可以打印出4xx的日志,方便我们调试
生产一般打印出INFO级别的

9.dispatcherservlet源码
10.@Valid注解
@Valid的用法详解_一杯星巴克的生活的博客-CSDN博客_@valid依赖
11.JSON与实体之间映射过程
fastJson反序列化和构造函数之间的一点小秘密_Raiden_的博客-CSDN博客_fastjson 反序列化构造函数

PS:@Builder会覆盖默认的构造方法,造成JSON解析出错
如果要用@Builder,那需要再加上@NoArgsConstructor或者@AllArgsConstructor才能让json成功转换
12.接收和上传
@RequestMapping中produces和consumes与前端header的Accept和Content-type有着对应关系
12.1 produces和Accept
produces:后端返回给前端的类型(有@ResponseBody,默认为json)
Accept:接收后端返回的类型
如果二者不一致或者不兼容,会报错
比如前端是Accept:*,后端是produces = MediaType.APPLICATION_JSON_VALUE,这个可以
但是前端Accept:xml,后端是produces = MediaType.APPLICATION_JSON_VALUE,这个报错
12.2 consumes和Content-type
consumes:后端能接收的类型
Content-type:前端上传的类型
如果二者不一致或者不兼容,会报错,同上
13.热部署
idea中springboot项目如何配置热部署、自动编译,不需要手动编译_大话IT的博客-CSDN博客_idea设置热部署 自动编译
13.1.IDEA中的配置

按住Ctrl+Shift+Alt+/ 快捷捷键调出 Maintenance 页面


13.2说明
不引入devtools依赖,直接配置IDEA,也可以实现修改代码之后自动编译,
但是加上devtools依赖,可以实现修改方法名,接口名等操作 也自动编译
14.maven的parent标签和dependencyManagement 标签
maven中的parent标签_普通网友的博客-CSDN博客_maven的parent标签
pom 文件中 parent 和 dependencyManagement 的使用_xiaokanfuchen86的博客-CSDN博客_pom文件的parent
我的理解
1.可以把子项目都需要引用的依赖,如junit,写到parent项目的<dependency>标签中,子项目不需要引入父项目已经有的任何依赖
2.可以把有些子项目需要,有些子项目不需要的,写道parent项目的<dependencyManagement>标签中,<dependencyManagement>标签是用来管理版本号的,统一子项目的版本。子项目需要依赖还是要引入的,但是不用配置<version>,默认用父项目的version
15.关于@ConfigurationProperties的两种用法,只是为了让spring能扫描到了
1.@EnableConfigurationProperties+@Configuration+@ConfigurationProperties
2.@ConfigurationProperties+@Component
spring-boot @EnableConfigurationProperties与@ConfigurationProperties的关系_我叫周利东的博客-CSDN博客


16.springMVC请求过程
springMVC请求流程详解_痞子磊的博客-CSDN博客_springmvc请求的流程

关于视图解析器:JSON视图也算视图
视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客 户。
17.toMap要注意key值重复报错处理
18.字符串型数字字段查找最大值
转成整型 无符号(unsigned)和有符号(signed)两种类型
select max(cast(API_ID as UNSIGNED)) from t_third_api
string字段转数字型
19.缓存
19.1.读取过程

19.2.本地缓存和redis区别
Redis 支持数据的持久化,可以将内存中的数据保存到硬盘中,重启之后把数据加载到内存中,而 Guava只是把数据保存在内存中 ;

20.事务
20.1在配置@Transactional的rollbackFor时候会用到异常族谱

20.2事务监听
@EventLisner
@TransactionalEventListener
其中,@TransactionalEventListener 可以实现事务的监听,可以在提交之后再进行操作。
20.3异步监听
监听本是同步,但是在监听方法上加上异步注解@Async才能异步