- 博客(13)
- 收藏
- 关注
原创 JDK源码——java.util
看了Collection与AbstractCollection 先说说AbstractCollection虚类,里面大部分方法都很简单没什么好说的,说个我最重要的收获:数组每次扩容时,增加的容量为当前容量的二分之一,代码如下 扩展一点>>、<<这两者都是位移操作意思是先把当前值转成二进制然后向右或向左移动位,举个例子 3 >> 1 = 1;左移一位相当于在二进制上乘10,二进制的10等于十进制2
2016-11-29 10:14:35 721
原创 JAVA内存模型与线程
Java内存的主要目的是定义程序中各个变量的访问规则,即虚拟机将变量存储到内存和从内存读取变量这样的细节.这里的变量指实例字段、静态字段和构成数组对象的元素,不包括局部变量和方法参数(线程私有,不涉及共享) Java内存模型规定所有的变量都储存在主内存中(可以对应堆中的对象实例);每条线程还有自己的工作内存,线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝,线程对变量的所有操作(读取、
2016-11-27 22:10:49 322
原创 JVM类加载机制
类加载顺序:装载 通过全限定类名载入对应的二进制字节流把二进制字节流转化成方法区的数据结构通过方法区的数据结构创建一个java.lang.Class对象,作为访问该类的入口 说到加载不得不提到类加载器(classLoder) 类加载器:”通过类的全限定类名来获取类对应的二进制字节流”的实现的代码模块被称为类加载器. 对于任意一个类,都需要由加载他的类加载器和这个类本身确立其在jvm
2016-11-21 07:31:58 354
原创 JDK源码——java.lang
前段时间开始看了一下java.lang的部分源码,但因这部分东西比较琐碎无法形成系统的文档,因此一直没有记录下来,但后来一想,就算琐碎也还是记录下来的好,就当给自己的进步留下一点痕迹,如果给自己和其他同学一点启示那就更好了先聊一下三个最常见的类:StringBuffer,StringBuilder,String StringBuffer与StringBuilder,他们两个有共同的父类Abstra
2016-11-18 10:39:29 1057
原创 GC垃圾收集器
我前面有一篇文章简单的介绍过JAVA垃圾回收,现在咱们来讨论一下垃圾收集器. 首先,什么是垃圾收集器,我前面的文章中有介绍到垃圾回收的算法,垃圾收集器其实就是垃圾回收算法的具体实现. 或许很多同学不知道,在JDK中默认的JVM是hotsopt,因此咱们接下来谈论的垃圾收集器全都是基于hotspot的.怎么查看jvm版本?就是大家都很熟悉的java -version,如图 垃圾收集器的种类:
2016-11-17 22:00:08 342
原创 springAOP源码解析(一)
首先讲一下aop的概念,aop面向切面编程.我的理解是这是面向对象思想的一种进阶,把特定的逻辑与主逻辑分开处理,再通过一定的方式组合起来形成完整的处理过程. 下面说一下AOP的几个重要概念(都是我自己的理解,概念上肯定有偏差,但便于我记忆): 通知(advice):即要在主逻辑处运行的逻辑.advice是个空接口,常用的实现由beforceAdvice、afterAdvice、ThrowsAdv
2016-11-15 07:40:21 451
原创 springIOC源码解析(六)
咱们接着finishBeanFactoryInitialization()方法讲// Instantiate all remaining (non-lazy-init) singletons.finishBeanFactoryInitialization(beanFactory);注释写的很清楚了,初始化所有非懒加载的单例bean,咱们进去看看怎么做的protected void finishBe
2016-11-11 16:55:36 429
原创 springIOC源码解析(五)
现在咱们来看一下ApplicationContext的方式是怎么管理bean的ApplicationContext ctx = new ClassPathXmlApplicationContext("springioc.xml");Engine engine2 = (Engine)ctx.getBean("engine");System.out.println(engine2.getBrandN
2016-11-11 16:03:57 373
原创 springIOC源码解析(四)
这两天工作比较闲,上午的时候我又仔细看了一遍spring初始化bean加载流程,下面我挑重点写一下我的收获spring如何保持bean的单例 对于singleton的bean而言,spring在初始化bean之后,会把beanName及bean实例保存到一个map中(DefaultSingletonBeanRegistry中的singletonObjects);当再次要获取bean实例时直接从m
2016-11-10 16:44:21 404
原创 springIOC源码解析(三)
上回讲到如何通过getBean方法来获取bean,这里感觉流程比较复杂,不知道以我的水平是否能讲清楚,如果有不清楚的地方欢迎讨论Engine engine = (Engine)beanFactory.getBean("engine");OK,不多废话追寻源码,这时候会遇到第一个问题XmlBeanFactory中没有getBean(String str)方法,经过查找在其父类AbstractBeanF
2016-11-08 22:15:01 442
原创 springIOC源码解析(二)
上一篇文章讲到解析XML的parseBeanDefinitions(root, this.delegate)方法,首先看看源码 此处isDefaultNamespace方法是获取namespace为http://www.springframework.org/schema/beans的node,可以看到,这里是循环循环处理节点,咱们来看我标红的那行, 可以看到目前对应schema定义的包括”
2016-11-08 18:44:34 503
原创 springIOC源码解析(一)
spring源码我也不是很了解,原来几次下定决心去看但一直不知道入口在哪里,但这是进阶必须要迈过的一个坎,下面我按照自己现在的思路来对spring源码进行阅读,首先从spring如何管理bean开始 首先咱们看看spring管理bean的一个小demopublic class Test { public static void main(String[] args) { /
2016-11-06 17:34:54 548
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人