程式設計師:JAVA NIO系列之基本概念

2021-01-19 程序猿的內心獨白

ava NIO(New IO)是從java 1.4版本開始引入的一個新的IO API,可以替代標準的java IO API。

NIO支持面向緩衝區的、基於通道的IO操作。NIO將以更加高效的方式進行文件的讀寫操作。

Sun官方標榜的特性如下:

為所有的原始類型提供(Buffer)緩存支持

字符集編碼解碼方案

Channel:一個新的原始I/O抽象

支持鎖和內存映射文件的文件訪問接口

提供多路(non-blocking)非阻塞式的高伸縮性網絡I/O

NIO的創建目的是為了讓Java程式設計師可以實現高速I/O而無需編寫自定義的本機代碼。NIO將最耗時的I/O操作(即填充和提取緩衝區)轉移回作業系統,因而可以極大地提高速度。

Java NIO和IO的主要區別

通道和緩衝區

Java NIO系統的核心在於:通道(Channel)和緩衝區(Buffer)。 通道表示打開IO設備(比如文件、套接字等)的連接。若需要使用NIO系統,需要獲取用於連接IO設備的通道以及用於容納數據的緩衝區。然後操作緩衝區對數據進行處理。

簡而言之。Channel負責傳輸,Buffer負責存儲。

相關焦點

  • java網絡編程系列之NIO編程
    2、出現了NIO既然BIO有這麼多的缺點,java官方肯定也明白,於是在jdk1.4的時候及時的加入了NIO。二、代碼實現1、基本概念在正式開始代碼的編寫之前,我們還要先認識一下涉及到的幾個類。(1)channel它相當於是一個通道,這個通道是流通數據的,我們既可以從通道中讀取數據,又可以寫數據到通道。
  • Java NIO 基礎知識
    在 Java 領域,一般性的文件操作確實只需要和 java.io 包打交道就可以了,尤其對於寫業務代碼的程式設計師來說。不過,當你寫了兩三年代碼後,你的業務代碼可能已經寫得很溜了,蒙著眼睛也能寫增刪改查了。這個時候,也許你會想要開始了解更多的底層內容,包括並發、JVM、分布式系統、各個開源框架源碼實現等,處於這個階段的程式設計師會開始認識到 NIO 的用處,因為系統間通訊無處不在。
  • 程式設計師:java NIO模型,三大核心原理,不防來看看
    NIO(1)基本介紹1)Java NIO全程 java non-blocking IO,是指JDK提供的新API。從JDK1.4開始,Java提供了一系列改進的輸入/輸出的新特性,被統稱為NIO,是同步非阻塞的2)NIO相關類都被放在java.nio包及子包下,並且對原java.io包中的很多類進行改寫3)NIO有三大核心部分:Channel(通道),Buffer(緩衝區),Selector(選擇器)4)NIO是面向緩衝區,或者面向塊編程的。
  • 黑馬程式設計師Java學習的六大要點
    那黑馬程式設計師如何學Java才能學紮實,最起碼這六大要點你要掌握。1.掌握靜態方法和屬性靜態方法和屬性用於描述某一類對象群體的特徵,而不是單個對象的特徵。java中大量應用了靜態方法和屬性,這是一個通常的技巧。但是這種技巧在很多語言中不被頻繁地使用。理解靜態方法和屬性對於理解類與對象的關係是十分有幫助的,在大量的java規範中,靜態方法和屬性被頻繁使用。
  • Java面向對象的基本概念,一定要牢記
    java需求變更:面向過程:又買了豬肉,修改代碼,才能放入冰箱面向對象:豬肉實體已經買了,無需修改代碼,就把豬肉放入冰箱即可定義類java支持一個java源文件中定義多個類類Java它不僅提供了基本類型變量、數組、鍊表等集合結構,還提供了類,類了不得,它可以實現自定義複雜結構,使我們的程序的表現力更強,生活中的事物基本都可以用類來表達。上面Person類就是最好的證明,我們的基本類型只能存儲一個值,我們的數組雖然能存一堆值,只能存儲一類值。如:Integer[] scores。
  • 黑馬程式設計師java培訓機構如何?好口碑java培訓機構如何選?
    大大小小的Java培訓機構多如牛毛,幾個人經過簡單的包裝就會成為精英人士混淆視聽,因此想要知道黑馬程式設計師java培訓機構如何?好口碑java培訓機構如何選?我們就要考全面慮。想要知道一家java培訓機構好不好,品牌和實力是最為重要的,實力如何就要看師資力量了,擁有豐富實戰經驗的導師會結合學員過往的工作經歷、學習表現、階段性成績、項目成績等,為學員提供最佳的專業輔導。課程安排方面會凸顯這家java培訓機構的專業,畢竟專注的總歸是專業的,java培訓起來理論必須加實踐,因為最終的目的是打造符合企業需求的java人才。
  • 原創】Java並發編程系列01|開篇獲獎感言
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫為什麼要學並發編程我曾聽一個從事15年開發工作的技術人員說過這個不寫並發程序的原則行得通的背景是那個時候基本都是單核處理器,系統並發量很低,藉助資料庫和類似Tomcat這種中間件就可以解決並發問題。如今硬體的驅動和網際網路行業的飛速發展,64核的處理器已經是很常見了,大型互聯廠商的系統並發量輕鬆過百萬,傳統的中間件和資料庫肯定是不能幫我們遮風避雨了,我們只能通過並發編程來解決這些問題。
  • NET程式設計師工資會比Java的低真相竟然是?
    想說的很多,我不知道從哪裡開始,都說程式設計師有些苦逼,這樣的感覺時時刻刻在心裡翻騰著。"在過去剛畢業的兩年裡,雖然勉強是熬過來了,但是看看社會的物慾橫流,再平靜的心裡也會引起絲絲漣漪,何況是我這麼一顆年輕不安的心。前天,我接到一份人事通知,說今年整個集團都把工資幅度調整隻有5%。
  • 如何學習Java,哪裡開始學Java比較好?
    2021-01-03 16:32:07 來源: IT培訓 舉報   java
  • JAVA8——JAVA成長之路
    你可能認為Java 8耗費了大量的時間才得以完成是為了實現了每個Java程式設計師所期待的特性。在這個小節裡,我們將會涉及到這些特性的大部分。2.1 Lambda表達式與Functional接口Lambda表達式(也稱為閉包)是整個Java 8發行版中最受期待的在Java語言層面上的改變,Lambda允許把函數作為一個方法的參數(函數作為參數傳遞進方法中),或者把代碼看成數據:函數式程式設計師對這一概念非常熟悉。
  • 給Java新手的一些建議——Java知識點歸納(Java基礎部分)
    寫這篇文章的目的是想總結一下自己這麼多年來使用java的一些心得體會,主要是和一些java基礎知識點相關的,所以也希望能分享給剛剛入門的Java程式設計師和打算入Java開發這個行當的準新手們,希望可以給大家一些經驗,能讓大家更好學習和使用Java。這次介紹的主要內容是和J2SE相關的部分,另外,會在以後再介紹些J2EE相關的、和Java中各個框架相關的內容。
  • java學習應用篇|idea的基本安裝和使用
    但人力終有限,有很多都需要他們自己去面對, 如日月之更替,寒暑之輪換。   我所接觸到的程式設計師,有的從初中因為興趣就開始學了,有的是大學因為學業開始學,有的則是工作之後迫於壓力轉行程式設計師。不管是什麼時候開始,我相信開始之時,都能識得漢字,數得數字,能自己進食,能自己穿衣,能開機,能下載安裝登錄微信,如此便足矣。
  • Java 13 新特性全面解讀
    所以Java團隊引入了CDS的概念,通過把一些核心類在每個JVM間共享,每個JVM只需要裝載自己的應用類,啟動時間減少了,另外核心類是共享的,所以JVM的內存佔用也減少了。CDS 只能作用於 Boot Class Loader 加載的類,不能作用於 App Class Loader 或者自定義的 Class Loader 加載的類。
  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    富者越富,市場的正反饋讓Java被更多的公司採用,從而需要更多的Java程式設計師。軟體開發可以使用的語法是非常多,但是為什麼Java被廣泛的使用呢?其他程式語言與Java相比,Java語法相對簡單,並且是很多計算機語言的基礎。
  • 菜鳥如何學java?
    Java 作為一個 20 年的老牌程式語言,依然在眾多程式語言中有著舉足輕重的地位,好多人看到別人轉行學java當上工程師,拿著上萬的月薪,內心早已蠢蠢欲動。憑啥他可以拿這麼多的工資,我就得每月三四千,日子過得緊巴巴的?我也想拿呀,那你要去學啊?難題來了,大部分同學都是零基礎。
  • 2020學習Java必看的3本書籍
    大家好,歡迎來到2020, 如果您正在考慮學習新事物或想要提高對Java基本技術的了解,那麼閱讀書籍絕對可以為您提供幫助。今天,我將分享過去幾年中一些最好的Java書籍,您可以在2018年閱讀這些書籍,以更好地學習Java和相關技術。1.
  • 給大忙人們看的 Java NIO 極簡教程
    基本用法使用Buffer讀寫數據一般四步走:寫數據到 Buffer調用 buffer.flip()從 Buffer 中讀取數據調用 clear() 或 compact()當向 buffer 寫數據時,buffer 會記錄寫了多少數據。一旦要讀取數據,需通過 flip() 將 Buffer 從寫模式切到讀模式。
  • Java程式設計師必須知道的MySQL基本語法
    作為一名Java程式設計師或者作為後端開發工程師,MySQL資料庫可以說是Java開發人員必備的技能之一。想成為一名優秀後端工程師及往後架構師發展,是必須要和資料庫打交道的,對資料庫一定都要非常熟悉,因為我們大部分業務性能瓶頸都來自資料庫層,能否寫出高效SQL是提高性能的關鍵所在。因此,我個人覺得資料庫是程式設計師必須具備的技能。
  • 轉行程式設計師,培訓學Java好還是Java大數據好?
    一方面,由於hadoop的歷史原因,Hadoop的項目誕生於一個java高手;另一方面,也有Java跨平臺方面的優勢;基於這兩個方面的原因,所以Hadoop採用了Java語言。但是也因為Hadoop使用了Java所以就出現了「Java大數據」。
  • Java之date毫秒值的概念和作用
    各位小夥伴們大家好,這次小編要介紹的是毫秒值的概念和作用,java.util.Date: 表示時間和日期的類,類Date表示特定的瞬間,精確到毫秒。public class Demo01Date {public static void main(String[] args) { System.out.println(System.currentTimeMillis());//獲取當前系統時間一共到1970年00:00:00經歷了多少毫秒 }//1567953046737}關於Java當中毫秒值的概念和作用小編就先說到這裡