您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Java核心技术系列 NIO与Socket编程技术指南
仅供非商业用途或交流学习使用技术畅销书作者撰写,掌握高并发与网络蝙程基石技术:NIO与Socket细化到特性级别,涵盖领域中核心技术,包括缓冲区、通道、选择器以及基于Socket的TCP/IP和UDP编程嘻罗=:血门NIO与Socket编程技术指南NIOandSocketProgrammingTechnicalGuide高洪岩著版-R山自业→J工-u械一-1封@L他1.....仅供非商业用途或交流学习使用内容简介技术畅销书作者撰写,掌握高并发与网络编程基石技术:NIO与Socket。细化到特性级别,涵盖缰;中区、通道、选择器以及基于Socket的TCP/IP和UDP编程。本书共6章,具体内窑如下。第1章讲解了NIO中的缰;中区,包括核心API的使用。第2章讲解了NIO中的Channel~i董类的继承关系、核心接口的作用,着重介绍FileChannel类的使用。第3章涵盖利用Netwo「klnte「face类藏得网络接口信息方法、lnetAdd「ess和lnte「faceAdd「ess类的常见API。第4章讲解使用Java语言实现Socket通信,基于TCP/IP和UDP协议进行实现。将相关类的全部API进行了介绍3学习后阅读相关的网络框架的源代码、Java高性能后台处理才不会迷茫。第5童讲解了NIO技术中非常重要的Selecto「选择器技术,“多路复用”精髓在此体现,本章也是大幅提升程序运行效率之关键。第6章i井解异步1/0(AIO),旨在NIO的基础上实现异步执行、回调处理等高级功能,是Java高级程序员、架构师等必须要掌握的技术。⑨E旦回供非商业用途或交流学习使用E画画”仅供非商业用途或交流学习使用仅供非商业用途或交流学习使用嘻PNIO与Socket编程技术指南NIOandSocketP「og「ammingTechnicalGuide高洪岩善r*1机械工业出版社气工fChinaMachineP「ess仅供非商业用途或交流学习使用仅供非商业用途或交流学习使用图书在版编自(CIP)数据NIO与Socket编程技术指南/高洪岩著.一北京:机械工业出版社,2018.7(Java核心技术系列)ISBN978-7111-60406-8I.N…II.高·Ill.JAVA语言一程序设计一指南IV.TP312.8-62中国版本图书馆CIP数据核字(2018)第141692号NIO与Socket编程技术指南出版发行:机械工业出版社(北京市西城区胃万庄大街22号邮政编码。100037)责任编辑:高娟雅责任校对:李秋荣印刷.三河市宏图印务有限公司开本:186mm×240mm1/16版次:2018年7月第1版第l次印刷印张:28.25书号:ISBN978-7-111-60406-8定价:99.00元凡购本书,如有缺页、倒页、脱页,由本社发行部调换客服热线(010)8837942688361066投稿热线(010)88379604购书热线:(010)683262948837964968995259读者信箱:hzit@hzbook.com版权所有·侵权必究封底无防伪标均为盗版本书法律顾问:北京大成律师耶务所韩光/邹晓东仅供非商业用途或交流学习使用仅供非商业用途或交流学习使用7冯你阶前__,』-E司为什么要写这本书早在几年前,笔者就曾想过整理一份基于Java语言的NIO与Socket相关的稿件,因为市面上大部分的Java书籍都是以l章或2章的篇幅介绍NIO与Socket技术,并没有完整地覆盖该技术的知识点,而限于当时的时间及精力,一直没有如愿。机会终于来了,公司要搭建基础构架知识体系,我负责公司该技术方向的培训,这重燃了我对NIO和Socket技术的热情。在学习Java技术的过程中,当学习了JavaSE/JavaEE之后想探索更深层次的技术,如大数据、分布式和高并发类等,可能会遇到针对NIO、Socket的学习,但NIO和Socket技术的学习并不像JDBC一样简单,学习NIO和Socket时可能要遇到很多的问题。为了在该技术领域有更高的追求,我将NIO和Socket的技术点以教案的方式进行了整理,并在公司中与同事一起进行学习和交流,同事的反响非常热烈。若干年前的心愿终于达成,同事们也很期待这本书能早日出版发行,那样他们就有真正的纸质参考资料了。希望本书能够受到其他学习NIO和Socket的读者喜爱,这是我最大的心愿。本书介绍NIO和Socket开发中最值得关注的内容,并给出个人的一些想法和见解,希望拓宽读者的学习思路。在学习NIO和Socket技术之前,建议先了解一下多线程与并发相关的知识,这对设计和理解代码有非常大的帮助。多线程方面的资料推荐《Java多线程编程核心技术》,并发相关的资料推荐《Java并发编程:核心方法与框架》,这两本书都是笔者编著的,希望可以给读者带来一些帮助。本书特色在本书写作的过程中,我尽量做到言简意贩,并且全部用演示案例的方式来讲解技术知仅供非商业用途或交流学习使用仅供非商业用途或交流学习使用IV识点,使读者看到代码及运行结果后就可以知道此项目要解决的是什么问题。这类似于网络中的博客风格,让读者用最短的时间学习知识点,明白知识点的应用方式及使用时的注意事项,取得快速学习并解决相应问题的效果。读者对象口Java程序员口系统架构师口大数据开发者口其他对NIO和Socket技术感兴趣的人员如何阅读本书本着实用、易懂的学习原则,本书通过6章内容来介绍Java多线程相关的技术。第l章介绍NIO技术中的缓冲区,包括Buffi町、ByteBuff1町、CharBuffer类的核心API的使用。第2章介绍NIO技术中的Channel(通道)类的继承关系、核心接口的作用,并重点介绍FileChannel类的使用,以增加读者对NIO操作File类的熟悉度。第3章介绍如何使用Networklnterface类获得网络接口的信息,包括IP地址、子网掩码等,还会介绍InetAddress和Interfac巳Address类的常见API。如果进行Java开发,且基于Socket技术,那么这章可以给你需要的信息。第4章介绍如何使用Java语言实现Socket通信。Socket通信是基于TCP/IP和UDP实现的。另外,将介绍ServerSocket、Socket、DatagramSocket和DatagramPacket类的全部API。只有熟练掌握Socket技术后,在阅读相关网络框架的源代码时才不会迷茫。也就是说,如果读者想要进行Java高性能后台处理,那么必须要学习Socket,并且它是进行细化学习的基础。第5章介绍NIO技术中最重要的Selector(选择器)技术。NIO技术的核心一一多路复用就是在此章体现的。学习这章内容需要有Socket的编程基础,这就是为什么在前面用两章篇幅来介绍Java的Socket编程的原因。同步非阻塞可以大幅度提升程序运行的效率,就在此章体会一下吧。第6章介绍AIO。AIO是异步IO,NIO是非阻塞IO。AIO在NIO的基础上实现了异步执行、回调处理等高级功能,可以在不同的场景使用AIO或NIO,可以说NIO和AIO是Java高级程序员、架构师等必须要掌握的技术。仅供非商业用途或交流学习使用v勘误和支持由于笔者的水平有限,加之编写仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正,期待能够得到你们的真挚反馈,在技术之路上互勉共进。若读者想与我进行技术交流,可发电子邮件到27937792l@qq.corn。致谢感谢所在单位领导的支持与厚爱,使我在技术道路上更有信心。感谢机械工业出版社华章公司的高婿雅,始终支持我的写作,你是我最爱的编辑。因为你们的鼓励和帮助,所以我才会如此顺利地完成了这本书的写作。高洪岩仅供非商业用途或交流学习使用目录。ote.11t;前言1.3.15使用List.toArray(T[])转成数组第1章缓冲区的使用......I1.1NIO概述……………........……..51.2缓冲区介绍…………………………61.3Buffer类的使用……············……...71.3.1包装数据与获得容量………···71.3.2限制获取与设置……………101.3.3位置获取与设置……………··121.3.4剩余空间大小获取…………··131.3.5使用Buffermark()方法处理标记......,..........………141.3.6知识点细化测试……………151.3.7判断只读····························221.3.8直接缓冲区………················221.3.9还原缓冲区的状态…………..231.3.10对缓冲区进行反转··……241.3.11判断是否有底层实现的数组…281.3.12判断当前位置与限制之间是否有剩余元素……··……………291.3.13重绕缓冲区…………··……301.3.14获得偏移量…………………·32类型…………………E………·331.4ByteBuffer类的使用··…....341.4.l创建堆缓冲区与直接缓冲区·351.4.2直接缓冲区与非直接缓冲区的运行效率比较………....371.4.3包装wrap数据的处理……·391.4.4put(byteb)和get()方法的使用与position自增特性……·40l.4.5put(byte[]src,intoffset,intlength)和get(byte[Jdst,intoffset,intlength)方法的使用…………·411.4.6put(byte[]src)和get(byte[]dst)方法的使用………E……·……··461.4.7put(intindex,byteb)和get(intindex)方法的使用与position不变………………·…491.4.8put但yteBuffersrc)方法的使用…501.4.9putType()和getType()方法的使用..................................511.4.l0slice()方法的使用与arrayOffSet()为非0的测试…·53仅供非商业用途或交流学习使用·~豆,1.4.11转换为CharBuffer字符缓冲区及中文的处理…·..........··541.4.12转换为其他类型的缓冲区…...581.4.13设置与获得字节顺序…………631.4.14创建只读缓冲区…………......651.4.15压缩缓冲区……………··…..651.4.16比较缓冲区的内容……··661.4.17复制缓冲区………-··…701.4.18对缓冲区进行扩容……··721.5CharBuffer类的API使用………….731.5.1重载append(char)/append(CharSequence)/append(CharSequence,sta扰,end)方法的使用…··…·731.5.2读取相对于当前位置的给定索引处的字符……………·741.5.3川(Stringsrc)、intread(CharBuffertarget)和subSequence(intstart,intend)方法的使用……..………..74l.5.4staticCharButferwrap(Char-Sequencecsq,intsta口,intend)方法的使用…E……··….....…··761.5.5获得字符缓冲区的长度………7616小结……-……………··………………77第2章通道和FileChannel类的使用.782.1通道概述…………·.................782.2通道接口的层次结构………..802.2.1AsynchronousChannel接口的介绍……………………m2.2.2AsynchronousByteChannel接口的介绍…E…………………·…84VII2.2.3ReadableByteChannel接口的介绍……………………………842.2.4
本文标题:Java核心技术系列 NIO与Socket编程技术指南
链接地址:https://www.777doc.com/doc-8721245 .html