自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Java集合框架剖析(4)——LinkedList

LinkedList是一个继承与AbatractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList实现了List接口,能对它进行队列操作。LinkedList实现了Deque接口,即能将LinkedList当作双端队列使用。LinkedList实现了java.io.Serializable接口,这意味着LinkedList支持序列化...

2018-03-30 19:13:45 256

原创 Java集合框架剖析(3)——ArrayList

ArrayList ArrayList继承了AbstractList,实现了List。它是一个数组队列,相当于动态数组。提供了相关的添加、删除、修改和遍历等功能。ArrayList实现了RandomAccess接口,即提供了随机访问功能。RandomAccess是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号来快速获取元素对象...

2018-03-30 18:34:28 223

原创 Java集合框架剖析(2)——AbstractXXX模板类

上文Java集合框架剖析(1)分析了Collection上层的一些接口。为了方便,Java抽象出AbstractCollection类来让其他类继承,该类实现类Collection中的绝大部分方法。AbstractList和AbstractSet都继承与AbstractCollection,具体的List实现类继承与AbstractList,而Set的实现类则继承与AbstractSet。 ...

2018-03-30 15:42:35 396 1

原创 Java集合框架剖析(1)---Collection接口

Collection是一个接口,它主要的两个分支是List和Set。如下图所示: List和Set都是接口,它们继承于Collection。IterableIterable接口主要实现获取迭代器的功能: CollectionCollection是一个高度抽象的接口。包含了集合的基本操作:添加、删除、清空、遍历、是否为空、获取大小等。 Collection接...

2018-03-30 12:35:49 216

原创 Class装载系统

Class装载系统Class类型通常以文件的形式存在(当然,任何二进制流都可以是Class类型),只有被Java虚拟机装载的Class类型才能在程序中使用。系统加载Class类型可以分为加载、链接和初始化3个步骤。其中,链接又可以分为验证、准备和解析3个步骤。 类装载的条件Class只有在必须要使用的时候才会被装载,Java虚拟机不会无条件的装载Class类型。Java虚拟机规定...

2018-03-29 23:20:52 414

原创 Class文件结构

Class文件结构java的口号是write once run anywhere。由于有JVM,java是跨平台的(当然现在大部分语言都跨平台了,python,ruby,php)。另外一个重要的特性是JVM提供了跨语言的支持,理论上说无论使用何种语言编写的软件,都可以在任意平台上运行。而实现这一切的基础,就是统一的Class文件结构,它是异构语言和java虚拟机之间的重要桥梁。文件结构...

2018-03-28 21:28:13 153

原创 垃圾收集器与内存分配

垃圾收集器与内存分配串行回收器串行回收器是指使用单线程进行垃圾回收的回收器。串行回收器可以在新生代和老年代使用,根据作用于不同的对空间,分为新生代串行回收器和老年代串行回收器。新生代串行回收器串行回收器其实是实现最简单的,所以也是垃圾回收器中最古老的一种,是jdk中最基本的垃圾回收器之一。其主要有两个特点:它仅仅使用单线程进行垃圾回收 所以没有线程间切换的开销,效率...

2018-03-20 22:13:36 182

原创 GC的算法与种类

GC的算法与种类引用计数法引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,则对象A就不可能再被使用。 【注】名词解释 可达对象:通过根对象进行引用搜索,最终可以到达的对象 不可达对象:通过根对象进行引用搜索,最终没有被引用到的对象引用计数法的问题引用和去引用伴随加法...

2018-03-19 22:04:47 684

原创 (4)Bean的加载

protected <T> T doGetBean( final String name, final Class<T> requiredType, final Object[] args, boolean typeCheckOnly) throws BeansException { final String beanN...

2018-03-19 18:52:27 227

原创 java虚拟机的基本结构

JVM启动流程 其中jvm.cfg是jvm的配置文件JVM基本结构PC寄存器每个线程拥有一个PC寄存器,在线程创建时创建,指向下一条指令的地址。如果是执行本地方法时,PC的值为undefined。想一下为什么jvm虚拟机只有一个寄存器——PC寄存器?因为JVM是软件虚拟,无法使用寄存器的硬件优势,所以JVM本就不存在真正意义上的寄存器。内存空间方法...

2018-03-18 22:35:17 873

原创 HandlerMapping

HandlerMapping在这个SpringMVC体系结构中有着举足轻重的地位,充当着url和Controller之间映射关系配置的角色。主要有三部分组成:HandlerMapping映射注册、根据url获取对应的处理器、拦截器注册。看下HandlerMapping的继承结构: 由图中可以看出HandlerMapping家族分两支,一支继承AbstractUrlHandlerMappi...

2018-03-11 20:45:04 461

原创 SpringMVC组件概览

这里要介绍的是DispatchServlet中直接初始化的九大组件 HandlerMapping HandlerMapping只有一个接口那就是getHandler DispatchServlet中查找Handler的方式是按顺序遍历所有的HandlerMapping,当找到一个HandlerMapping后立即停止查找并返回 HandlerAdapter Han...

2018-03-11 15:29:07 234

原创 SpringMVC处理请求

HttpServletBean 从HttpServletBean的结构中可知,其没有重写service,doXXX等处理请求方法,所以HttpServletBean没有具体处理请求FrameworkServlet FrameworkServlet重写了HttpServlet的这些方法 可以看到Service之中将除了PATCH方法的所有请求都集中到processReque...

2018-03-11 10:56:47 1373

原创 springMVC整体结构

整体结构先看下spring中DispatcherServlet的继承结构: HttpServlet是Servlet规范,HttpServletBean,FrameworkServlet,DispatchServlet是SpringMVC中的。 XXXAware在Spring中表示对XXX可以感知,通俗点解释就是:如果在某个类里面想要使用spring的一些东西,就可以通过...

2018-03-09 22:59:03 1861

原创 Servlet接口

ServletServlet是一套规范,按照这套规范写的代码就可以直接在java服务器上运行。 先看一下Servlet的继承结构: init方法在容器启动时被容器调用(当load-on-startup设置为负数或者不设置时会在servlet第一次用到时才被调用),只会调用一次; getServletConfig 获取配置; service用于处理一个请求; getServle...

2018-03-08 21:22:58 419

原创 FactoryBean

先要分辨BeanFactory 与 FactoryBean的区别, 两个名字很像,所以容易搞混 BeanFactory: 以Factory结尾,表示它是一个工厂类,是用于管理Bean的一个工厂 FactoryBean:以Bean结尾,表示它是一个Bean,不同于普通Bean的是:它是实现了FactoryBean接口的Bean,根据该Bean的Id从BeanFactory中获取的实际上是Fact...

2018-03-06 20:01:09 204

原创 (3)自定义标签的解析

可以先参考下自定义标签的使用 当Spring拿到一个元素时首先要做的是根据命名空间进行解析,如果是默认的命名空间,则使用parseDefaultElement方法进行元素解析,否则使用parseCustomElement方法进行解析。 主要的逻辑就是 获取标签的名称空间,通过名称空间选择解析的Handler,Handler调用Parser解析1.获取标签名称空间 获取标签名称空...

2018-03-02 15:58:51 1069

原创 自定义标签的使用

一共有5个步骤 1.创建一个需要扩展的组件(Bean) 2.定义一个xsd文件描述组件内容 3.创建一个文件,实现BeanDefinitionParser接口,用来解析xsd文件中的定义和组件定义 4.创建一个Handler文件,扩展自NamespaceHandlerSupport,目的是将组件注册到Spring容器 5.编写Spring.handlers和Spring.schemas文...

2018-03-02 15:55:43 224

原创 (2)默认标签的解析

默认标签的解析是在parseDefaultElement之中进行的 分别对4种不同标签做了不同处理,最为核心的是bean标签。 (1)BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); 委托BeanDefinitionDelegate类的parseBeanDefinitionElement...

2018-03-01 17:02:35 215

空空如也

空空如也

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

TA关注的人

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