`
裴小星
  • 浏览: 267769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8ccf5db2-0d60-335f-a337-3c30d2feabdb
Java NIO翻译
浏览量:27946
F3e939f0-dc16-3d6e-8c0b-3315c810fb91
PureJS开发过程详解
浏览量:75325
07a6d496-dc19-3c71-92cf-92edb5203cef
MongoDB Java ...
浏览量:63539
社区版块
存档分类
最新评论

JAVA NIO 全书 译稿

阅读更多

JAVA NIO 全书 译稿 

 

 

前言 

 

  本书介绍了Java平台上的高级输入/输出,具体点说,就是使用Java 2标准版(J2SE)软件开发包(SDK1.4及以后版本进行的输入/输出。J2SE 1.4版代号Merlin,包含可观的I/O新特性,对此我们将作详细论述。这些新的I/O特性主要包含在java.nio软件包及其子包中,并被命名为New I/ONIO)。通过本书,您将学会如何使用这些令人兴奋的新特性来极大地提升Java应用程序的I/O效率。   

 

 

第一章 简介 

 

  面向对象的程序设计讲的无非就是封装。封装是个好东西:它分解任务,隐藏实施细节,提高对象的重复利用率。这样的分解、整合既适用于程序,也适用于程序员。您没准就是一位技艺高超的Java程序员,创建极其复杂的对象,完成惊世骇俗的任务,而对支撑Java平台的基本I/O概念却几乎一无所知。本章,我们暂且把封装问题抛在一边,先来看看某些底层I/O实施细节,希望有助于你更好地组织协调各个零部件的I/O操作。

   

第二章 缓冲区 

 

  一个Buffer对象是固定数量的数据的容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区如我们在第一章所讨论的那样被写满和释放。对于每个非布尔原始数据类型都有一个缓冲区类。尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可以在后台执行从字节或到字节的转换,这取决于缓冲区是如何创建的。我们将在本章节后面的部分检查缓冲区数据存储的含义。

  缓冲区的工作与通道紧密联系。通道是I/O传输发生时通过的入口,而缓冲区是这些数据传输的来源或目标。对于离开缓冲区的传输,您想传递出去的数据被置于一个缓冲区,被传送到通道。对于传回缓冲区的传输,一个通道将数据放置在您所提供的缓冲区中。这种在协同对象(通常是您所写的对象以及一到多个Channel对象)之间进行的缓冲区数据传递是高效数据处理的关键。通道将在第三章被详细涉及。  

 

第三章 通道 

 

  Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。

  多数情况下,通道与操作系统的文件描述符(File Descriptor)和文件句柄(File Handle)有着一对一的关系。虽然通道比文件描述符更广义,但您将经常使用到的多数通道都是连接到开放的文件描述符的。Channel类提供维持平台独立性所需的抽象过程,不过仍然会模拟现代操作系统本身的I/O性能。

  通道是一种途径,借助该途径,可以用最小的总开销来访问操作系统本身的I/O服务。缓冲区则是通道内部用来发送和接收数据的端点。 

 

第四章 选择器 

 

   选择器(Selector)提供选择执行已经就绪的任务的能力,这使得多元I/O成为可能。就像在第一章中描述的那样,就绪选择和多元执行使得单线程能够有效率地同时管理多个I/O通道(channels)。

  有时我们需要采用快速检查大量资源中的任意一个是否需要关注,而在某些东西没有准备好时又不必被迫等待的通用模式。这种检查并继续的能力是可扩展性的关键,它使得仅仅使用单一的线程就可以通过就绪选择来监控大量的通道。
  选择器及相关的类就提供了这种 API,使得我们可以在通道上进行就绪选择。
 

 

第五章 正则表达式  

 

  本章我们将讨论新的程序包java.util.regex(见图5-1)中类的API(译注10)。JSR51,即Java规范请求(Java Specification Request),定义了新的I/O权能,它还明确了添加到Java平台上的正则表达式处理技术。尽管严格说来正则表达式并不是I/O,但是它们最常用于浏览从文件或数据流(stream)中读取的文本数据。

  Perl、egrep和其它文本处理工具有着功能强大的模式匹配(pattern matching),本章中你将学会如何使用新的Java API达到相同的模式匹配效果。  

 

第六章 字符集 

 

  在Java平台上,我们经常需要处理多种语言以及组成这些语言的多个字符。幸运的是,Java是第一个被广泛使用的编程语言,它使用内在的Unicode来表示字符。与以字节为导向的编程语言例如C或C++相比,Unicode的固有支持大大的简化了字符数据处理,但决不是自动地处理字符。您仍需要理解字符映射的工作原理以及如何处理多个字符集。 

 

 

  欢迎批评指正、探讨交流。

80
7
分享到:
评论
75 楼 DragonKiiiiiiiing 2016-04-13  
支持楼主,中国互联网太缺这种无私奉献的人了。您的这本书我已拜读,翻译的很不错,通俗易懂,专业性强但是某些时候还不缺反娱乐性语句,让人读起来很愉悦!
以后如果我掌握一定程度的专业知识,我觉得我也需要时常翻译或者写一些有深度文章。
74 楼 cfanllm 2014-05-18  
楼主辛苦了,,,谢谢分享啊
73 楼 join_wu 2014-03-13  
楼主 下载了 感谢
72 楼 BabyDuncan 2013-10-21  
确实挺牛逼
71 楼 aiquestion 2012-10-27  
大赞lz,之前只在网上找到过英文版的,英文的看的效率太低了。
70 楼 yangb2008 2012-08-12  
太棒了,我正找此类书籍,翻译的水平真棒,
69 楼 mifi_cheung 2012-07-04  
必须赞,楼主好人
68 楼 fengpy2009 2012-06-11  
67 楼 步青龙 2012-05-03  
谢楼主,感激不尽!
66 楼 sodmewuhan 2012-04-13  
LZ是好人
65 楼 jude_cn 2012-04-06  
正好需要!
64 楼 messon619 2012-03-20  
lz大哥真是好人啊,自己花大精力和时间去做翻译工作,还免费供大家下载学习!
63 楼 washheart163.com 2012-01-11  
踏实做事,成功做人
62 楼 mifi_cheung 2011-12-25  
顶啊,谢谢
61 楼 lynnkong 2011-12-19  
这年头肯花时间做好事的人越来越少咯
60 楼 zhfally520 2011-11-02  
楼主 太牛逼了
59 楼 cai555 2011-09-14  
帅呆了
58 楼 shujin 2011-09-07  
楼主辛苦了,楼主威武!
57 楼 forchase 2011-08-29  
LZ真是好人呀,不知道翻译这么多内容要花多少时间?
56 楼 zuchunlei2010 2011-08-25  
非常感谢,LZ真牛!

相关推荐

Global site tag (gtag.js) - Google Analytics