自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 12、Spring特性-non-lazy-init

在之前的文章,笔者讨论的都是在用户第一次调用的时候触发的IOC过程,也就是所谓的lazy-init,下面看一下non-lazy-init,它是在IOC容器初始化的时候就把实例注入到了IOC容器中,它的思想是在容器完成对XML文件的BeanDefinition封装之后主动触发了该过程,具体过程和之前...

2018-01-27 09:39:43 136 0

原创 11、IoC之依赖注入(5)-属性注入过程

在得到一个代理生成的目标对象之后,需要对目标对象进行属性注入,具体的实现是在AbstractAutowireCapableBeanFactory类中的populateBean方法中实现。具体代码如下:   // AbstractAutowireCapableBeanFactory // 使用b...

2018-01-27 09:36:36 191 0

原创 10、IoC之依赖注入(3)-解析注入的属性

对于属性注入的间接引用,具体的解析过程是在BeanDefinitionValueResolver类中的resolveValueIfNecessary方法中实现的,主要解析Array,Set,Map,props和字符串类型的间接引用。具体实现源码如下: // BeanDefinitionVa...

2018-01-27 08:31:19 126 0

原创 9、IoC之依赖注入(2)-bean的代理对象生成

在前面已经封装好BeanDefinition之后,那么接下来就根据指定的BeanDefinition通过反射生成指定的对象。 1、根据目标对象确定实例的产生方式:JDK或者CGLIB。有Override方法目标对象,使用CGLIB方式实例化具体的对象。 // SimpleInstantiat...

2018-01-26 15:01:37 320 0

原创 8、IoC之依赖注入(1)-getBean过程

从本篇blog开始,笔者开始开始分析IoC容器的依赖注入过程。 1、依赖注入发生的时间有两个: A、用户第一次调用getBean方法时; B、配置了lazy-init属性,在IoC容器初始化的时候就发生了;   2、具体看一下第一种,用户第一次调用getBean方法时发生的依赖注入。Sp...

2018-01-26 14:57:15 173 0

原创 7、IoC容器的初始化(6)-BeanDefinition注册

在解析完Document读取的XML文件之后,会返回若干个BeanDefinition对象,那么解析来就是把这些对象注册到BeanFactory中,等待使用。注册BeanDefinition的入口是BeanDefinitionReaderUtils中的registerBeanDefinition方...

2018-01-26 14:48:47 98 0

原创 6、IoC容器的初始化(5)-具体的bean解析流程

在上篇文章中已经看到了Spring中对根元素的解析过程,接下来看一下bean的具体解析过程。 1、解析三个属性:id、name和别名: // BeanDefinitionParserDelegate // 具体的一个元素解析 // 本函数主要解析三个属性:id、name和别名 publ...

2018-01-26 14:44:41 69 0

原创 5、IoC容器的初始化(4)-由Document解析根节点

本文主要讨论Document的根元素解析过程。   1、调用XmlBeanDefinitionReader中的registerBeanDefinitions方法,注册包含在给定DOM文档中的BeanDefinitions。   // XmlBeanDefinitionReader中 // ...

2018-01-26 14:35:09 60 0

原创 4、IoC容器的初始化(3)-配置文件的读取

配置文件的读取主要干两件事:1、确定读取方式;2、把XML文件中的信息封装到DOM对象中。 1、 确定读取方式;它的读取入口应该是DefaultResourceLoader类中的getResource(String location)方法,这里面主要是在确定确认读取方式 // Defa...

2018-01-26 14:24:43 61 0

原创 3、IoC容器的初始化(2)-BeanFactory创建和Bean Definition的定位资源加载

在前面IoC容器的初始化(1)中FileSystemXmlApplicationContext构造函数中的前两个方法super(parent);和setConfigLocations(configLocations);,接下来继续看refresh();   refresh();方法实现在Abs...

2018-01-26 14:16:10 67 0

原创 2、IoC容器的初始化-初始化资源加载器和上下文

这篇以及后面的几篇blog,都将讨论ApplicationContext初始化过程,其大致流程就需要完成与BeanDefinition相关的三件事1、Resource定位;2、载入;3、注册。 下面主要以FileSystemXmlApplicationContext类为例 1、 定位资源: ...

2018-01-26 13:44:12 94 0

原创 1、Spring IOC体系

在Spring IOC体系中最重要的两个部分就是BeanFactory和BeanDefinition。 BeanFactory: BeanFactory是一系列工厂的接口,典型的工厂模式,BeanFactory来实例化、配置和管理对象。BeanFactory和很多具体的实现类,先来看一下Bea...

2018-01-26 13:21:57 84 0

原创 5_策略模式

写在前面:设计模式不是干掉变化,而是让变化集中到一个区域,方便开发。   策略模式最大价值就是干掉了选择,特别是switch,通过这种模式,可以干掉在代码在switch中的强耦合关系。 按照惯例,还是来个生活写照:有一个国际的税务组织,需要和各国的税务规则打交道,每个国家都有自己的税务体系,...

2018-01-17 09:38:11 88 1

原创 4_模板方法

写在前面:设计模式不是干掉变化,而是让变化集中到一个区域,方便开发。 Template Method的核心观点就是把一般的操作步骤定下来,具体细节不管。 一个现实中的例子就是买火车票(从本地出发),假设角色有老师和学生,买票方式有线上和线下。那么可以分为4种情况:1、老师线上买票;2、学生线上...

2018-01-16 21:27:54 60 0

原创 3_观察者模式

写在前面:设计模式不是干掉变化,而是让变化集中到一个区域,方便开发。 观察者模式就是现实生活情景的一个写真。在现实生活中有这样一个场景,就是在医院等待检查报告,等待的病人或者家属怎么知道报告已经出来了呢?有两种解决方案: 1、 每个病人或者家属每隔一段时间就去问,护士就根据已经出来的报告进行回...

2018-01-14 20:49:48 67 0

原创 2_工厂方法

写在前面:设计模式不是干掉变化,而是让变化集中到一个区域,方便开发。  工厂方法的核心思想就是自己不直接”new”对象,而是通过发送一些信息,问其他对象要。举个例子:有个商贸市场,用”new”的方式就是类似把生产基地建设在商贸市场里面,客户要什么,就生产什么。而通过工厂方法就是把工厂搬出去,我只...

2018-01-13 14:31:44 61 0

原创 1_我对设计模式的思考

一直都对设计模式有一种膜拜之情,觉得设计模式是一种高深的技术,一年前大致看了一遍23种设计模式觉得就是一些固定调用,继承,派生的方式,以为记住就可以了。而对设计原则和设计思想视而不见。 再经过了一年的学习和项目经验后在来重新学习设计模式,发现自己有了一些新的思考: 1、 设计模式是思想,不是固...

2018-01-13 11:48:01 125 0

原创 struts2原理模拟

Struts2的核心: Struts2的设计目的是提取Servlet的公共功能,达到简化Servlet的目的。核心思想就是设计一个在Servlet执行之前先做一些工作,比如设置编码,接收参数,还有结束之后的跳转等等。核心实现方式就是添加一个filter,完成上述功能。 图一:Struts2核...

2017-12-11 15:10:27 205 0

原创 8-ClassLoader

ClassLoader的核心作用是:加载指定路径的class JVM将所需要运行的*.class文件加载到JVM进程中需要有一个类加载器(ClassLoader,系统会提供默认类加载器,我们也可以自己写),类加载器的好处就在于我们可以随意指定*.class文件的位置(包括网络上的)。 类的初始化时...

2017-12-08 22:25:19 80 0

原创 7-类的加载、连接、初始化

Java虚拟机的生命周期    在下面的集中情况下会结束java虚拟机 1、 执行了System.exit() 2、 程序正常结束 3、 程序在运行过程中遇到的异常或错误而异常终止 4、 由于操作系统出现错误     类的加载、连接、和初始化 加载:查找并加载的类二进制数据(加载到内存) 将类的c...

2017-12-08 21:04:39 103 0

原创 6-java引用类型

Java引用概述 引用是开发的灵魂,直接决定了对象占用内存的时间,在JDK1.2之后提出了四种引用方式 1、 强引用:当JVM空间不足,JVM宁可出现OutOfMemoryError错误停止,也需要空间保存,并且不回收空间 Object obj=new Object() 2、 软引用:当内存...

2017-12-08 20:03:53 85 0

原创 5-JVM的GC算法(3)

本文主要介绍G1收集器的核心思想和工作过程。

2017-12-08 19:22:57 77 0

原创 4-JVM的GC算法(2)

新生代可用的GC策略 首先介绍一种Stop-The-World(STW):Java中一种全局暂停的现象,全局停顿,所有Java代码停止,native代码可以执行,但是不能和JVM交互。这个过程多半由于GC引起,包括:(1)Dump线程;(2)死锁检查;(3)堆Dump。 串行GC(Serial C...

2017-12-08 17:53:18 132 0

原创 3-JVM的GC算法(1)

GC算法概述: JAVA语言最大的特点在于具备良好的垃圾收集特点,也就是GC是整个java之中最重要的安全保证,帮助开发者写出合理的代码。整个JVM中的GC处理机制:对不需要的对象进行标记,而后进行清除。   堆内存的划分 图一:java堆内存的划分   1.8之后永久代改成了元空...

2017-12-08 17:27:47 93 0

原创 2-jvm概述

JVM的运行的流程: 图一:JVM运行流程 所有的Java程序必须保存在*.java的文件之中,称为源代码。 这些源代码不能直接执行,必须使用javac.exe命令把源代码编译成为*.class文件(编译器)。 使用java.exe命令在JVM进程中解释此程序。   JVM将所需要运行的*.cl...

2017-12-08 12:02:10 85 0

原创 1-我眼中的jvm

JVM的封装思想 在我的眼中,jvm很类似操作系统,都是在干管理内存,控制线程和并发的工作,只是OS还要管理外设,而jvm没有干这个活,笔者认为它俩之间的核心本质是一样的,就是封装。   操作系统是面向硬件的封装 一个例子:对于用户而言,操作系统提供了操作硬件的接口,一个printf(“操...

2017-12-08 11:19:54 53 0

原创 网络层-8、ICMP

ICMP是互联网控制报文协议,支持主机或者路由器。这种协议报文主要分两种:差错报告报文和网络探寻报文,在这里,差错报告报文又可以分五种,网络探寻报文可以分两种。 差错报告报文: 1、 目的不可达:报文达到目的主机,但是不能向上交付。 2、 源抑制:类似TCP协议的拥塞控制,通过反馈网络环境的...

2017-09-28 17:46:11 196 0

原创 网络层-7、网络地址转换-NAT

参考哈工大公开课。 网络地址转换(NAT)的核心 网络地址转换的核心思想就是在局部范围内用私有网络IP(外部无法访问),可以在这个局部范围内相互访问,但是如果需要访问外部的资源就需要通过一个统一的对外公布的非私有的IP地址进行数据交换。这个好比一群人被关在一个封闭的房子里面,声音传不出...

2017-09-28 17:36:46 187 0

原创 网络层-6、IP地址动态分配—DHCP

IP地址动态分配—DHCP

2017-09-28 17:30:33 445 0

原创 网络层-5、CIDR与路由聚合

CIDR与路由聚合。

2017-09-28 17:25:46 1901 0

原创 网络层-4、IP地址和IP子网

IP地址和IP子网。

2017-09-28 17:18:50 157 0

原创 网络层-3、IP数据报结构和IP分片

IP数据报结构和IP分片。

2017-09-28 17:09:28 488 0

原创 网络层-2、虚电路网络&数据报网络

虚电路网络&数据报网络。

2017-09-28 16:58:09 3268 0

原创 网络层-1、网络层功能概述

网络层功能概述

2017-09-28 16:52:01 2530 0

原创 传输层-5、网络拥塞原因和TCP拥塞控制

网络拥塞原因和TCP拥塞控制。

2017-09-20 17:52:10 938 0

原创 传输层-4、TCP协议

TCP协议介绍。

2017-09-20 17:43:15 156 0

原创 传输层-3、流水机制和滑动窗口协议

传输层的流水机制和滑动窗口协议。

2017-09-20 17:33:06 267 0

原创 传输层-2、可靠数据传输原理与实现

可靠数据传输原理与实现。

2017-09-20 17:23:56 373 0

原创 传输层-1、UDP协议

UDP协议。

2017-09-20 17:19:12 156 0

原创 应用层-6、FTP

FTP文件传输协议。

2017-09-15 08:44:10 126 0

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