您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Netty中流基礎知識點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、同步阻塞I/O(BIO block io)
jdk1.4之前就一個io流,服務器實現(xiàn)模式為一個連接一個線程,即客戶端有連接請求時服務器就需要啟動一個線程進 行處理,如果這個連接不做任何事情會造成不必要的線程開銷,可以通過線程池機制來改善。BIO方式適用于連接數(shù)目比較 小且固定的架構,這種方式對服務端資源要求比較高,并發(fā)局限于應用中。
二、 同步非阻塞I/O(NIO)
Java NIO(New IO)是從Java 1.4版本開始引入的 一個新的IO API,可以替代標準的Java IO API。 NIO與原來 的IO有同樣的作用和目的,但是使用 的方式完全不同,NIO支持面向緩沖區(qū)的、基于 通道的IO操作。NIO將以更加高效的方 式進行文 件的讀寫操作。
三、異步非阻塞I/O(AIO)
異步非阻塞I/O,服務器實現(xiàn)模式為一個有效請求一個線程,客戶端的IO請求都是由操作系統(tǒng)先完成了再通知服務器用其 啟動線程進行處理。AIO方式適用于連接數(shù)目多且連接比較長(重操作)的架構,比如相冊服務器,充分調(diào)用OS參與并發(fā)操作, 編程比較復雜,jdk1.7開始支持。
四、同步與異步的區(qū)別
同步:一個人只能先上完小學才能上初中,上完初中才能上高中,最后才可以大學,一步一步來,這是同步。異步:一個人可以一邊聽歌,也可以一邊玩游戲,兩種動作可以同時進行
五、NIO與IO的區(qū)別
1、定義
client(客戶端)和server(服務端),把數(shù)據(jù)client傳送到server,或者server傳送到client,就相當于怎么上?;疖囌? 的人群運輸?shù)奖本┗疖囌?,或者北京車站運輸?shù)缴虾;疖囌尽? channel:北京上海之間的鐵軌 buffer: 火車(可以有多個型號的火車)
2.1 Buffer(緩沖區(qū))
在Java NIO中負責數(shù)據(jù)的存取,緩沖區(qū)就是數(shù)組,用于存儲不同數(shù)據(jù)類型的數(shù)據(jù),根據(jù)數(shù)據(jù)類型不同,提供了響應 類型的緩沖區(qū):ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、 DoubleBuffer,通過 allocate() 獲取緩沖區(qū)。
2.2 Channel(通道)
Channel類似于傳送的流,只不過Channel本身不能直接訪問數(shù)據(jù),Channel只能與Buffer進行交互,簡 而言之,Channel 負責傳輸, Buffer 負責存儲。
一、Path
booleanendsWith(Stringpath) | 判斷是否以path路徑結束 |
booleanstartsWith(Stringpath) | 判斷是否以path路徑開始 |
boolean isAbsolute() | 判斷是否是絕對路徑 |
PathgetFileName() | 返回與調(diào)用Path對象關聯(lián)的文件名 |
Path getName(int idx) | 返回的指定索引位置 idx 的路徑名稱 |
intgetNameCount() | 返回Path根目錄后面元素的數(shù)量 |
PathgetParent() | 返回Path對象包含整個路徑,不包含Path對象指定的文件路徑 |
PathgetRoot() | 返回調(diào)用Path對象的根路徑 |
Path resolve(Path p) | 將相對路徑解析為絕對路徑 |
PathtoAbsolutePath() | 作為絕對路徑返回調(diào)用Path對象 |
StringtoString() | 返回調(diào)用Path對象的字符串表示形式 |
二、Paths
java.nio.file.Files 用于操作文件或目錄的工具類。
方法 | 描述 |
---|---|
Path get(String first, String ... more) | Paths提供的get()方法用來獲取Path對象,用于將多個字符串串連成路徑 |
Path copy(Path src, Path dest, CopyOption ... how) | 文件的復制 |
Path createDirectory(Path path, FileAttribute<?> ... attr) | 創(chuàng)建一個目錄 |
Path createFile(Path path, FileAttribute<?> ... arr) | 創(chuàng)建一個文件 |
void delete(Path path) | 刪除一個文件 |
Path move(Path src, Path dest, CopyOption...how) | 將 src 移動到 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) | 判斷文件是否可寫 |
boolean notExists(Path path, LinkOption ... opts) | 判斷文件是否不存在 |
三、Files操作內(nèi)容方法
SeekableByteChannel newByteChannel(Path path, OpenOption...how) | 獲取與指定文件的連接,how 指定打開方式。 |
DirectoryStream newDirectoryStream(Path path) | 打開 path 指定的目錄 |
InputStream newInputStream(Path path, OpenOption...how) | 獲取 InputStream 對象 |
OutputStream newOutputStream(Path path, OpenOption...how) | 獲取 OutputStream 對象 |
1、讀取
@Test public void readeFile() { FileInputStream input = null; String result = ""; try { //1.根據(jù)path實例化一個輸入流的對象 input = new FileInputStream("/Users/tentsuuhou/Desktop/潛臺詞.txt"); //2.返回這個輸入流中可以被讀的剩下的bytes字節(jié)的估計值; int size = input.available(); //3.根據(jù)輸入流的字節(jié)創(chuàng)建一個byte數(shù)組 byte[] array = new byte[size]; //4.把數(shù)據(jù)讀取到byte數(shù)組中 input.read(array); //5.根據(jù)獲取的byte數(shù)組新建一個字符串,然后輸出 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、寫入
@Test public void writeFile() { FileOutputStream out = null; String content = "我愛開源中國"; try { //1.根據(jù)路徑創(chuàng)建輸出流對象 out = new FileOutputStream("/Users/tentsuuhou/Desktop/777.txt") ; //2.把String字符串轉換成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中流基礎知識點有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。