深刻分析Java Web技術(2) IO

IO是當今Web面臨的主要問題之一,能夠說,大部分web應用的瓶頸都是IO的瓶頸。java

Java的IO類是java.io.它包含有80多個類,分爲4大部分:web

  • 基於字節操做: InputStream,OutputStream
  • 基於字符操做: Writer 和Reader
  • 基於磁盤操做: File
  • 基於網絡操做: Socket

 

1、基於字符的IO操做

無論是網絡傳輸仍是磁盤,最小的存儲單元都是字節,而不是字符,那爲何還有字符的處理呢?這是由於咱們程序中操做的單位通常都是字符,而不是字節,而將字符轉換爲字節又是須要時間的,而且編解碼的問題常常容易引發亂碼。數組

InputStreamReader是將字節到字符進行轉換的橋樑。另外,須要注意的是要指定轉換的字符集,不然很是容易引發亂碼的問題。而StreamDecoder是完成字節到字符解碼的類,緩存

這是一個讀取文件的實現方式,FileReader繼承了InputStreamer,將一個文件流讀入字符集buf中,經過StreamDecoder完成字節的解碼操做。網絡

訪問文件的方式:

(1)標準訪問方式:異步

 

 

    (讀操做  》)spa

磁盤 --  緩存 -- 內核空間線程

    (《 寫操做)code

(2)直接IO操做對象

(3)同步訪問

顧名思義,文件的讀寫操做是同步的,必須等到文件讀寫成功後纔會返回標誌,通常用於特別重要的數據的讀寫

(4)異步訪問

和同步訪問相反,當讀寫線程發出請求以後,會接着去處理其餘的事情,而不會阻塞。這種訪問方式會提升應用程序的了效率,但不會改變文件的讀寫效率

(5)內存映射

Java讀寫磁盤文件


Java中一般的File 並不表明一個真實存在的文件對象,當你制定一個描述符的時候,他就會返回一個表明這個路徑的虛擬對象,它多是一個真實存在的對象,也多是一個包含多個文件的目錄。只有在讀寫文件的時候,咱們纔會檢查是否存在這個文件 。

序列化

Java序列化是將一個Java對象轉換爲一串二進制字符數組,經過轉移或保存字節數組達到持久化的目的。

 

 未完 ......

 

關鍵字:  序列化

 

參考: 《深刻分析Java 技術內幕》

相關文章
相關標籤/搜索