本篇內(nèi)容介紹了“Netty中流基礎(chǔ)知識(shí)點(diǎn)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),包括網(wǎng)站制作、做網(wǎng)站、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷(xiāo)策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷(xiāo)等。成都創(chuàng)新互聯(lián)為不同類(lèi)型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,成都創(chuàng)新互聯(lián)核心團(tuán)隊(duì)十多年專(zhuān)注互聯(lián)網(wǎng)開(kāi)發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹(shù)立了良好口碑。
一、同步阻塞I/O(BIO block io)
jdk1.4之前就一個(gè)io流,服務(wù)器實(shí)現(xiàn)模式為一個(gè)連接一個(gè)線程,即客戶端有連接請(qǐng)求時(shí)服務(wù)器就需要啟動(dòng)一個(gè)線程進(jìn) 行處理,如果這個(gè)連接不做任何事情會(huì)造成不必要的線程開(kāi)銷(xiāo),可以通過(guò)線程池機(jī)制來(lái)改善。BIO方式適用于連接數(shù)目比較 小且固定的架構(gòu),這種方式對(duì)服務(wù)端資源要求比較高,并發(fā)局限于應(yīng)用中。
二、 同步非阻塞I/O(NIO)
Java NIO(New IO)是從Java 1.4版本開(kāi)始引入的 一個(gè)新的IO API,可以替代標(biāo)準(zhǔn)的Java IO API。 NIO與原來(lái) 的IO有同樣的作用和目的,但是使用 的方式完全不同,NIO支持面向緩沖區(qū)的、基于 通道的IO操作。NIO將以更加高效的方 式進(jìn)行文 件的讀寫(xiě)操作。
三、異步非阻塞I/O(AIO)
異步非阻塞I/O,服務(wù)器實(shí)現(xiàn)模式為一個(gè)有效請(qǐng)求一個(gè)線程,客戶端的IO請(qǐng)求都是由操作系統(tǒng)先完成了再通知服務(wù)器用其 啟動(dòng)線程進(jìn)行處理。AIO方式適用于連接數(shù)目多且連接比較長(zhǎng)(重操作)的架構(gòu),比如相冊(cè)服務(wù)器,充分調(diào)用OS參與并發(fā)操作, 編程比較復(fù)雜,jdk1.7開(kāi)始支持。
四、同步與異步的區(qū)別
同步:一個(gè)人只能先上完小學(xué)才能上初中,上完初中才能上高中,最后才可以大學(xué),一步一步來(lái),這是同步。異步:一個(gè)人可以一邊聽(tīng)歌,也可以一邊玩游戲,兩種動(dòng)作可以同時(shí)進(jìn)行
五、NIO與IO的區(qū)別
1、定義
client(客戶端)和server(服務(wù)端),把數(shù)據(jù)client傳送到server,或者server傳送到client,就相當(dāng)于怎么上?;疖?chē)站 的人群運(yùn)輸?shù)奖本┗疖?chē)站,或者北京車(chē)站運(yùn)輸?shù)缴虾;疖?chē)站。 channel:北京上海之間的鐵軌 buffer: 火車(chē)(可以有多個(gè)型號(hào)的火車(chē))
2.1 Buffer(緩沖區(qū))
在Java NIO中負(fù)責(zé)數(shù)據(jù)的存取,緩沖區(qū)就是數(shù)組,用于存儲(chǔ)不同數(shù)據(jù)類(lèi)型的數(shù)據(jù),根據(jù)數(shù)據(jù)類(lèi)型不同,提供了響應(yīng) 類(lèi)型的緩沖區(qū):ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、 DoubleBuffer,通過(guò) allocate() 獲取緩沖區(qū)。
2.2 Channel(通道)
Channel類(lèi)似于傳送的流,只不過(guò)Channel本身不能直接訪問(wèn)數(shù)據(jù),Channel只能與Buffer進(jìn)行交互,簡(jiǎn) 而言之,Channel 負(fù)責(zé)傳輸, Buffer 負(fù)責(zé)存儲(chǔ)。
一、Path
booleanendsWith(Stringpath) | 判斷是否以path路徑結(jié)束 |
booleanstartsWith(Stringpath) | 判斷是否以path路徑開(kāi)始 |
boolean isAbsolute() | 判斷是否是絕對(duì)路徑 |
PathgetFileName() | 返回與調(diào)用Path對(duì)象關(guān)聯(lián)的文件名 |
Path getName(int idx) | 返回的指定索引位置 idx 的路徑名稱 |
intgetNameCount() | 返回Path根目錄后面元素的數(shù)量 |
PathgetParent() | 返回Path對(duì)象包含整個(gè)路徑,不包含Path對(duì)象指定的文件路徑 |
PathgetRoot() | 返回調(diào)用Path對(duì)象的根路徑 |
Path resolve(Path p) | 將相對(duì)路徑解析為絕對(duì)路徑 |
PathtoAbsolutePath() | 作為絕對(duì)路徑返回調(diào)用Path對(duì)象 |
StringtoString() | 返回調(diào)用Path對(duì)象的字符串表示形式 |
二、Paths
java.nio.file.Files 用于操作文件或目錄的工具類(lèi)。
方法 | 描述 |
---|---|
Path get(String first, String ... more) | Paths提供的get()方法用來(lái)獲取Path對(duì)象,用于將多個(gè)字符串串連成路徑 |
Path copy(Path src, Path dest, CopyOption ... how) | 文件的復(fù)制 |
Path createDirectory(Path path, FileAttribute<?> ... attr) | 創(chuàng)建一個(gè)目錄 |
Path createFile(Path path, FileAttribute<?> ... arr) | 創(chuàng)建一個(gè)文件 |
void delete(Path path) | 刪除一個(gè)文件 |
Path move(Path src, Path dest, CopyOption...how) | 將 src 移動(dòng)到 dest 位置 ? long size(Path path) : 返回 path 指定文件的大小 |
boolean exists(Path path, LinkOption ... opts) | 判斷文件是否存在 |
boolean isDirectory(Path path, LinkOption ... opts) | 判斷是否是目錄 |
boolean isExecutable(Path path) | 判斷是否是可執(zhí)行文件 |
boolean isHidden(Path path) | 判斷是否是隱藏文件 |
boolean isReadable(Path path) | 判斷文件是否可讀 |
boolean isWritable(Path path) | 判斷文件是否可寫(xiě) |
boolean notExists(Path path, LinkOption ... opts) | 判斷文件是否不存在 |
三、Files操作內(nèi)容方法
SeekableByteChannel newByteChannel(Path path, OpenOption...how) | 獲取與指定文件的連接,how 指定打開(kāi)方式。 |
DirectoryStream newDirectoryStream(Path path) | 打開(kāi) path 指定的目錄 |
InputStream newInputStream(Path path, OpenOption...how) | 獲取 InputStream 對(duì)象 |
OutputStream newOutputStream(Path path, OpenOption...how) | 獲取 OutputStream 對(duì)象 |
1、讀取
@Test public void readeFile() { FileInputStream input = null; String result = ""; try { //1.根據(jù)path實(shí)例化一個(gè)輸入流的對(duì)象 input = new FileInputStream("/Users/tentsuuhou/Desktop/潛臺(tái)詞.txt"); //2.返回這個(gè)輸入流中可以被讀的剩下的bytes字節(jié)的估計(jì)值; int size = input.available(); //3.根據(jù)輸入流的字節(jié)創(chuàng)建一個(gè)byte數(shù)組 byte[] array = new byte[size]; //4.把數(shù)據(jù)讀取到byte數(shù)組中 input.read(array); //5.根據(jù)獲取的byte數(shù)組新建一個(gè)字符串,然后輸出 result = new String(array); System.out.println(result); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(input != null){ try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } }
2、寫(xiě)入
@Test public void writeFile() { FileOutputStream out = null; String content = "我愛(ài)開(kāi)源中國(guó)"; try { //1.根據(jù)路徑創(chuàng)建輸出流對(duì)象 out = new FileOutputStream("/Users/tentsuuhou/Desktop/777.txt") ; //2.把String字符串轉(zhuǎn)換成byte數(shù)組; byte[] b = content.getBytes(); //3.把byte數(shù)組輸出 out.write(b); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } }
“Netty中流基礎(chǔ)知識(shí)點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
當(dāng)前題目:Netty中流基礎(chǔ)知識(shí)點(diǎn)有哪些
文章轉(zhuǎn)載:http://jinyejixie.com/article28/ggggcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、小程序開(kāi)發(fā)、網(wǎng)站改版、響應(yīng)式網(wǎng)站、定制網(wǎng)站、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)