首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ArrayList源码研究

    第一次添加 第二次添加 第十一次添加 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

    24420

    线程池源码研究

    前言:第一次写源码分析类文章,有点忐忑,还是硬着头皮上了。 之前几篇线程池文章主要是讲解线程池使用场景,这篇文章我以非代码方式讲解源码,这个估计没人这么干过吧!哈哈。...下面,从3点说明线程池工作原理 线程池的接口定义和继承关系 线程池中线程的状态描述 线程池工作细节 因为不能粘贴源码,我会用思维导图的形式把上面几个点串起来。...,这也印证了看源码真的可以提效,某些场景已经有相关的实现了。...上面的思维导图,我们再看右边的部分,创建线程池源码中出现两种不一样的构造方法。...参考 [Java未开源的Unsafe类]https://www.cnblogs.com/daxin/p/3366606.html [线程池之ThreadPoolExecutor线程池源码分析笔记]https

    40700

    关于nodejs源码研究

    回首对nodejs的源码研究,时间已经过去了一年多。...也是我开始研究nodejs源码的原因之一。因为nodejs满足了我喜好和技术上的需求。不过一开始的时候,我并没有全身心地投入代码的研究,只是偶尔会看一下某些模块的实现。...从那时候起,大部分业余时间和精力都投入源码研究。 我首先从libuv开始研究,因为libuv是nodejs的核心之一。...所以我也一直在寻找志同道合的人一起分析,加快对nodejs源码研究,不过真正能啃源码的人不多。源码的阅读可能并不一定能帮助你的工作变得更好,很多时候也往往不需要深入到这种程度。...但是阅读这些源码让我对技术和计算机原理有了更多、更深的了解和理解。也希望能利用技术做更多的事情。同时也看到很多同学在做各个方向的源码研究,期待有更多人去做这样的事情。

    44810

    Java】HashMap源码

    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

    55420

    Java反射研究和实践

    本博文中项目代码已开源下载地址: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

    65480

    HashMap源码研究——源码一行一行的注释

    看过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

    84910
    领券