- 浏览: 53087 次
最新评论
文章列表
网上有很多这方面的文章,但大多数好像不太靠谱,至少按照上面的方法和步骤基本上不能跑起来的。下面记录我做的方法。
1. JDK版本要在7以下(我用的是JDK6来编译的),这个很重要。
2. 网络要靠谱,因为在编译的时候要下载一些依赖包。
步骤:
1. 下载ant,将其要加到PATH路径中,测试可输入命令:ant -version;
2. 下载tomcat7源码;
3. 进入到源码后,执行ant,如果成功会有提示。
4. 编译成功后,将源码中的java目录下的所有源码复制到ecplise工程中(ecplise中的jdk要
在 1.7版本,否则会有一些问题,如NIO包);
...
同步代码与同步代码块可以实现多线程的同步,JAVA并发框架提供另外了一个框架,它也能实现多线程的同步,即是Lock和Condition,Condition和Lock是配合在一起使用,从字面意思上看,Condition是条件锁,有了锁,为什么要引用条件锁呢?原因有两个:
1.对一个共享资源有读和写的能力,如果读线程或写线程获取了Lock的权力,即有能力进入,但是如果里面没有内容,读也没有用,如果空间已满了,写也写不了,所有还得有条件去判断一下,是不是线程要等待了;
2.提供一种多线程之间的通信机制,类似wait()和nofity()的原理。
看一个例子,就会明白了,还是实现上次的那个生产者和消费 ...
今天在实际的项目发现了一个问题就是hessian的版本不兼容的问题。
原始的项目用的是3.0.20版本,后面与另一个项目中用的是4.0.37版本,结果一直出错。
解决的方法:
1. 下载Hessian 4.0.37的源码下来;
2. 修改源码的package 名字,加一个数字就好;
3. 导出jar包。
这样在后面调用时就注意了,3版本就调用3版本的包,4版本就调用4版本的包,这样就不冲突了。
1. 线程池可以节省创建多个线程带来的开销问题。
2. 线程池的参数如下:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQ ...
xml文件如下:
<mvc>
<action name="user/select" class="com.cloud.mvc.controller.UserController" method="select">
<result name="success">/WEB-INF/view/index.jsp</result>
<result name="faild">/index ...
1. 表达式描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
2. 路径组合表达式
组合多个路径表达式,扩大选择范围;例如:
//book/title | //book/price 选取所有 book 元素的 title 和 price 元素。
3. 提取xml文件中节点信息的java代码
/**
* "/"表示绝对路径 <br/>
* " ...
Dom4j和JDom是很相似的,用起来十分方便。
XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student>
<NO id="123">123456</NO>
<NAME>abc</NAME>
</student>
<student>
<NO id=&quo ...
JDOM在解析XML在代码量之上比之前的方法(DOM和SAX要少很多了)。
XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student>
<NO id="123">123456</NO>
<NAME>abc</NAME>
</student>
<student>
& ...
在上一篇中http://gaofulai1988.iteye.com/blog/2262673,主要讲解了DOM解析xml,它最大的不足之处是要在解析之前要载入这个XML文件,如果这个文件很大,它的效率就不高了。后来有人提出了基于标签事件触发的方式来解析XML文件。什么意思呢?
如果遇到一个<,那么它是一个标签的开始,如果遇到/>那么它是一个标签的结束。这些特殊标志出现的时候,就会触发一个事件来处理。
还是之前的那个XML。
<?xml version="1.0" encoding="UTF-8"?>
<St ...
Java解析XML有多种方式,因此需要分为几个不同的系列来讲。具体安排如下:
1. DOM最基本解析XML;
2. SAX基于事件解析XML;http://gaofulai1988.iteye.com/blog/2262677
3. JDOM不错的解析XML;http://gaofulai1988.iteye.com/blog/2262680
4. DOM4J好用的解析XML;http://gaofulai1988.iteye.com/blog/2262683
5. XPATH解析XML;http://gaofulai1988.iteye.com/admin/blogs/2262787
6. ...
在Java中异常处理的方法, try --- catch -- finally。那么在Mysql里面是如何来处理的呢?
步骤如下:
1)关联异常信息变量;
2)开启事务;
3)关联变量判断。
Mysql里面其实也提供了一些异常捕获的情况,常见的有以下几种:
1) SQLEXCEPTION;
2) NOT FOUNT;
3) WARNING。
语法格式
DECLARE CONTINUE| EXIT HANDLER FOR SQLEXCEPTION|WARING|NOT FOUND SET
_ERROR = 0;
上面的语法就是将有异常的信息进行设置关联到变量上,如 ...
我们知道List, Set, HashMap都是非线程安全的,有时我们希望它们是线程安全的,如何来解决这个问题呢?
在Collections中有方法使它们变成线程安全的。
public static <T> List<T> synchronizedList(List<T> list)
public static <T> Set<T> synchronizedSet(Set<T> s)
public static <K,V> Map<K,V> synchroniz ...
1. List排序的调用
Collections.sort() --> Arrays.sort --> MergeSort()
2. 两种排序策略:Comparable 和 Comparator
public static <T> void sort(List<T> list, Comparator<? super T> c) {
Object[] a = list.toArray();
Arrays.sort(a, (Comparator)c);
ListIterator i = list.listIter ...
1. HashSet底层是怎样实现的呢?
是HashMap,看看它的构造函数就知道了。
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
这里的PRESENT是什么呢?再看看它的定义是什么。
private static final Object PRESENT = new Object();
也即是利用HashMap的key来存储Set的数据。Set不能存储重复的数据,是不是就覆盖了呢?这
个问题被问得好多次了,有人说重写了eqauls和hashcode方法, ...
1. HashMap内存储的元素是Entry,并且Entry是按照链表的形式来存储的。
transient Entry<K,V>[] table; // 用数组来存储,它的原理是每个数组的元素都是一个链表头
Entry的定义如下:
static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
int hash;
}
2. get(Ob ...