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