原文链接:深入源码分析SpringMVC底层原理(二) 文章目录 深入分析SpringMVC请求处理过程 1. DispatcherServlet处理请求 1.1 寻找Handler 1.2 没有找到Handler的处理 1.3 根据Handler寻找Adapter 1.4 拦截器的处理 1.5 Adapter处理请求 1.6 异常视图的处理 1.7 页面的跳转 2.总结 在上一篇文章中我们讲到了SpringMVC的初始化,分别初始化两个ApplicationContext,并且初始化一些处理器…
HashMap的源码学习以及性能分析 一).Map接口的实现类 HashTable.HashMap.LinkedHashMap.TreeMap 二).HashMap和HashTable的区别 1).HashTable的大部分算法做了同步,线程是安全的,HashMap没有同步,线程不安全. 2).Hashtable不允许key或value使用null值,HashMap可以. 3).两者对key的hash算法和hash值到内存索引的映射方法不同. 三).HashMap的实现原理 HashMap的底层…
hashMap的底层实现是 数组+链表 的数据结构,数组是一个Entry<K,V>[] 的键值对对象数组,在数组的每个索引上存储的是包含Entry的节点对象,每个Entry对象是一个单链表结构,维护这下一个Entry节点的引用:有点绕,用个图来展示吧: Entry<K,V>[] 数组部分保存的是首个Entry节点:Entry节点包含一个 K值引用  V值引用 以及 引用下一个Entry 节点的next引用: Entry节点的java代码实现如下: static class Entr…
先来回顾一下Map类中常用实现类的区别: HashMap:底层实现是哈希表+链表,在JDK8中,当链表长度大于8时转换为红黑树,线程不安全,效率高,允许key或value为null HashTable:底层实现是哈希表+链表,线程安全,效率低,不允许key或value为null(现在不推荐使用) TreeMap:底层实现是红黑树,即可按照键的大小排序,如果是自定义的类,可以通过实现Comparator接口重写compare方法 为了更好的理解,建议先对数据结构中链表和哈希表有一个认识^ ^ 通俗…
原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结构(MySQL-5.5.0-m2) BUILD: 内含在各个平台.各种编译器下进行编译的脚本.如compile-pentium-debug表示在pentium架构上进行编译的脚本. Client: 客户端工具,如mysql, mysqladmin之类. Cmd-line-utils: readlin…
原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结构(MySQL-5.5.0-m2) BUILD: 内含在各个平台.各种编译器下进行编译的脚本.如compile-pentium-debug表示在pentium架构上进行编译的脚本. Client: 客户端工具,如mysql, mysqladmin之类. Cmd-line-utils: readlin…
本文介绍 1.hashmap的概念 2.hashmap的源码分析 3.hashmap的手写实现 4.伸缩性角度看hashmap的不足 一.HashMap的概念 HashMap可以将其拆分为Hash散列和map两部分来理解: Hash散列是将一个任意长度的通过某种算法转化成为一个固定的值, map地图x,y存储 存储结构为:<key,value> 总结:通过hash算法计算出来的数值,在map上进行定位,将value存储在map中. 二.hashMap的源码分析…
jQuery源码:从原理到实战 jQuery选择器对象 $(".my-class"); document.querySelectorAll*".my-class") document.querySelector(".my-class") 原生JS的jQuery选择器实现方法querySelector jQuery的查找和链式写法实现原理 从DOM库到jQuery的DOM方法 从tween算法到jQuery动画 从设计模式到jQuery的事件模型…
[原]storm源码之storm代码结构[译]  说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Sto…
storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Storm的所…