- 博客(80)
- 收藏
- 关注
原创 Spring深度解析-21、Spring各种依赖注入的注解区别
Spring和注入相关的常见注解有Autowired、Resource、Qualifier、Service、Controller、Repository、Component。1、@Autowired是自动注入,自动从spring的上下文找到合适的bean来注入@Autowired(required=true)表示必须找到匹配的Bean,否则将报异常。注意:用来标记属性@Autowired...
2019-01-17 23:12:19
593
原创 Spring深度解析-20、DispatcherServlet如何处理请求
昨天讲解了DispatcherServlet初始化的过程,DispatcherServlet因为继承自HttpServlet,所以其初始化时通过HttpServlet的init方法开始的,整个过程大致是读取ServletContext中的配置参数、然后初始化上下文,初始化Spring mvc需要用到的对象,比如HandlerMapping等。DispatcherServlet因为是继承自Http...
2019-01-16 23:36:16
679
1
原创 Spring深度解析-19、DispatcherServlet的初始化
昨天讲到DispatcherServlet因为继承了FrameworkServlet、HttpServletBean、HttpServlet,因此可以通过Servlet的API对请求进行一些处理与响应。DispatcherServlet的初始化在ContextLoaderListener完成对根上下文的初始化之后才会执行。具体的初始化时间取决于web.xml中servlet关于load-on-...
2019-01-15 23:12:43
387
原创 Spring深度解析-18、关于DispatcherServlet
什么是DispatcherServletDispatcherServlet在Spring MVC中属于MVC模式的C controller控制层,用于集中处理来自前端的请求,来自前端的请求通过DispatcherServlet进行分发处理,并且返回视图。什么时候去加载DispatcherServlet在ContextLoaderListener实现了spring mvc容器的根上下文的初始化...
2019-01-14 20:27:15
216
原创 Spring深度解析-17、ContextLoaderListener初始化上下文全过程
初始化过程简述由ContextLoaderListener初始化的上下文称之为根上下文,ContextLoaderListener实现了ServletContextListener接口,ServletContextListener监听ServletContextEvnet事件,当ServletContext发生变化则触发ServletContextEvnet事件,比如tomcat启动时,就会触...
2019-01-13 16:16:11
587
原创 Spring深度解析-16、Web环境下的IOC容器上下文初始化概述
如何在web.xml中配置,使tomcat容器加载时能初始化Spring的IOC容器?ContextLoaderListener监听器用来干什么ServletContextListenerContextLoaderServletContext是什么?
2019-01-12 21:16:13
288
5
原创 设计模式-2、适配器模式
什么是适配器模式?生活中常见的适配器是电源适配器,比如手机的充电器,就是个电源适配器,把220V的电压转为5V的电压,提供给手机充电。所谓适配器,就是连接在两个不匹配的东西之间,使之匹配的一个中间件。因此适配器模式就是这样一个模式,可以将不匹配的接口转化为可以匹配的接口,使原本因不兼容而无法一起工作的接口与类可以一起工作。类适配器类适配器的适用场景:客户端要使用的接口没有对应的方法,但...
2019-01-11 22:10:33
141
原创 Spring深度解析-15、AOP拦截器链实现原理
在上一篇章的学习中了解到AOP代理对象的执行过程,AOP中的代理对象有JDK代理与CGLIB代理两种方式,这两种代理对象在对目标对象的方法进行拦截,分别通过JdkDynamicAopProxy的invoke和DynamicAdvisedInterceptor的intercept来拦截。这两种的原理是一致的:1、先判断有没有拦截器链,如果没有,那么直接执行目标对象的方法2、如果有拦截器链,则封...
2019-01-10 21:15:51
2071
1
原创 Spring深度解析-12、AOP代理对象创建原理-ProxyFactoryBean
ProxyFactoryBean设计原理ProxyFactoryBean的配置ProxyFactoryBean创建AopProxy源码解析
2019-01-08 00:31:49
1262
原创 设计模式-1、代理模式
什么是代理模式?代理模式提供了对目标对象的另一个访问方式,即通过代理对象进行目标对象的访问。这样做的目的是在实现目标对象的功能之外,还能做一些额外的增强扩展。为什么需要代理模式?1、中介隔离对象:当客户类不愿意或者不能直接使用目标对象时,代理对象就作为中介者,将客户类的请求委托给目标对象。2、开闭原则:当需要在实现目标对象的功能之外,做一些额外的增强扩展时。比如在方法执行前后打日志,在数据...
2019-01-06 14:37:06
229
原创 Spring源码解析-10、BeanFactoryPostProcessor 与 BeanPostProcessor
BeanFactoryPostProcessor 介绍BeanFactoryPostProcessor 使用案例通过源码了解BeanFactoryPostProcessor的执行时机BeanPostProcessor 介绍BeanPostProcessor 使用通过源码了解BeanPostProcessor的注册和执行时机InstantiationAwareBeanPostProces...
2019-01-04 23:39:17
307
原创 Spring源码解析-9、Bean的生命周期
图BeanFactoryAware、BeanNameAwareInitializingBean和DiposableBean的init-method和destroy-method
2019-01-03 23:19:16
690
原创 Spring源码解析-8、BeanFactory与FactoryBean
BeanFactory与FactoryBean区别FactoryBean接口介绍如何获取FactoryBean本身?FactoryBean实例介绍
2019-01-02 22:29:02
522
原创 Spring源码解析-7、spring容器中的Bean是否线程安全?
Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说spring容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体scope的Bean去研究。spring 的 bean 有哪些scope[作用域]1、singleton:单例。【默认】2、prototype:原型,每次创建一个新对象3、request:请求,每次Http请求创建一个新对...
2019-01-01 16:13:06
2842
原创 Spring源码解析-6、spring单例如何解决循环依赖
什么叫循环依赖循环依赖即两个及以上的bean对象互相持有对方的引用,最终形成一个闭环。spring如何处理正在创建的BeanSpring容器会将每一个正在创建的Bean 标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池中,因此如果在创建Bean过程中发现自己已经在“当前创建Bean池”里时将抛出BeanCurrentlyInCreationExcept...
2019-01-01 14:04:52
637
1
原创 Spring源码解析-5、IOC容器的依赖注入
IOC容器的初始化过程有没有注入依赖IOC容器的初始化过程:1、BeanDefinition的Resource资源定位2、BeanDefinition的载入与解析3、BeanDefinition的注册这三个操作至始至终不存在Bean依赖注入。因此:IOC容器的初始化过程不存在依赖注入,那么可以实现在初始化阶段进行依赖注入吗?答案的可以的:refresh中有这样一段代码:// I...
2018-12-30 20:11:08
222
原创 Spring源码解析-4、IOC容器初始化
IOC容器初始化的几个步骤什么是BeanDefinitionBeanDefinition的Resource定位BeanDefinition的载入解析BeanDefinition在IOC容器中的注册
2018-12-29 23:10:04
164
原创 Spring源码深度解析-3、从XmlBeanFactory到编程式使用IOC容器
XmlBeanFactory简述XmlBeanFactory继承自DefaultListableBeanFactory,因此他拥有一个IOC容器最基本的功能,包括getBean,getBeanDefinationsName,除此之外,通过这个容器的名称也能了解到这个容器是可以读取以Xml文件方式定义的BeanDefinition的IOC容器。查看源码,可以看到XmlBeanFactory中确实...
2018-12-27 23:13:44
187
原创 Spring源码深度解析-2、IOC容器的设计
前言前面暂时结束jvm与java基础的整理,今天开始整理spring的内容。demo先从一个demo开始,最开始学spring,大家都写过这样的demo。//实体类package com.ycf.test;public class User { private String userName; private int userAge; public String getUser...
2018-12-27 00:20:08
555
原创 服务器 CPU使用率低 但是load高
等待磁盘IO完成的进程太多,导致等待队列长度过大,体现load过高,但是cpu此时去执行别的任务或者空闲,所以会有CPU使用率低但是load高的情况。主要有以下几种情况:1、磁盘读写操作太频繁,导致大量IO等待CPU的工作效率高于磁盘。进程在CPU上运行要访问磁盘文件时,CPU会向内核去发起调用文件的指令,让内核去磁盘读取文件。此时CPU去执行别的任务或者空闲。这个进程就会变成不可中断...
2018-12-25 13:16:38
4164
原创 服务器 cpu 占用 高怎么办?
1、查看具体是哪个进程的load比较高// 查看进程 按CPU占用排序ps -aux --sort -pcpu//最占CPU的10个ps -aux --sort -pcpu | head -10//top -c 实时2、查看这个进程中每个线程的cpu占用率ps -Lp 15047 cutop -Hp 进程ID 显示一个进程ID的线程运行信息列表//可以通过这个来查...
2018-12-25 11:00:00
1156
原创 JVM:JVM调优案例记录
https://blog.youkuaiyun.com/ityouknow/article/details/79078249
2018-12-25 10:39:24
353
原创 JVM:JVM调优-工具学习
jconsoleJdk自带的,可用查看jvm运行时的各种状态动态数据,例:堆内存、线程数、类加载卸载数、CPU占用率等,还可以检测死锁。可以通过jconsole查询本地jvm进程获取远程jvm进程,注意要查看远程的jvm进程需要在远程tomcat启动脚本中添加以下代码: -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.managem...
2018-12-25 10:30:51
256
原创 JVM:GC-常用JVM参数
JVM参数太多了,先记录一些常用的加深印象。常用参数-Xms:初始堆内存-Xmx:最大堆内存-Xmn:新生代大小-Xss:每个线程栈大小-XX:MaxPermSize:永久代大小-XX:NewRatio 默认为2 ,老年代为新生代的2倍-XX:SurvivorRatio 默认为8 ,eden:survivor=8-XX:PretenureSizeThreshold=3145728...
2018-12-23 13:29:55
450
原创 JVM:GC-minor gc / full gc触发条件
minor gc :当eden区满没有足够内存给新对象分配内存,触发minor gc.full gc:1、调用System.gc()时,系统建议JVM执行full gc,但不必然执行。一般不建议程序中调用System.gc(),可以通过DisableExplicitGC来禁用System.gc(),即忽略System.gc()触发的full gc 操作2、老年代或者方法区空间不足3、在...
2018-12-23 11:36:27
501
原创 JVM:GC-垃圾收集器
Serial收集器Serial Old收集器ParNew收集器Parallel Scavenge 收集器Parallel Old 收集器CMS收集器G1收集器
2018-12-21 23:30:45
144
原创 JAVA基础:反射
什么是反射?反射可以在运行时动态加载类,创建对象。这种类和对象在编译期间都是不确定的,只有在运行到对应的反射代码才能确定下来。反射还可以获取对象自身的信息,包括属性、方法等,并且可以打破访问修饰符的限制,设置并访问私有的属性,获取并调用私有的方法。通过反射加载类反射,最刚开始接触其实是在jdbc的学习中。看下面获取mysql连接的代码//反射加载mysql驱动Class.forName...
2018-12-17 21:09:55
500
原创 tomcat:tomcat类加载架构
tomcat能不能使用默认的类加载机制?为什么?tomcat 如何实现其独有的类加载机制?为何说tomcat违背了双亲委派机制?
2018-12-16 21:42:08
258
原创 JVM:JVM 类加载器ClassLoader的实现-代码角度
下面是ClassLoader中加载class的方法protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { ---1 ...
2018-12-15 10:58:10
155
原创 JVM:类加载机制
前言JAVA虚拟机中的类加载机制非常重要,在关于JVM的面试中经常问到,因此今天整理一下相关的知识点,一方面为之后的面试做准备,另一个方法也是扩展一下知识面。类的生命周期关于类的生命周期,直接上图看下。类从加载进虚拟机内存,到从虚拟机卸载的整个生命过程包括 加载、验证、准备、解析、初始化、使用、卸载。加载、验证、准备、初始化和卸载的顺序是固定的,但是解析不一定,它可以出现在初始化之后,...
2018-12-15 00:50:21
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人