摘要: DOM 解析器完整的读入XML文档,然后将其转换成一个树型的数据结构,对于大多数应用,DOM 都运行很好,但是,如果文档很大,并且处理算法又非常简单,可以在运行时解析节点,而不必看到完整的树形结构,那么我们应该使用流机制解析器(streaming parser),Java 类库提供的流解析机制有 SAX 解析器和 StAX 解析器,SAX 解析器是基于事件回调机制,而 StAX解析器提供了解... 阅读全文
posted @ 2017-05-18 23:18 立3807 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 如果需要定位某个XML文档中的一段特定信息,那么通过遍历DOM 树的众多节点来进行行查找显得有些麻烦,XPath语言使得访问树节点变得很容易,例如,下面的XML文档结构: Helv... 阅读全文
posted @ 2017-05-17 23:15 立3807 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 要处理XML文档,就要先解析(parse)他,解析器时这样一个程序,读入一个文件,确认整个文件具有正确的格式,然后将其分解成各种元素,使得程序员能够访问这些元素,Java库提供了两种XML解析器: 像文档对象模型(Document Object Model,DOM)解析器这样的树型解析器,他们将读入的XML文档转换成树结构 像XML简单API(Simple API for XML,SAX)解析器这... 阅读全文
posted @ 2017-05-14 23:13 立3807 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 正则表达式(regular expression)用于指定字符串的模式,可以在任何需要定位匹配某种特定模式的字符串的情况下使用正则表达式,正则表达式的语法如下: 语法解释字符 c表示字符 c\unnnn,\xnn,\0n,\0nn,\0nnn具有给定十六进制或者十进制值的码元\t,\n,\r,\f, 阅读全文
posted @ 2017-05-14 20:52 立3807 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 内存映射文件时利用虚拟内存实现来将一个文件或者文件的一部分映射到内存中,然后整个文件就可以当作数组一样的访问,这个比传统的文件操作要快得多,Java 使用内存映射文件首先需要从文件中获取一个channel(通道),通道时磁盘文件的一个抽象,他使得我们可以访问诸如内存映射、文件加锁机制以及文件间快速数据传递等操作系统特性,然后通过调用 FileChannel 类的 map ... 阅读全文
posted @ 2017-05-06 23:55 立3807 阅读(310) 评论(0) 推荐(0) 编辑
摘要: Java库中使用 Path 和 Files 类封装了在用户机器上处理文件系统所需要的所有功能,可以使用Paths来获取一个具体的Path对象,来表示具体的路径。 路径 Path表示的是一个目录名序列,其后还可以跟着一个文件名,以根路径开始的路径是绝对路径;否则就是相对路径,示例代码如下: Path absolute = Paths.get("E:\\", "Virtua... 阅读全文
posted @ 2017-05-06 15:59 立3807 阅读(423) 评论(0) 推荐(0) 编辑
摘要: Java 语言支持一种称为对象序列化(Object Serialization)的非常通用的机制,可以将任何对象写入到流中,并在之后将其读回,首先需要支持对象序列化的类,必须继承与 Serializable 接口,该接口没有任何方法,只是对类起到标记的作用,然后使用 ObjectOutputStream 流来序列化对象,使用 ObjectInput... 阅读全文
posted @ 2017-05-04 22:45 立3807 阅读(287) 评论(0) 推荐(0) 编辑
摘要: Java 库的 java.nio 包用 Charset 类统一了对字符集的转换,支付姐建立了两个字节Unicode码元序列与使用本地字符编码方式的字节序列之间的映射,Charset类使用的时由IANA字符集注册中心标准化的字符集名称,为了兼容其他的命名惯例,每个字符集都可以拥有许多别名,可以调用 aliases 方法返回由别名构成的 Set 对... 阅读全文
posted @ 2017-05-03 22:13 立3807 阅读(253) 评论(0) 推荐(1) 编辑
摘要: ZIP文档以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息,在 Java 中可以使用 ZipInputStream 来读入ZIP 文档,getNextEntry 方法返回一个描述这些项的 ZipEntry 类型的对象,ZipInputStream 的 read 方法被修改为在碰到... 阅读全文
posted @ 2017-05-03 22:13 立3807 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 构建一个线程是有一定的代价的,因为涉及和操作系统的交互,如果程序中创建了大量的生命周期很短的线程,这时应该使用线程池(Thread Pool),一个线程池包含了等待运行的空闲线程,将 Runnable 对象传递给线程池,就会有一个线程调用 run 方法,当 run 方法结束时,线程不会死亡,而是在线程池中准备为下一个请求提供服务,Executors 类有许多静态工厂方法用来构建线程池,方法如... 阅读全文
posted @ 2017-04-25 22:25 立3807 阅读(127) 评论(0) 推荐(0) 编辑