數據流
出自 MBA智库百科(https://wiki.mbalib.com/)
數據流(Data Stream)
目錄 |
什麼是數據流[1]
數據流的分類[2]
數據的性質、格式不同,則對流的處理方法也不同,因此,在Java的輸入/輸出類庫中,有不同的流類來對應不同性質的輸入/輸出流。在java.io包中,基本輸入/輸出流類可按其讀寫數據的類型之不同分為兩種:位元組流和字元流。
(1)輸入流與輸出流
數據流分為輸入流(InputStream)和輸出流(OutputStream)兩類。輸入流只能讀不能寫,而輸出流只能寫不能讀。通常程式中使用輸入流讀出數據,輸出流寫入數據,就好像數據流入到程式並從程式中流出。採用數據流使程式的輸入輸出操作獨立與相關設備。
輸入流可從鍵盤或文件中獲得數據,輸出流可向顯示器、印表機或文件中傳輸數據。
(2)緩衝流
為了提高數據的傳輸效率,通常使用緩衝流(Buffered Stream),即為一個流配有一個緩衝區(buffer),一個緩衝區就是專門用於傳輸數據的記憶體塊。當向一個緩衝流寫入數據時,系統不直接發送到外部設備,而是將數據發送到緩衝區。緩衝區自動記錄數據,當緩衝區滿時,系統將數據全部發送到相應的設備。
當從一個緩衝流中讀取數據時,系統實際是從緩衝區中讀取數據。當緩衝區空時,系統就會從相關設備自動讀取數據,並讀取儘可能多的數據充滿緩衝區。
數據流的基本操作[3]
1.生成數據流的基本過程
數據流由一系列的節點組成,當數據通過每個節點時,節點對它進行定義好的操作。建立數據流通常遵循以下4個步驟:
(1)向數據流區域增添新的節點;
(2)將這些節點連接到數據流中;
(3)設定數據節點或數據流的功能:
(4)運行數據流。
2.向數據流區域添加,刪除節點
當向數據流區域添加新的節點時,通過下麵3種方法均可實現:
(1)雙擊選項板區中待添加的節點。
(2)單擊待添加節點,按住滑鼠不放,將其拖入數據流區域內。
(3)先選中選項板區中待添加的節點,然後將滑鼠放入數據流區域,在滑鼠變為十字形時單擊數據流區域的任何空白處。
通過上面3種方法都將發現選中的節點出現在了數據流區域內。當不再需要數據流區域內的某個節點時,可以通過以下兩種方法來刪除:
(1)單擊待刪除的節點,按Delete鍵刪除。
(2)右擊待刪除的節點,在快捷菜單中選擇delete命令。
註意,刪除一個節點後,與之相連的所有連接也將一併被刪除。
3.將節點連接到數據流中
上面介紹了將節點添加到數據流區域的方法,然而要使節點真正發揮作用,需要把節點連接到數據流中。以下有3種方法可將節點連接到數據流中:
(1)雙擊節點。首先選中數據流中要連接新節點的節點(起始節點),然後雙擊選項板區中要添加到數據流的節點(目標節點),這樣新節點會出現在數據流區域,並自動建立從起始節點到目標節點的連接。
(2)通過Alt鍵連接。首先在數據流中選中連接起始節點,按住Alt鍵不放,然後用滑鼠將起始節點拖曳到目標節點後放開,連接便自動生成。
(3)手動連接。右擊待連接的起始節點,從彈出的快捷菜單中選擇“連接…”命令,然後用滑鼠單擊目標節點,連接便自動生成。
需要註意的是,並不是任何兩個節點之間都可以建立連接。
4.繞過數據流中的節點
當暫時不需要數據流中的某個節點時可以繞過該節點。在繞過它時,如果該節點既有輸入節點又有輸出節點,那麼它的輸入節點和輸出節點便直接相連;如果該節點沒有輸出結點,那麼繞過該節點時與這個節點相連的所有連接便被取消。
方法:按住Alt鍵不放,然後雙擊數據流中需要繞過的節點,如圖2所示。
5.將節點插入已存在的連接中
當需要在兩個已連接的節點中再插入一個節點時,可以用滑鼠將連接拖到要插入的節點上,即可將節點插入到連接中,如圖3所示。同時原來兩個節點間的連接被刪除。6.刪除連接
當某個連接不再需要時,可以通過以下兩種方法將其刪除:
(1)選擇待刪除的連接,右擊,從彈出的快捷菜單中選擇“刪除連接”命令。
(2)選擇待刪除連接的節點,按F3鍵,刪除所有連接到該節點上的連接。
7.數據流的執行
數據流構建好後要通過執行數據流數據才能從讀入開始流向各個數據節點。執行數據流的方法有以下3種。
(1)單擊菜單欄中的▶按鈕,數據流區域內的所有數據流將被執行。
(2)先選擇要輸出的數據流,再單擊菜單欄中的▶按鈕,被選的數據流將被執行。
(3)選擇要執行的數據流中的輸出節點,右擊,在彈出的快捷菜單中選擇“執行”命令,執行被選中的節點。
數據流描述方式[4]
一般使用持續賦值語句描述數據流程的運動路徑、運動方向和運動結果的設計方法,稱為數據流描述方法。
【例】module NAND2_G(A,B,F); //模塊聲明及輸入輸出埠列表
input A,B; //定義輸入埠
output F; //定義輸出埠
assign F=~(A&B); //數據流描述
endmodule //模塊結束
對於表達式assign F=~(A&B);右邊的操作數A、B無論何時發生變化,都會引起表達式值的重新計算,並將重新計算後的值賦予左邊的網線變數F。