随笔分类 -  IO/NIO/Netty

摘要:翻阅源码时,我们会发现netty中很多方法的调用都是通过线程池的方式进行异步的调用, 这种 eventLoop.execute 方式的调用,实际上便是reactor线程。对应项目中使用广泛的NioEventLoop。还记得我们创建的两个reactor线程池么,具体代码可以参考 Netty源码 服务端 阅读全文
posted @ 2019-05-09 16:55 XuMinzhe 阅读(560) 评论(0) 推荐(0)
摘要:最近一直在看netty,看完之后就想做点笔记。可是实在是太忙了,挤了还要几个晚上终于挤出来了 上图是服务端的实例代码。大致的流程先梳理一遍。 首先会执行 用于创建两个线程组,boosGroup用于接受外部连接,对 SelectionKey.OP_ACCEPT 感兴趣 ,workGroup用于处理io 阅读全文
posted @ 2018-12-25 21:49 XuMinzhe 阅读(354) 评论(0) 推荐(0)
摘要:上文我们介绍了NIO和BIO的区别,NIO相对于BIO是一次很大的进步。但我们平时开发中并不会使用NIO。这是因为NIO在开发中存在以下问题 所以开发出一个健壮的NIO程序并不容易,真正使用中,我们更推荐使用Netty,Mina这些NIO框架。相比较而言,Netty有以下优点 下面我们先看下,net 阅读全文
posted @ 2018-09-26 22:17 XuMinzhe 阅读(483) 评论(0) 推荐(0)
摘要:上文我们描述了五中IO类型。第一种同步阻塞模型我们我们称之为BIO(Blocking IO), 第三种IO复用模型我们称之为NIO(Nonblocking IO)。 上图我们可以很容易的发现 BIO会为每个socket请求创建一个线程,而NIO可以通过一个线程处理多个请求。当然,我们可以为BIO构建 阅读全文
posted @ 2018-09-26 20:13 XuMinzhe 阅读(330) 评论(0) 推荐(0)
摘要:Linux的内核将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符)。而对一个Socket的读写也会有相应的描述符,称为Socketfd(Socket描述符),描述符就是一个数字,它指向内核中的一个结构体(结构体 阅读全文
posted @ 2018-09-26 01:32 XuMinzhe 阅读(710) 评论(0) 推荐(0)
摘要:文件路径: 1.创建文件 2.查找指定目录下文件 3.文件流-写入 4.文件流-读取 5.字符流-写入 6.字符流-读取 7.转换流-写入 将输出的字符流转化为字节流 8.转换流-读取 将输入的字节流转换为字符流 9.对象流 10.缓冲字符流-读取 11.缓冲字符流-写入 12 管道流-可用于线程通 阅读全文
posted @ 2018-05-03 19:20 XuMinzhe 阅读(218) 评论(0) 推荐(0)