- NIO與Socket編程技術指南
- 高洪巖
- 1464字
- 2019-01-05 05:42:02
Preface前言
為什么要寫這本書
早在幾年前,筆者就曾想過整理一份基于Java語言的NIO與Socket相關的稿件,因為市面上大部分的Java書籍都是以1章或2章的篇幅介紹NIO與Socket技術,并沒有完整地覆蓋該技術的知識點,而限于當時的時間及精力,一直沒有如愿。
機會終于來了,公司要搭建基礎構架知識體系,我負責公司該技術方向的培訓,這重燃了我對NIO和Socket技術的熱情。在學習Java技術的過程中,當學習了Java SE/Java EE之后想探索更深層次的技術,如大數據、分布式和高并發類等,可能會遇到針對NIO、Socket的學習,但NIO和Socket技術的學習并不像JDBC一樣簡單,學習NIO和Socket時可能要遇到很多的問題。為了在該技術領域有更高的追求,我將NIO和Socket的技術點以教案的方式進行了整理,并在公司中與同事一起進行學習和交流,同事的反響非常熱烈。若干年前的心愿終于達成,同事們也很期待這本書能早日出版發行,那樣他們就有真正的紙質參考資料了。希望本書能夠受到其他學習NIO和Socket的讀者喜愛,這是我最大的心愿。
本書介紹NIO和Socket開發中最值得關注的內容,并給出個人的一些想法和見解,希望拓寬讀者的學習思路。
在學習NIO和Socket技術之前,建議先了解一下多線程與并發相關的知識,這對設計和理解代碼有非常大的幫助。多線程方面的資料推薦《Java多線程編程核心技術》,并發相關的資料推薦《Java并發編程:核心方法與框架》,這兩本書都是筆者編著的,希望可以給讀者帶來一些幫助。
本書特色
在本書寫作的過程中,我盡量做到言簡意賅,并且全部用演示案例的方式來講解技術知識點,使讀者看到代碼及運行結果后就可以知道此項目要解決的是什么問題。這類似于網絡中的博客風格,讓讀者用最短的時間學習知識點,明白知識點的應用方式及使用時的注意事項,取得快速學習并解決相應問題的效果。
讀者對象
?Java程序員
?系統架構師
?大數據開發者
?其他對NIO和Socket技術感興趣的人員
如何閱讀本書
本著實用、易懂的學習原則,本書通過6章內容來介紹Java多線程相關的技術。
第1章介紹NIO技術中的緩沖區,包括Buffer、ByteBuffer、CharBuffer類的核心API的使用。
第2章介紹NIO技術中的Channel(通道)類的繼承關系、核心接口的作用,并重點介紹FileChannel類的使用,以增加讀者對NIO操作File類的熟悉度。
第3章介紹如何使用NetworkInterface類獲得網絡接口的信息,包括IP地址、子網掩碼等,還會介紹InetAddress和InterfaceAddress類的常見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高級程序員、架構師等必須要掌握的技術。
勘誤和支持
由于筆者的水平有限,加之編寫倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正,期待能夠得到你們的真摯反饋,在技術之路上互勉共進。若讀者想與我進行技術交流,可發電子郵件到279377921@qq.com。
致謝
感謝所在單位領導的支持與厚愛,使我在技術道路上更有信心。
感謝機械工業出版社華章公司的高婧雅,始終支持我的寫作,你是我最愛的編輯。因為你們的鼓勵和幫助,所以我才會如此順利地完成了這本書的寫作。
高洪巖