- 博客(12)
- 资源 (25)
- 收藏
- 关注
原创 【Java深入】ArrayList源码剖析(二)
类的方法(续)(16)add方法 add(E )方法 : 添加新值到 list 末尾 public boolean add(E e) { // 确定ArrayList的容量大小(modCount++) ensureCapacityInternal(size + 1); // 添加 e 到 ArrayList 中,然后 size 自增 1
2017-05-16 17:05:26 504
原创 【Java深入】ArrayList源码剖析(一)
一、ArrayList概述1.底层实现:ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。2.扩容:每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构
2017-05-15 15:45:01 414
原创 【Java深入】HashSet源码剖析
一、HashSet概述:HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素,是非线程安全的。由于HashSet是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMa
2017-05-14 14:04:20 412
原创 【Java深入】HashMap源码剖析(二)
重要方法源码(JDK8)剖析1.put方法(在映射中关联指定值与指定键)public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }注:HashMap的put方法是通过putVal方法来插入元素的final V putVal(int hash, K key, V valu
2017-05-14 11:37:08 931
原创 【Java深入】HashMap的实现原理与源码剖析(一)
一、HashMap的实现原理1.引入毫无疑问,有很多人都用过HashMap,例如HashMap可以接受null键值和值,而HashTable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。2.深入例1:HashMap的get()方法的工作原理?答:“HashMap是基于hashing的原理,使用put(key, value)存储对象到Ha
2017-05-14 08:18:16 728 1
原创 【Java深入】序列化详解
1、定义Serialization(序列化)为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来,即将对象以一连串的字节描述;反序列化deserialization是一种将这些字节重建成一个对象的过程。2、需要实现序列化的几种情况 (1)想把内存中的对象保存到一个文件中或者数据库中时候;(2)想用套接字在网络上传送对象的时候;(3)想通过RMI传输对象的时候;3、实现序列化的方式与反序
2017-05-13 14:40:53 2688 1
原创 【Java深入】深拷贝与浅拷贝详解
1.拷贝的引入(1)引用拷贝创建一个指向对象的引用变量的拷贝。例1:Teacher teacher = new Teacher("Taylor",26);Teacher otherteacher = teacher;System.out.println(teacher);System.out.println(otherteacher);输出结果:blog.Teacher@355da254bl
2017-05-13 11:12:43 27637 25
原创 《Effective java 第2版》读书笔记--异常、并发与序列化
第九章 异常 第五十七条:只针对异常的情况才使用异常1.异常应该只用在异常的情形下。他们永远不应该用在正常的控制流中。 第五十八条: 对可恢复的情况使用受检异常,对编程错误使用运行时异常1.Java语言有三种可抛出的结构:受检异常、错误和运行时异常(1)决定使用何种异常时主要原则是:如果期望调用者能够从异常中适当的恢复,那么就使用受检异常强迫用户处理或者再抛出。运行时异常属于不可恢复的情形(2)
2017-05-06 12:18:05 734
原创 《Effective java 第2版》读书笔记--通用程序设计
第七章 方法 第三十八条:检查参数的有效性1.注意(1)必须在文档中指明所有的限制,并且在方法体的开头检查限制。(2)如果传递了无效的参数,那么方法应该很快失败并且抛出适当的异常(3)对于公有的方法,要用JavaDoc的@throws标签在文档中说明违反参数限制会抛出的异常;对于未导出的方法,应该抛出断言(4)如果方法并没有使用到参数,而是保存了参数,那么参数检查格外重要。例子:构造器,这样可以避
2017-05-06 09:16:02 377
原创 《Effective java 第2版》读书笔记--泛型与枚举
第五章 泛型 第二十三条:不要在新代码中使用原生态类型1.泛型的原生态类型:List对应的是不带任何实际参数类型的List2.泛型的优点:(1)插入元素时自带类型检查(2)删除元素是不需要进行手工转换(3)可以使用for-each循环,两种方法3.缺点(1)使用原生态类型,会失掉泛型在安全性和表述性方面所有的优势(2)List与List的区别:前者可以接受List,但是后者不行(3)不确定类型的时
2017-05-05 21:20:30 431
原创 《Effective java 第2版》读书笔记--类与接口
第三章 对于所有对象都通用的方法 第八条:覆盖equals时请遵守通用约定1.确定应不应该覆盖equals方法的情况(1)类的每个实例本质上是唯一的(2)不关心类是否提供了“逻辑相等“的测试功能。(3)超类已经覆盖了equals,并且从超类继承过来的子类也是合适的 例如:从AbstractSet继承equals(4)类是私有的或者包级私有的:此时应该覆盖并抛出异常。2.Equals的通用约定(1
2017-05-05 16:51:04 742
原创 《Effective java 第2版》读书笔记--创建/销毁对象
第一章 引言1.本书共78个条目2.本书大部分内容不是讨论性能的,而是关心如何编写出清晰、正确、可用、健壮、灵活和可维护的代码。第二章 创建/销毁对象 第一条:用静态工厂方法代替构造器1.静态工厂方法比起构造器的优势(1)它们有名称:如果构造器的参数不能正确描述正被返回的对象,具有适当名称的静态方法更容易使用。当一个类需要多个带有相同签名的构造器时,就可以用静态工厂代替构造器 例:BigIn
2017-05-05 15:23:35 444
技术之瞳 阿里巴巴技术笔试心得.pdf
2017-04-11
高性能Linux服务器构建实战:运维监控、性能调优与集群应用.pdf
2017-04-11
数据库面试必备.docx
2017-04-11
MySQL面试题.pdf
2017-04-11
mysql 驱动 .jar
2017-04-11
struts2.jar
2017-04-11
MySQL 5.1 参考手册
2017-04-11
linux 2 参考手册
2017-04-11
java 8 API 英文原版
2017-04-11
dom4j参考手册
2017-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人