
NIO
zhangzhen02
这个作者很懒,什么都没留下…
展开
-
netty是什么?有哪些组件?怎么使用?
netty是什么?netty是一个封装了NIO的网络应用的框架,是异步事件驱动的。用于帮助使用者快速开发高性能协议服务器。为什么要用netty?首先是Java原生的NIO接口并不是那么好用,没有经验的程序员也很难使用远程NIO构建出高性能的协议服务器。而且还有著名的selector空轮询bug。netty对NIO进行了封装,是接口更易用,解决了NIO的bug,使我们更方便地搭建一个高性能协议服务器。netty的特点有哪些?高并发,基于NIO,相比BIO并发性能高。传输快,netty传输依赖零拷原创 2020-06-01 21:16:19 · 800 阅读 · 0 评论 -
NIO是什么?怎么使用?存在什么问题?
NIO是什么?NIO是JDK1.4 java.nio.*包中引入的新的IO库,用来提高速度。有什么优势,为什么要用NIO?通过我的这篇文章5种IO模型的原理,我们知道非阻塞IO可以避免硬盘到内核空间的数据复制的阻塞,从而将CPU空闲出来用于其他操作。。而IO多路复用可以减少线程数,使用一个线程管理多个IO操作。这明显可以提高CPU的利用率。而NIO就是利用以上亮点,提高性能的。怎么使用NIO?操作文件示例package com.example.demo.nio;import java.io原创 2020-06-01 17:33:20 · 1215 阅读 · 1 评论 -
什么是零拷贝?在java中是怎么实现的?
一,零拷贝是什么?1.是什么?零拷贝是指cpu不参与数据在内存间的复制。2.有哪些好处?减少上下文切换,避免cpu数据拷贝带来的负载。3.怎么实现?DMA,mmap+write,sendfile,sendfile+DMA gather copy二,传统的IO的流程是什么?读文件:用户进程调用read()->发起系统调用->操作系统运行级别由用户态转化为内核态->CPU将磁盘缓冲区里的数据复制到内核缓冲区->CPU将内核缓冲区中的数据复制到用户缓冲区->操作系统由原创 2020-05-29 18:53:47 · 1309 阅读 · 0 评论 -
5种IO模型的原理
阻塞IO,非阻塞IO,IO多路复用是三种常见的IO模型。那么他们有什么区别?我下面以unix的实现过程来说明,他们的实现原理和区别。阻塞IO当进程(用户空间)调用recvfrom命令,其系统调用将会一直阻塞,直到recvfrom命令返回或执行过程报错。具体阻塞过程分为:等待数据到达内核空间,数据从内核空间复制到用户空间。非阻塞IO由于内核是否准备好数据,是可以通过recvfrom查询得到的,如果数据没有准备好,会返回一个错误EWOULDBLOCK,我们可以通过轮训该错误码来判断数据是否准备好,原创 2020-05-29 18:19:42 · 644 阅读 · 0 评论