端午学习笔记

最近北京居家办公了,端午也出不去,随便看点东西

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源码

SpringMVC源码分析4:DispatcherServlet如何找到正确的Controller - 程序员黄小斜 - 博客园SpringMVC是目前主流的Web MVC框架之一。 我们使用浏览器通过地址 http://ip:port/contextPath/path进行访问,SpringMVC是如何得知用户到底是访问哪个Chttps://www.cnblogs.com/xll1025/p/11407931.html

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.读取过程

 Guava、Memcached 和 Redis,我们为什么选择了 Redis? - 爱码网简单来说,Redis 就是一个数据库。不同于传统数据库将数据保存在磁盘中,Redis 将数据存在内存中,所以它也经常被叫做内存数据库;同时 Redis 存储也被叫做 NoSQL 数据库、非关系型数据库。因为 Redis 将数据保存在内存中,所以读写速度会非常快,因此 Redis 被广泛应用做缓存或其他需要高速读写的场景。为什么要使用 Redis软件架构中引入 Redis ,是因为它“又快又https://www.likecs.com/show-204265522.html

19.2.本地缓存和redis区别

Redis 支持数据的持久化,可以将内存中的数据保存到硬盘中,重启之后把数据加载到内存中,而 Guava只是把数据保存在内存中 ;

 20.事务

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

 

 

 20.2事务监听

@EventLisner

@TransactionalEventListener

其中,@TransactionalEventListener  可以实现事务的监听,可以在提交之后再进行操作。

20.3异步监听

监听本是同步,但是在监听方法上加上异步注解@Async才能异步


版权声明:本文为qq_35653822原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。