自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

开始写bug~~~

你的一个程序有时正常有时不正常,而你已经完全遵循编程的规则,为什么?事实上我认为相信只要遵循别人所说就能得到想当然的结果的人其实是个傻瓜。

  • 博客(80)
  • 收藏
  • 关注

原创 MySql-事务的四大特性以及不考虑事务会出现什么问题

什么事务原子性一致性隔离性持久性脏读不可重复读幻读

2019-02-26 21:15:55 888 1

原创 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 517

原创 Spring深度解析-20、DispatcherServlet如何处理请求

昨天讲解了DispatcherServlet初始化的过程,DispatcherServlet因为继承自HttpServlet,所以其初始化时通过HttpServlet的init方法开始的,整个过程大致是读取ServletContext中的配置参数、然后初始化上下文,初始化Spring mvc需要用到的对象,比如HandlerMapping等。DispatcherServlet因为是继承自Http...

2019-01-16 23:36:16 570 1

原创 Spring深度解析-19、DispatcherServlet的初始化

昨天讲到DispatcherServlet因为继承了FrameworkServlet、HttpServletBean、HttpServlet,因此可以通过Servlet的API对请求进行一些处理与响应。DispatcherServlet的初始化在ContextLoaderListener完成对根上下文的初始化之后才会执行。具体的初始化时间取决于web.xml中servlet关于load-on-...

2019-01-15 23:12:43 338

原创 Spring深度解析-18、关于DispatcherServlet

什么是DispatcherServletDispatcherServlet在Spring MVC中属于MVC模式的C controller控制层,用于集中处理来自前端的请求,来自前端的请求通过DispatcherServlet进行分发处理,并且返回视图。什么时候去加载DispatcherServlet在ContextLoaderListener实现了spring mvc容器的根上下文的初始化...

2019-01-14 20:27:15 180

原创 Spring深度解析-17、ContextLoaderListener初始化上下文全过程

初始化过程简述由ContextLoaderListener初始化的上下文称之为根上下文,ContextLoaderListener实现了ServletContextListener接口,ServletContextListener监听ServletContextEvnet事件,当ServletContext发生变化则触发ServletContextEvnet事件,比如tomcat启动时,就会触...

2019-01-13 16:16:11 535

原创 Spring深度解析-16、Web环境下的IOC容器上下文初始化概述

如何在web.xml中配置,使tomcat容器加载时能初始化Spring的IOC容器?ContextLoaderListener监听器用来干什么ServletContextListenerContextLoaderServletContext是什么?

2019-01-12 21:16:13 240 5

原创 设计模式-2、适配器模式

什么是适配器模式?生活中常见的适配器是电源适配器,比如手机的充电器,就是个电源适配器,把220V的电压转为5V的电压,提供给手机充电。所谓适配器,就是连接在两个不匹配的东西之间,使之匹配的一个中间件。因此适配器模式就是这样一个模式,可以将不匹配的接口转化为可以匹配的接口,使原本因不兼容而无法一起工作的接口与类可以一起工作。类适配器类适配器的适用场景:客户端要使用的接口没有对应的方法,但...

2019-01-11 22:10:33 110

原创 Spring深度解析-15、AOP拦截器链实现原理

在上一篇章的学习中了解到AOP代理对象的执行过程,AOP中的代理对象有JDK代理与CGLIB代理两种方式,这两种代理对象在对目标对象的方法进行拦截,分别通过JdkDynamicAopProxy的invoke和DynamicAdvisedInterceptor的intercept来拦截。这两种的原理是一致的:1、先判断有没有拦截器链,如果没有,那么直接执行目标对象的方法2、如果有拦截器链,则封...

2019-01-10 21:15:51 1849 1

原创 Spring深度解析-14、AOP代理对象的执行过程分析

JDK代理的invokeCGLIB的intercept目标对象的invoke

2019-01-09 22:18:06 304

原创 Spring深度解析-13、AOP创建代理对象的两种方式

AOP如何选择创建代理对象的方式JDK代理CGLIB代理

2019-01-08 23:20:04 447

原创 Spring深度解析-12、AOP代理对象创建原理-ProxyFactoryBean

ProxyFactoryBean设计原理ProxyFactoryBean的配置ProxyFactoryBean创建AopProxy源码解析

2019-01-08 00:31:49 1162

原创 设计模式-1、代理模式

什么是代理模式?代理模式提供了对目标对象的另一个访问方式,即通过代理对象进行目标对象的访问。这样做的目的是在实现目标对象的功能之外,还能做一些额外的增强扩展。为什么需要代理模式?1、中介隔离对象:当客户类不愿意或者不能直接使用目标对象时,代理对象就作为中介者,将客户类的请求委托给目标对象。2、开闭原则:当需要在实现目标对象的功能之外,做一些额外的增强扩展时。比如在方法执行前后打日志,在数据...

2019-01-06 14:37:06 185

原创 Spring深度解析-11、AOP概念

什么是AOPAdvice通知PointCut切点Advisor通知器

2019-01-05 22:21:36 169

原创 Spring源码解析-10、BeanFactoryPostProcessor 与 BeanPostProcessor

BeanFactoryPostProcessor 介绍BeanFactoryPostProcessor 使用案例通过源码了解BeanFactoryPostProcessor的执行时机BeanPostProcessor 介绍BeanPostProcessor 使用通过源码了解BeanPostProcessor的注册和执行时机InstantiationAwareBeanPostProces...

2019-01-04 23:39:17 252

原创 Spring源码解析-9、Bean的生命周期

图BeanFactoryAware、BeanNameAwareInitializingBean和DiposableBean的init-method和destroy-method

2019-01-03 23:19:16 646

原创 Spring源码解析-8、BeanFactory与FactoryBean

BeanFactory与FactoryBean区别FactoryBean接口介绍如何获取FactoryBean本身?FactoryBean实例介绍

2019-01-02 22:29:02 448

原创 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 2774

原创 Spring源码解析-6、spring单例如何解决循环依赖

什么叫循环依赖循环依赖即两个及以上的bean对象互相持有对方的引用,最终形成一个闭环。spring如何处理正在创建的BeanSpring容器会将每一个正在创建的Bean 标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池中,因此如果在创建Bean过程中发现自己已经在“当前创建Bean池”里时将抛出BeanCurrentlyInCreationExcept...

2019-01-01 14:04:52 590 1

原创 Spring源码解析-5、IOC容器的依赖注入

IOC容器的初始化过程有没有注入依赖IOC容器的初始化过程:1、BeanDefinition的Resource资源定位2、BeanDefinition的载入与解析3、BeanDefinition的注册这三个操作至始至终不存在Bean依赖注入。因此:IOC容器的初始化过程不存在依赖注入,那么可以实现在初始化阶段进行依赖注入吗?答案的可以的:refresh中有这样一段代码:// I...

2018-12-30 20:11:08 172

原创 Spring源码解析-4、IOC容器初始化

IOC容器初始化的几个步骤什么是BeanDefinitionBeanDefinition的Resource定位BeanDefinition的载入解析BeanDefinition在IOC容器中的注册

2018-12-29 23:10:04 129

原创 Spring源码深度解析-3、从XmlBeanFactory到编程式使用IOC容器

XmlBeanFactory简述XmlBeanFactory继承自DefaultListableBeanFactory,因此他拥有一个IOC容器最基本的功能,包括getBean,getBeanDefinationsName,除此之外,通过这个容器的名称也能了解到这个容器是可以读取以Xml文件方式定义的BeanDefinition的IOC容器。查看源码,可以看到XmlBeanFactory中确实...

2018-12-27 23:13:44 143

原创 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 494

原创 服务器 CPU使用率低 但是load高

等待磁盘IO完成的进程太多,导致等待队列长度过大,体现load过高,但是cpu此时去执行别的任务或者空闲,所以会有CPU使用率低但是load高的情况。主要有以下几种情况:1、磁盘读写操作太频繁,导致大量IO等待CPU的工作效率高于磁盘。进程在CPU上运行要访问磁盘文件时,CPU会向内核去发起调用文件的指令,让内核去磁盘读取文件。此时CPU去执行别的任务或者空闲。这个进程就会变成不可中断...

2018-12-25 13:16:38 3817

原创 服务器 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 1083

原创 JVM:JVM调优案例记录

https://blog.csdn.net/ityouknow/article/details/79078249

2018-12-25 10:39:24 294

原创 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 197

原创 JVM:JVM调优-命令学习

jpsjstatjmapjstack

2018-12-24 22:59:39 113

原创 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 353

原创 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 449

原创 JVM:GC-内存分配与回收策略

对象优先在Eden区分配大对象直接在年老代分配长期存活对象进入老年代动态对象年龄判断空间分配担保

2018-12-22 17:59:15 147

原创 JVM:GC-垃圾收集器

Serial收集器Serial Old收集器ParNew收集器Parallel Scavenge 收集器Parallel Old 收集器CMS收集器G1收集器

2018-12-21 23:30:45 93

原创 JVM:GC-常用算法理解

标记-清除复制算法标记-整理分代收集

2018-12-21 00:42:46 124

原创 JVM:GC-判断对象是否可以回收?

引用计数算法可达性分析算法finalizeJDK1.2,引用概念扩充方法区内能否GC

2018-12-19 23:27:43 1375

原创 JVM:HotSpot对象探秘-创建、内存分配、访问定位

如何创建对象?如何实现对象的内存分配?如何实现对象的访问定位?

2018-12-18 22:57:36 307

原创 JAVA基础:反射

什么是反射?反射可以在运行时动态加载类,创建对象。这种类和对象在编译期间都是不确定的,只有在运行到对应的反射代码才能确定下来。反射还可以获取对象自身的信息,包括属性、方法等,并且可以打破访问修饰符的限制,设置并访问私有的属性,获取并调用私有的方法。通过反射加载类反射,最刚开始接触其实是在jdbc的学习中。看下面获取mysql连接的代码//反射加载mysql驱动Class.forName...

2018-12-17 21:09:55 433

原创 tomcat:tomcat类加载架构

tomcat能不能使用默认的类加载机制?为什么?tomcat 如何实现其独有的类加载机制?为何说tomcat违背了双亲委派机制?

2018-12-16 21:42:08 223

原创 JVM:如何实现一个自定义类加载器?

为什么要自定义加载器如何实现自定义加载器使用自定义加载器的场景

2018-12-15 23:08:28 1978

原创 JVM:JVM 类加载器ClassLoader的实现-代码角度

下面是ClassLoader中加载class的方法protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { ---1 ...

2018-12-15 10:58:10 120

原创 JVM:类加载机制

前言JAVA虚拟机中的类加载机制非常重要,在关于JVM的面试中经常问到,因此今天整理一下相关的知识点,一方面为之后的面试做准备,另一个方法也是扩展一下知识面。类的生命周期关于类的生命周期,直接上图看下。类从加载进虚拟机内存,到从虚拟机卸载的整个生命过程包括 加载、验证、准备、解析、初始化、使用、卸载。加载、验证、准备、初始化和卸载的顺序是固定的,但是解析不一定,它可以出现在初始化之后,...

2018-12-15 00:50:21 333

空空如也

空空如也

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

TA关注的人

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