- 博客(7)
- 资源 (12)
- 收藏
- 关注
原创 Java集合之ArrayList源码解析
ArrayList是我们在开发中经常使用的一个集合,继续按照以前的风格来解析源码(JDK1.7)。 ArrayList简要概括: 1.ArrayList的底层数据结构是一个数组,确切地说是一个动态数组,每次扩容的时候,都会重新创建一个数组并赋值给成员变量elementData,其容量的扩展方式为:newCapacity = oldCapacity + (oldCapacity >> 1); 2
2017-11-29 11:02:19 537
原创 Java集合之ConcurrentHashMap源码浅析
上文中结尾处,我们说到了现在很少用Hashtable,那么在需要线程安全的场景中,我们如何保持同步呢,这就是本文的重点:ConcurrentHashMap(JDK1.7)。ConcurrentHashMap比HashMap以及Hashtable复杂多了,其内部采用了锁分段技术用以提高并发存取效率。我们看一下测试代码: 代码清单1:import java.util.HashMap;import j
2017-11-25 14:13:25 463
原创 Java集合之Hashtable源码解析
在进行Hashtable源码解析之前,我先扔出Hashtable与HashMap有哪些区别? 1.关于null,HashMap允许key和value都可以为null,而Hashtable则不接受key为null或value为null的键值对。 2.关于线程安全,HashMap是线程不安全的,Hashtable是线程安全的,因为Hashtable的许多操作函数都用synchronized修饰。3.
2017-11-09 00:10:52 666 1
原创 《深入理解Java虚拟机》——方法调用与基于栈的字节码解释执行引擎
方法调用:方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。其实关于方法的执行,接口(父类)与实现类(子类)这些方法如何调用从Java代码层面上大家都是比较清楚的,这里我们探讨一下更深一层的运行原理。Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用
2017-11-04 20:48:18 613
原创 《深入理解Java虚拟机》——栈帧结构
这部分的内容是虚拟机字节码执行引擎方面的,大致分为3块:栈帧结构、方法调用、字节码的执行,而本篇主要是针对栈帧结构的总结。在开始栈帧结构之前我们还是先了解一下执行引擎相关的内容:物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的。虚拟机的执行引擎则是由自己实现的,因此可以自行指定指令集与执行引擎的结构体系并且能够执行那些不被硬件直接支持的指令集格式。
2017-11-03 16:28:25 1244
原创 Java集合之HashMap源码解析
Java集合系列的源码解析,分析代码的版本均为:Sun JDK1.7这篇文章fuck的是HashMap,为什么先选择它呢,因为Android开发中最常用的数据集合就是HashMap和ArrayList,这里先Fuck HashMap。通过本篇文章你可以知道下面几点:1.HashMap内部采用的数据结构——>HashMap内部采用的是数组加单链表来实现的,单链表的插入为头插法。(
2017-11-03 15:51:50 679
原创 算法预备军(5)~散列表
散列表又称为Hash表,核心体现在Hash算法上,而Hash算法又是加密算法的一种,所以我们很有必要去了解一下散列表。一些概念我们看一个公式:存储位置=f(关键字),我们将根据这个公式来理解散列技术与散列表的概念。散列技术:散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(ke
2017-11-21 10:13:16 419
Android轮播控件
2015-12-18
ServiceDemo
2015-05-03
NDKHelloWorld
2015-04-06
Android进程Demo
2014-12-10
ViewFlipperDemo
2014-11-06
Android首页轮播效果Demo
2014-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人