摘要: 1 /** 2 * Hashtable继承于Dictionary类,且实现了Map接口 3 * 4 */ 5 public class Hashtable 6 extends Dictionary 7 implements Map, Cloneable, java.io.Serializable { 8 9 /** 10 * 定义内部存储数据的Entry数组。 11 */ 12 private transient Entry[] table; 13 14 /** 15 * 定义table中的实际e... 阅读全文
posted @ 2013-07-25 14:23 画水 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 今天在看Hashtable的toString()源码时,看到了其中有一个"key == this"的判断,于是突发奇想,如果用Hashtable添加自身再做一些别的操作会怎样?①,hashCode方法先看代码:1 public static void main(String[] args) {2 Hashtable table = new Hashtable();3 table.put(table, 1);4 System.out.println(table.hashCode());5 9 }如果我们运行这段代码,好,正常运行,输... 阅读全文
posted @ 2013-07-25 11:10 画水 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 注:本文转自http://www.ibm.com/developerworks/cn/java/j-lo-hash/?ca=drs-tp4608,作者:李刚通过 HashMap、HashSet 的源代码分析其 Hash 存储机制实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于 HashMap 而言,系统 key-value 当成一个整体进行处理,系统总是根据 Hash 算法来计算 key-value 的存储位置,这样可以保证能快速存、取 Map 的 key-valu 阅读全文
posted @ 2013-07-22 12:20 画水 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 首先,来看ArrayList的定义:1 public class ArrayList extends AbstractList2 implements List, RandomAccess, Cloneable, java.io.SerializableArrayList继承于AbstractList类,并实现了List、RandomAccess、Cloneable和Serializable接口。1 /**2 * 定义ArrayList内部保存数据用的数组。3 */4 private transient Object[] elementD... 阅读全文
posted @ 2013-07-19 14:34 画水 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 昨天在学习Struts2的代码时,发现在Dispatcher的init方法中,有这样一段代码:1 if (!dispatcherListeners.isEmpty()) {2 for (DispatcherListener l : dispatcherListeners) {3 l.dispatcherInitialized(this);4 }5 }很明显,代码中的dispatcherListeners是Dispatcher的监听类,其作用无非就是在Dispatche... 阅读全文
posted @ 2013-07-18 09:05 画水 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 在插入排序中,当前索引左边的所有元素都是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。但是当索引到达数组的右端时,数组排序就完成了。 1 public class InsertionSort { 2 public static void main(Stri... 阅读全文
posted @ 2013-07-16 23:25 画水 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 选择排序算法的流程是这样的:首先,找到数组中最小的那个元素的下标,其次,将次下标上的元素和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此循环往复,直到将整个数组排序。所谓选择就是一直在选择剩余元素中的最小元素。先上代码: 1 public static void selectSort(int[] arr) { 2 for (int i = 0; i < arr.length - 1; i++) { 3 // 定义最小元素的下标,如果和当前元素相同,就和... 阅读全文
posted @ 2013-07-15 21:16 画水 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 最近在学习Struts2源码的时候,学到了Struts2的IOC功能。为了加深印象,决定写个博客。 Struts2框架中有一个容器(Container),我们先来看下它的源代码: 1 public interface Container extends Serializable { 2 3 /** 4 * 设置默认的对象获取标识 5 */ 6 String DEFAULT_NAME = "default"; 7 8 /** 9 * 进行对象的依赖注入操作。o为被注入对象的对象。10 */11 void inject(Object o);12 1... 阅读全文
posted @ 2013-07-15 20:22 画水 阅读(1164) 评论(0) 推荐(0) 编辑
摘要: 一直以来,虽然知道下面代码的结果是1,但是具体为什么是1,却不是很清楚,偶然在网上看到了javap这个命令,可以查看java编译器生成的字节码。于是,就一目了然了。先上代码:1 public class Test{2 public static void main(String[] args){3 int i = 1;4 i = i++;5 System.out.println(i);6 }7 }我们都知道结果是1,但是具体底层是怎么运行的呢?我们用javap命令来看一下:看红色线框内的字节码:我们可以看到,当执行iinc时,“i... 阅读全文
posted @ 2013-07-11 09:29 画水 阅读(1005) 评论(0) 推荐(0) 编辑
摘要: 昨天跑了一下测试,发现服务器明明向客户端写了COOKIE,而且浏览器也木有禁用COOKIE,但是从浏览器再访问服务器,SessionID死活不会传到服务器。搞了一个上午,找不到原因,正在焦头烂额的时候,一个前辈帮了大忙。原来我的访问URL协议头是HTTP,而Weblogic里面的配置被人改动了。把cookie-secure的值改为了true,true意味着"指示浏览器仅通过 HTTPS 连接传回 cookie。这可以确保 cookie ID 是安全的,且仅用于使用 HTTPS 的网站。如果启用此功能,则 HTTP 上的会话 Cookie 将不再起作用。"唉,明白了,怪不得一 阅读全文
posted @ 2013-07-09 17:22 画水 阅读(25654) 评论(0) 推荐(2) 编辑