HashMap 底层是如何实现的?在 JDK 1.8 中它都做了哪些优化? 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示: 数组中的元素我们称 ...
分类:
其他好文 时间:
2020-07-04 18:34:35
阅读次数:
44
首先来说下synchronize和Lock的区别: 两者都是锁,用来控制并发冲突,区别在于Lock是个接口,提供的功能更加丰富,除了这个外,他们还有如下区别: synchronize自动释放锁,而Lock必须手动释放,并且代码中出现异常会导致unlock代码不执行,所以Lock一般在Finally中 ...
分类:
其他好文 时间:
2020-07-04 17:07:38
阅读次数:
104
一、git stash的man手册中对该命令的说明 git需要保存的内容:1、本地修改并且已经通过git add添加到缓存区的2、本地修改但是还没有添加到缓存区的3、可能还包括本地添加但是没有track的 DISCUSSION A stash is represented as a commit w ...
分类:
其他好文 时间:
2020-07-04 17:06:21
阅读次数:
98
从这篇文章开始分析JDK源码中AQS的底层实现原理,作为多线程访问共享资源的同步器框架基础实现,涉及到的东西还是比较多的,一起来看看传说中的AQS实现吧 ...
分类:
其他好文 时间:
2020-07-04 13:49:31
阅读次数:
65
(阿里云【名师课堂】Java面向对象开发97 ~ 105:链表) 97:链表基本概念 首先,就目前学习过的知识而言,如果想要保存多个对象,唯一能想到的就是对象数组。 同时如果该数组可以保存任意的对象,那么可以想到的就是Object型的数组。 Object[] data = new Object[数组 ...
分类:
编程语言 时间:
2020-07-03 19:37:36
阅读次数:
57
C#中foreach的实现原理 在探讨foreach如何内部如何实现这个问题之前,我们需要理解两个C#里边的接口,IEnumerable 与 IEnumerator. 在C#里边的遍历集合时用到的相关类中,IEnumerable是最基本的接口。这是一个可以进行泛型化的接口,比如说IEnumerabl ...
C# HashSet源码分享 自定义HashSet 官网源码地址: https://referencesource.microsoft.com/#System.Core/System/Collections/Generic/HashSet.cs 关键点 实现原理和Dictionary差不多 Dict ...
call,apply,bind call,apply,bind这三者的区别,及内部实现原理,点这里 promise promise函数的内部实现原理 ...
分类:
其他好文 时间:
2020-07-02 18:34:43
阅读次数:
67
一、内存池的概念和实现原理 内存池要解决的问题: (1)减少malloc的次数,意味着减少对内存的浪费(主要问题) (2)减少malloc的次数,会有一些速度和效率上的提升,但是提升不明显(顺带) 实现原理: (1)用malloc申请一大块内存,当要分配的时候,从这一大块内存中一点一点分配, 当这一 ...
分类:
其他好文 时间:
2020-07-02 00:10:13
阅读次数:
53
作为一个 Java 程序员,日常编程早就离不开泛型。泛型自从 JDK1.5 引进之后,真的非常提高生产力。一个简单的泛型 T,寥寥几行代码, 就可以让我们在使用过程中动态替换成任何想要的类型,再也不用实现繁琐的类型转换方法。 虽然我们每天都在用,但是还有很多同学可能并不了解其中的实现原理。今天这篇我 ...
分类:
编程语言 时间:
2020-07-01 20:38:15
阅读次数:
63