`
文章列表
网上有很多这方面的文章,但大多数好像不太靠谱,至少按照上面的方法和步骤基本上不能跑起来的。下面记录我做的方法。 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 ...
Global site tag (gtag.js) - Google Analytics