面試-javaIO機制

1.BIO
BIO:是傳統的javaIO以及部分java.net下部分接口和類。例如,socket,http等,因為網絡通信同樣是IO行為。傳統IO基于字節流和字符流進行操作。提供了我們最熟悉的IO功能,譬如基于字節流的InputStream 和OutputStream.基于字符流的Reader和Writer.
在這里插入圖片描述
特點:在IO執行的兩個階段都被阻塞住。優點:代碼簡單,直觀。缺點:IO的效率,擴展性存在瓶頸。同步。阻塞

2.NIO
NIO 是一種同步非阻塞的 I/O 模型,在 Java 1.4 中引入了 NIO 框架,對應 java.nio 包,提供了 Channel , Selector,Buffer 等抽象。NIO 中的 N 可以理解為 Non-blocking,不單純是 New。它支持面向緩沖的,基于通道的 I/O 操作方法。 NIO 提供了與傳統 BIO 模型中的 Socket 和 ServerSocket 相對應的 SocketChannel 和 ServerSocketChannel 兩種不同的套接字通道實現,兩種通道都支持阻塞和非阻塞兩種模式。阻塞模式使用就像傳統中的支持一樣,比較簡單,但是性能和可靠性都不好;非阻塞模式正好與之相反。對于低負載、低并發的應用程序,可以使用同步阻塞 I/O 來提升開發速率和更好的維護性;對于高負載、高并發的(網絡)應用,應使用 NIO 的非阻塞模式來開發.
在這里插入圖片描述
特點:程序需要不斷的去詢問內核是否已經準備好,第一階段非阻塞,第二階段阻塞。

NIO的核心是:Channels ,buffers, Selectors.基本上所有的IO在NIO都是從一個Channels開始。
在這里插入圖片描述
在這里插入圖片描述
Selector:允許單線程處理多個Channel
在這里插入圖片描述
NIO的底層使用了操作系統的多路復用。
優點是單線程可以處理多個網絡IO.
在這里插入圖片描述
(1)問題:select,poll,epoll的區別
在這里插入圖片描述
Select有最大鏈接數的限制,因為其使用的是數組;poll沒有,使用的是鏈表;
在這里插入圖片描述
在這里插入圖片描述

3.AIO
在這里插入圖片描述
在這里插入圖片描述
4.BIO,NIO,AIO分析
在這里插入圖片描述
BIO適用于連接數比較小,且固定的架構。這種方式對服務器資源要求比較高。是1.4以前的唯一選擇,直觀,簡單容易理解。
NIO適用于連接數目多,且連接比較短的架構。比如聊天服務器,編程比較復雜。
AIO適用于連接數目多,且連接比較長的架構。比如:相冊服務器,Jdk7以后才支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37061.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37061.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37061.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue 項目運行時,報錯Error: Cannot find module ‘node:path‘

Vue 項目運行時,報錯Error: Cannot find module ‘node:path’ internal/modules/cjs/loader.js:883throw err;^Error: Cannot find module node:path Require stack: - D:\nodejs\node_modules\npm\node_modules\node_modules\npm\lib\cli.js - D:\nodejs\node_mo…

問題解決:python安裝依賴時網絡問題報錯

進行 pip install 時,安裝輪子訪問過慢而造成安裝失敗,有時候配置鏡像源仍會出現莫名其妙的問題,包括網絡代理問題等。看了一些解決方案,找出了一個最適合的方式,如下所示: pip install -i https://pypi.t…

linux 離線安裝docker

測試服務器:銀河麒麟V10 x86_64 注意:推薦使用國內的鏡像站下載,因為官網不掛梯子無法訪問,我用的是清華大學開源軟件鏡像站 一、下載離線包: 官網下載docker離線包 下載地址:https://download.docker.c…

使用VisualStudio2022制作安裝包

總體介紹 解決方案里面需要有三個項目: Winform程序, Setup Project , 自定義配置項目(安裝程序類) 1, Winform程序 就是你要打包的程序 2, Setup Project 就是制作安裝包的 3, 自定義配置項目(安裝程序類): 一個命令行項目里面只有一個安裝程序類,用來控制安裝后自動打開程序…

Windows USB設備驅動開發 - 常見概念的解釋

我們聽到許多 USB 術語幾乎交替拋出。 它們都是什么意思?假設我們看到類似 “多虧了 USB 3.0,我可以將 SuperSpeed U 盤連接到電腦的 xHCI 主機控制器,并更快地復制文件。” 讓我們了解該句子中的 USB 術語。 USB 3.0、USB 2.0 和 USB 1.0 請…

Winform 樹形控件的開發實戰

在Windows Forms(WinForms)開發中,樹形控件(TreeView)是非常常用的一種控件,用于展示層級結構的數據,如文件系統、組織結構、菜單等。下面,我將通過一個實戰示例,向你展示如何在WinForms中開發和…

計網實訓——不相同網段的PC相互通信

目錄 提前準備APP路由器指令 實驗一1、實驗需求(1)實現同網段的PC相互通信。(2)實現不相同網段的PC相互通信。(3)分析相同和不同網段PC通信時MAC地址的變化。 2、實驗拓撲3、實驗步驟及實驗截圖&#xff08…

rk3588 debian系統配置AP6275S ap模式

rk3588 debian配置AP6275S ap模式 文章目錄 rk3588 debian配置AP6275S ap模式前言一、內置開啟ap模式的系統工具1.1、內置hostapd工具1.2、內置dhcp工具二、熱點配置2.1、 /etc/hostapd/hostapd.conf 配置2.2、/etc/dhcp/dhcpd.conf 配置三、測試3.1、運行dhcpd3.2、運行hostap…

[數據結構】——七種常見排序

文章目錄 前言 一.冒泡排序二.選擇排序三.插入排序四.希爾排序五.堆排序六.快速排序hoare挖坑法前后指針快排遞歸實現:快排非遞歸實現: 七、歸并排序歸并遞歸實現:歸并非遞歸實現: 八、各個排序的對比圖 前言 排序:所謂…

uni-app 微信小程序開發到發布流程

1. uni-app 微信小程序開發到發布流程 1.1. 新建一個uni-app 項目 1.2. 發行微信小程序 1.3. 微信開發者平臺的微信小程序appid 復制進來(點擊發行) 1.4. IDE may already started at port xxxx, trying to connect (1)關閉微信…

小白上手AIGC-基于FC部署stable-diffusion

AIGC AIGC(人工智能創造內容)作為一種基于人工智能技術生成內容的新型創作模式。打破了過去大家對于AI的理解都是說只能涉足部分領域而無法涉足藝術或者是其他的創作領域的定律,現在的AIGC也能夠創作內容了,而不再只是單純的返回…

動手學深度學習(Pytorch版)代碼實踐 -計算機視覺-45多尺度目標檢測

45多尺度目標檢測 # 多尺度錨框 """ 減少圖像上的錨框數量并不困難。 比如,我們可以在輸入圖像中均勻采樣一小部分像素, 并以它們為中心生成錨框。 此外,在不同尺度下,我們可以生成不同數量和不同大小的錨框。 直…

Apifox 更新|定時任務、內網自部署服務器運行接口定時導入、數據庫 SSH 隧道連接

Apifox 新版本上線啦! 看看本次版本更新主要涵蓋的重點內容,有沒有你所關注的功能特性: 自動化測試支持設置「定時任務」支持內網自部署服務器運行「定時導入」數據庫均支持通過 SSH 隧道連接自動化測試數據庫操作優化 1、自動化測試支持設…

C++ 100 之 容器插入和刪除

vector插入和刪除操作 insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count個元素ele. push_back(ele); //尾部插入元素ele pop_back();//刪除最后一個元素 erase(const_iterator start, const_iterator end);//刪除迭代器從start到end之間的元素 erase(c…

Mac(M1芯片)安裝多個jdk,Mac卸載jdk

1.jdk下載 oracle官方鏈接:oracle官方下載鏈接 2.安裝 直接下一步,下一步就行 3.查看是否安裝成功 出現下圖內容表示安裝成功。 4.配置環境變量 open -e .bash_profile 路徑建議復制過去 #刷新環境變量 source ~/.bash_profile 5.切換方法 6.jdk…

企業應該如果安全上網,軟件防查盜版,企業防盜版

隨著信息化的發展,企業日常辦公越來越依賴互聯網。終端以及普通PC終端在訪問互聯網過程中,會遇到各種各樣不容忽視的風險,例如員工主動故意的數據泄漏,后臺應用程序偷偷向外部發信息,木馬間諜軟件的外聯,以…

Spring Boot 過濾器和攔截器詳解

目錄 Spring Boot 過濾器1.什么是過濾器2.工作機制3.實現過濾器 Spring Boot 攔截器1. 什么是攔截器2. 工作原理3.實現4.拓展(MethodInterceptor 攔截器)實現 過濾器和攔截器區別過濾器和攔截器應用場景過濾器攔截器 Spring Boot 過濾器 1.什么是過濾器 …

信創認證 | Smartbi Insight V11成功適配申威3231處理器

在信息技術飛速發展的浪潮中,軟硬件的深度融合與協同發展已成為推動行業創新的關鍵因素。 近日,思邁特商業智能與數據分析軟件[簡稱:Smartbi Insight]V11在統信服務器操作系統V20和中電科申泰信息科技有限公司產品申威3231處理器環境下完成適…

日本職場跳槽漲薪調查報告!原來薪資漲幅的秘訣在這!

看到篇帖子,日本職場跳槽的調查報告: 文章中根據日本大型求職網站doda,通過分析網站注冊會員的數據以及職業顧問的解說,來了解一下跳槽實現工資提升的人基本情況以及趨勢。 本次調查對象跳槽后平均年收入提升了906,274日元&#…

Python 語法基礎一

1.變量 python 中變量很簡單,不需要指定數據類型,直接使用等號定義就好。python變量里面存的是內存地址,也就是這個值存在內存里面的哪個地方,如果再把這個變量賦值給另一個變量,新的變量通過之前那個變量知道那個變量…