0%

反射

Java提供反射来在运行时状态下动态的获取类的属性、方法等信息,在框架中很多地方都用到了反射

阅读全文 »

StAX解析

StAX解析介绍

StAX解析与SAX解析类似,也是基于事件驱动的,不同之处在于StAX采用的是拉模式,应用程序通过调用解析器推进解析的进程,可以调用next()方法来获取下一个解析事件(开始文档,结束文档,开始标签,结束标签),当处于某个元素时可以调用XmlPullParser的getAttribute()方法来获取属性的值,也可以调用nextText()获取本节点的值。

阅读全文 »

SAX解析

SAX解析介绍

由于DOM解析XML的弊端,一种替代的技术就是使用SAX解析。

SAX是基于事件模型的XML解析方式,不需要将整个XML文档加载到内存中,只需加载一部分即可开始解析,在处理过程中不会在内存中记录XML中的数据,占用的资源比较少,当程序处理满足一定条件时,可以立即停止解析,这样不必解析剩余的XML内容。

阅读全文 »

DOM解析

DOM解析介绍

DOM是基于树形结构的XML解析方式,会将整个XML文档读入内存并构建一个DOM树,基于这棵树形结构对各个节点进行操作。XML文档中每个成分都是一个节点,

阅读全文 »

Lock

由于synchronized在很多情况下是不可控的,所以在jdk5出现了一个新的加锁方式Lock,提供了无条件的,可轮询的,可定时的,可中断的锁获取操作,所有加锁和解锁都是显式的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public interface Lock {
// 获取锁,会阻塞
void lock();
// 如果当前线程未被中断,则获取锁
void lockInterruptibly() throws InterruptedException;
// 尝试获取锁,如果锁可用,则获取锁,返回true;如果锁不可用,则返回false
boolean tryLock();
// 尝试获取锁,设置超时时间,如果该时间内没有获取到锁,则返回false
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
// 释放锁
void unlock();
// 将Condition绑定到该Lock实例上
Condition newCondition();
}
阅读全文 »