- 浏览: 675546 次
- 性别:
- 来自: 上海
最新评论
-
DawnBells:
感谢感谢
深入Java集合学习系列:HashMap的实现原理 -
阳光正好1:
java项目教学资料,项目配源码教学视频,免费资料可全套领取: ...
NIO学习系列:核心概念及基本读写 -
hankunlun_j2ee:
hualang 写道 对于任意给定的对象,只要它的 hashC ...
深入Java集合学习系列:HashMap的实现原理 -
hankunlun_j2ee:
melburg 写道lantian_123 写道引用HashM ...
深入Java集合学习系列:HashMap的实现原理 -
hankunlun_j2ee:
lantian_123 写道引用根据hash值得到这个元素在数 ...
深入Java集合学习系列:HashMap的实现原理
文章列表
亲戚来上海,帮忙从家来带来了我妈亲手做的酱豆,这几天餐桌上的其他菜似乎都索然无味了。
最近似乎迷失了自己,工作也心不在焉的,却喜欢上了和很久没联系的同学旧友畅谈,忆忆过去,聊聊现在、憧憬着 ...
A very good friend of mine is in the midst of an avalanche of work.
He has a lot of open contracts, and has been abandoned by a fellow
developer that was helping him with his workload. So, with three huge
clients breathing down his neck he has been working non stop for weeks
now.
...
在前面五名已经学习了四篇关于NIO系列的文章:
核心概念及基本读写 、缓冲区内部实现机制 、连网和异步IO 、缓冲区更多特性及分散/聚集IO ,
这里我们继续探讨和学习有关文件锁定和字符集相关的内容。
9. 文件锁定 1) 概述: 文件锁定初看起来可能让人迷惑。它似乎指的是防止程序或者用户访问特定文件。事实上,文件锁就像常规的Java对象锁,它们是“劝告式”的(advisory)锁。它们不阻止任何形式的数据访问,相反,它们通过锁的共享和获取赖允许系统的不同部分相互协调。 您可以锁定整个文件或者文件的一部分。如果您获取一个排它锁,那么其他人就不能获得同一个 ...
在前面三篇关于NIO系列的学习文章:核心概念及基本读写 、缓冲区内部实现机制 、连网和异步IO 中,我们已经介绍了NIO的核心知识,本文继续探讨和学习缓冲区更多特性及分散/聚集IO等相关内容。
7. 缓冲区更多内容 ...
接前两篇关于NIO系列的学习文章:核心概念及基本读写
及缓冲区内部实现机制
,本文继续探讨和学习连网和非阻塞IO相关的内容。
6. 连网和异步IO
1) 概述:
连网是学习异步I/O的很好基础,而异步I/O ...
这段时间工作稍闲,就花了大把的时间泡在一些技术社区和论坛上,也总结了几篇文章,对自己以前的知识进行总结,的确写博并不是一件很容易的事,写出来的可能不仅是知识,还夹杂着生活阅历、情感、表达方式、智慧 ...
接上一篇NIO学习系列:核心概念及基本读写
,本文继续探讨和学习缓冲区的内部实现机制。5. 缓冲区内部实现
从上面对NIO的学习中,我们知道每一个缓冲区都有复杂的内部统计机制,它会跟踪已经读了多少数据以及还有多少空间可以容纳更多的数据,以便我们对缓冲区的操作。在本节我们就将学习NIO的两个重要的缓冲区组件:状态变量和访问方法。虽然NIO的内部统计机制初看起来可能很复杂,但是您很快就会看到大部分的实际工作都已经替您完成了。您只需像平时使用字节数组和索引变量一样进行操作即可。
1) 状态变量:
状态变量是前一节中提到的"内部统计机制&q ...
1. 引言
I/O流或者输入/输出流指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。新的输入/输出(NIO)库是在JDK 1.4中引入的。NIO弥补了原来的I/O的不足,它在标准Java代码中提供了高速的、面向块的I ...
在阅读本文之前,请先参考:
构建自己的通用分页组件(上)
。
1. 需求:
在前一篇文章中,我们通过分析常见的分页需求,构建了一个通用的分页类Page和页面范围类PageScope,在此基础上完成了分页查询的前后 ...
1. 需求:
在实际项目开发中,分页是我们常见的操作,在一般数据展示的列表页,都会使用到数据分页。分页时,在每个页面上只需取得该页面展示的数据及列出其他的页码即可,这样可以以合适的粒度来获取页面展示的 ...
1. ArrayList概述:
ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。
每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造ArrayList时指定其容量。在添加大量元素前,应用程序也可以使用ensureCapacity操作来增加Arra ...
1. LinkedHashMap概述:
LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。
注意,此实现不是同步的。如果多个线程同时访问链接的哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。
2. LinkedHashMa ...
1. LinkedHashSet概述:
LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。
注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必须保持外部同步。
2. LinkedHashSet的实现:
对于LinkedHashSet而言,它继承与HashSet、又基于LinkedHashMap来实现的。
LinkedHa ...
1. HashSet概述:
HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。
2. HashSet的实现:
对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成, HashSet的源代码如下:
public class HashSet<E>
extends A ...
1. HashMap概述:
HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
2. HashMap的数据结构:
在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个H ...