0717-7821348
欢乐彩主播

欢乐彩主播

您现在的位置: 首页 > 欢乐彩主播
Linux操作系统中的零复制技能,是怎样一回事
2019-11-26 22:15:49

咱们都知道,互联网的国际其实便是数据的国际,不管你是在微信上谈天,在玩王者荣耀,仍是逛淘宝,看小姐姐直播,背面其实都是数据的传输。



信任大部分学过计算机操作体系的程序员都知道,假设咱们的数据存放在计算机的文件上(数据库实际上也是存放在文件上),要把文件上的内容仿制给用户,需求通过多少次仿制呢?

首大观园要,咱们需求把内容从文件中仿制到咱们的使用中,尽管这听起来只需一次仿制,实际上操作体系会进行两次仿制,首要会先把文件仿制到操作体系内核,然后再从操作体系内核上仿制到使用傍边。同理,咱们把内容仿制到Socket传输给用户的进程也是相同的,需求先仿制给操作体系内核,再仿制给对应的Socket。一个简略Linux操作系统中的零复制技能,是怎样一回事的功用,居然要通过4次仿制。

那么怎么优化这么一个进程呢?LinLinux操作系统中的零复制技能,是怎样一回事ux有一个十分牛的技能,叫做零仿制,那么在Java中怎么完成呢?我发现许多Java程序员,尽管说是通晓Java更多的是通晓JavaWeb。其实Java也是十分博学多才的,Java的NIO其实现已帮咱们处理了这个问题。

在Java NIO中,咱们能够通过FileChannel.map,能够跳过内Linux操作系统中的零复制技能,是怎样一回事核态,直接从文件仿制数据到使用傍边,相同,能够把跳过内核态,直接把数据从使用中仿制到Socket中发送给用户。这姿态,咱们的体系调用,就变成了文件到使用到Socket,只需进行2次仿制即可。

一同,咱们Java NIO还提供应咱们别的一个办法,能够不必通过使用,直接Linux操作系统中的零复制技能,是怎样一回事从文件中仿制到Socket中,这便是FileChannel.transferTo。它会把数据从文件仿制到内核中,然后从内核直接把数据再次仿制给接纳的SocLinux操作系统中的零复制技能,是怎样一回事ket发送给用户。

总结

好了,这便是Java傍边的零仿制技能了。JavaNIO,在程序员面试中也是经常出现的,假如你有爱好,欢迎重视我,咱们一同学习,共同进步。同名大众号(沙茶敏碎碎念)

(此处已增加圈子卡片,请到今天头条客户端检查)