随笔分类 - IO多路复用
摘要:【场景】客户端大量连接,如果采用多线程方式的话,线程上下文切换导致性能不佳。因此采用io多路复用。 一、上下文切换 对于单核CPU来说(对于多核CPU,此处就理解为一个核),CPU在一个时刻只能运行一个线程,当在运行一个线程的过程中转去运行另外一个线程,这个叫做线程上下文切换(对于进程也是类似)。
阅读全文
摘要:JDK 7 引入了 Asynchronous I/O,即 AIO。在进行 I/O 编程中,常用到两种模式:Reactor和 Proactor。Java 的 NIO 就是 Reactor,当有事件触发时,服务器端得到通知,进行相应的处理。AIO 即 NIO2.0,叫做异步不阻塞的 IO。AIO 引入异
阅读全文
摘要:一、零拷贝 1.介绍 零拷贝描述的是CPU不执行拷贝数据从一个存储区域到另一个存储区域的任务,这通常用于通过网络传输一个文件时以减少CPU周期和内存带宽。 优点: 减少甚至完全避免不必要的CPU拷贝,从而让CPU解脱出来去执行其他的任务 减少内存带宽的占用 通常零拷贝技术还能够减少用户空间和操作系统
阅读全文
摘要:一、Selector 1. 基本介绍 ① Java 的 NIO,用非阻塞的 IO 方式。可以用一个线程,处理多个的客户端连接,就会使用到Selector(选择器)② Selector 能够检测多个注册的通道上是否有事件发生(注意:多个Channel以事件的方式可以注册到同一个Selector),如果
阅读全文
摘要:本章内容: 1.Buffer 2.Channel 一、Buffer 1.基本介绍 缓冲区(Buffer):缓冲区本质上是一个可以读写数据的内存块,可以理解成是一个容器对象(含数组),该对象提供了一组方法,可以更轻松地使用内存块,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况。Chann
阅读全文
摘要:本章内容: 1.NIO基本概念 2.NIO、BIO比较 3.NIO三大核心原理示意图 一、NIO基本概念 1. Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(
阅读全文
摘要:本章介绍: 1.BIO基本介绍 2.BIO工作机制 3.BIO应用实例 4.BIO问题分析 一、BIO基本介绍 1.Java BIO 就是传统的java io 编程,其相关的类和接口在 java.io 2.BIO(blocking I/O) : 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有
阅读全文
摘要:I/O 模型简单的理解就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。 BIO、NIO、Netty 一、Java支持的三种网络编程模型/IO模式 1. BIO:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,
阅读全文
摘要:本节内容 1.同步 2.异步 3.阻塞 4.非阻塞 一、同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任
阅读全文