在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞(non-blocking)IO操作的API被引入。本文对其进行深入的介绍。
NIO API主要集中在java.nio和它的subpackages中:
java.nio
定义了Buffer及其数据类型相关的子类。其中被java.nio.channels中的类用来进行IO操作的ByteBuffer的作用非常重要。
java.nio.channels
定义了一系列处理IO的Channel接口以及这些接口在文件系统和网络通讯上的实现。通过Selector这个
阅读(3632)
评论(5)
2007-03-28 16:24
Nutch搜索引擎分析
阅读(1441)
评论(1)
2006-11-06 18:07
web设计者面临的众多难题之一便是怎样处理不同操作系统间的差异性。这些差异性能引起URL方面的问题:例如,一些操作系统允许文件名中含有空格符,有 些又不允许。大多数操作系统不会认为文件名中含有符号“#”会有什么特殊含义;但是在一个URL中,符号“#”表示该文件名已经结束,后面会紧跟一个 fragment(部分)标识符。其他的特殊字符,非字母数字字符集,它们在URL或另一个操作系统上都有其特殊的含义,表述着相似的问题。为了解决这些 问题,我们在URL中使用的字符就必须是一个ASCII字符集的固定字集中的元素,具体如下:1.大写字母A-Z2.小写字母a-z3.数字 0-94.标点符 - _ . ! ~ * ' (和 ,)诸如字符: / & ? @ # ; $ + = 和 %也可以被使用,但是它们各有其特殊的用途,如果一个文件名包括了这些字符( / & ? @ # ; $ + = %),这些字符
阅读(866)
评论(1)
2006-10-27 11:37
(一)断点续传的原理 其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已。打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:假设服务器域名为wwww.sjtu.edu.cn,文件名为down.zip。GET /down.zip HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*Accept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Connect
阅读(1069)
评论(1)
2006-10-10 10:04
这两天准备做一些网站编程的工作,于是对HtmlParse小研究了一下,目的是快速入手,而不是深入研究,做了一下整理,和大家共同讨论一下。
一,数据组织分析:
HtmlParser主要靠Node、AbstractNode和Tag来表达Html,因为Remark和Text相对简单,此处就将其忽略了。
Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现,Node定义了与页面树结构所表达的页面Page对象,定义了获取父、子、兄弟节点的方法,定义了节点到对应html文本的方法,定义了该节点对应的起止位置,定义了过滤方法,定义了Visitor访问机制。
AbstractNode是Node的一种具体的类实现,起到构成树形结构的作用,除了同具体Node相关的accetp方法,toString,toHtml,toPlainTextString方法以
阅读(2460)
评论(4)
2006-08-01 16:40
了解一下 Technorati 的后台数据库架构
Technorati (现在被阻尼了, 可能你访问不了)的 Dorion Carroll在 2006 MySQL 用户会议上介绍了一些关于 Technorati 后台数据库架构的情况.
基本情况 目前
阅读(676)
评论(1)
2006-07-04 09:10
首先到http://xstream.codehaus.org下载XStream的最新版本,到目前为止的最新版本为1.1.2,主要改变为提供了一些JDK1.5的enum类型支持。下载后,解压,将xstream-1.1.2.jar与xpp3_min-1.1.
阅读(4141)
评论(10)
2006-06-08 11:46
第一次看到Rod Johnson是在Wrox的Professional JSP第二版的封面上,以前怎么也没能封面右上角的那个秃顶的小人头和今天整个J2EE轻量容器革命和java open source的领导人联系起来。已经不记得那本书的内容了,不
阅读(954)
评论(1)
2006-06-06 13:52
作者:刘学超
1 Java技术与Java虚拟机
说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们
阅读(530)
评论(1)
2006-05-03 17:49
今天用了下Lucene,发现网上虽然也有不少介绍它的文档,不过很多都偏向介绍概念呀、设计或者是一些更为深入的东西,对于其入门使用的介绍性的文档并不多,就写了这么一篇。
Lucene基本使用介绍
本文的目的不在于对Lucene的概念和设计这些
阅读(1126)
评论(1)
2006-04-21 15:23
在聊这个技术问题前,我不由得想起一个可笑的故事。NetCraft曾经做了一个测评,这个测评根据比较大量网站页面的扩展名是ASP.NET的还是JSP/Servlet的,得到了一个结论,现在ASP.NET的应用超过了JSP/Servlet。 这个测评
阅读(795)
评论(1)
2006-04-03 13:18
1.svn 命令简要HOWTO
摘要:
svnadmin create myProject
svnadmin dump /path/to/svnroot > /backup/svnBackup_20060101.dumpf
阅读(585)
评论(1)
2006-03-17 14:44
build.xml主要节点:
proejct 项目 name 指定工程名称 default 指定默认的target(即任务) basedir 指定系统的基本路径
property 属性,类似于全局变量 name 变量名称 value 变量值
阅读(563)
评论(1)
2006-01-11 16:34
简单的Log4j使用只需要导入下面的包就可以了 // import log4j packages import org.apache.log4j.Logger; 然后你需要在类的开头写上下面一句 private final static Log
阅读(477)
评论(1)
2006-01-10 13:05
** BEGIN NESTED EXCEPTION **java.sql.SQLExceptionMESSAGE: null, message from server: "Host 'localhost.localdomain' is not allo
阅读(771)
评论(1)
2006-01-07 11:42
用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式: ... Process process = Runtime.
阅读(2491)
评论(9)
2006-01-06 11:43
1、引言 基于Web技术的Internet/Intranet近年来已经得到了广泛的应用,Intranet是以TCP/IP协议为基础、以Web为核心的企业内 部网,用户通过低成本、简单易用的客户浏览器就能随时随地到企业的Web站点上查阅自己所需的数
阅读(926)
评论(1)
2006-01-04 16:55
文章评论更多