亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

關(guān)于Java IO與NIO知識都在這里

Riddler / 1645人閱讀

摘要:從通道進行數(shù)據(jù)寫入創(chuàng)建一個緩沖區(qū),填充數(shù)據(jù),并要求通道寫入數(shù)據(jù)。三之通道主要內(nèi)容通道介紹通常來說中的所有都是從通道開始的。從中選擇選擇器維護注冊過的通道的集合,并且這種注冊關(guān)系都被封裝在當中停止選擇的方法方法和方法。

由于內(nèi)容比較多,我下面放的一部分是我更新在我的微信公眾號上的鏈接,微信排版比較好看,更加利于閱讀。每一篇文章下面我都把文章的主要內(nèi)容給列出來了,便于大家學習與回顧。

Java面試通關(guān)手冊(Java學習指南) Github地址:https://github.com/Snailclimb/Java_Guide

IO流學習總結(jié)
一 Java IO,硬骨頭也能變軟 主要內(nèi)容:

(1) 按操作方式分類結(jié)構(gòu)圖:

(2)按操作對象分類結(jié)構(gòu)圖

二 java IO體系的學習總結(jié)

IO流的分類:

按照流的流向分,可以分為輸入流和輸出流;

按照操作單元劃分,可以劃分為字節(jié)流和字符流;

按照流的角色劃分為節(jié)點流和處理流。

流的原理淺析:

java Io流共涉及40多個類,這些類看上去很雜亂,但實際上很有規(guī)則,而且彼此之間存在非常緊密的聯(lián)系, Java Io流的40多個類都是從如下4個抽象類基類中派生出來的。

InputStream/Reader: 所有的輸入流的基類,前者是字節(jié)輸入流,后者是字符輸入流。

OutputStream/Writer: 所有輸出流的基類,前者是字節(jié)輸出流,后者是字符輸出流。

常用的io流的用法

三 Java IO面試題
NIO學習總結(jié)
一 Java NIO 概覽 主要內(nèi)容:

NIO簡介:

Java NIO 是 java 1.4, 之后新出的一套IO接口NIO中的N可以理解為Non-blocking,不單純是New。

NIO的特性/NIO與IO區(qū)別:

1)IO是面向流的,NIO是面向緩沖區(qū)的;

2)IO流是阻塞的,NIO流是不阻塞的;

3)NIO有選擇器,而IO沒有。

讀數(shù)據(jù)和寫數(shù)據(jù)方式:

從通道進行數(shù)據(jù)讀取 :創(chuàng)建一個緩沖區(qū),然后請求通道讀取數(shù)據(jù)。

從通道進行數(shù)據(jù)寫入 :創(chuàng)建一個緩沖區(qū),填充數(shù)據(jù),并要求通道寫入數(shù)據(jù)。

NIO核心組件簡單介紹

Channels

Buffers

Selectors

二 Java NIO 之 Buffer(緩沖區(qū)) 主要內(nèi)容:

Buffer(緩沖區(qū))介紹:

Java NIO Buffers用于和NIO Channel交互。 我們從Channel中讀取數(shù)據(jù)到buffers里,從Buffer把數(shù)據(jù)寫入到Channels;

Buffer本質(zhì)上就是一塊內(nèi)存區(qū);

一個Buffer有三個屬性是必須掌握的,分別是:capacity容量、position位置、limit限制。

Buffer的常見方法

Buffer clear()

Buffer flip()

Buffer rewind()

Buffer position(int newPosition)

Buffer的使用方式/方法介紹:

分配緩沖區(qū)(Allocating a Buffer):

ByteBuffer buf = ByteBuffer.allocate(28);//以ByteBuffer為例子

寫入數(shù)據(jù)到緩沖區(qū)(Writing Data to a Buffer)

寫數(shù)據(jù)到Buffer有兩種方法:

1.從Channel中寫數(shù)據(jù)到Buffer

int bytesRead = inChannel.read(buf); //read into buffer.

2.通過put寫數(shù)據(jù):

buf.put(127);

Buffer常用方法測試

說實話,NIO編程真的難,通過后面這個測試例子,你可能才能勉強理解前面說的Buffer方法的作用。

三 Java NIO 之 Channel(通道) 主要內(nèi)容:

Channel(通道)介紹

通常來說NIO中的所有IO都是從 Channel(通道) 開始的。

NIO Channel通道和流的區(qū)別:

FileChannel的使用

SocketChannel和ServerSocketChannel的使用

?DatagramChannel的使用

Scatter / Gather

Scatter: 從一個Channel讀取的信息分散到N個緩沖區(qū)中(Buufer).

Gather: 將N個Buffer里面內(nèi)容按照順序發(fā)送到一個Channel.

通道之間的數(shù)據(jù)傳輸

在Java NIO中如果一個channel是FileChannel類型的,那么他可以直接把數(shù)據(jù)傳輸?shù)搅硪粋€channel。

transferFrom() :transferFrom方法把數(shù)據(jù)從通道源傳輸?shù)紽ileChannel

transferTo() :transferTo方法把FileChannel數(shù)據(jù)傳輸?shù)搅硪粋€channel

四 Java NIO之Selector(選擇器) 主要內(nèi)容:

Selector(選擇器)介紹

Selector 一般稱 為選擇器 ,當然你也可以翻譯為 多路復用器 。它是Java NIO核心組件中的一個,用于檢查一個或多個NIO Channel(通道)的狀態(tài)是否處于可讀、可寫。如此可以實現(xiàn)單線程管理多個channels,也就是可以管理多個網(wǎng)絡鏈接。

使用Selector的好處在于: 使用更少的線程來就可以來處理通道了, 相比使用多個線程,避免了線程上下文切換帶來的開銷。

Selector(選擇器)的使用方法介紹

Selector的創(chuàng)建

Selector selector = Selector.open();

注冊Channel到Selector(Channel必須是非阻塞的)

channel.configureBlocking(false);
SelectionKey key = channel.register(selector, Selectionkey.OP_READ);

SelectionKey介紹

一個SelectionKey鍵表示了一個特定的通道對象和一個特定的選擇器對象之間的注冊關(guān)系。

從Selector中選擇channel(Selecting Channels via a Selector)

選擇器維護注冊過的通道的集合,并且這種注冊關(guān)系都被封裝在SelectionKey當中.

停止選擇的方法

wakeup()方法 和close()方法。

模板代碼

有了模板代碼我們在編寫程序時,大多數(shù)時間都是在模板代碼中添加相應的業(yè)務代碼。

客戶端與服務端簡單交互實例

五 Java NIO之擁抱Path和Files 主要內(nèi)容

一 文件I/O基石:Path:

創(chuàng)建一個Path

File和Path之間的轉(zhuǎn)換,F(xiàn)ile和URI之間的轉(zhuǎn)換

獲取Path的相關(guān)信息

移除Path中的冗余項

二 擁抱Files類:

Files.exists() 檢測文件路徑是否存在

Files.createFile() 創(chuàng)建文件

Files.createDirectories()和Files.createDirectory()創(chuàng)建文件夾

Files.delete()方法 可以刪除一個文件或目錄

Files.copy()方法可以吧一個文件從一個地址復制到另一個位置

獲取文件屬性

遍歷一個文件夾

Files.walkFileTree()遍歷整個目錄

歡迎關(guān)注我的微信公眾號:"Java面試通關(guān)手冊"(一個有溫度的微信公眾號,期待與你共同進步~~~堅持原創(chuàng),分享美文,分享各種Java學習資源):

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69430.html

相關(guān)文章

  • JDK10都發(fā)布了,nio你了解多少?

    摘要:而我們現(xiàn)在都已經(jīng)發(fā)布了,的都不知道,這有點說不過去了。而對一個的讀寫也會有響應的描述符,稱為文件描述符,描述符就是一個數(shù)字,指向內(nèi)核中的一個結(jié)構(gòu)體文件路徑,數(shù)據(jù)區(qū)等一些屬性。 前言 只有光頭才能變強 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 本來我預想是先來回顧一下傳統(tǒng)的IO模式的,將傳統(tǒng)的IO模式的相關(guān)類理清楚(因為IO的類很多)。 但是,發(fā)現(xiàn)在整理的過程已...

    YFan 評論0 收藏0
  • 好記性不如爛筆頭——NIO學習筆記

    摘要:該線程在此期間不能再干任何事情了。線程通訊線程之間通過等方式通訊。選擇器傳統(tǒng)的模式會基于服務器會為每個客戶端請求建立一個線程由該線程單獨負貴處理一個客戶請求。 本文是對NIO知識的歸納與整理 1.阻塞與同步 1)阻塞(Block)和非租塞(NonBlock): 阻塞和非阻塞是進程在訪問數(shù)據(jù)的時候,數(shù)據(jù)是否準備就緒的一種處理方式,當數(shù)據(jù)沒有準備的時候阻塞:往往需要等待缞沖區(qū)中的數(shù)據(jù)準備好...

    王偉廷 評論0 收藏0
  • Tomcat+Servlet面試題都在這里

    摘要:當被實例化后,會調(diào)用方法初始化這個對象處理服務。方式可以在請求的實體內(nèi)容中向服務器發(fā)送數(shù)據(jù),傳送的數(shù)據(jù)量無限制。不存在敏感信息泄露問題。并且依賴于名為的,該默認的屬性為。 下面是我整理下來的Servlet知識點: showImg(https://segmentfault.com/img/bV3c9e);? 圖上的知識點都可以在我其他的文章內(nèi)找到相應內(nèi)容。 Tomcat常見面試題 Tom...

    Tychio 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<