
io
文章平均质量分 93
尹忠政
奋斗的年纪
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IO-深入理解零拷贝
深入理解零拷贝文章目录深入理解零拷贝定义DMA(Driect Memory Access)传统的文件读写如何提高吞吐量?mmapsendfilePageCache总结定义全程由DMA进行数据搬运,CPU不再参与任何与数据搬运相关的事情,提高系统的吞吐量DMA(Driect Memory Access)负责IO设备和内存的数据交换无DMA有DMA传统的文件读写read(file,buf,len)write(socket,buf,len)流程图注:每一次系统调用原创 2021-11-11 16:34:08 · 968 阅读 · 0 评论 -
深入理解IO(BIO/NIO/IO Multiplexing/SGIO/AIO)
深入理解IO操作系统层面内核空间操作系统为了保证内核安全,将资源(虚拟内存)划分为内核空间和用户空间,内核模块运行在内核空间,称为内核态;用户程序运行在用户空间称为用户态。内核空间总是常驻内存的,内核空间的模可以访问受保护的内核空间,也有访问底层硬件设备的权限。用户空间用户空间的应用程序是不允许直接访问内核空间的,比如读写。也不允许直接调用内核代码定义的函数。每个应用程序都拥有单独的用户空间,对应的状态为用户态。区别内核进程可以执行任意命令,可以调用系统一切资源。用户进程只能进行简单的计算,不原创 2021-11-09 17:29:35 · 1187 阅读 · 0 评论 -
nio-很详细很深入的Buffer笔记
nio-Buffer笔记文章目录nio-Buffer笔记Buffer属性ByteBuffer(重要)基本数据类型字节字节顺序(字节在内存中保存的顺序)ByteOrderByteBuffer.order(ByteOrder order)直接缓冲区(DirectBuffer)视图缓冲区数据元素视图总结github地址Buffer属性mark:一个标记值,和reset()方法配合使用,将pos...原创 2019-01-17 17:33:54 · 305 阅读 · 0 评论 -
IO-BIO聊天室升级版
IO-BIOl聊天室升级版存在的问题当处理线程池达到最大线程的时候,那么后面的客户端将无法发送消息,这个是致命的。新思路该架构的优点解决了之前版本在线程池达到最大线程数的时候,服务端将不能在处理新加入的客户端,除非客户端掉线,线程才有机会去处理。该版本支持大规模的客户端在线服务。通过接管了客户端input监听,能更好控制线程数,维持机器的良好新能,可控。项目架构Serve...原创 2019-01-13 17:19:31 · 268 阅读 · 0 评论 -
IO-BIO实现聊天室
IO-BIO实现聊天室(Socket全双工)概述本次实现的是一个聊天室,使用的是TCP/IP协议,使用自定义传输协议。多个客户端连接上服务端,客户端发送消息到服务端,服务端将客户端加入到客户端队列,通过loop队列,向所有的客户端转发消息。此处转发为同步转发,意味着先加入的客户端将优先收到消息。当客户端离线的时候,服务端将从队列中移除,并且终止针对该客户端的轮询。流程图服务端获取客...原创 2019-01-12 21:26:45 · 953 阅读 · 0 评论 -
IO-nio原生实现聊天室
IO-nio原生实现聊天室概述公司使用了netty框架做了一个在线通讯的基础框架,客户需要在线同同事进行交流,在这里我通过原生NIO api做了一个简易的聊天框架。中间遇到了很多问题,好在最后都解决了。在这里做一次记录,望共勉。调用图调用顺序注意:Selector只能管理非阻塞的ChannelServerSocketChannel开启Socket监听服务创建一个Selecto...原创 2019-01-15 21:58:57 · 290 阅读 · 0 评论 -
nio-深入理解Selector
nio-深入理解Selector概述Selector提供了询问注册在其上的所有Channel是够已经准备好执行I/O操作的能力。假如你设计,如何实现Channel托管?通过生产者/消费者的思想或者说是wait/notify的思路。首先需要集中管理Socket对象,分配一个或者多个线程去处理I/O操作,这些线程处于激活等待状态,当有新的远程客户端连接或者远程客户端的发送数据至服务端,这个时...原创 2019-01-21 21:52:11 · 379 阅读 · 0 评论