文章目录 LinkedList 无参构造 有参构造 push()方法 add()方法 get()方法 set()方法 接着上一篇,研究完ArrarList之后,理所应当看看LinkedList...this.item = element; this.next = next; this.prev = prev; } } 然后看一下它的构造方法,也就是我们创建它的源码...链表修改次数增加 return true; } 这个方法做了什么呢,首先检查长度是否越界,然后将参数转化为数组,通过尾插法添加进链表 至此,一个双向链表被创建了出来 然后再让我们研究下...x.item = element;//更新数据 return oldVal;//返回旧数据 } 没啥难得,看注释就好 有兴趣的同学可以看看remove方法的源码
继List之后,笔者又开始了Set与Map的源码探究,本次研究HashMap,HashSet,TreeMap,TreeSet。...Entry implements Map.Entry { K key; // key 值 V value; // value 值 java.util.TreeMap.Entry... left; // 左边子的节点 java.util.TreeMap.Entry right; // 右边子的节点 java.util.TreeMap.Entry...Java自带的基本数据类型及其装箱类型都实现了Comparable接口的compareTo方法。 3.要去key必须事实现Comparable接口,以保证key的有序性。...从源码来看主要两步: 先以二叉查找树方式删除节点,然后恢复红黑树性质(平衡)。
第一次添加 第二次添加 第十一次添加 get()方法 set()方法 remove()方法 FailFast机制 背景:实习加工作也有近半年时间了,每天增删改查重复的枯燥无味,于是乎,最近开始了源码的研究...initialCapacity); } } 如码,也是创建了一个指定长度的数组赋值给elementData 再往下就是add方法了,不过经过研究...modCount是Arraylist的父类AbstractList中定义的一个protected变量,这个变量定义在Abstract.java文件的偏下的位置,第601行。...null; // clear to let GC do its work // 删除的节点对应的信息 return oldValue; } 返回原来下标的值 FailFast机制 快速失败的机制,Java...集合类为了应对并发访问在集合迭代过程中,内部结构发生变化的一种防护措施,这种错误检查的机制为这种可能发生错误通过抛出 java.util.ConcurrentModificationException
前言:第一次写源码分析类文章,有点忐忑,还是硬着头皮上了。 之前几篇线程池文章主要是讲解线程池使用场景,这篇文章我以非代码方式讲解源码,这个估计没人这么干过吧!哈哈。...下面,从3点说明线程池工作原理 线程池的接口定义和继承关系 线程池中线程的状态描述 线程池工作细节 因为不能粘贴源码,我会用思维导图的形式把上面几个点串起来。...,这也印证了看源码真的可以提效,某些场景已经有相关的实现了。...上面的思维导图,我们再看右边的部分,创建线程池源码中出现两种不一样的构造方法。...参考 [Java未开源的Unsafe类]https://www.cnblogs.com/daxin/p/3366606.html [线程池之ThreadPoolExecutor线程池源码分析笔记]https
1. dubbo源码研究(一) 1.1. dubbo启动加载过程 我们知道,现在流行注解方式,用spring管理服务,dubbo最常用的就是@Reference和@Service了,那么我首先找到这两个实现的地方...可以看到实现方法以BeanPostProcessor结尾,看过spring源码的都知道,这是spring加载过程的一环,具体在哪个过程,可以异步我整理的知识架构之一https://www.processon.com
下载源码,git镜像:https://github.com/apache/tomcat85 。 2....导入项目到eclipse: (1)假设源码目录为tomcat85 (2)在eclipse中新建项目:New -> Java Project,项目名称设置为与tomcat源码目录名一致即可:tomcat85...参考源码目录下BUILDING.txt文件,配置相应编译环境。 注意:不同版本的tomcat编译,需要的jdk版本不同,必须配置好对应的jdk版本,否则编译过程会出错。
回首对nodejs的源码研究,时间已经过去了一年多。...也是我开始研究nodejs源码的原因之一。因为nodejs满足了我喜好和技术上的需求。不过一开始的时候,我并没有全身心地投入代码的研究,只是偶尔会看一下某些模块的实现。...从那时候起,大部分业余时间和精力都投入源码的研究。 我首先从libuv开始研究,因为libuv是nodejs的核心之一。...所以我也一直在寻找志同道合的人一起分析,加快对nodejs源码的研究,不过真正能啃源码的人不多。源码的阅读可能并不一定能帮助你的工作变得更好,很多时候也往往不需要深入到这种程度。...但是阅读这些源码让我对技术和计算机原理有了更多、更深的了解和理解。也希望能利用技术做更多的事情。同时也看到很多同学在做各个方向的源码研究,期待有更多人去做这样的事情。
主要还是他的简历上写了:深入研究过MyBatis源码 可是,这位朋友并没有看过,就只是背过一些八股文,面试者回答还是够优秀。 咱们不多说了,开始正题吧。...3.5.5 mysql mysql-connector-java...我对MyBatis进行了深入的研究,以及形成文档形式,请看下面这个思维导图:
最近又研究了一下.NetCore配置选项的源码实现,又学习到了不少东西。...查询 常规的配置查询有两种基本方式 :索引器和GetSection(string key) 其余的GetValue等等都是一些扩展方法,本篇文章不对此进行展开研究 索引器 索引器的查询执行的方式是倒叙查询所有的...Configuration的配置和读取的知识点大概就是以上这些了,还有更深入的涉及到对象的绑定这一块Get Bind GetChildren()等,比较难读,要一行一行代码看,以后有时间可能再研究一下
jQuery的css选择器,是一大亮点,其实现源码也可单独拎出来作为模块使用。 先看个整体,在jQuery源码中在行229-2752区域。...数量太多就不一一列举了,感兴趣的可以自己去看源码吧。
/// /// @file Worker.h /// @brief 用户接口类 /// @author guozhiming /// @date 2007-05...
前言 都因为 IE8 不支持 Object.defineProperty,但是业务还不能脱离 IE7 和 IE8,故研究下 Backbone.Model 的实现机制,找机会给主流的 MVVM 框架补丁
今天开始研究jquery源码。...好,以上就是今天的jQuery源码研究开篇,仅仅只是看了个头,就引出模块规范这个大知识点,脑子里知道和真正写出来的差别还是挺大的,在以后的源码研究中,涉及到的知识点,我都会延伸,熟悉的就回顾,不熟的学习
源码在 github 上。...documentation in markdown ├── scripts # ├── site # website layout and code └── package.json 要学源码其实主要关心...我会根据 使用文档 一个个组件的去研究。从小到大,从简单到复杂。 需要注意的是: 很多组件是基于 基础组件 构造的,我不会对基础组件做深入研究。...源码中组件的扩展名是tsx,说明是用TypeScript写的。使用TypeScript有个非常大的好处。比如打开row.tsx 我在会仿照省略一个代码并转换成es6写法去运行。
Java ArrayList 源码 ArrayList 概述 ArrayList 是基于数组实现,是一个动态数组,容量可以自动增长,动态增加内存。
介绍:重写了一遍扫雷,代码更加规范,修复了一些小bug,优化了部分代码的算法,将各等级英雄榜独立
Life is not a ridiculous number of life, the meaning of life lies in life itself HashMap源码 散列集 数组和链表可以保持元素插入的顺序...散列集(hash table)可以说是数组与链表的组合, 往散列集中添加元素时,通过hash函数可以得到一个该元素的一个哈希值,Java中哈希值的范围在-2147483648~2147483647之间...不能直接使用hashCode,因为它的范围将近40亿,不可能有这么大的数组空间,所以需要对hashCode值做一定的处理,使之在数组容量范围内,最简单的办法是对数组容量取余,但取余有效率问题,所以Java...就一定存在运算后得到同样索引值的情况,称为哈希碰撞,解决哈希碰撞有两种方法:开放地址法和拉链法 ,开放地址法是指如果当前的数组已经有元素了,就通过别的算法算出一个新位置插入,像python中dict的实现就使用了开放地址法;而Java...>> 4); } static int indexFor(int h, int length) { return h & (length-1); } 出于性能的考虑,在获得最终的index时,Java
ArrayList 源码分析 package Note.cistern; import java.util.ArrayList; public class ArrayListDemo { public
本博文中项目代码已开源下载地址:GitHub Java反射研究和实践 概述 Java的反射机制是Java语言动态性的一种体现。...正如英文单词reflection的含义一样,使用反射API的时候就好像在看一个Java类在水中的倒影一样。知道了Java类的内部结构之后,就可以与它进行交互,包括创建新的对象和调用对象中的方法等。...Java反射API位于java.lang.reflect包中。主要包括以下几类: Constructor类:用来描述一个类的构造方法。 Field类:用来描述一个类的成员变量。...> cls=Class.forName("java.lang.String"); Class<?...反射的应用 Java反射与动态代理 Java反射与动态代理 反射在orm框架上的使用 待续… 最后 既然来了,留下个喜欢再走吧,鼓励我继续创作(^_^)∠※ 如果喜欢我的文章,那就关注我的博客@http
看过TreeMap的源码之后,终于来到了重头戏 探究HashMap的源码 文章目录 类图 结构参数 构造 **1、无参构造方法HashMap()** **2、有一个初始容量参数的构造方法HashMap...this.threshold = tableSizeFor(initialCapacity); } 我们下面看看tableSizeFor()这个方法是如何计算的,这个方法的实现原理很巧妙,源码如下...HashMap的初始化赋值过程 } 这里要注意putMapEntries()方法,这个方法调用了HashMap的resize()扩容方法和putVal()存入数据方法 接下来我们分析put操作,来研究下这几个方法...put 首先点进put 源码如下 put源码: 这里我们想一下,如果让你去设计这个结构,你怎么设计?...可以,因为在源码中key==null时会将哈希值取0 一个根据key值返回对应hash值的方法,普普通通 emmmm,继续,让我们进去putVal这个方法: putVal方法源码: final
领取专属 10元无门槛券
手把手带您无忧上云