12 2015 档案

摘要:前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口。 既然说到排序,首先我们不用去关心什么是Strategy设计模式,也不用关心它为了解决什么问题而存在,我们直接从排序开始看。1.排序 假设... 阅读全文
posted @ 2015-12-30 23:35 吞噬天帝 阅读(1342) 评论(1) 推荐(1) 编辑
摘要:TreeSet是一个有序的Set集合。 既然是有序,那么它是靠什么来维持顺序的呢,回忆一下TreeMap中是怎么比较两个key大小的,是通过一个比较器Comparator对不对,不过遗憾的是,今天仍然不会讲Comparator,但是需要明白的是TreeSet要实现信息也必须依靠于Compara... 阅读全文
posted @ 2015-12-28 23:27 吞噬天帝 阅读(1290) 评论(0) 推荐(0) 编辑
摘要:TreeMap是基于红黑树结构实现的一种Map,要分析TreeMap的实现首先就要对红黑树有所了解。 要了解什么是红黑树,就要了解它的存在主要是为了解决什么问题,对比其他数据结构比如数组,链表,Hash表等树这种结构又有什么优点。1.二叉查询树、红黑树介绍 以下为个人理解,有误请拍砖。。。... 阅读全文
posted @ 2015-12-27 23:45 吞噬天帝 阅读(3005) 评论(0) 推荐(3) 编辑
摘要:今天的主角是HashSet,Set是什么东东,当然也是一种java容器了。现在再看到Hash心底里有没有会心一笑呢,这里不再赘述hash的概念原理等一大堆东西了(不懂得需要先回去看下HashMap了),需要在啰嗦一句的是hash表是基于快速存取的角度设计的,也是一种典型的空间换时间的做法(这个在... 阅读全文
posted @ 2015-12-21 17:16 吞噬天帝 阅读(1615) 评论(1) 推荐(1) 编辑
摘要:前面分析了HashMap的实现,我们知道其底层数据存储是一个hash表(数组+单向链表)。接下来我们看一下另一个LinkedHashMap,它是HashMap的一个子类,他在HashMap的基础上维持了一个双向链表(hash表+双向链表),在遍历的时候可以使用插入顺序(先进先出,类似于FIFO)... 阅读全文
posted @ 2015-12-19 19:05 吞噬天帝 阅读(1588) 评论(0) 推荐(4) 编辑
摘要:前面了解了jdk容器中的两种List,回忆一下怎么从list中取值(也就是做查询),是通过index索引位置对不对,由于存入list的元素时安装插入顺序存储的,所以index索引也就是插入的次序。 Map呢是这样一种容器,它可以存储两个元素键和值,根据键这个关键字可以明确且唯一的查出一个值,这... 阅读全文
posted @ 2015-12-17 20:58 吞噬天帝 阅读(2718) 评论(1) 推荐(3) 编辑
摘要:前面讲了两种List,一种基于数组实现的ArrayList,一种基于链表实现的LinkedList,这两种list是我们工作中最常用到的List容器。当然数组和链表也是两种常见的基本数据结构,其他基本数据结构还有堆栈、队列、树等,对java容器的学习,也可以看做是对数据结构的学习和使用。 在A... 阅读全文
posted @ 2015-12-15 20:08 吞噬天帝 阅读(1782) 评论(0) 推荐(2) 编辑
摘要:LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明。1.链表的概念链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循环链表,下面简单就这四种链表进行图解说明。 1.1... 阅读全文
posted @ 2015-12-14 22:59 吞噬天帝 阅读(2593) 评论(4) 推荐(2) 编辑
摘要:工作中经常听到别人讲“容器”,各种各样的容器,话说到底什么是容器,通俗的讲“容器就是用来装东西的器皿,比如:水桶就是用来盛水的,水桶就是一个容器。”ok,在我们写程序的时候常常要对大量的对象进行管理,比如查询,遍历,修改等。jdk为我们提供的容器位于java.util包,也是我们平时用的最多的包... 阅读全文
posted @ 2015-12-12 23:38 吞噬天帝 阅读(3455) 评论(5) 推荐(2) 编辑
摘要:Condition的功能类似在传统线程技术中的Object.wait和Object.notity的功能。例子:生产者与消费者 1 import java.util.Random; 2 import java.util.concurrent.ExecutorService; 3 import j... 阅读全文
posted @ 2015-12-11 21:17 吞噬天帝 阅读(334) 评论(2) 推荐(0) 编辑
摘要:读写锁:多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥。即:读的时候不允许写,写的时候不允许读,可以同时读。 synchronized关键字和普通的Lock构造的锁,会造成读与读之间的互斥,因此读写锁可提高性能。例子1:三个线程同时对一个共享数据进行读写。 1 import java.util.R... 阅读全文
posted @ 2015-12-11 21:15 吞噬天帝 阅读(984) 评论(0) 推荐(1) 编辑
摘要:CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以将每个任务的Future保存进一个集合,然后循环这个集合调用Future... 阅读全文
posted @ 2015-12-08 22:48 吞噬天帝 阅读(1508) 评论(0) 推荐(1) 编辑
摘要:普通的创建线程,一种是直接继承Thread,另外一种就是实现Runnable接口。但是这两种都无法在执行完任务之后获取执行结果,Callable、Future就提供了这样的便利。Future的方法说明:booleancancel(booleanmayInterruptIfRunning);cance... 阅读全文
posted @ 2015-12-08 22:46 吞噬天帝 阅读(867) 评论(0) 推荐(0) 编辑
摘要:一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协... 阅读全文
posted @ 2015-12-08 14:26 吞噬天帝 阅读(1784) 评论(1) 推荐(0) 编辑
摘要:jvm内存模型程序计数器:是一块很小的内存空间。当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源。每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令。java虚拟机栈(线程栈 ):也是线程私有内存空间,他和java线程在同一时间创建,他保存方法的局部变量、部分结果,并... 阅读全文
posted @ 2015-12-07 17:23 吞噬天帝 阅读(1707) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示