mmap + write怎么實現的零拷貝 2022-09-08
應用進程再調用 write(),操作系統直接將內核緩沖區的數據拷貝到 socket 緩沖區中,這一切都發生在內核態,由 CPU 來搬運數據;詳情>
Synchronized使得同時只有一個線程可以執行,性能比較差,有什么提升的方法 2022-09-08
輕量級鎖(Lightweight Locking):這種鎖實現的背后基于這樣一種假設,即在真實的情況下我們程序中的大部分同步代碼一般都處于無鎖競爭狀態(即...詳情>
傳統的IO存在什么問題?為什么引入零拷貝的 2022-09-08
如果服務端要提供文件傳輸的功能,我們能想到的最簡單的方式是:將磁盤上的文件讀取出來,然后通過網絡協議發送給客戶端。傳統 I/O 的工作方式...詳情>
什么是Java NIO 2022-09-08
傳統IO基于字節流和字符流進行操作,而NIO基于Channel和Buffer(緩沖區)進行操作,數據總是從通道讀取到緩沖區中,或者從緩沖區寫入到通道中。...詳情>
什么是Reactor模型 2022-09-08
大多數網絡框架都是基于Reactor模型進行設計和開發,Reactor模型基于事件驅動,特別適合處理海量的I/O事件。詳情>
什么是異步IO 2022-09-08
用戶進程進行aio_read系統調用之后,無論內核數據是否準備好,都會直接返回給用戶進程,然后用戶態進程可以去做別的事情。等到socket數據準備...詳情>
Synchronized由什么樣的缺陷? Java Lock是怎么彌補這些缺陷的 2022-09-08
無法知道是否成功獲得鎖,相對而言,Lock可以拿到狀態Lock解決相應問題。Lock類這里不做過多解釋,主要看里面的4個方法:lock(): 加鎖 unlock()...詳情>
什么是信號驅動IO 2022-09-08
應用進程使用 sigaction 系統調用,內核立即返回,應用進程可以繼續執行,也就是說等待數據階段應用進程是非阻塞的。內核在數據到達時向應用進...詳情>
有哪些多路復用IO 2022-09-08
目前流程的多路復用IO實現主要包括四種: select、poll、epoll、kqueue。其他情況下多路復用IO技術發揮不出來它的優勢。另一方面,使用JAVA NIO...詳情>
JVM中對象的分配過程 2022-09-08
為對象分配內存是一件非常嚴謹和復雜的任務,JVM 的設計者們不僅需要考慮內存如何分配、在哪里分配等問題,并且由于內存分配算法和內存回收算...詳情>
在線提問
專業導師線上坐鎮,解答個性化學習難題
提交問題