日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我們都知道,互聯網的世界其實就是數據的世界,無論你是在微信上聊天,在玩王者榮耀,還是逛淘寶,看小姐姐直播,背后其實都是數據的傳輸。

 

Linux操作系統中的零拷貝技術,是怎么一回事

 

 

相信大部分學過計算機操作系統的程序員都知道,假如我們的數據存放在計算機的文件上(數據庫實際上也是存放在文件上),要把文件上的內容拷貝給用戶,需要經過多少次復制呢?

首先,我們需要把內容從文件中拷貝到我們的應用中,雖然這聽起來只有一次拷貝,實際上操作系統會進行兩次拷貝,首先會先把文件拷貝到操作系統內核,然后再從操作系統內核上拷貝到應用當中。同理,我們把內容拷貝到Socket傳輸給用戶的過程也是一樣的,需要先拷貝給操作系統內核,再拷貝給對應的Socket。一個簡單的功能,竟然要經過4次拷貝。

那么如何優化這么一個過程呢?linux有一個非常牛的技術,叫做零拷貝,那么在JAVA中如何實現呢?我發現很多Java程序員,雖然說是精通Java更多的是精通JavaWeb。其實Java也是非常博大精深的,Java的NIO其實已經幫我們解決了這個問題。

在Java NIO中,我們可以通過FileChannel.map,可以越過內核態,直接從文件拷貝數據到應用當中,同樣,可以把越過內核態,直接把數據從應用中拷貝到Socket中發送給用戶。這樣子,我們的系統調用,就變成了文件到應用到Socket,只要進行2次拷貝即可。

同時,我們Java NIO還提供給我們另外一個方法,可以不用經過應用,直接從文件中拷貝到Socket中,這就是FileChannel.transferTo。它會把數據從文件拷貝到內核中,然后從內核直接把數據再次拷貝給接收的Socket發送給用戶。

總結

好了,這就是Java當中的零拷貝技術了。JavaNIO,在程序員面試中也是經常出現的,如果你有興趣,歡迎關注我,我們一起學習,共同進步。同名公眾號(沙茶敏碎碎念)

分享到:
標簽:拷貝 技術
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定