摘要: 置顶一篇文章,主要是整理一下写过的JDK中各个类的源码及其他框架源码解析的文章,方便自己随时阅读也方便网友朋友们阅读与指正 基础篇 从为什么String=String谈到StringBuilder和StringBuffer Java语法糖1:可变长度参数以及foreach循环原理 Java语法糖2:阅读全文
posted @ 2017-05-01 13:46 五月的仓颉 阅读(171) 评论(2) 编辑
摘要: 前言 在【Java设计模式】系列中,LZ写了十几篇关于设计模式的文章,大致是关于每种设计模式的作用、写法、优缺点、应用场景。 随着LZ自身的成长,再加上在工作中会从事一定的架构以及底层代码设计的原因,在近半年的实践中,对于设计模式的理解又有了新的认识,因此有了此文,目的是和网友朋友们分享自己对于设计阅读全文
posted @ 2017-02-23 09:59 五月的仓颉 阅读(3072) 评论(26) 编辑
摘要: 原文地址/xrq730/p/5260294.html,转载请注明出处,谢谢! 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内阅读全文
posted @ 2016-03-10 22:37 五月的仓颉 阅读(63549) 评论(288) 编辑
摘要: 前言 Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。 这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。阅读全文
posted @ 2015-12-20 23:25 五月的仓颉 阅读(17980) 评论(38) 编辑
摘要: 打开一个会话Session 前文分析了MyBatis将配置文件转换为Java对象的流程,本文开始分析一下insert方法、update方法、delete方法处理的流程,至于为什么这三个方法要放在一起说,是因为: 示例代码为这段: 首先关注的是第2行的代码,ssf是SqlSessionFactory,阅读全文
posted @ 2017-05-09 12:29 五月的仓颉 阅读(64) 评论(0) 编辑
摘要: 元素设置 继续MyBatis的Configuration加载源码分析: 上回看到了第7行的<typeAlias>标签的解析,后面先暂时跳过<plugins>、<objectFactory>、<objectWrapperFactory>、<reflectorFactory>、<typeHandlers阅读全文
posted @ 2017-05-08 18:34 五月的仓颉 阅读(39) 评论(0) 编辑
摘要: config.xml解析为org.w3c.dom.Document 本文首先来简单看一下MyBatis中将config.xml解析为org.w3c.dom.Document的流程,代码为上文的这部分: 第3行的代码实现为: 相当于就是将输入的路径转换为一个字符输入流并返回。 接着继续看静态块第4行的阅读全文
posted @ 2017-05-06 10:36 五月的仓颉 阅读(45) 评论(0) 编辑
摘要: 前言 之前一段时间写了【Spring源码分析】系列的文章,感觉对Spring的原理及使用各方面都掌握了不少,趁热打铁,开始下一个系列的文章【MyBatis源码分析】,在【MyBatis源码分析】文章的基础之上,可以继续分析数据库连接池、Spring整合MyBatis源码、Spring事物管理tx等等阅读全文
posted @ 2017-05-01 15:39 五月的仓颉 阅读(97) 评论(1) 编辑
摘要: 置顶一篇文章,主要是整理一下写过的JDK中各个类的源码及其他框架源码解析的文章,方便自己随时阅读也方便网友朋友们阅读与指正 基础篇 从为什么String=String谈到StringBuilder和StringBuffer Java语法糖1:可变长度参数以及foreach循环原理 Java语法糖2:阅读全文
posted @ 2017-05-01 13:46 五月的仓颉 阅读(171) 评论(2) 编辑
摘要: 前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.properties文件中配置的参数使用占位符"${...}"替换的方式读入并设置到Bean的相应参数中阅读全文
posted @ 2017-04-30 17:34 五月的仓颉 阅读(136) 评论(0) 编辑
摘要: AspectJAwareAdvisorAutoProxyCreator及为Bean生成代理时机分析 上篇文章说了,org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator这个类是Spring提供给开发者阅读全文
posted @ 2017-04-30 13:32 五月的仓颉 阅读(131) 评论(1) 编辑
摘要: 前言 前面写了六篇文章详细地分析了Spring Bean加载流程,这部分完了之后就要进入一个比较困难的部分了,就是AOP的实现原理分析。为了探究AOP实现原理,首先定义几个类,一个Dao接口: Dao接口的实现类DaoImpl: 定义一个TimeHandler,用于方法调用前后打印时间,在AOP中,阅读全文
posted @ 2017-04-29 14:23 五月的仓颉 阅读(256) 评论(1) 编辑
摘要: 前言 Spring配置文件读取流程本来是和/xrq730/p/6285358.html一文放在一起的,这两天在看Spring自定义标签的时候,感觉对Spring配置文件读取流程还是研究得不够,因此将Spring配置文件读取流程部分从之前的文章拆出来单独成为阅读全文
posted @ 2017-04-22 12:44 五月的仓颉 阅读(268) 评论(0) 编辑
摘要: 原型Bean加载过程 之前的文章,分析了非懒加载的单例Bean整个加载过程,除了非懒加载的单例Bean之外,Spring中还有一种Bean就是原型(Prototype)的Bean,看一下定义方式: 原型Bean加载流程总得来说和单例Bean差不多,看一下不同之处,在AbstractBeanFacto阅读全文
posted @ 2017-04-16 14:35 五月的仓颉 阅读(239) 评论(0) 编辑
摘要: 为什么Spring要支持Autowire(自动装配) 先写几个类,首先定义一个Animal接口表示动物: 写一个Animal接口的实现Tiger类: 写一个动物园类Zoo,持有Animal接口,表示动物园中有动物: 配置一下spring文件,由于这个功能研究的是Autowire,因此我命名为auto阅读全文
posted @ 2017-04-13 23:26 五月的仓颉 阅读(178) 评论(0) 编辑
摘要: 前言 之前两篇文章【Spring源码分析】非懒加载的单例Bean初始化过程(上篇)和【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)比较详细地分析了非懒加载的单例Bean的初始化过程,整个流程始于AbstractApplicationContext的refresh()方法: 之前重点阅读全文
posted @ 2017-04-07 19:51 五月的仓颉 阅读(273) 评论(7) 编辑
摘要: 问题描述 业务有一个需求,我把问题描述一下: 不知道这个问题有没有说清楚,没说清楚没关系,写一段测试代码: 简单说就是,传入一个IP,尽量构建一个全局唯一的字符串(这么做的原因是,如果字符串的唯一性不强,比方说锁的"192.168.1.1",如果另外一段业务代码也是锁的这个字符串"192.168.1阅读全文
posted @ 2017-04-04 13:37 五月的仓颉 阅读(792) 评论(12) 编辑
摘要: 前言 最近一直在看Spring源码,其实我之前一直知道AOP的基本实现原理: 如果针对接口做代理默认使用的是JDK自带的Proxy+InvocationHandler 如果针对类做代理使用的是Cglib 即使针对接口做代理,也可以将代理方式配置成走Cglib的 之后要看AOP源码了,Proxy+In阅读全文
posted @ 2017-04-03 14:49 五月的仓颉 阅读(297) 评论(0) 编辑
摘要: 模块间调用 在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种: (1)同步调用 同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况,因为b(阅读全文
posted @ 2017-02-23 20:12 五月的仓颉 阅读(1221) 评论(1) 编辑
摘要: 前言 在【Java设计模式】系列中,LZ写了十几篇关于设计模式的文章,大致是关于每种设计模式的作用、写法、优缺点、应用场景。 随着LZ自身的成长,再加上在工作中会从事一定的架构以及底层代码设计的原因,在近半年的实践中,对于设计模式的理解又有了新的认识,因此有了此文,目的是和网友朋友们分享自己对于设计阅读全文
posted @ 2017-02-23 09:59 五月的仓颉 阅读(3072) 评论(26) 编辑
摘要: doCreateBean方法 上文【Spring源码分析】非懒加载的单例Bean初始化过程(上篇),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的。先贴一下AbstractAutowireCapableBeanFactory的doCreateBean方法代阅读全文
posted @ 2017-02-04 16:49 五月的仓颉 阅读(628) 评论(0) 编辑
摘要: 代码入口 上文【Spring源码分析】Bean加载流程概览,比较详细地分析了Spring上下文加载的代码入口,并且在AbstractApplicationContext的refresh方法中,点出了finishBeanFactoryInitialization方法完成了对于所有非懒加载的Bean的初阅读全文
posted @ 2017-02-03 17:13 五月的仓颉 阅读(1013) 评论(1) 编辑
摘要: 代码入口 之前写文章都会啰啰嗦嗦一大堆再开始,进入【Spring源码分析】这个板块就直接切入正题了。 很多朋友可能想看Spring源码,但是不知道应当如何入手去看,这个可以理解:Java开发者通常从事的都是Java Web的工作,对于程序员来说,一个Web项目用到Spring,只是配置一下配置文件而阅读全文
posted @ 2017-02-03 11:58 五月的仓颉 阅读(1614) 评论(9) 编辑
摘要: 前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心。 Spring框架运用了非常多的设计模式,从整体上看,它的设计严格遵循了OCP 开闭原则,即: 1、保证对修改关闭,即外部无法修改Spring整个运作的流程 2、提供阅读全文
posted @ 2016-08-12 21:08 五月的仓颉 阅读(2907) 评论(7) 编辑