开篇闲扯 在工作中,相信很多人都有这种体会,与其修改别人代码,宁愿自己重写. 为什么? 先说为什么愿意自己写: 从0-1的过程,是建立在自己已有认知基础上,去用自己熟悉的方式构建一件作品.也就是说, 1.对目标的认知是熟悉的(当然每个人水平可能不一样,也有可能是错的,这不重要,重要的是自认为是符合的): 2.使用的工具是自己熟悉的. 接下来就是去做一件自己熟悉的领域的事而已. 再说为什么不愿意修改别人代码: 1.首先要在阅读代码过程中,去不断的检视对方的实现是否符合自己的认知,很可能由于双方认识…
[1]前言 本篇幅是对 线程池底层原理详解与源码分析  的补充,默认你已经看完了上一篇对ThreadPoolExecutor类有了足够的了解. [2]ScheduledThreadPoolExecutor的介绍 1.ScheduledThreadPoolExecutor继承自ThreadPoolExecutor.它主要用来在给定的延迟之后运行任务,或者定期执行任务.ScheduledThreadPoolExecutor可以在构造函数中指定多个对应的后台线程数. 2.构造函数展示 public S…
obtainFreshBeanFactory()方法概述 定义BeanFactory,并加载以下两种bean的定义,装配到BeanFactory: 1.配置文件中定义的bean 2.通过<context:component-scan base-package="..." />配置的路径下的,且经过相应注解标注的所有类,注解包括:@Controller.@Service.@Component.@Repository 源码解读 主要流程总结: 1.创建BeanFactory:D…
Spring框架提供了构建Web应用程序的全功能MVC模块,叫Spring MVC,通过Spring Core+Spring MVC即可搭建一套稳定的Java Web项目.本文通过Spring MVC源码分析介绍它的核心实现原理. Tomcat服务器启动入口文件是web.xml,通过在其中配置相关的Listener和Servlet即可加载Spring MVC所需数据.基于Spring MVC最简单的配置如下. <!-- 加载Spring配置文件 --> <context-param>…
上次说到ApplicationContext加载BeanDefinition时会创建一个XmlBeanDefinitionReader,将XML解析.BeanDefinition加载委托给XmlBeanDefinitionReader. 首先看下XmlBeanDefinitionReader的类图: 类图比较简单,其主要得属性读取,注册也是交由DefaultBeanDefinitionDocumentReader以及BeanDefinitionParserDelegate去处理. 来看下加载过程…
之前我们知道了spring ioc的加载过程, 具体如下图. 下面我们就来对照下图, 看看ioc加载的源代码. 下面在用装修类比, 看看个个组件都是怎么工作的. 接下来是源码分析的整体结构图. 对照上面的思路梳理出来的 一.源码分析的入口 通常,我们的入口都是从main方法进入. 这里我们也来定义一个main方法 public class MainStarter { public static void main(String[] args) { // 第一步: 通过AnnotationConf…
本文主要分析 spring 中 BeanDefinition 的加载,对于其解析我们在后面的文章中专门分析. BeanDefinition 是属于 Spring Bean 模块的,它是对 spring bean 的统一抽象描述定义接口,我们知道在spring中定义bean的方式有很多种,如XML.注解以及自定义标签,同事Bean的类型也有很多种,如常见的工厂Bean.自定义对象.Advisor等等,我们在分析加载BeanDefinition之前,首先来了解它的定义和注册设计. 上面类图我们做一个…
一.前言 写在前面:小编码字收集资料花了一天的时间整理出来,对你有帮助一键三连走一波哈,谢谢啦!! HashMap在我们日常开发中可谓经常遇到,HashMap 源码和底层原理在现在面试中是必问的.所以我们要掌握一下,也是作为两年开发经验必备的知识点!HashMap基于Map接口实现,元素以<Key,Value>的方式存储,并且允许使用null 键和null值,因为key不允许重复,因此只能有一个键为null,另外HashMap是无序的.线程不安全的. HashMap继承类图快捷键Ctrl+al…
jQuery版本:2.0.3 DOM加载有关的扩展 isReady:DOM是否加载完(内部使用) readyWait:等待多少文件的计数器(内部使用) holdReady():推迟DOM触发 ready():准备DOM触发. jQuery.ready.promise=function(){};  监听DOM的异步操作(内部使用) 一.$(function(){})和原生window.onload的关系 这个在面试中也是经常会被问到的.从下面几个角度来分析一下它们的区别 1.执行时机 页面加载,先…
/** * A BeanDefinition describes a bean instance, which has property values, * constructor argument values, and further information supplied by * concrete implementations. *BeanDefinition(bean的定义)描述了bean的实例,它具有属性值,构造函数,等等...*/ public interface BeanDe…