并发容器之ConcurrentSkipListSet
摘要:概要 本章对Java.util.concurrent包中的ConcurrentSkipListSet类进行详细的介绍。内容包括:ConcurrentSkipListSet介绍ConcurrentSkipListSet原理和数据结构ConcurrentSkipListSet函数列表Concurrent
阅读全文
posted @
2016-08-05 17:25
duanxz
阅读(8404)
推荐(0) 编辑
HashSet中是如何判断元素是否重复的
摘要:HashSet不能添加重复的元素,当调用add(Object)方法时候,首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元...
阅读全文
posted @
2015-12-04 20:52
duanxz
阅读(10285)
推荐(0) 编辑
RocketMQ之六:RocketMQ消息存储
摘要:一、RocketMQ的消息存储基本介绍 先看一张图: 1、Commit log存储消息实体。顺序写,随机读。2、Message queue存储消息的偏移量。读消息先读message queue,根据偏移量到commit log读消息本身。3、索引队列用来存储消息的索引key使用mmap方式减少内存拷
阅读全文
posted @
2015-12-04 20:45
duanxz
阅读(12443)
推荐(5) 编辑
java List.subList方法中的超级大陷阱
摘要:ArrayList 中 subList 的基本用法: subList(fromIndex:int,toIndex:int):List<E> 返回从fromIndex到toindex-1 的 子列表 在使用集合中,可能常常需要取集合中的某一部分子集来进行一下操作,于是subList这个方法就映入我们的
阅读全文
posted @
2015-12-02 16:58
duanxz
阅读(6360)
推荐(2) 编辑
对JAVA集合进行遍历删除时务必要用迭代器
摘要:java集合遍历删除的方法: 1、当然这种情况也是容易解决,实现方式就是讲遍历与移除操作分离,即在遍历的过程中,将需要移除的数据存放在另外一个集合当中,遍历结束之后,统一移除。 2、使用Iterator遍历删除。 使用Iterator遍历删除的原因: Iterator 是工作在一个独立的线程中,并且
阅读全文
posted @
2015-08-22 15:26
duanxz
阅读(6095)
推荐(0) 编辑
Java中的10颗语法糖
摘要:语法糖(Syntactic Sugar):也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,减少程序代码出错的机会。 相对于C#及许多其他JVM来说,Java在现代编译语言之中属于“低糖语言”。尤其是JDK1.
阅读全文
posted @
2015-08-06 15:58
duanxz
阅读(8444)
推荐(0) 编辑
Servlet3.0之九:web模块化
摘要:一、使用web-fragment.xml 在Servlet 3.0中,可以使用标注来设置Servlet的相关信息。实际上,Web容器并不仅读取/WEB-INF/classes中的Servlet标注信息,如果一个JAR文件中有使用标注的Servlet,Web容器也可以读取标注信息、载入类并注册为Ser
阅读全文
posted @
2015-05-13 09:46
duanxz
阅读(739)
推荐(0) 编辑
TreeMap源码解析
摘要:1、TreeMap介绍 TreeMap是一个通过红黑树实现有序的key-value集合。 TreeMap继承AbstractMap,也即实现了Map,它是一个Map集合 TreeMap实现了NavigableMap接口,它支持一系列的导航方法, TreeMap实现了Cloneable接口,它可以被克
阅读全文
posted @
2015-04-25 10:31
duanxz
阅读(569)
推荐(0) 编辑
集合总体大纲
摘要:前言 Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Co
阅读全文
posted @
2015-04-25 10:18
duanxz
阅读(448)
推荐(0) 编辑
LinkedHashSet的实现原理
摘要:LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少
阅读全文
posted @
2015-04-08 23:01
duanxz
阅读(2608)
推荐(1) 编辑
HashMap源码解析
摘要:要理解HashMap, 就必须要知道了解其底层的实现, 而底层实现里最重要的就是它的数据结构了,HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 在分析要理解HashMap源码前有必要对hashcode进行说明。以下是关于HashCode的官方文档定义: hashcode方法
阅读全文
posted @
2015-04-05 12:17
duanxz
阅读(621)
推荐(0) 编辑
LinkedList源码解析
摘要:LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明。1.链表的概念链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循环链表,下面简单就这四种链表进行图解说明。 1.1
阅读全文
posted @
2015-04-05 11:52
duanxz
阅读(417)
推荐(0) 编辑
ArrayList源码解析
摘要:ArrayList简介 ArrayList定义 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。
阅读全文
posted @
2015-04-05 11:42
duanxz
阅读(647)
推荐(0) 编辑
HashSet的实现原理
摘要:HashSet定义 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺
阅读全文
posted @
2015-04-05 11:35
duanxz
阅读(1524)
推荐(0) 编辑
LinkedHashMap的实现原理
摘要:1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在
阅读全文
posted @
2015-03-31 19:11
duanxz
阅读(386)
推荐(0) 编辑
使用Apache 的lib进行List、Set、数组之间的转换(转)
摘要:使用Apache Jakarta Commons Collections:import org.apache.commons.collections.CollectionUtils; String[] strArray = {"aaa", "bbb", "ccc"}; List strL...
阅读全文
posted @
2014-08-02 11:04
duanxz
阅读(1821)
推荐(0) 编辑
Hashtable的实现原理
摘要:Hashtable 简介 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这
阅读全文
posted @
2014-03-07 16:11
duanxz
阅读(1135)
推荐(0) 编辑
HashMap的实现原理
摘要:数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特
阅读全文
posted @
2014-02-10 11:26
duanxz
阅读(623)
推荐(0) 编辑
阻塞队列之一:BlockingQueue汇总
摘要:一、阻塞队列介绍二、3种类型的BlockingQueue三、阻塞队列成员介绍四、BlockingQueue 的方法五、Queue中 remove/poll, add/offer, element/peek区别 一、阻塞队列介绍 BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费
阅读全文
posted @
2013-10-31 20:08
duanxz
阅读(1124)
推荐(0) 编辑
阻塞队列之二:LinkedTransferQueue
摘要:一、LinkedTransferQueue简介 TransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法。LinkedTransferQueue是TransferQueue接口的实现类,其定义为一个无界的队列,具有先进先出(FIFO)的特性。 有人这样评价它:"T
阅读全文
posted @
2013-10-31 09:11
duanxz
阅读(1396)
推荐(0) 编辑