自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 记录SpringBoot项目打包时,将本地jar包打进去。

业务场景项目中有一个jar包一直无法下载到本地的maven仓库中,所以只能手动下载到本地,然后再引入到项目中,现在记录一下如何在打项目包时将本地jar包打进去。将本地jar包添加到项目的lib目录下并在项目的pom.xml文件中新增依赖 <dependency> <groupId>extra</groupId> <artifactId>apache-common-httpclient</arti

2021-12-27 10:54:34 831

转载 VMWare安装CentOS7虚拟机

转载大佬的VMWare CentOS7虚拟机安装教程,非常详细!!https://blog.csdn.net/qq_45885369/article/details/108455628

2021-09-11 18:47:32 92

转载 2021-09-11

转载大佬的VMWare安装CentOS 7的虚拟机,非常详细~https://blog.csdn.net/qq_45885369/article/details/108455628d

2021-09-11 18:44:45 105

原创 Netty线程模型

在引入Netty线程模型之前,先来看一下什么是Reactor模式:Reactor模式,即 通过一个或多个输入同时传递给服务处理器的模式,服务器端程序处理传入的多个请求,并将它们同步分派到相应的处理线程, 因此 Reactor 模式也叫 Dispatcher模式。 Reactor 模式使用 IO 复用监听事件, 收到事件后,分发给某个线程 ,点就是网络服务器高并发处理关键,而Reactor模式又分为:单Reactor模式单线程模式、单Reactor多线程模式与主从Reactor多线程模式,下面分别来看一下

2021-07-26 23:56:51 112

原创 Socket网络编程与IO模型

目录Socket网络编程IO模型BIO模型NIO模型AIO模型Socket网络编程Socket即套接字,它是两台主机的逻辑通信端点,故而是通信的基石,它支持TCP/IP协议作为网络通信的基本单元,服务端需要创建ServerSocket对象,并将其绑定ip及端口号,用于接收客户端请求,而客户端则需要根据服务端绑定的ip及端口号打开一个套接字,向服务端发送请求,在服务端接收到请求后,服务端和客户端即可使用输入输出流的方式进行交互,这就是最基本的网络通信编程,其流程图如下:在Socket编程中,服务端代码

2021-07-26 22:32:48 126

原创 SpringBoot给静态成员变量通过配置文件进行属性注入

通常会使用 @Value 对成员变量进行属性注入,但是对于静态属性来说,使用 @Value 注解进行属性注入时是无效的,这时就需要将 @Value 注解标注在变量的set方法上,如下图所示:@Componentpublic class BalanceConfig { private static String[] candidateServerAddrs; @Value("${addrs}") public void setCandidateServerAddrs(String[

2021-07-24 23:49:35 213

原创 SpringBoot项目单独更新jar包

在SpringBoot中,项目所需的依赖通常都会以依赖启动器的形式引入,如在我们做web开发的时候,就会引入web场景下的依赖启动器,如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>在依赖启动器中,会指定web开发所需的依赖,如tom

2021-07-14 10:04:38 2020

原创 Tomcat之类加载器

目录JVM类加载器Tomcat的类加载器JVM类加载器在我们开发完Java类之后,都需要编译成.class文件(字节码文件),而字节码文件最终是需要被加载到内存当中,而这一过程就称为 类加载 的过程。而在JVM中,执行上述操作的有一种特定的类,即 类加载器 - ClassLoader,它又分为以下几种类加载器:引导类加载器,扩展类加载器及系统类加载器,他们分别负责加载不同类型的.class文件,同时他们之间又具备了 父子关系,具体如下所示:每一个类加载器的作用如下:引导类加载器 Bootstra

2021-07-13 15:25:21 155

原创 Tomcat源码剖析之Mapper组件机制

在Tomcat中Catalina容器中会有一个Server,而在一个Server下会管理多个Service(服务),而一个Service又会绑定多个Connector(连接器)组件和一个Container(容器)组件,在Container组件中,具备如下的层级结构,如下所示:其内部 存储了当前服务下的多个Host(虚拟站点),以及Host下的多个Context(应用),而一个Context下又会有多个Servlet的包装类Wrapper,那么在Tomcat内部是怎么存储这样的层级关系的呢?实际上在Tom

2021-07-12 16:03:34 226

原创 Tomcat的总体架构

目录整体架构核心组件Coyote连接器Catalina容器整体架构Tomcat是一个http服务器,在它接收到http请求之后会将请求内容封装成为一个 ServletRequest 对象,并将其交给Servlet容器来处理,而Servlet容器在拿到ServletRequest对象之后会根据url去定位到具体处理请求的Servlet,并将请求结果封装称为一个ServletResponse对象返回给客户端。具体请求处理流程图解如下:通过上图不难发现,实际上Tomcat有两个核心内容需要完成,即1、

2021-07-12 15:27:17 79

原创 SpringBoot源码剖析(三) 自动装配DispatcherServlet

目录前言前置知识DispatcherServlet的自动配置类注册DispatcherServlet前言在使用SpringMVC进行开发时,通常需要在web.xml中配置一个关键组件 - 前端控制器DispatcherServlet,在配置了该组件之后,就可以实现对于指定url的拦截,匹配处理它的处理器,最终返回结果并进行页面渲染,配置方式如下:<servlet><description>spring mvc servlet</description> &

2021-07-06 11:34:44 455

原创 SpringBoot源码剖析(二) 内嵌Tomcat

目录相关依赖的引入Tomcat的生成与启动相关依赖的引入在使用SpringBoot进行web开发时,通常需要引入web的依赖启动器,如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>那么在这个依赖启动器的pom.xml文

2021-07-05 22:56:34 68

原创 SpringBoot源码剖析(一) 依赖管理

目录什么是依赖管理?依赖管理的原理什么是依赖管理?在使用maven构建web项目时,通常需要在pom.xml文件中配置各种依赖来帮助我们构建项目,如下: <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId>

2021-07-05 22:11:05 119

原创 SpringBoot之热部署

目录什么是热部署?热部署原理什么是热部署?在日常开发过程中,我们在对某一功能模块的代码做出调整时,通常需要重启项目来进行效果验证,那么在项目结构比较复杂,以及使用到的第三方jar包很多的时候,那么就需要将所有类再重新加载一遍,这样不但耗费资源,而且降低了开发效率,为解决这样的问题,SpringBoot团队提供了一个热部署插件spring-boot-devtools,<!-- 引入热部署依赖 --><dependency> <groupId>org.sprin

2021-07-05 20:43:32 78

原创 SpringMVC高级应用

过滤器实现了对于request请求的过滤,它作用于Servlet之前,因为在Servlet接收到请求之后,就要开始根据url进行处理了。在实际开发中,我们可以配置请求方式转换过滤器来支持Rest风格接口,它会检查请求参数中是否有_method参数,如果有就按照指定的请求方式进行转换: <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.sp

2021-06-26 14:46:21 242

原创 SpringMVC的数据输出机制 - Model、Map及ModelMap

在SpringMVC中,可以通过实例化Model、Map或者ModelMap对象,并向其中放置数据(实则是放到了request请求域中),实现从后端向前端页面传递数据,这三者实现的功能是一样的,那么他们又有什么联系呢?通过分析这三个类的的调用栈,可以发现,这三个类最终底层的调用都是org.springframework.validation.support.BindingAwareModelMap。那么为什么Model、Map以及ModelMap最终都是使用BindingAwareModelMap来实现

2021-06-26 13:02:17 572

原创 SpringMVC中的url-pattern配置及原理

在配置DispatcherServlet时,往往需要配置url-pattern,用于指定url的拦截规则,在处理请求的时候,就会根据匹配的规则决定是否拦截当前url,并由DispatcherServlet进行处理,具体配置如下: <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherSe

2021-06-26 10:35:41 1040

原创 SpringMVC框架概述

目录MVC 三层架构SpringMVC和原生Servlet的区别MVC开发流程MVC九大组件及其核心组件MVC 三层架构在传统的开发流程中,通常根据代码职能的不同,划分成三个层次:表现层、业务层及Dao层,其中:表现层: 包含View视图层和Controller控制层,其中View视图层负责具体数据的展现,Controller层负责将结果封装成数据模型并返回给View层。业务层:负责具体业务逻辑代码的维护,以及和Dao层的交互,负责将从Dao层返回的数据依照业务逻辑封装处理,并将处理结果返回给Con

2021-06-24 21:43:18 255

原创 Spring的IOC容器和AOP编程思想 (二) - AOP编程

目录一、AOP编程思想二、AOP的实现原理二、使用步骤1.引入库2.读入数据总结二、AOP的实现原理三、Spring中的AOP编程一、AOP编程思想 在多数业务场景下,往往会出现下述类型的代码块:他们和业务逻辑并无关系,只是实现一些日志打印、权限管理或事务回滚等操作。而这些逻辑往往会存在在许多个方法中,如果需要调整这些逻辑,那么就需要逐个方法的修改,这些逻辑就称为横切逻辑,下图为横切逻辑的图解:如图所示,run方法和eat方法均需要打印方法开始执行时间start及方法执行结束时间end,那么打印s

2021-06-15 17:16:28 150 1

原创 Spring的IOC容器和AOP编程思想 (一) - IOC容器

一、IOC编程思想在多数的业务场景中,通常会出现如下的场景:在对象A中需实例化对象B,并调用B的方法,即 A的实例化依赖于B,那么在此种情况下,对象A和对象B存在耦合,那么为了解决对象实例化时存在的耦合问题,IOC编程思想应运而生,那么究竟什么是IOC编程?IOC(Inverse of control)即控制反转,也就是说,对象的创建不再由用户自己去创建,而是由IOC容器统一的创建及管理,这种将对象控制权移交出去,并由容器统一管理的方式,就是IOC。下图为IOC编程的图解:![在这里插入图片描述](ht

2021-06-15 15:27:02 138 1

空空如也

空空如也

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

TA关注的人

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