- 博客(9)
- 收藏
- 关注
原创 红黑树学习
红黑树是基于二叉树实现的,其性能优于平衡二叉树(本人还没测试过不知真假),不过其的复杂程度远超过了平衡二叉树,先看一下它的定义。它包含了5条规定 1:节点都为红色或黑色; 2:根节点为黑色; 3:叶节点都为黑色; 4:红色节点的孩子节点都为黑色;(从根节点遍历到各个叶子节点的路径上不能有两个连续的红色节点) 5:从任意一节点到各个叶节点中所遇
2014-03-09 21:57:26 84
原创 浅析Java的垃圾回收机制
在C/C++中使用完内存空间之后都要手动进行清除释放内存空间,如果没有及时释放内存空间,可能回导致内存溢出或“引用悬空”(dangling references),而Java拥有一套完善的自动垃圾回收机制,避免了上述问题的发生。两种常用的办法是引用计数和对象引用遍历 引用计数收集器 早期的JVM垃圾回收机制中使用引用计数收集器来对垃圾进行回收。在这种方法中,JVM为每个对象设置
2014-03-06 22:16:37 723
原创 NIO与IO的区别
传统的IO是已流的方式进行数据的传输,在每次建立连接时都需要建立一个线程来接收和发送数据,而且在等待连接或者读写过程会出现阻塞,这个时候就会导致进程频繁的无意义的上下文切换。 NIO相对于IO引用了Buffer和Chanel等等重要数据类型抽象,Buffer就是连续的内存块,用来读或写的中转站;Chanel是数据传输的源头或目的地,可以向其读取或写入数据。NIO是基于块的方式进行数据的传
2014-03-05 21:36:03 567
原创 浅析Java中的Logger
Logger是用来记录系统或应用程序组件的日志信息,一般使用圆点分隔符的层次命名空间来命名的,但是他们一般应该基于被记录组件的包名或类名,此外还可以创建“匿名”的Logger,其名字为存放在Logger的命名空间。Logger通过getLogger()工厂来创建Logger或者获取一个合适的已有的Logger。Logger中包含了7个级别从高向低依次为server,warning,info,con
2014-03-02 22:42:06 957
原创 HashSet不能存放相同元素的原因
我想Hashset集合不能存放相同的元素这个道理很多人都懂,但HashSet是怎么实现这条规则的呢?起初我也不明白,后来看了HashSet的源码才搞清楚了原因,原因如下: HashSet内部封装了一个HashMap,HashSet许多方法都是调用HashMap来实现的,而HashSet的add(E e)方法则引用了HashMap的put(Kkey,V value),源码如下:
2014-03-01 20:08:53 834
原创 HashMap与HahsTable的区别
HashTable是继承了旧类Dictionary,而HashMap是Java1.2引进对Map接口的实现; HashTable是同步的,线程安全的,而HashMap是异步的非线程安全的; HashTable中不可以放入Null,而HashMap中可以放入key为Null或value为Null的元素,不过HashMap只保存一个key为Null的元素,而却能保存多个value为
2014-03-01 17:09:12 729
原创 Java容器之HashMap
HashMap的存储结构是数组和链式的结合体,当你使用HashMap默认构造函数初始化HashMap时,它会创建一个长度为16的数组,该数组中存放的是Entry,也可以说是键值对。必须说一点的是,数组的长度一定是2的n次方,即使你指定了数组的长度,如果长度不是2的N次方那么HahsMap也会自动将其扩大到2的n次方,因为这个在后面查找,插入与删除中起到了很关键的作用。 当使用HashMa
2014-02-28 20:58:28 642
原创 Java容器之ArrayList、LinkedList和Vector
ArrayList拥有顺序表结构,因此其便于查询,而在插入和删除方面的效率却比较低。因为当你在ArrayList某个索引位置上插入或删除数据时,该位置之后的所有数据都将发生位移,所以效率比较低下。如果需要大量的插入和删除操作,建议使用LinkList。 ArrayList又称为动态数组,因为它能够动态增加或减少元素。就比如当你在往ArrayList这个集合类型中插入元素时,如果元素的数目
2014-02-27 20:59:58 840
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人