摘要: JDOM简介:JDOM的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型,JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。从 2000 年初就已经开始了 JDOM 开发。JDOM 与 DOM 主要有两方面不同。首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性。第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用。JDOM 文档声明其目的是“使用 20%(或更少 阅读全文
posted @ 2011-10-27 20:50 心休 阅读(240) 评论(0) 推荐(0) 编辑
摘要: SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,虽然如此,使用SAX的还是不少,几乎所有的XML解析器都会支持它。 与DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是其对于内存的需求,也将是成倍的增长,以至于在某些应用中使用DOM是一件很不划算的事(比如在applet中)。这时候,一个较好的替代解决方法就是SAX。SAX在概念上与DOM完全不同。它 阅读全文
posted @ 2011-10-26 21:45 心休 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 第一种方式:使用dom获取属性的值和文本的值进行解析xmlpackage com.lcq.java.document;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;public class DomTest1 { /** * @param args * @th.. 阅读全文
posted @ 2011-10-23 16:07 心休 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 该模式中包含的角色及其职责 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品(Concrete Product)角色 是简单工厂模式的创建目标... 阅读全文
posted @ 2011-10-23 15:47 心休 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1:UDP协议的工作原理UDP协议是一个面向无连接的协议。其连接的建立不必像TCP那样需要服务器端侦听,也不需要有客户机请求连接,属于一种“强制”性的网络连接。UDP提供一对一或一对多的、无连接的数据报服务。该服务对消息中传输的数据提供不可靠的、最大努力的传送,这意味着它不保证数据的到达,也不保证所传送的数据报的顺序是否正确,UDP不重新传输丢失的数据。其主要工作是:将应用程序传输过来的数据分块交给网络层,确认接受到分组信息。尽管UDP无法像TCP一样提供可靠的数据传输,但UDP并不比TCP缺乏优越性。UDP在传输效率方面比TCP要高一些,而且许多应用程序并不需要保证严格的传输可靠性,比如视频 阅读全文
posted @ 2011-10-06 15:51 心休 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 第一部分:1.什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 2.重要的Socket API: java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。 . Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时&qu 阅读全文
posted @ 2011-10-06 14:40 心休 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 对象的浅复制和深复制有两种方法:第一种:通过重写clone()方法实现1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 ⑵深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。2.Java的clone()方法 ⑴clone方法将对象复制了一份并返回给调用者。一般而言,clon.. 阅读全文
posted @ 2011-10-05 14:51 心休 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 线程有四种状态,任何一个线程肯定处于这四种状态中的一种:1) 产生(New):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。2) 可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它;也可能它已正在执行。如执行了一个线程对象的start()方法后,线程就处于可执行状态,但显而易见的是此时线程不一定正在执行中。3) 死亡(Dead):当一个线程正常结束,它便处于死亡状态。如一个线程的run()函数执行完毕后线程 阅读全文
posted @ 2011-10-05 11:00 心休 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 实现同步方法的方式有两种: 1.用synchronized关键字修饰的方法可以实现线程的同步; 2.用synchronized代码块修饰的部分实现线程的同步。以下为第二种方式的实现:package com.lcq.ThreadTest;/** * 类名:ThreadTest6 * 功能:线程的同步问题,使用关键字synchronized静态代码块修饰 * 时间: * 结果:当一个synchronized块被调用时,该类的其他方法无法调用 * @version 1.0 * @author lcq */public class ThreadTest6 { public static void ma 阅读全文
posted @ 2011-10-05 08:30 心休 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 实现输入年份,输出该年份的具体天数信息。练手的代码:package com.lcq.ThreadTest;import java.util.Scanner;public class Test2 {/** * 功能:打印出输入年份的每一天的信息 * @version 1.0 * @author lcq */ //countDays(int month, int year)函数用来计算这一年中每个月的天数 int countDays(int month, int year){ int count = -1; switch(month){ case 1: case 3: ... 阅读全文
posted @ 2011-10-04 22:39 心休 阅读(371) 评论(0) 推荐(0) 编辑