自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (1)
  • 收藏
  • 关注

原创 Dubbo SPI组件加载流程源码分析

本文以加载com.alibaba.dubbo.rpc.Protocol SPI组件为例予以分析:核心源码ExtensionLoader extensionLoader = ExtensionLoader .getExtensionLoader(Protocol.class);for (String name : extensionLoader.getSupportedExtensio

2017-06-25 17:13:42 782

原创 Mybatis工作机制源码分析—SqlSessionUtils.getSqlSession工作机制

在调用SqlSessionTemplate进行dao层操作时,其会将工作委托给sqlSessionProxy属性进行,而sqlSessionProxy在进行相关method调用时,用到了JDK动态代理机制,首先SqlSessionUtils.getSqlSession获取sqlSession,本文主要以源码的形式阐述其工作机制。SqlSessionTemplate.SqlSessionInte

2017-05-23 10:48:24 5400

原创 Mybatis工作机制源码分析—缓存机制及事务机制

本文主要以源码分析的角度分析Mybatis的缓存工作机制及事务机制。缓存工作机制整体设计图         网上一张关于Mybatis的缓存工作机制示意图:Cache类结构图相关源码         二级缓存处理主要体现在CachingExecutor;一级缓存处理主要体现在BaseExecutor,其带localCache、localOutputParam

2017-01-15 12:46:49 1001

原创 Mybatis工作机制源码分析—一次select请求处理流程

本文从源码分析的角度分析Mybatis一次select请求处理流程。select整体处理流程时序图DefaultSqlSession.selectOne工作流程时序图DynamicSqlSource构建BoundSql工作流程相关源码/** DefaultSqlSession.java */public T selectOne(String

2017-01-15 11:34:25 1340

原创 Mybatis工作机制源码分析—一次insert请求处理流程

本文从源码分析的角度分析Mybatis一次insert请求处理流程。insert整体处理流程时序图相关源码/** SqlSessionTemplate.java */public int insert(String statement, Object parameter) { return this.sqlSessionProxy.insert(statement, p

2017-01-15 10:35:29 1960 1

原创 Mybatis工作机制源码分析—初始化

本文以Spring集成Mybatis的形式,在启动工程过程中,Spring容器会实例化SqlSessionFactoryBean,来讲解Mybatis是如何进行初始化工作。Spring配置文件applicationContext.xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:ao

2017-01-05 13:56:46 866

原创 Mybatis工作机制源码分析—初始化—mapper配置文件解析

本文以源码分析的形式讲解Mybatis是如何进行mapper配置文件的解析工作的。时序图相关源码/** XMLMapperBuilder.java */// 构造XMLMapperBuilderpublic XMLMapperBuilder(InputStream inputStream, Configuration configuration, String resour

2017-01-05 13:46:43 1635

原创 Mybatis工作机制源码分析—初始化—config配置文件解析

本文通过源码分析的形式讲解Mybatis config配置文件是如何解析的。时序图相关源码/** XMLConfigBuilder解析 *//** XMLConfigBuilder.java */public Configuration parse() { if (parsed) { throw new BuilderException("Each XMLConfi

2017-01-05 11:54:42 718

原创 Mybatis工作机制源码分析—初始化—sax解析

本文以解析Mybatis config配置文件中"/configuration"元素为例进行说明Mybatis是如何进行sax解析工作的。Mybatis配置文件解析流程图时序图相关源码/** XMLConfigBuilder.java */// 以解析Mybatis config配置文件"/configuration"元素为例说明sax解析机制:parser.e

2017-01-05 11:43:57 820

原创 Struts2框架及其设计模式

Struts2容器         容器是框架的核心,可以利用容器生成bean,也可以完成依赖注入等,这些都是容器的基本功能,Struts2容器与之前介绍的Spring容器、Springmvc容器是大不一样的。Spring典型容器是ClassPathXmlApplicationContext,Springmvc延续Spring的风格,其典型容器是XmlWebApplicationContext

2016-12-28 11:39:05 3453

原创 Struts2工作机制源码分析

Struts2整体工作流程        先通过Struts2官网一张图整体把握其工作流程:初始化初始化调用栈Struts2下的web.xml配置<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/20

2016-12-27 22:16:53 966

原创 Springmvc 工作机制源码分析

Springmvc 工作机制源码分析

2016-12-17 10:51:47 1698

原创 Tomcat一次http请求处理,filter、servlet调用流程

Tomcat一次http请求处理,filter、servlet调用流程

2016-12-13 09:24:10 2976

原创 Tomcat启动解析web.xml源码分析

Tomcat启动解析web.xml源码分析

2016-12-09 15:28:09 3013

原创 Spring AOP工作机制进一步理解(总结篇)

Spring AOP工作机制基本流程

2016-12-02 10:13:29 685

原创 Spring AOP工作机制进一步理解(下篇)

前面通过源码,分析了、配置下的spring AOP工作机制,本文分析AutoProxyCreator、ProxyFactoryBean配置下的工作机制。AutoProxyCreatorSpring xml配置文件解析工作流程相关源码生成代理对象AnnotationAwareAspectJAutoProxyCreator对象实例化I

2016-12-02 09:58:59 749

原创 Spring AOP工作机制进一步理解(中篇)

Spring AOP工作机制进一步理解(下篇)

2016-11-30 15:00:10 1263

原创 Spring AOP工作机制进一步理解(上篇)

什么是Spring AOP?         详细请见:http://blog.csdn.net/architect0719/article/details/53283763Spring AOP源码分析         Spring可以通过、、AutoProxyCreator、ProxyFactoryBean配置方式实现AOP,下面进行详细分析:解析       Sprin

2016-11-27 12:12:33 1228

原创 Spring createBean过程中BeanPostProcessor的处理机会

Spring IOC在实例化bean的过程中,BeanPostProcessor有机会在bean Instantiation前后、initialize前后进行处理,下面了解下分别做了什么。BeanPostProcessor处理时序图       这里只涉及BeanPostProcessor处理,其他过程忽略:其中,红色步骤为BeanPostProcessor的相关处理。

2016-11-24 21:51:02 2492

原创 Spring AOP阐述

什么是AOP?Spring如何实现AOP?

2016-11-23 16:17:15 1959

原创 Spring依赖注入源码分析

在spring ioc容器启动过程中,xml相关的bean解析为BeanDefinition,注册到BeanFactory中。利用BeanDefinition,进行bean实例化,依赖注入发生在其中。Bean实例化整体流程      整个流程基本在AbstractBeanFactory中完成,这是AbstractBeanFactory的一大核心工作。其中createBean、get

2016-11-21 23:24:46 1001 1

原创 Spring ioc容器启动流程—obtainFreshBeanFactory

本文以XmlWebApplicationContext启动为例说明spring ioc容器启动流程。        obtainFreshBeanFactory的主要工作是创建DefaultListableBeanFactory实例,解析xml配置文件,注册bean。工作流程概览         obtainFreshBeanFactory的主要工作在AbstractRefre

2016-11-09 15:52:05 3048

原创 Spring ioc容器启动流程

从AbstractApplicationContext的refresh()方法谈起启动流程概览

2016-11-07 17:46:41 2300 1

原创 mybatis与spring集成中SqlSessionFactory创建流程

Mybatis作为优秀且广泛使用的轻量级持久层框架经常与Spring集成一起使用,集成过程中sqlSessionFactory的创建流程是什么样的呢?本文结合mybatis、mybatis-spring源码以及UML时序图的方式阐述如何进行:以下为Mybatis与Spring集成的部分配置,主要是涉及SqlSessionFactory bean:

2016-09-17 22:53:47 3015

原创 JDK容器与并发—Queue—PriorityQueue

概述      基于优先堆的无界优先队列,非线程安全。1)add、offer、remove、poll的时间复杂度为O(log(n));remove(Object)、contains(Object)为线性时间;peek、element、size为固定时间。数据结构      基于数组的平衡二叉堆:// queue[n]元素的两个children为queue[2*n+1]、queu

2016-08-28 10:31:11 1277

原创 JDK容器与并发—Queue—PriorityBlockingQueue

概述      基于优先堆的无界阻塞队列,PriorityQueue的线程安全版本。数据结构      基于数组的平衡二叉堆,在PriorityQueue基础上,增加了一把锁、一个条件:private transient Object[] queue;// 增删查公用的锁private final ReentrantLock lock;// 队列为空时,阻塞take/po

2016-08-28 10:30:28 2146

原创 JDK容器与并发—Queue—DelayQueue

概述      元素为实现Delayed接口的无界阻塞队列。数据结构      基于优先队列,一把锁、一个条件:// 增删查公用的锁private transient final ReentrantLock lock = new ReentrantLock();// 用优先队列存储元素private final PriorityQueue q = new PriorityQ

2016-08-28 10:29:52 855

原创 JDK容器与并发—Queue—ConcurrentLinkedQueue

概述      基于单链表的无界队列,线程安全。1)FIFO;2)wait-free;3)迭代器弱一致性;4)size()非固定时间,由于异步特新,若遍历过程有修改,则可能不正确;批量操作addAll、removeAll、retainAll、containsAll、equals、toArray不保证原子性;5)遵守内存一致性原则;数据结构      基于单链表:

2016-08-28 10:28:24 761

原创 JDK容器与并发—Queue—LinkedTransferQueue

概述      基于单链表的无界传输队列,线程安全。1)FIFO;2)size()非固定时间,由于异步特新,若遍历过程有修改,则可能不正确;批量操作addAll、removeAll、retainAll、containsAll、equals、toArray不保证原子性;3)遵守内存一致性原则。数据结构      基于单链表:// 队列节点// 依赖Unsafe机制最小化

2016-08-28 10:26:28 2049

原创 JDK容器与并发—Queue—SynchronousQueue

概述      无容量的同步队列,即入队线程通过SynchronousQueue将节点传递给出队线程,若暂时无出队线程接收,则一直等待;反之亦然。数据结构构造器// 无参构造public SynchronousQueue() { this(false);}// 带fair构造public SynchronousQueue(boolean fair) { tra

2016-08-28 10:25:37 509

原创 从《MySQL必知必会》中对MySQL的理解

MySQL是一个开源的DBMS,是目前主流的关系型数据库DBMS之一。在《MySQL必知必会》中,作者通过简单实用的订单实例简而明要地介绍了MySQL,这里梳理一下对MySQL的理解。查询单个table中的查询检索+过滤+排序SELECT columnname, ...                FROM tablename, ...               [

2016-05-02 13:41:19 3583

原创 Spring AOP工作机制

AdvicePointCutAdvisor生成代理类实例:      步骤:1)将ProxyFactoryBean属性interceptorNames对应的bean转化为Advisor,加入到advisors中;2)如果ProxyFactoryBean属性singleton为true,则ProxyFactoryBean

2016-04-25 11:38:10 1147

原创 java代理机制

关于java代理主要涉及到静态代理、动态代理,其中动态代理又有JDK动态代理及CGLIB代理。代理实现静态代理      代理类StaticProxy与被代理类TestImpl实现相同的接口,在StaticProxy内部委托工作给TestImpl实例:public interface TestInterface { void test(); }public class

2016-04-24 17:36:02 1476 1

原创 JDK容器与并发—并发

关于可见性与原子性      在并发操作中,可见性、原子性、有序性都会对并发读写产生影响(注:并发读读、像ConcurrentHashMap那样的不同Segment间的并发写写是不用考虑并发的)。可见性是为了保证线程的工作内存中的数据是最新的,且有变化及时刷新到主内存中。原子性是指在多线程并发中,任何时候都只有一个线程执行一段代码,像volatile i++的操作,即使一个线程最开始拿到最新的

2016-04-20 17:44:09 470

原创 JDK容器与并发—Queue—LinkedBlockingQueue

概述      基于单链表的有界或无界阻塞队列。1)FIFO;2)可用带容量参数的构造函数设置队列的容量,否则为Integer.MAX_VALUE;3)在大部分并发场景中,基于链表的队列比基于数组的队列有更高的吞吐量,但性能的预测性更低。数据结构      单链表,一把take锁,一个take条件,一把put锁,一个put条件:// 链表首节点// head.it

2016-04-20 17:43:47 841

原创 JDK容器与并发—Queue—ArrayBlockingQueue

概述      基于数组的有界阻塞队列。1)FIFO;2)ArrayBlockingQueue是经典的有界缓存的实现,其内是固定大小的数组缓存,生产者向其中插入元素,消费者从其取出元素;3)支持公平锁,默认为非公平锁,公平锁会降低吞吐量但更稳定,避免某个线程阻塞不工作的情况;数据结构      Object数组,逻辑上是环形数组:/** The queued i

2016-04-20 17:43:26 758

原创 JDK容器与并发—Queue—Interface

框架概览接口介绍Queue      俗称队列,其设计目标是存储处理前的元素。在Collection基础上,新增了入队、出队、访问队首元素的方法:1)Queue有两套功能相同的方法:add、remove、element分别为入队、出队、访问队首元素方法的抛出异常版本;offer、poll、peek则为返回特殊值的版本:2)offer在有界队列中常用,当队

2016-04-20 17:42:59 5092

原创 JDK容器与并发—Queue

框架概览Queue比较

2016-04-20 17:42:09 633

原创 JDK容器与并发—Map—TreeMap

概述      基于红黑树的NavigableMap,非线程安全。1)containsKey、get、put、remove操作的时间复杂度为log(n);2)迭代器fail-fast。数据结构      红黑树:private transient Entry root = null; // 根节点// tree节点static final class Entry im

2016-04-20 17:41:45 944

原创 JDK容器与并发—Map—NavigableMap

框架概览接口说明ConcurrentMapSortedMap      利用key进行排序,采用key的Comparable接口或Comparator进行比较,主要涉及排序的subMap、firstKey、lastKey接口:NavigableMap相对于SortedMap,主要增加了查找节点的方法、删除first、last Entry、获取降序Ma

2016-04-20 17:41:03 535

关于jdk中nio讲解文档

关于jdk中nio讲解文档,说明的比较详细,对nio需要理解的可以看看

2015-12-18

空空如也

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

TA关注的人

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