自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(214)
  • 收藏
  • 关注

原创 2020.12.27 ACM总结感悟

2020年12月27号打完我最后一场区域赛(由于大一结束当了两年兵,今年是我高中毕业的第五年,也是我人生中最后一场区域赛了,也是第二场区域赛),拿了一个铜,就忽然写一下接触acm以来的感悟。目前战绩:2020年南京区域赛打铁(216名,差6名拿牌),2020济南区域赛铜牌(162名),2020河南省赛金牌,2020蓝桥杯国赛C++A组二等奖,2020年天梯赛个人三等奖。我是寒假的时候(差不多2020年1月31号左右,当时疫情只能在家太过无聊)开始练习acm(曾经在去年12月份的时候被室友拉着打过一次校赛

2020-12-27 23:47:35 740 10

原创 个人ACM模板总结

个人ACM模板总结——AC_Jobim一、图论(一)链式前向星(二)最短路1.Dijkstra算法:O(mlogn)2.bellman_ford:O(nm)3.Floyed算法:O(n^3)4.Spfa求最短路:边权可能是负值,但不存在负权回路5.Spfa判断负环:O(m),最坏O(nm)6.Dijkstra算法:朴素版(三)最小生成树1.Prim算法:O(n^2),用于稠密图,邻接矩阵2.Prim算法:O(n^2),邻接表3.Kruskal算法:O(mlogm)(四)二分图1.匈牙利算法:O(nm)2.K

2020-12-27 19:27:25 4509 2

原创 Netty学习(二)——黏包半包、协议设计解析、聊天室

TCP 以一个段(segment)为单位,每发送一个段就需要进行一次确认应答(ack)处理,但如果这么做,缺点是包的往返时间越长性能就越差为了解决此问题,引入了窗口概念,窗口大小即决定了无需等待应答而可以继续发送的数据最大值窗口实际就起到一个缓冲区的作用,同时也能起到流量控制的作用图中深色的部分即要发送的数据,高亮的部分即窗口窗口内的数据才允许被发送,当应答未到达前,窗口必须停止滑动如果 1001~2000 这个段的数据 ack 回来了,窗口就可以向前滑动。

2024-06-25 17:50:43 1005

原创 Netty学习(一)——基础组件

Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端

2024-06-25 17:48:46 842

原创 NIO学习总结(二)——Selector、FileLock、Path、Files、聊天室实现

创建 ServerSocketChannel 通道,并绑定监听端口设置 Channel 通道是非阻塞模式创建 Selector 选择器把 Channel 注册到 Socketor 选择器上,监听就绪状态调用 Selector 的 select 方法(循环调用),监测通道的就绪状况调用 selectKeys 方法获取就绪 channel 集合遍历就绪 channel 集合,判断就绪事件类型,实现具体的业务操作根据业务,决定是否需要再次注册监听事件,重复执行第三步操作。

2024-03-10 15:20:20 1075

原创 NIO学习总结(一)——简介、Channel、Buffer

Channel(通道)Buffer(缓冲区)Selector(多路复用选择器)。虽然 Java NIO 中除此之外还有很多类和组件,但 Channel,Buffer 和 Selector 构成了核心的 API。其它组件,如 Pipe 和 FileLock,只不过是与三个核心组件共同使用的工具类。Channel 是一个通道,可以通过它读取和写入数据,它就像水管一样,网络数据通过Channel 读取和写入。

2024-03-10 15:20:08 929

原创 设计模式概述及七大原则

对类来说,一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2,当职责1需求变更而改变类A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。

2023-07-15 15:13:14 279

原创 GoWeb(下)之模板引擎、会话控制、客户端

GoWeb(下)之模板引擎、会话控制、客户端一、模板引擎1.1 HelloWord1.2 解析模板1.3 执行模板1.4 引入静态资源1.5 动作1.5.1 {{.}}1.5.2 条件动作1.5.3 迭代动作1.5.4 设置动作1.5.5 定义、嵌套模板1.5.6 块动作1.6 修改默认的标识符二、会话控制2.1 Cookie2.1.1 创建 Cookie 并将它发送给浏览器2.1.2 读取Cookie2.1.3 设置 Cookie 的有效时间2.2 Session三、客户端(待补)一、模板引擎Go

2022-03-28 01:36:03 901

原创 GoWeb(上)之服务端、处理请求、请求响应

GoWeb(上)之服务端、处理请求、请求响应一、服务端1.1 构建服务器1.2 处理器和处理器函数1.2.1 处理器1.2.2 处理器函数1.3 多路复用器二、处理请求2.1 获取请求URL2.2 获取请求头中的信息2.3 获取请求体中的信息2.4 获取请求参数2.4.1 Form和PostForm字段2.4.2 FormValue()和PostFormValue()2.4.3 MultipartForm字段2.4.4 文件相关(待补)三、请求响应3.1 设置响应状态码3.2 设置响应头3.3 写入数据到响

2022-03-28 01:33:21 1654

原创 Go基础(四)之单元测试、反射、网络编程、操作Redis、操作MySQL

Go基础(四)之单元测试、反射、网络编程、操作Redis、操作MySQL一、单元测试二、反射2.1 两个重要函数和类型2.2 类型(Type)与种类(Kind)2.3 通过反射获取值信息2.3.1 从反射值对象获取值2.3.2 通过反射访问结构体成员的值2.3.3 判断反射值的空和有效性2.3.4 通过反射修改变量的值2.3.5 通过类型信息创建实例2.3.6 通过反射调用函数2.3.7 通过反射调用方法三、网络编程3.1 TCP通信3.2 UDP通信四、Golang操作Redis4.1 安装redigo库

2022-03-23 21:33:37 1203

原创 Go基础(三)之文件操作、命令行参数、序列化、并发编程

Go基础(三)之文件操作、命令行参数、序列化、并发编程一、文件操作1.1 打开和关闭文件1.2 读取文件1.2.1 按字节读取:file.Read()1.2.2 bufio按行读取文件1.2.3 ioutil读取整个文件1.3 文件写入1.3.1 Write和WriteString1.3.2 bufio.NewWriter1.3.3 ioutil.WriteFile1.4 判断文件是否存在二、命令行参数2.1 原生方式解析2.2 flag包用来解析命令行参数三、序列化与反序列化3.1 序列化3.2 反序列化

2022-03-20 22:00:00 406

原创 Go基础(二)之函数、方法、接口、包

Go基础(二)之函数、方法、接口、包一、函数1.1 函数参数1.2 返回值1.3 匿名函数1.4 延迟处理defer1.5 错误处理1.6 内置函数1.7 常用的相关函数二、方法2.1 方法简介2.2 通过方法封装三、接口3.1 接口简介3.2 类型转换四、包的基本概念一、函数函数的基本语法:func 函数名 (形参列表) (返回值列表) { 执行语句... return 返回值列表}1、形参列表:表示函数的输入2、函数中的语句:表示为了实现某一功能代码块3、函数可以有返回值,

2022-03-18 10:30:00 791

原创 Go基础(一)之程序结构、数据类型

Go基础(一)之程序结构、数据类型一、简介1.1 Go语言的介绍1.2 环境配置1.3 快速入门1.4 Go开发的注意事项二、程序结构2.1 标识符2.2 变量2.3 常量2.4 运算符2.5 流程控制2.7 init函数三、数据类型3.1 基本数据类型3.1.1 整型3.1.2 浮点型3.1.3 布尔型3.1.4 字符串3.1.5 基本数据类型的相互转换3.1.6 基本类型和string的转换3.2 派生数据类型3.2.1 指针3.2.2 数组3.2.3 切片(Slice)3.2.4 映射(map)3.2

2022-03-16 16:39:26 875

原创 Spring Cloud Alibaba Seata 分布式事务解决方案

Spring Cloud Alibaba Seata 分布式事务解决方案一、分布式事务问题二、Seata简介三、Seata的部署3.1 Seata Server端配置3.1.1 修改配置文件3.1.2 MySQL 数据库配置3.1.3 启动Seata Server端3.2 Seata Client 客户端配置3.2.1 业务前置准备3.2.2 创建undo_log表3.2.3 Seata Client配置文件3.2.4 pom.xml文件3.2.5 application.yml文件3.2.6 业务代码编写

2022-02-12 20:14:24 1393

原创 Spring Cloud Alibaba Sentinel实现熔断与限流

Spring Cloud Alibaba Sentinel实现熔断与限流一、Sentinel介绍与安装二、微服务项目整合Sentinel三、流控规则3.1 阈值类型:QPS3.2 阈值类型:线程数3.3 流控模式:直接3.4 流控模式:关联3.5 流控模式:链路3.6 流控效果:快速失败3.7 流控效果:Warm Up3.8 流控效果:排队等待四、降级规则4.1 慢调用比例4.2 异常比例4.3 异常数五、热点key限流5.1 基本介绍5.2 基本使用5.3 参数例外项5.4 其他六、@SentinelRe

2022-02-12 20:11:09 1022

原创 Spring Cloud Alibaba Nacos服务注册和配置中心

Spring Cloud Alibaba Nacos服务注册和配置中心一、Nacos 概述二、Nacos作为注册中心2.1 基于Nacos的服务提供者2.2 基于Nacos的服务消费者2.3 Nacos与其他注册中心对比三、Nacos作为配置中心3.1 Nacos基础配置3.2 Nacos分类配置3.2.1 Nacos的命名规则说明3.2.2 DataID方案3.2.3 Group方案3.2.4 namesapce方案四、Nacos 集群搭建和持久化配置(待补)由于 Spring Cloud Netfli

2022-02-12 19:50:42 1276 1

原创 Spring Cloud系列(四)之 Config、Bus、Stream、Sleuth

Spring Cloud系列(四)之 Config、Bus、Stream、Sleuth一、Config分布式配置中心1.1 概述1.2 基本使用1.2.1 Config服务端配置与测试1.2.1.1 Git 远程服务器配置1.2.1.2 服务端配置测试1.2.1.3 git远程仓库配置文件读取规则1.2.2 Config客户端配置与测试1.3 分布式配置的动态刷新问题二、SpringCloud Bus 消息总线2.1 基本介绍2.2 Bus 动态刷新全局广播配置2.3 Bus 动态刷新定点通知配置三、Str

2022-02-12 17:20:44 1402

原创 Spring Cloud系列(三)之 Hystrix、Zuul、Gateway

Spring Cloud系列(三)之 Hystrix、Zuul、Gateway一、Hystrix断路器1.1 Hystrix 简介1.2 Hystrix实现服务降级(重点)1.2.1 服务端提供端实现服务降级1.2.2 消费端实现服务降级(重点)1.2.2 服务降级配置存在的问题及解决1.2.2.1 代码膨胀问题1.2.2.1 业务方法和降级方法混合在一起问题(重点)1.3 Hystrix 实现服务熔断(重点)二、Zuul路由网关(待补)三、SpringCloud Gateway网关3.1 Gateway介

2022-02-11 19:04:29 1131

原创 Spring Cloud系列(二)之 Ribbon、OpenFeign

Spring Cloud系列(二)之Ribbon、OpenFeign一、Ribbon负载均衡服务调用1.1 Ribbon负载均衡实现过程1.2 Ribbon的负载均衡策略1.3 负载均衡算法原理分析二、OpenFeign服务接口调用1.1 OpenFeign使用步骤1.2 超时控制1.3 日志打印一、Ribbon负载均衡服务调用Ribbon是Netflix发布的负载均衡器,有助于控制HTTP客户端行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于负载均衡算法,自动帮助服务消费者请求。

2022-02-11 17:00:25 868

原创 Spring Cloud系列(一)之 Eureka、Zookeeper、Consul

Spring Cloud系列之Eureka、Zookeeper、Consul一、微服务架构介绍1.1 架构的演变1.2 Spring Cloud介绍二、微服务架构业务场景2.1 创建服务提供者(provider)工程2.2 创建服务消费者(consumer)工程三、Eureka服务注册与发现3.1 搭建注册中心3.2 服务注册(消费者集群)3.2.1 服务提供者注册3.2.2 服务消费者注册3.3 EurekaServer集群环境构建3.4 搭建服务提供者集群和负载均衡3.5 微服务信息完善3.6 服务发现

2022-02-11 16:21:39 1529

原创 Docker学习总结

Docker学习总结一、Docker简介二、Docker安装2.1 安装步骤2.2 卸载Docker2.3 配置阿里云镜像加速三、Docker常用命令3.1 帮助命令3.2 镜像命令3.3 容器命令3.4 其他常用命令四、Dockerfile4.1 DockerFile简介4.2 DockerFile体系结构(保留字指令)4.3 案例4.3.1 Base镜像(scratch)4.3.2 自定义镜像mycentos4.3.3 CMD/ENTRYPOINT 镜像案例4.4 自定义镜像Tomcat9五、Docke

2021-12-31 23:43:04 2705 4

原创 Sping源码——循环依赖

Sping源码——循环依赖一、循环依赖介绍二、源码分析,循环依赖2.1 获取A:getBean(a)2.1.1 检查缓存getSingleton(a)2.1.2 执行getSingleton(beanName,singletonFactory)2.1.3 真正创建A:doCreateBean(beanName, mbdToUse, args)2.1.4.1 获取B:调用doGetBean()方法2.1.4.2 真正创建B对象:doCreateBean()2.1.4.3 B对象创建完后续操作2.1.4 A对象

2021-11-25 16:47:59 662

原创 Spring源码-Bean的生命周期

Spring源码-Bean的生命周期一、finishBeanFactoryInitialization(beanFactory)1.1 preInstantiateSingletons()二、getBean(name)方法三、doGetBean(name, null, null, false)方法3.1 用于FactoryBean的解析:transformedBeanName(name)3.2 getSingleton(beanName)四、getSingleton(beanName,singletonFa

2021-11-24 10:48:31 1110

原创 Spring源码-IOC加载过程(注解方式加载)

Spring-IOC加载过程(注解方式加载)一、源码分析的入口二、this()调用构造函数2.1 super()隐式调用父类的构造方法2.2 初始化AnnotatedBeanDefinitionReader2.3 初始化bean定义扫描ClassPathBeanDefinitionScanner三、register(annotatedClasses)注册配置类为BeanDefinition四、refresh()4.1 prepareRefresh()4.2 obtainFreshBeanFactory()4

2021-11-19 15:48:31 1222

原创 SpringSession总结

SpringSession总结一、Session共享二、SpringSession的使用三、SpringSession Redis存储结构四、源码分析RedisHttpSessionConfigurationSpringHttpSessionConfigurationSessionRepositoryFilterCookieHttpSessionIdResolverDefaultCookieSerializer总结以下分析来自SpringBoot的2.1.6.RELEASE一、Session共享S

2021-10-09 09:53:20 806

原创 JVM学习总结

JVM学习总结一、JVM介绍二、内存结构2.1 程序计数器2.2 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.5.1 常量池2.5.2 运行时常量池2.5.3 字符串常量池2.6 直接内存二、垃圾回收2.1 标记阶段2.1.1 引用计数法2.1.2 可达性分析算法2.1.3 强、软、弱、虚四大引用2.2 垃圾回收算法2.2.1 标记-清除算法2.2.2 标记-复制算法2.2.3 标记-整理算法2.2.4 分代收集算法2.3 垃圾回收器(难点)2.3.1 垃圾收集器概述2.3.2 Serial 回收

2021-09-27 16:40:18 998

原创 Java并发编程(三)——ThreadLocal、AQS、线程安全集合类

Java并发编程(三)——ThreadLocal、AQS、线程安全集合类一、ThreadLocal详解1.1 ThreadLocal的使用1.2 ThreadLocal实现原理1.3 ThreadLocal内存泄漏1.3.1 强、软、弱、虚、四大引用1.3.2 原因分析二、AQS详解2.1 AQS介绍2.2 AQS源码分析2.3 ReentrantLock2.4 ReentrantReadWriteLock读写锁2.5 Semaphore2.6 CountdownLatch2.7 CyclicBarrier

2021-08-28 17:42:52 974 2

原创 Java并发编程(二)——锁相关、Java内存模型、volatile、CAS、原子操作类、线程池

Java并发编程(二)——锁相关、Java内存模型、volatile、CAS、原子操作类、线程池一、Java锁相关1.1 悲观锁和乐观锁1.2 公平锁和非公平锁1.3 死锁(重点)1.4 独占锁(写锁)和共享锁(读锁)1.5 自旋锁(spinlock)1.6 无锁、偏向锁、轻量锁、重量锁二、Java内存模型2.1 是什么JMM?2.2 JMM下三大特性2.3 八种内存交互操作2.4 先行发生原则happens-before三、volatile关键字3.1 volatile特性3.2 内存屏障3.3 DCL双

2021-08-28 17:28:46 671

原创 Java并发编程(一)——进程和线程、Java对象内存布局、synchronized、wait和notify、park和unpack

Java并发编程(一)——进程和线程、Java对象内存布局、synchronized、wait和notify一、进程和线程二、Java线程2.1 创建线程的四种方式2.2 线程的生命周期2.3 线程的状态转换(API层次)2.4 线程运行原理2.5 守护线程三、Java对象内存布局和对象头四、synchronized与锁升级4.1 synchronized关键字4.2 synchronized的锁升级4.2.1 偏向锁4.2.2 轻量级锁4.2.2.1 轻量级锁流程解释4.2.3 Monitor 原理 (重

2021-08-21 09:40:11 1909 1

原创 RabbitMQ学习(下)——发布确认高级、幂等性、优先级、惰性和RabbitMQ集群

RabbitMQ学习(下)——发布确认高级、幂等性、优先级、惰性和RabbitMQ集群一、发布确认高级1.1 confirm 确认模式1.2 return 退回模式1.3 备份交换机二、幂等性、优先级、惰性2.1 幂等性2.2 优先级2.3 惰性三、RabbitMQ集群3.1 RabbitMQ集群的搭建3.2 RabbitMQ之镜像队列一、发布确认高级在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。

2021-08-06 17:04:06 630

原创 RabbitMQ学习(中)——交换机、死信队列和延迟队列

RabbitMQ学习总结(中)——发布确认、交换机和死信队列一、发布确认1.1 单个确认发布1.2 批量确认发布1.3 异步确认发布二、交换机2.1 Fanout exchange(发布/订阅模式)2.2 Direct exchange(路由模式)2.3 Topics 模式三、死信队列3.1 死信之TTl3.2 死信之最大长度3.3 死信之消息被拒一、发布确认生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始

2021-08-05 17:10:09 634

原创 RabbitMQ学习(上)——RabbitMQ介绍、安装 、Work Queues模式和发布确认

RabbitMQ学习总结一、消息队列介绍1.1 MQ的相关概念1.2 RabbitMQ1.3 RabbitMQ安装三、Hello World一、消息队列介绍1.1 MQ的相关概念什么是MQ?消息队列(Message Queue,简称MQ),本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用

2021-08-04 12:32:44 373

原创 Nginx学习总结

Nginx学习总结一、Nginx介绍二、nginx安装三、nignx的常用命令和配置文件3.1 常用命令3.2 配置文件四、Nginx 反向代理4.1 准备工作,安装tomcat4.2 配置实例一4.3 配置实例二五、负载均衡5.1 负载均衡配置实例5.2 nginx分配服务器策略七、Nginx动静分离六、Nginx的高可用集群Nginx执行原理一、Nginx介绍Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,0

2021-08-03 12:33:49 658 2

原创 SpringBoot2——指标监控actuator、多环境切换Profile和自定义starter

SpringBoot2——指标监控actuator、多环境切换Profile和自定义starter一、SpringBoot Actuator1.1 SpringBoot Actuator的使用1.2 Endpoints1.2.1 端点暴露配置1.2.2 重要端点解析二、多环境切换Profile2.1 多配置文件2.2 yaml的多文档块2.3 配置文件的加载顺序三、自定义starter四、SpringBoot的启动流程(待补)一、SpringBoot ActuatorActuator是Springboo

2021-08-02 10:27:55 929

原创 SpringBoot2——数据访问的集成 & 单元测试(JUnit5)

SpringBoot2——数据访问的集成 & 单元测试(JUnit5)一、数据访问1.1 数据库场景的自动配置(HikariDataSource)1.2 整合druid数据源1.2.1 自定义druid数据源1.2.2 使用官方starter方式1.3 整合MyBatis操作(重点)1.3.1 整合过程1.3.2 修改Mybatis配置1.4 整合MyBatis-Plus完成CRUD(重点)1.5 整合Redis二、单元测试2.1 JUnit5介绍2.2 JUnit5常用注解2.3 断言(asser

2021-07-31 22:24:40 2268

原创 MybatisPlus学习总结(下)

MybatisPlus学习总结(下)一、条件构造器1.1 allEq1.2 基本比较操作1.3 模糊查询1.4 排序1.5 逻辑查询1.6 select二、ActiveRecord三、插件3.1 mybatis的插件机制3.2 常用插件配置四、MybatisPlus 扩展4.1 Sql注入器4.2 自动填充功能4.3 逻辑删除4.4 通用枚举4.5 执行 SQL 分析打印(待补)五、代码生成器一、条件构造器在MP中,Wrapper接口的实现类关系如下:## mybatis plus基本操作查询方

2021-07-30 20:59:10 4489 1

原创 MybatisPlus学习总结(上)

MybatisPlus学习总结(上)一、介绍二、集成MP2.1 Mybatis + MP2.3 Spring + Mybatis + MP2.2 SpringBoot + Mybatis + MP三、CRUD基本用法3.1 插入操作3.1.1 代码示例3.1.2 @TableId3.1.3 @TableField3.2 更新操作3.2.1 根据id更新3.2.2 根据条件更新3.3 删除操作3.3.1 deleteById3.3.2 deleteByMap3.3.3 delete3.3.4 deleteBa

2021-07-30 11:03:31 764

原创 SpringBoot2之web开发(下)——数据响应、模板引擎、拦截器、文件上传和异常处理(未完成)

SpringBoot2之web开发(上)——之静态资源和请求参数处理一、数据响应和内容协商1.1 响应json数据1.2 内容协商(待写)二、模板引擎(Thymeleaf )2.1 模板引擎介绍2.2 Thymeleaf 语法2.2.1 常用th属性:2.2.2 标准表达式语法2.2.3 springBoot中使用thymeleaf三、拦截器3.1 拦截器的使用3.2 拦截器方法执行顺序3.3 拦截器源码分析(待补)四、文件上传一、数据响应和内容协商1.1 响应json数据使用jackson.jar+

2021-07-27 21:52:43 631

原创 SpringBoot2之web开发(上)——之静态资源和请求参数处理

这里写目录标题一、SpringMVC自动配置概览二、简单功能分析2.1 静态资源访问2.2 欢迎页支持2.3 自定义Favicon2.4 静态资源配置原理(源码分析)2.4.1 addResourceHandlers方法(静态资源处理默认规则)2.4.2 欢迎页处理规则三、请求参数处理3.1 请求映射3.1.1 rest使用与原理3.1.2 请求映射原理3.2 普通参数与基本注解3.3 POJO封装过程3.4 确定目标方法每一个参数的值3.5 目标方法执行完成3.6 处理派发结果四、数据响应和内容协商一、

2021-07-25 17:18:15 655 1

原创 SpringBoot2各类型参数解析原理(源码分析)

SpringBoot2各类型参数解析原理(源码分析)一、使用注解来获取请求参数1.1 获取HandlerAdapter1.2 执行目标方法1.2.1 参数解析器(HandlerMethodArgumentResolver)1.2.2 返回值处理器(HandlerMethodReturnValueHandler)1.2.3 反射调用方法1.2.4 确定目标方法的参数值详细1.2.4.1 resolvers.supportsParameter(parameter)1.2.4.2 resolvers.resolv

2021-07-25 17:17:03 735

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除