自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 资源 (33)
  • 问答 (7)
  • 收藏
  • 关注

原创 springmvc源码之ViewResolver视图解析器

ViewResolver进行视图解析,根据逻辑视图名解析成真正的视图,首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。InternalResourceViewResolver将逻辑视图名称解析为View对象,架构该对象渲染的任务委托给Web应用程序上下文的一个模板。

2023-01-17 11:42:52 189

原创 springmvc源码之HandlerAdapter处理适配器

Spring 中的处理器的实现有很多种方式,比如可以实现 Controller 接口,也可以用 @RequestMapping 注解将方法作为一个处理器等,这就导致 Spring 不知道怎么调用用户的处理器逻辑。平常使用最多的也是RequestMappingHandlerAdapter,即使用@Controller和@RequestMapping来进行映射的接口,即实现了InitializingBean接口,所以会执行afterPropertiesSet方法。

2023-01-13 16:18:22 416

原创 springmvc源码之HandlerMapping处理器映射器

HandlerMapping帮助DispatcherServlet进行web请求的url到具体处理类的匹配,用来根据请求的url查找Handler,内部维护的Map映射,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。在进行访问的时候会通过org.springframework.web.servlet.DispatcherServlet#getHandler方法来遍历handlerMappings。

2023-01-04 11:35:09 261

原创 springmvc源码之DispatcherServlet前端控制器

国际化处理AcceptHeaderLocaleResolver 基于URL参数的配置,可以读取url中locale=zh_CN来控制国际化参数CookieLocaleResolver 基于cookie的配置,可以通过浏览器的cookie设置获取Locale对象SessionLocaleResolver 基于session的配置,可以公国检验session的预置的属性来解析,如果没有则会根据请求头中的accept-language来确定主题处理,根据主题控制网页风格。

2022-12-26 15:41:39 312

原创 linux利器curl

使用-G表示发起Get请求,同时可以联合–data-urlencode来转义URL参数里的中文特殊符号,data-urlencode默认是POST请求,如果没有-G参数,会发起一个POST请求。有时候想在命令行下通过http访问接口/网页,可以使用curl来进行操作。使用-X可以指定发送请求类型,如GET|POST|PUT|DELETE。使用-d表示发起post请求,-d后为post内容。使用-I参数,只会返回响应header。使用-i参数,会返回响应header。使用-H可以设置HTTP请求头。

2022-12-20 16:51:12 472

原创 springmvc源码之Web上下文初始化

web上下文与SerlvetContext的生命周期应该是相同的,springmvc中的web上下文初始化是由ContextLoaderListener来启动的在web.xml中配置ContextLoaderListenerContextLoaderListenerContextLoaderListener实现了ServletContextListener接口,ServletContextListener是Servlet定义的,提供了与Servlet生命周期结合的回调,contextInitializ

2022-11-21 11:27:15 221

原创 springmvc国际化

之前javaweb的时候就是用过国际化,而springmvc作为一个javaweb的框架,肯定也是支持国际化的,其建立在java国际化的基础之上,通过不同国家或语言的消息资源,通过ResourceBundle加载指定的Locale对应的资源文件,在取得该资源文件中指定key对应的消息。在springmvc中选择语言区域,可以使用语言区域解析器,而LocaleResolver就是springmvc中提供的区域解析器接口,实现类有。

2022-10-25 17:12:55 243

原创 springmvc文件上传

在Servlet3.0中配置的话,需要在web.xml中为DispatcherServlet添加一个multipart-config元素,或者通过编程的方式使用MultipartConfigElement进行注册,不允许在MultipartResolver中配置这些信息。StandardServletMultipartResolver:依赖于Servlet3.0对multipart的支持,如果没有使用Servlet3.0的容器,那么只能使用CommonsMultipartResolver。

2022-10-23 14:40:40 228

原创 RequestBodyAdvice和ResponseBodyAdvice

该接口是在消息体被HttpMessageConverter消息解析器写入之前执行的。该接口是在获取@RequestBody参数数据之前进行处理的。在spring4中新添加的两个接口。

2022-10-20 12:02:27 326

原创 springmvc参数解析

现在使用这种格式的比较多,报文会在请求体内,而不是拼接到地址中,使用springmvc接收时使用@RequestBody注解标注,使用到的参数处理器为RequestResponseBodyMethodProcessor,默认会用到MappingJackson2HttpMessageConverter进行参数类型的转换,底层依赖到Jackson相关的包。

2022-10-18 10:23:09 254

原创 spring获取当前request

使用RequestContextHolder.currentRequestAttributes()获取的RequestAttributes对象是线程局部变量(ThreadLocal),request对象也是线程局部变量。有时候需要在处理业务的时候用到request对象,可以使用该方法获取。

2022-10-16 15:18:40 293

原创 springmvc注解的使用

可以放到方法上或者参数上,它将方法参数或方法返回值绑定到命名中的Model属性中,然后将其公开给Web视图。默认情况下Spring MVC将模型中的数据存储到request域中,当一个请求结束后,数据就失效了,如果要跨页面使用,那么需要使用到session,而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。标记在方法的参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用。如:get/{id}

2022-10-13 14:42:39 222

原创 使用springSession完成分布式session

分布式session可以使用spring session来进行实现,由于HttpRequest的Wrapper功能,许多HttpRequest中的方法都可以进行替换来进行自定义的重写,所以可以将getSession方法重写掉,然后进行自定义的session存储和处理,当然了,你能想到的,一般都是早就有人已经实现了,就不重复造轮子了。启动项目之后正常的向往常一样的操作session,就可以看到redis中存有session了。这里演示的是将session存储在redis中,所需要的依赖。

2022-10-11 14:19:32 184

原创 restTemplate解析401异常失败

这时候需要在创建restTemplate的时候更改requestFactory,使用HttpComponentsClientHttpRequestFactory。如果使用restTemplate默认构造器的话,在进行错误解析的时候,使用。

2022-10-08 10:41:06 285

原创 spring源码分析之事务源码分析

而且继承的类也是一样的,都是AbstractAdvisorAutoProxyCreator,之后的逻辑就与AOP的很是相似了,找Advisor类的bean,是有一个的,注册BeanFactoryTransactionAttributeSourceAdvisor。与AOP的标签解析相同,tx:annotation-driven标签也是自定义标签,http://www.springframework.org/schema/tx找到对应的handler是TxNamespaceHandler。

2022-10-07 12:15:09 338

原创 spring源码分析之AOP开启注解

在获取bean的时候会创建bean,但是不要忘了该类还实现了一个BeanFactoryAware接口,在创建bean之后会进行初始化,也就会执行org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#invokeAwareMethods方法。即进行自定义标签的解析,会去META-INF/spring.handlers中寻找对应的handler,该标签的namespace是。

2022-10-06 14:34:35 444

原创 spring源码分析之循环依赖

对于setter注入造成的循环依赖,spring采用的是提前暴露刚完成的构造器实例化但未完成setter方法注入的bean来实现的,而且只能解决单例作用域的bean。使用构造器注入构成循环依赖,这种方式无法进行解决,抛出了BeanCurrentlyInCreationException异常。spring中将循环依赖处理分为了两种情况。在创建bean之前会进行检测。在创建bean之后会进行移除。

2022-09-30 12:59:44 84

原创 spring源码分析之获取bean

在进行获取bean的时候使用getBean方法来进行获取,那么就从getBean来作为入口,看一下获取bean的流程。从缓存singletonObjects中加载单例,如果加载不成功尝试从singletonFactories中加载。主要是为了解决FactoryBean的情况。这个方法比较长,分为很多步。依赖注入是在这里进行的。三级缓存解决循环依赖。

2022-09-27 15:18:52 377

原创 spring源码分析之ProxyFactoryBean

ProxyFactoryBean是spring ioc环境中创建AOP应用的底层方法,通过它完成了对AOP的封装。

2022-09-26 15:55:55 168

原创 linux之输出命令

echo输出的语句是自动换行的,可以省略结尾的换行。

2022-09-25 13:36:16 742

原创 BeanDefinition属性

原文链接。

2022-09-24 11:07:53 93

原创 spring源码分析之上下文构建

以ClassPathXmlApplicationContext为例来说明一个简单地创建ApplicationContext实例的方法,spring会做什么事呢?spring在初始化上下文的最重要的方法就是这个refresh()方法了prepareRefresh初始化容器初始化之前的初始化工作obtainFreshBeanFactory创建BeanFactory创建BeanFactory,实现BeanFactory的全部功能refreshBeanFactoryorg.springframewo

2022-09-21 18:01:58 224

原创 spring配置双数据源

原文链接 https://zhhll.icu/2021/框架/spring/基础/18.spring配置双数据源/前段时间有个需求,需要将将数据存到两个数据库中,一个库中存放主信息,一个库中存放特殊信息,看来是要使用双数据源了,来搞起来吧既然是双数据源,先不管怎么切换,配置得先搞起来动态数据源配置好了数据源之后,需要进行定义动态数据源,继承AbstractRoutingDataSource,AbstractRoutingDataSource是基于特定的查找key路由到特定的数据源。它内部维护了一组目标数

2022-09-20 14:52:47 212

原创 linux之alias别名

可以将alias命令保存在系统启动文件中,如~/.bash_profile中。可以使用alias来设置命令的别名来简化命令。可以使用alias命令来查看所设置的别名。可以使用unalias来去除别名。

2022-09-19 14:29:27 348

原创 CSDN编程竞赛介绍

报名了三次,但是有一次太忙了,没腾出手来活动时间:9月8日-21日(竞赛时间截止9.18)竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)9月18日 11:00前点击比赛报名,并于9月18日 8:30—11:00,PC端登陆考试系统(当前页面届时将开放考试入口),在2小时内完成考试作答9月8日-9月21日,点击竞赛专属话题,在对应的模板编辑器里发稿成功即参与成功。

2022-09-19 10:20:49 139

原创 spring自定义属性编辑器

属性编辑器是用来解析bean的配置文件中的属性标签的,spring的BeanWrapperImpl默认会注册CustomCollectionEditor(集合)、CustomMapEditor(Map)、CurrencyEditor(货币)、ByteArrayPropertyEditor等,可以使用来注册属性编辑器,实现了BeanFactoryPostProcessor接口,由spring容器自动检测并执行。

2022-09-15 17:40:03 415

原创 spring引入外部属性文件

这样配置当然也可以,只是要去修改spring配置文件的时候由于spring的配置文件内容太多,不太方便,所以有时候会引入外部的属性文件。有时候我们并不想把所有的配置信息都放到spring的配置文件中,这样的话也不太好维护,比如说数据库的信息。会生成一个PropertySourcesPlaceholderConfigurer类来解析占位符。db.properties属性文件。

2022-08-25 10:25:51 168

原创 spring的扩展接口

这时所有的bean的描述信息已经加载完毕,但是还没有进行bean初始化。它扩展自BeanFactoryPostProcessor,在执行BeanFactoryPostProcessor的功能前,提供了可以添加bean definition的能力,允许在初始化一般bean前,注册额外的bean。与BeanFactoryPostProcessor的区别是处理的对象不同,BeanFactoryPostProcessor是对beanfactory进行处理,BeanPostProcessor是对bean进行处理,

2022-08-23 15:15:10 238 1

原创 CSDN线上竞赛第四期体验

想着提升一下算法,又不知从何开始,正好CSDN提供了一个线上竞赛,就报名参加了一下,正好也是周末,题嘛,确实也是不会做,差的还很多,而且这题有的还有问题,唉,心累。

2022-08-22 11:42:41 82

原创 spring bean的作用域

spring容器中bean有五种作用域- singleton单例:这种 bean 范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个 bean 的实例,单例的模式由 bean factory 自身来维护,在加载spring配置文件时就会创建对象- prototype原型:原型范围与单例范围相反,为每一个 bean 请求提供一个实例,在调用getBean方法的时候才会创建- request请求:在请求 bean 范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean 会

2022-08-19 16:44:16 125

原创 spring事务失效场景

Spring在扫描Bean的时候会自动为标注了@Transactional注解的类生成一个代理类(proxy),当有注解的方法被调用的时候,实际上是代理类调用的,代理类在调用之前会开启事务,执行事务的操作,但是同类中的方法互相调用,相当于this.B(),此时的B方法并非是代理类调用,而是直接通过原有的Bean直接调用,所以注解会失效。首先spring的事务是使用AOP来实现的,而AOP的底层是代理(JDK代理或者CGLIB代理),所以事务失效就想什么时候不能进行代理。配置的方法非public修饰。...

2022-08-18 10:41:13 87 1

原创 spring事件监听

Spring 提供了以下 5 中标准的事件:上下文更新事件ContextRefreshedEvent该事件会在ApplicationContext 被初始化或者刷新时发布。也可以在调用 ConfigurableApplicationContext 接口中的 refresh()方法时被触发上下文开始事件ContextStartedEvent当容器调用ConfigurableApplicationContext的 Start()方法开始/重新开始容器时触发该事件。......

2022-08-17 12:03:10 96 1

原创 linux之系统资源命令

第三行是分区信息:total是swap的总数,used是已经使用的,free是空闲的,当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。第一行是内存信息:total表示总内存数,used表示已经使用的,free表示空闲的,shared表示多个进程共享的,buffers表示缓冲内存数,cached表示缓存内存数。按L切换显示画面上边的刻度;按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!...

2022-08-16 14:19:14 386 1

原创 linux之进程管理命令

第一行是任务队列信息,返回信息与uptime类似,系统当前时间、系统运行了多长时间、有多少用户正在使用该系统、系统每隔1分钟、5分钟、15分钟的平均负载。显示各种进程分别占用内存的情况,可以看到所有内存地址的详细信息,而且还显示了启动进程的命令。第二行是进程统计信息,分别为总数、正在运行的数量、睡眠的数量、停止的数量、僵尸数。第三行 %Cpu一行中展示的是cpu的使用情况。根据CPU使用率排序的活动进程。显示多处理器系统的CPU使用率。显示系统上运行的进程列表。...

2022-08-15 15:30:41 316 1

原创 linux之后台运行命令

很多时候需要将命令放在后台执行,那么如何让命令在后台运行呢,只需要在命令后加上&即可。使用定时任务,让系统执行该命令,这样该命令就与终端无关了,不依赖所登录的终端。使用nohup命令,使得后台命令在离开操作终端也可以正确的在后台执行。但是后台运行的命令在关闭终端之后就会终止,如何解决这个问题呢?...

2022-08-11 10:18:24 828 3

原创 linux之查看端口占用

可以使用netstat -tunlp | grep 端口号 来查看指定的端口号的进程情况。可以使用lsof -i:端口号 来查看端口占用情况。

2022-08-09 14:14:10 2461 1

原创 linux之定时任务

由于at只能执行一次,所以使用的并不多,真正使用的多的是crontab执行定时任务。在/etc/crontab配置文件中配置。依赖于crond服务。

2022-08-08 15:41:51 258 1

原创 linux之linux下载软件包

我在使用系统自带的yum源文件时发现无法访问那些网站,所以去找了个搜狐的镜像源,将原本的baseurl的前半部分换为http://mirrors.sohu.com/该命令的作用是调用gcc编译器,读取上述Makefile文件中的信息进行系统软件编译,编译是为了把源码程序转换成linux可执行的文件。yum的源配置文件保存在/etc/yum.repos.d文件夹中,默认使用的是CentOS-Base.repo。用于带 HP Alpha CPU 的计算机,最初是 DEC 公司开发的。......

2022-08-05 17:10:02 1633 1

原创 linux之vim编辑器

末行模式该模式下,在vim界面最下边可以输入命令,来执行各种操作,编辑完文件之后,想要保存修改或者不保存修改都需要进入末行模式来进行操作,从命令模式切到底末模式,按(冒号)进入末行模式。vim有三种模式,命令模式,插入模式,末行模式,在一开始的时候默认进入的是命令模式。插入模式(输入模式)可以向文件中输入字符的模式。命令模式默认的模式,该模式下有很多的快捷键。按Esc退出输入模式,进入命令模式。...

2022-07-29 15:07:49 107 1

原创 linux之scp命令文件传输

在开发时经常会遇到两台机器之间传文件或者安装包,这就用到了scp命令。

2022-07-28 15:43:42 716 1

Hive-JSON-Serde-1.3.8.zip

Hive-JSON-Serde-1.3.8.zip

2022-05-23

consul_1.10.2_darwin_amd64.zip

consul_1.10.2_darwin_amd64.zip

2022-05-22

hbase-2.2.7-bin.tar.gz

hbase-2.2.7-bin.tar.gz

2022-05-21

Mycat-server-1.6.7.4-release-20200105164103-mac.tar.gz

Mycat-server-1.6.7.4-release-20200105164103-mac.tar.gz

2022-05-20

Nacos-2.0.3.zip

Nacos-2.0.3.zip

2022-05-19

redis-unstable.tar.gz

redis-unstable.tar.gz

2022-05-18

resin-4.0.65.tar.gz

resin-4.0.65.tar.gz

2022-05-17

resin-4.0.65-src.tar.gz

resin-4.0.65-src.tar.gz

2022-05-16

scala-2.13.3.tar

scala-2.13.3.tar

2022-05-15

Sentinel-1.7.2.zip

Sentinel-1.7.2.zip

2022-05-14

apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz

apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz

2022-05-13

sysbench-1.0.20.zip

sysbench-1.0.20.zip

2022-05-12

thrift-0.13.0.tar

thrift-0.13.0.tar

2022-05-11

apache-tomcat-8.5.57-src.tar.gz

apache-tomcat-8.5.57 源码包

2022-05-10

32dbb32e528357ef1ec0b8863dd9--Docker.dmg

macos docker软件包

2022-05-09

elasticsearch-hadoop-6.8.23.zip

elasticsearch-hadoop

2022-05-08

apache-echarts-4.9.0-incubating-src.zip

echarts

2022-05-07

BaiduNetdisk_mac_3.4.1.dmg

百度网盘mac

2022-05-06

edraw-max_cn_full5381.dmg

edraw-max_cn_full5381.dmg

2022-05-05

electerm-1.18.5-mac-x64.dmg

mac 好用的ssh桌面终端软件

2022-05-04

Feishu-3.29.3.dmg

飞书mac

2022-05-03

KDocs_1001_v2.1.0.dmg

KDocs_1001_v2.1.0.dmg

2022-05-02

kplayer201.zip

kplayer201.zip 播放器

2022-05-01

mailmaster.dmg

mailmaster.dmg

2022-04-30

MavenRunHelper.zip

MavenRunHelper

2022-04-29

scala-intellij-bin-2020.1.43

scala-intellij-bin-2020.1.43 idea插件

2022-04-28

WeChatMac安装包

微信mac安装包

2022-04-27

ffmpeg应用程序(mac)

ffmpeg应用程序

2022-04-26

Statistic-4.0.jar

Statistic-4.0.jar

2022-04-25

hadoop-lzo-0.4.16

依赖包

2022-04-22

maven-thrift-plugin-0.1.10

maven插件 maven-thrift-plugin-0.1.10

2022-04-21

thrift-maven-plugin-0.10.0

maven插件jar包

2022-04-20

Typora mac版本 Typora.dmg

Typora编写markdown的神器,0.9.9.34.2

2022-04-19

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

TA关注的人

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