bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

java緩沖輸出流的方法是什么

本篇內容介紹了“java緩沖輸出流的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創新互聯公司主營息縣網站建設的網絡公司,主營網站建設方案,成都APP應用開發,息縣h5微信小程序開發搭建,息縣網站營銷推廣歡迎息縣等地區企業咨詢

BFOS 的構造需要傳入一個字節輸出流。

基本用法

這個流的功能可以根據名字看出來,是一個緩沖輸出流,可以當做一個緩沖區,將輸出的字節暫時存在緩沖區里,那么當緩沖區滿了之后干嘛呢?那就需要將緩沖的數據都刷出去,刷到另一個流,因此在構造的時候就需要傳入一個流。

有點類似游泳池,水滿了,就將水全部放掉,再灌新水。為了將水放掉,就需要給一個輸出的目的地,這個目的地就是構造方法中需要傳入的下游的輸出流。其默認的緩沖區大小是 8KB。

java緩沖輸出流的方法是什么

注意這個過程,當寫到8KB時,數據還存在 BFOS 中,只要再寫一個字節,就將之前緩沖滿的全部刷出去。如果緩沖區還沒滿就想將數據寫出去,需要手動 flush。

完整示例如下,這里我們的下游流用了個內存數組流,并隨時查看內存數組流的數據量。

java緩沖輸出流的方法是什么

運行結果:

0
8192
8195

之前介紹過列式存儲文件格式:大數據的列式存儲格式:Parquet

每一列的數據需要在內存中用一個緩沖區管理,如果文件只有一列,那就需要一個緩沖區,如果文件有多列,則需要多個緩沖區。在這里我們用單緩沖區多緩沖區來區分。之前我們的緩沖區用的是 BAOS,參考 java 字節流入門(內存數組流->文件流)。那用 BFOS 可不可以?

單緩沖區

假如我們在內存中只需要維護一個緩沖區的數據,即一個字節數組。當我們想寫磁盤時,需要將 FOS 包裝一層 BAOS 或 BFOS,為了防止過多小數據量的寫操作,因此在內存中做個緩沖,將很多小數據量寫操作轉化成很少的大數據量寫操作,充分利用磁盤的IO。

先比比速度,BFOS+FOS vs BAOS + FOS (內存中只維護一個 BAOS 或一個 BFOS ,并接一個文件輸出流)哪種比較快?

做了個實驗,將800M數據通過兩種方式寫到文件中:

BufferedOutputStream + FileOutputStream

java緩沖輸出流的方法是什么

ByteArrayOutputStream + FileOutputStream

java緩沖輸出流的方法是什么

結果:BFOS + FOS 勝出。

java緩沖輸出流的方法是什么

BFOS 比 BAOS 還有一個好處,那就是可以控制內存使用,不會無限制占用內存。這是在單個數據緩沖區的時候,即內存中只有一份緩沖數據。

多緩沖區

假如內存中需要維護多個緩沖區,每份緩沖區負責不同的數據,對應到列式存儲中就是兩列,都需要寫到一個文件中,那么 BFOS+FOS 和 BAOS+FOS 這兩種搭配有啥區別?

由于 BFOS 的刷文件是由緩沖區滿觸發的,我們用橙色和紅色區分兩個緩沖流。假如緩沖流的緩沖區大小為 8KB,每個緩沖流都接收了 24KB 的數據,但是數據并不是均勻來的,因此刷到文件中的順序是不固定的,也就是每個流會隨機觸發 3 次 flush。圖中 File 里每一小段是 8KB。兩個流最多需要的內存是 16KB。

java緩沖輸出流的方法是什么

而使用 BAOS + FOS,假如需要明確將紅黃兩種數據分開存儲,不能互相交叉,則最多需要在內存中緩存 48KB 數據,等一個流緩沖了 24KB 后再寫文件。這樣就可以將紅黃兩種數據分隔開,但是先后順序不確定。

java緩沖輸出流的方法是什么

如果將紅黃分開是功能要求,在這種場景下,就必須使用 BAOS。

“java緩沖輸出流的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!

當前標題:java緩沖輸出流的方法是什么
當前URL:http://vcdvsql.cn/article46/pcdieg.html

成都網站建設公司_創新互聯,為您提供云服務器、網站內鏈、企業建站網頁設計公司、建站公司微信小程序

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發