Java源码
文章平均质量分 82
Vi_NSN
这个作者很懒,什么都没留下…
展开
-
JDK1.8 ArrayList源码剖析(一)
类中常用到的变量和方法:int DEFAULT_CAPACITY=10:默认容量大小,自动扩容时用到,而非构造时指定为容量大小Object[] EMPTY_ELEMENTDATA = {}:空的数组Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};:空的数组Object[] elementData:实际保存数据的地方int size:Array原创 2017-12-20 17:54:16 · 359 阅读 · 0 评论 -
JDK1.8 ArrayList源码剖析(二)
JDK1.8中新增的特性: class Itr implements Iterator: void forEach(Consumer action):JDK8中新特性,对list中每个元素分别进行操作,如:ArrayList al = new ArrayList;al.add(0);al.add(1);al.add(2);al.add(3);al.forEach(line ->原创 2017-12-21 10:40:57 · 251 阅读 · 0 评论 -
volatile关键字
Java内存模型Java Memory Model为什么需要volatile为什么volatile有这样的作用volatile不能保证变量原子性什么时候使用volatile指令重排内存屏障volatile实现先行发生原则的方法结论Java内存模型(Java Memory Model) 上图大概示意了Java的内存模型,其中 主内存(Main Memory):课件可以简单理解原创 2017-12-27 23:15:13 · 307 阅读 · 0 评论 -
nio(一)——综述
背景组成部分通道和缓冲器读写实例背景 JDK1.4的java.nio.*包中引入了新的JavaI/O类库,其目的在于 提高速度。实际上,旧的I/O包已经使用nio重新实现过。因此,即使不显式使用nio编写代码,也能从中受益。 I/O的应用场景分为文件I/O和网络I/O,在这里之研究前者。组成部分 nio主要有三大组成部分:通道(Channel)、缓冲原创 2017-12-28 17:55:11 · 221 阅读 · 0 评论 -
nio(二)——转换数据(编码问题)和获取基本数据类型
在nio(一)中的GetChannel.java这个类中,为了输出文件中的信息,我们必须每次只读取一个字节的数据,然后将每个byte类型强制转换成char类型。但是在java.nio.CharBuffer这个类中有一个toString()方法,它的定义是:“返回一个包含缓冲器中所有字符的字符串”。ByteBuffer可以看作是具有asCharBuffer()方法的CharBuffer。使用方法如下,原创 2017-12-28 18:26:02 · 492 阅读 · 0 评论 -
nio(二)——大文件读取、文件加锁
内存映射文件文件加锁对映射文件的部分加锁内存映射文件 内存映射文件允许我们创建和修改那些因为太大而不能放入内存的文件。有了内存映射文件,我们就可以假定整个文件都放在内存中,而且可以完全把它当作非常大的数组来访问。如下代码:public class LargeMappedFiles { static int length = 0x8FFFFFF; // 12...原创 2018-01-02 22:02:30 · 580 阅读 · 0 评论