Java SE
文章平均质量分 78
pickless
这个作者很懒,什么都没留下…
展开
-
Java事件机制学习
Java事件机制原理事件机制是通过观察者模式实现的。在Java事件机制中,有三个组成部分:事件源、事件、事件监听者。事件源事件源是一个Subject,当事件发生时,它会广播消息给所有的事件监听者。事件监听者事件监听者是一个Observer,接收到消息之后,会产生相应动作。事件描述事件原创 2012-11-14 17:18:13 · 405 阅读 · 0 评论 -
cglib与Java动态代理比较
共同点为用户提供了一种加强方法(权限管理,方法增强)的方式如果代码写错,都有可能陷入递归调用,最终栈溢出(cglib中注意要调用MethodProxy对象的invokeSuper,而不是Method的invoke;Java动态代理中要调用method.invoke(realObject, args),而不是method.invoke(proxy, args))不同点原创 2013-07-11 16:11:42 · 463 阅读 · 0 评论 -
Java代理的简单分析
逻辑流程Proxy.newInstance(ClassLoader classLoader, Class[] interfaces, InvocationHandler invocationHandler) 调用该方法之后,会产生一个$Proxy0类,该类继承Proxy,实现interfaces中的接口,由classLoader加载到JVM中。 在调用i原创 2013-07-11 14:34:52 · 401 阅读 · 0 评论 -
Collections中sort(),binarySearch(), shuffle()源代码的简单分析
sort() 可以看到,Collections并不是直接对List进行排序操作,这是因为排序过程中可能会涉及大量的随机访问,类似于LinkedList这样的链表结构就会十分耗时。所以先将List转换为Arrays(普通数组),然后调用Arrays.sort()进行排序。 完成排序之后,再一个一个地,把Arrays的元素复制到List中。原创 2013-07-11 10:25:59 · 1259 阅读 · 0 评论 -
LinkedList源代码的简单分析
LinkedList's diagram 从上图,可以看出LinkedList实现了Cloneable,Serializable,List,Deque(双向队列)等接口,继承自AbstractSequentialList。 疑惑:为什么LinkedList继承了AbstractList还要实现List?为了结构的清晰?Linked原创 2013-07-10 15:58:59 · 661 阅读 · 0 评论 -
HashMap源代码的简单分析
前言: 1.HashMap允许null的value和null的key。 2.与HashTable相比,HashMap是没有synchronized。 3.它的Iterator采用了Fail-Fast机制。 重要Fields:表,默认大小(capacity)是16。表的大小总是2的幂。负载,默认的是0原创 2013-07-10 21:11:46 · 472 阅读 · 0 评论 -
HashSet源代码的简单分析
HashSet's DiagramHashSet's Source Code提示:可以直接看总结/* * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use i原创 2013-07-10 17:25:00 · 517 阅读 · 0 评论 -
ArrayList源代码的简单分析
ArrayList's DiagramArrayList与LinkedList相比,接口上没有实现Deque,实现了RandomAccess(随机存取),继承自AbstractList。java.uti.RandomAccess是一个空接口,主要起一个标记作用,表示实现了这个接口的类具备快速的随机存取能力。ArrayList's source c原创 2013-07-10 16:53:41 · 885 阅读 · 0 评论 -
TreeMap源代码的简单分析
前言 TreeMap是由Red-Black Tree实现的。Red-Black Tree具备几个重要的性质:1.根是Black的;2.叶子是Black的;3.不能存在两个连续的Red节点;4.任何一个节点到它的叶子节点的路径上黑色节点个数要相同。如果不满足性质3或者4的时候,就会对树进行旋转操作。 Red-Black Tree的统计性能要好于AVL,所以TreeMap使原创 2013-07-11 01:57:42 · 533 阅读 · 0 评论 -
Thinking in Java笔记
存储到什么地方(P22) 有五个不同的地方可以存储数据: 寄存器: 这是最快的存储区,因为它位于处理器内部。但是数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不会在程序中感觉到寄存器存在的任何迹象。 堆栈:原创 2013-04-27 00:53:32 · 443 阅读 · 0 评论 -
Head First Java笔记
Java中,Integer与Boolean是不能相容的,例如: int x = 1; if (x) { ... } 是错误的。Java垃圾回收机制简介 创建对象时,它会被存放在成为堆的内存区域中。不管对象如何原创 2013-04-27 00:56:46 · 598 阅读 · 0 评论 -
BlockingQueue的学习笔记(一)
初探 BlockingQueue BlockingQueue是一个接口。 只有take()和put()方法会阻塞队列,其他方法都不会。实现了BlockingQueue接口的类 LinkedBlockingQueue LinkedBlockingDeque ArrayBlocki原创 2013-07-15 11:09:15 · 770 阅读 · 0 评论