- 博客(7)
- 收藏
- 关注
原创 LinkedHashMap源码(jdk1.8)
LinkedHashMap继承自HashMap,建议先学习HashMap源码,然后再学习LinkedHashMap源码,HashMap源码,这样会快很多。LinkedHashMap继承了HashMap,所以大体上是仍然是HashMap的结构,但是在内部实现增加两个指针来构成一个双向链表来维持顺序,同时提供了两种可选择的顺序。LinkedHashMap与HashMap的面向对象设计思想很值得学习,...
2019-03-25 12:03:06 211
原创 《深入理解Java虚拟机》读书笔记之高效并发
并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。Java内存模型Java的内存模型主要是分为主内存和工作内存,此处的划分和内存管理部分的不是一个层面的。Java的内存间交互采用lock,unlock,read,load,use,assign,store,write这八个指令完成。lock:作用于主内存变...
2019-03-17 19:19:12 225
原创 《深入理解Java虚拟机》读书笔记之程序编译与代码优化
从计算机程序出现的第一天起,对效率的追求就是程序天生的坚定信仰,这个过程犹如一场没有终点、永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。Java代码的三种编译过程将*.java文件转变为 *.class文件,如Javac将*.class文件转变为转变为机器码,如HotSpot的C1,C2编译器直接把*.java文件编译为本地机器代码,如GCJ编译器Jav...
2019-03-16 17:08:36 404
原创 头条2019.3.16笔试题
这次头条笔试题比之前简单多了。。终于全部过了找钱问题,共1024,64,16,4,1几种面值。因为1,4,16,64这几种面值都可以由小于他们的面值凑出来,所以直接贪心的选最大的面值就好。import java.util.*;public class Main implements Runnable{ private final int mod = 1000000007, ...
2019-03-16 12:15:56 3065 4
原创 《深入理解Java虚拟机》读书笔记之虚拟机执行子系统
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。Class文件结构(Class文件结构比较复杂,具体的表结构需要的时候自行查阅即可)Class文件结构采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型:无符号数和表。无符号数属于基本数据类型,比如u1,u2,u4,u8分别代表占一个字节,两个字节,四个字节,八个字节的无符号数,...
2019-03-15 17:46:17 233
原创 《深入理解Java虚拟机》读书笔记之自动内存管理机制
Java和C++之间有一堵由动态内存分配和垃圾收集技术所围成的“高墙”,强外面的人想进去,强里面的人却想出来。Java内存分区由图中可以看到,JVM内存主要分为方法区,虚拟机栈,本地方法栈,堆,程序计数器。程序计数器(PC):是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器;是线程私有的;如果执行native方法,则pc的值为空,这块内存不存在内存溢出。Java虚拟...
2019-03-15 12:46:36 268
原创 HashMap源码(JDK1.8)
HashMap继承了AbstractMap<K,V>类,实现了Map<K,V>,Cloneable,Serializable接口,底层由数组+链表和红黑树(jdk8之前没有红黑树)来实现。源码需要关注的主要是构造函数,hash函数,put/get函数,resize函数,remove函数,clear函数等,以及内部字段。基本字段transient Node<K,...
2019-03-14 21:19:17 252
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人