Nio中的channel與Oio中的stream的區別
channel是雙向的,既可以讀,也可以寫。而stream是單向的,一個stream不可能同時讀同時寫,這樣也從java規範中不允許的,因為inputstream和outputstream都是抽象類,一個類不可能同時繼承兩個抽象類。
應用程式通過channel讀取外部資料(比如檔案),首先得獲取這個資料對應的channel,然後通過channel將資料寫入的buffer當中,不管這個buffer是堆內緩衝區還是直接緩衝區。應用程式操作的是這個buffer中的資料。
而應用程式通過stream讀取外部資料(比如檔案),首先獲取這個檔案對應的stream,然後直接從stream中獲取對應的資料。
channel可以在非同步非阻塞變成中使用,在讀取資料的過程中會產生相應的時事件,而stream只能在阻塞程式設計中使用。
在檔案操作中,channel可以通過FileStream的getChannel方法獲得,實現了nio與oio的相互轉換。
相關推薦
Nio中的channel與Oio中的stream的區別
channel是雙向的,既可以讀,也可以寫。而stream是單向的,一個stream不可能同時讀同時寫,這樣也從java規範中不允許的,因為inputstream和outputstream都是抽象類,一個類不可能同時繼承兩個抽象類。應用程式通過channel讀取外部資料(比如
hibernate架構之session中get與load方法的區別
r.java one 升級版 數據庫 apache appenders 進行 方法 main hibernate是一個用於連接數據庫的升級版JDBC,與一般JDBC不同的是,hibernate架構是通過hql進行查找,通過session建立連接。其工作原理是:將實例分為瞬時
nodejs中exports與module.exports的區別
ons src uri 技術分享 20px boolean 微軟雅黑 是否 不一定 [原文] 你肯定非常熟悉nodejs模塊中的exports對象,你可以用它創建你的模塊。例如:(假設這是rocker.js文件)exports.name = function() {
PHP中elseif與else if的區別
else elseif if 在PHP中,正常情況下elseif和else if的用法及效果是一樣的,但在使用帶冒號的if語句時(也就是php替代)情況會有點不一樣,比如:<?php /*正確的寫法*/ $a = 1; $b = 2; if ($a > $b): ec
201671010145 2016-2017-3《Java程序設計》Java中類與對象的區別
import -c indent cin ria wid let isp ans 1.什麽是類呢? 書面語句:類是一種事物,或者一類相同物體的抽象.類是對一個或者幾個相似對象的描述,它把不同對象具有的共性抽象出來.也可以說類是同一類對象的原型. 例如:人就是一個類,因為它是
Mysql 存儲引擎中InnoDB與Myisam的主要區別
sql mysq where條件 擴展 擴展名 sel 系統 sele sans innodb 支持事務功能,myisam 不支持。 Myisam 的執行速度更快,性能更好。 2、select ,update ,insert ,delete 操作 MyISAM:如果執行
Node.js中exports與module.exports的區別
個數 error: years 信息 輸出 一個數 mil 導出 原來 一、exports使用 test.js exports.name = function() { console.log(‘張三‘); }; index.js使用 var test= req
PyCharm中Directory與Python package的區別
ack 技術分享 direct sdn 自動創建 lan 自動 col 資源 PyCharm中Directory與Python package的區別 對於Python而言,有一點是要認識明確的,python作為一個相對而言輕量級的,易用的腳本語言(當然其功能並不僅限
Jenkins中 readFile 與 File.text 的區別
文件 tex roo asi 一個 readfile 對象 .get rail Jenkins中 獲取文件內容的方法有兩種 一個是 調用readFile(), 另一個是 new 一個File 對象,再調用 File 對象的text或者getText()方法 具體的請參考
Java中next與nextLine方法的區別
1. Java中的Scanner類中的方法next()與nextLine()都是吸取輸入控制檯輸入的字元 ①next()方法不會吸取字元前和後的空格/Tab,只吸取字元,開始吸取字元(字元前後不算) 直到遇到空格/Tab/回車擷取吸取 ②nextLine()吸取字元前後的空格/Tab鍵,回車鍵截
jquery中this與 this 的用法區別
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C#中bool與Boolean有什麼區別
首先結論:bool和Boolean(System.Boolean)是完全一樣的 MSDN中解釋bool與Boolean的關係是:bool關鍵字是System.Boolean的別名。實際使用無任何差別。它們的成員也是一樣的。
node.js中exports與module.exports的區別分析
前言 關於Node.js中的exports和module.exports,很多時候都比較容易讓人混淆,弄不清楚兩者間的區別。那麼我們就從頭開始理清這兩者之間的關係。 來源 在開發Node.js應用的時候,很多模組都是需要引入才能使用,但是為什麼exports和module.exports我們沒有引用卻可
MySQL中主表與副表的區別,級聯操作的運用
劃重點: 1 被約束的表稱為副表,約束別人的表稱為主表,外來鍵設定在副表上的。 2 主表被參考的欄位通常都設定為主鍵 3 當有外來鍵約束的時候,新增資料的順序:先加主表,再新增副表的資料 4 當有外來鍵約束的時候,修改資料的順序:先修改副表,再修改主表的資料 5 當有外來鍵約束
mysql中null與not null的區別及效率
<span style="font-family: 宋體; background-color: rgb(255, 255, 255);">經常用mysql的人可能會遇到下面幾種情況:</span> 1、我欄位型別是not null,為什麼我可以插入空值 2、為什麼not
Java中ClassLoader與Class.forName的區別
Java中ClassLoader與Class.forName的區別 package com.demo.classLoader; public class Main { public static void main(String[] args) {
QQA: Rust 中 Send 與 Sync 有什麼區別
Send 與 Sync 是兩個十分相近的 trait,它們是一起保證了 Rust 的執行緒安全,它們又有什麼異同點呢? (Quick Question and Answer 系列旨在對小問題做簡短解答) Send 表示資料能安全地被 move 到另一個執行緒 Sync 表示資料能在多個執行緒中被同時安全地
Python 中 "is" 與 "==" 操作有什麼區別?
在 Python 中,比較兩個物件(變數)是否相等,可以用 “is” 和 “==” 操作,但它倆有什麼區別?什麼時候用 “is”,什麼時候用 “==” ?在面試時,發現不少候選人很難把這兩者完全說清楚,因此在這篇文章中,「Python之禪」將對二者進行深入淺出的對比介紹。 先舉個例子 小黃最
資料庫中char與varchar型別的區別
在建立資料庫表結構的時候,為了給一個String型別的資料定義一個數據庫的資料庫型別,一般參考的都是char或者varchar,這兩種選擇有時候讓人很糾結,今天想總結一下它們兩者的區別,明確一下兩者的區別。 首先明確的是,char的長度是不可變的,而varchar的長度是可
FPGA中latency與delay概念的區別
最近學習流水線以及狀態機,總遇到注入加入暫存器可以分割組合邏輯,從而提高電路的執行頻率的說法;還有流水線可以提高速度的說法,剛開始很是疑惑,覺得流水線的方法,輸出與輸入之間的延時更大了,怎麼會提高頻率呢? 現在才明白是latency與delay的區別,按照自己的理解整理一下