
Java高级
文章平均质量分 75
brsuo
这个作者很懒,什么都没留下…
展开
-
用Jakarta POI操作Excel文件
Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于早在Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。它的官方首页是:http://jakarta.apache.org/poi/hssf/index.html,这里可以下载到它的最新版本和文档。下面就来看看...原创 2009-11-30 15:04:18 · 87 阅读 · 0 评论 -
JAXB--@XmlElementWrapper注解和泛型一起使用(三)
当java对象的某个属性使用泛型时,普通对象都没问题,但是遇到HashSet这种集合类封装的元素时,就会出现元素内容序列化不出来的问题,详见如下: 一、示例: 第一步:定义java对象 package step3;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotati...原创 2011-11-03 16:46:23 · 954 阅读 · 0 评论 -
JAXB--@XmlType注解标注xml生成顺序(四)
默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性来指定序列化的顺序。 第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。package step2;import java.util.Set;import...原创 2011-11-03 17:01:59 · 389 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer加锁和解锁分析(二)
在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。1. ...原创 2011-12-29 22:07:14 · 309 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer公平锁和非公平锁分析(三)
juc包中,aqs实现的公平锁和非公平锁的最主要的区别是:非公平锁中,那些尝试获取锁且尚未进入等待队列的线程会和等待队列head结点的线程发生竞争。公平锁中,在获取锁时,增加了isFirst(current)判断,当且仅当,等待队列为空或当前线程是等待队列的头结点时,才可尝试获取锁。 1.1 NonfairSync.lock() final void lock() { if...原创 2011-12-30 14:40:19 · 220 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer条件锁分析(四)
前一篇J.U.C的锁的获取与释放的过程,这个过程主要通过在A.Q.S中维持一个等待队列来实现,其中我们也提到了,在A.Q.S中除了一个等待队列之外,还有多个Condition队列(Condition队列的多少取决于ConditionObject对象个数),在了解Condition队列之前,先来看一下Condition是怎么回事:The synchronizer fram...原创 2011-12-30 17:10:44 · 108 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer的lock()和lockInterruptibly()方法分析(五)
lock 与 lockInterruptibly比较区别在于: lock 优先考虑获取锁,待获取锁成功后,才响应中断。 lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。 详细区别: ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等...原创 2011-12-31 11:19:40 · 278 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer的tryLock()方法分析(六)
tryLock()仅尝试一次获取锁,不管成功与否,都将返回结果。 public boolean tryLock()仅在调用时锁未被另一个线程保持的情况下,才获取该锁。 如果该锁没有被另一个线程保持,并且立即返回 true 值,则将锁的保持计数设置为 1。即使已将此锁设置为使用公平排序策略,但是调用 tryLock() 仍将 立即获取锁(如果有可用的),而不管其他线程当前是否正在等待...原创 2012-01-05 14:40:38 · 112 阅读 · 0 评论 -
java并发编程--ThreadLocal的用法和分析
ThreadLocal这个类,理解起来比较简单,但是使用时,还是需要一些技巧的,简单介绍如下: 例子1:threadLocal变量一般用法 package concurrent.thread;/** * 技巧: * 1.在当前线程里执行threadLocal.set(value) 相当于 currentThread.threadLocalMap.set(thr...原创 2012-01-11 22:55:24 · 94 阅读 · 0 评论 -
JAXB--@XmlElementWrapper注解(二)
在JAXB标准中,@XmlElementWrapper注解表示生成一个包装 XML 表示形式的包装器元素。 此元素主要用于生成一个包装集合的包装器 XML 元素。因此,该注释支持以下两种形式的序列化。 注:@XmlElementWrapper仅允许出现在集合属性上。 第一步:定义将要转化的Java对象 package step1.wrapper;import...原创 2011-11-03 15:49:57 · 849 阅读 · 0 评论 -
JAXB--简单应用(一)
一、简介 1、概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,即是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。有多种实现。 2、JAXB中有什么:包含“xjc”工具和一个“schemagen”工...原创 2011-11-03 15:09:37 · 159 阅读 · 0 评论 -
HtmlParser学习笔记(零)-- htmlparser简介
htmlparser简介一、htmlparser对html页面处理的数据结构 HtmlParser主要靠Node、AbstractNode和Tag来表达Html,因为Remark和Text相对简单,此处就将其忽略了。Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现,Node定义了与页面树结构所表达的页面Page对象,定义了获取父、子、兄弟节点的方法,定...原创 2010-01-12 12:43:08 · 178 阅读 · 0 评论 -
HtmlParser学习笔记(一)-- 创建Parser对象
最近学习了下htmlparser,用这东西解析html还是蛮好用的,为了防止以后忘掉,现总结一下。 首先,介绍下HTMLParser的核心类,org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。主要的构造函数如下: public Parser ();public Parser (String resource) th...原创 2010-01-12 12:44:38 · 179 阅读 · 0 评论 -
HtmlParser学习笔记(二)-- 遍历结点
这次主要演示下,如何迭代一个Node结点的所有根子结点。 首先,先来看下需要解析的html页面的内容,该文件命名为htmlparser.html,详细内容如下所示(该页面以后将会多次使用):<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml...原创 2010-01-12 12:47:44 · 232 阅读 · 0 评论 -
HtmlParser学习笔记(三)-- 使用Visitor访问结点
使用NodeVisitor方式访问html结点,代码如下: package com.javaeye.suo.htmlparser.samples;import org.htmlparser.Parser;import org.htmlparser.Remark;import org.htmlparser.Tag;import org.htmlparser.Tex...原创 2010-01-12 12:48:07 · 250 阅读 · 0 评论 -
HtmlParser学习笔记(四)-- 使用Filter过滤结点
使用TagNameFilter过滤所有table标签结点。 package com.javaeye.suo.htmlparser.samples;import org.htmlparser.Node;import org.htmlparser.NodeFilter;import org.htmlparser.Parser;import org.htmlparse...原创 2010-01-12 12:48:21 · 373 阅读 · 0 评论 -
java线程的同步互斥和通讯
一、同步和锁定 1、锁的原理 Java中每个对象都有一个内置锁。 当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。 当程序运行到synchronized同步方法或代码块时才该对象锁才起作用。 ...原创 2011-10-18 23:01:02 · 96 阅读 · 0 评论 -
利用object.wait()和实现生产者和消费者模式
其实生产者和消费者模式概念很简单,就是生产者将生产出来的产品放在仓库里,然后消费者依次从仓库里取产品消费。归到程序里,这里的仓库就可以用数组,队列或栈来表示。 掌握以下两点后,该模式的实现将不成问题。 1. 首先要明白生产者和消费者之间的并发对象就是存放产品的队列,这样才能把并发方法提炼出来。 2. 其次要掌握object.wait()和object.notifyAll()...原创 2011-10-18 23:08:42 · 239 阅读 · 0 评论 -
java线程常见的几种死锁模式和解决方法
待续原创 2011-10-18 23:09:41 · 167 阅读 · 0 评论 -
线程池--jetty中QueuedThreadPool分析(一)
jetty版本:jetty-6.1.261.由于jetty中的许多组件都实现了LifeCycle接口,先了解下该接口的定义: package org.mortbay.component;import java.util.EventListener;public interface LifeCycle{ public void start() throw...原创 2012-02-02 11:09:33 · 692 阅读 · 0 评论