Ⅰ java的IO流中可以通過自定義一個數組來存儲數據,為什麼還要使用緩存區呢
IO流自定義位元組流的緩沖區:
思路:BufferedInputStream類中read()方法的工作原理
1)先一個一個從位元組流中讀取位元組,讀取一定量(自定義)之後,存儲在一個位元組數組(緩沖區)(FileInputStream.read(byte[] b)),並獲得存儲數量(read方法的返回值)。
2)一個一個位元組返回,返回一個,存儲數量減1,然後指針往後移一位,准備取下一個。
3)如果存儲數量為0 ,代表當前數組中所有數據已經全部取完,此時再來一次讀取(read(byte[] b)),再獲得此次存儲數量。
4)如果存儲數量(即read方法返回-1),代表讀到文件末尾,返回-1。
因此,需要用到以下幾個變數:
讀取的位元組數量,指向數組中准備取哪一個的指針,將要返回的位元組變數。
Ⅱ C語言中buffer到底是什麼意思是數組緩沖區為什麼一般C程序中都不定義他直接拿來用呢
Buffer是NodeJS的重要數據類型,很有廣泛的應用。代表原始堆的分配額的數據類型。在NodeJS中以類數組的方式使用。
在Buffer類的描述中,Buffer被定義為用於特定基本類型數據的容器,且是特定基本類型的線性優先元素序列。
Buffer提供了一個位元組緩沖區,它可以從channels中讀取數據到Buffer,也可以將Buffer中的數據寫入到channels,所以NIO被定義為面向緩沖區編程,而IO則是被定義為面向流的編程。
當一個緩存中的數據被多次讀取,實際上就減少了該數據從慢速設備中讀取的量,這就存在某種演算法去選擇什麼數據需要保存在cache中,因為盡可能多的讓cache命中能提高性能。
(2)數組和緩存區別擴展閱讀
Buffer類的四個變數
1、capacity
容量,必須初始化的值(因為底層是數組)
2、limit
上界,緩沖區的臨界區,即最多可讀到哪個位置
3、position
下標,當前讀取到的位置(例如當前讀出第5個元素,則讀完後,position為6)
4、mark
標記,備忘位置