大家肯定了解Java IO, 但是對于NIO一般是陌生的,而現(xiàn)在使用到NIO的場景越來越多,很多技術(shù)框架或多或少都會(huì)使用NIO技術(shù),如Tomcat,Jetty。
學(xué)習(xí)和掌握NIO技術(shù)已經(jīng)不是一個(gè)JAVA攻城獅的加分技能,而是一個(gè)必備技能。
Java NIO概述
早期程序受CPU影響較大,隨著CPU處理能力的提升,現(xiàn)在的程序性能更多受I/O操作的影響, 其實(shí)各大操作系統(tǒng)對I/O操作做了很多性能的改進(jìn),但是JVM為了保證java程序在各種平臺(tái)上運(yùn)行效果一致,把各種操作系統(tǒng)對I/O性能的提升給屏蔽了, 使得Java在I/O領(lǐng)域一直處于劣勢;
Java雖然有一套完備的I/O類,但是需要處理大量數(shù)據(jù)時(shí),卻可能對執(zhí)行效率造成致命傷害,傳統(tǒng)的I/O也不具備當(dāng)今大多數(shù)操作系統(tǒng)具備的常用功能,如文件鎖定,非阻塞I/O,內(nèi)存映射等, 所以Java在JDK1.4中引用了NIO,可以最大限度的滿足Java程序I/O的需求;
在NIO中有三大核心組件:
- Channel
- Buffer
- Selector
傳統(tǒng)的IO面向流的,每次可以從流中讀取一個(gè)或多個(gè)字節(jié),只能向后讀取,不能向前移動(dòng),NIO是面向緩沖區(qū)的,把數(shù)據(jù)讀到一個(gè)緩沖區(qū)中,可以在緩沖區(qū)中向前/向后移動(dòng),增加了程序的靈活性。
在NIO中,所有的數(shù)組都需要通過Channel傳輸,通道可以直接將一塊數(shù)據(jù)映射到內(nèi)存中。Channel是雙向的,不僅可以讀 取數(shù)據(jù), 還能保存數(shù)據(jù),程序不能直接讀寫Channel通道,Channel只與Buffer緩沖區(qū)交互;
為了讓大家不被高并發(fā)與大量連接、I/O處理問題所困擾,動(dòng)力節(jié)點(diǎn)推出了【NIO高效處理模型應(yīng)用教程】。
JavaNIO在線觀看:
??https://www.bilibili.com/video/BV1uq4y1j7Kv??
JavaNIO資料下載:
本套視頻基本內(nèi)容
1.?NIO的新特性
2.?如何使用這些特性來提升你所寫代碼的執(zhí)行效率
3.?如何才能充分挖掘新的I/O特性所具備的各種潛能
4.?剖析程序員所面臨的有代表性的I/O問題
本課程采用PDT4J教學(xué)法,通過案例讓大家學(xué)會(huì)如何使用這些功能來解決現(xiàn)實(shí)工作中常常遇到的I/O問題;
----------------------------------------------------
適應(yīng)人群:
至少學(xué)完了Java SE,對NIO編程感興趣,或者是有工作經(jīng)驗(yàn)的人群。
----------------------------------------------------
課程目錄:
第一章 NIO概述
1-1 程序讀取數(shù)據(jù)模型
1-2 NIO與傳統(tǒng)IO的區(qū)別
第二章 NIO之Buffer
2-1 緩沖區(qū)的常用屬性
2-2 Buffer常用的API
2-3 演示Buffer的基本操作
2-4 緩沖區(qū)的批量傳輸
2-5 緩沖區(qū)創(chuàng)建的兩種方式
2-6 緩沖區(qū)的復(fù)制與分隔
2-7 直接字節(jié)緩沖區(qū)
第三章 NIO之Channel
3-1 Channel概述
3-2 Scatter與Gather
3-3 FileChannel內(nèi)存映射文件
3-4 FileChannel雙向讀寫
3-5 FileChannel讀寫文件時(shí)緩沖區(qū)固定大小
3-6 FileChannel通道與通道之間的傳輸
3-7 Gather代碼演示
3-8 SeverSocketChannel服務(wù)器
3-9 SocketChannel客戶端
3-10 DatagramChannel數(shù)據(jù)接收端
3-11 DatagramChannel數(shù)據(jù)發(fā)送端
3-12 Pipe管道
第四章 NIO之Selector
4-1 Selector選擇器基礎(chǔ)1
4-2 Selector選擇器基礎(chǔ)2
4-3 SelectionKey選擇鍵常用方法
4-4 使用選擇器1
4-5 服務(wù)器端代碼模板
4-6 使用selector開發(fā)服務(wù)器端
4-7 開發(fā)客戶端
----------------------------------------------------