BIO:同步阻塞IO(平常说的IO指的是BIO)NIO:同步非阻塞IOAIO:异步非阻塞IO io操作分为两部分,发起io请求,和io数据读写。 阻塞、非阻塞主要是针对线程发起io请求后,是否立即返回来定义的,立即返回称为非阻塞io,否则称为阻塞io。 同步、异步主要针对io数据读写来定义的,读写数 ...
分类:
其他好文 时间:
2019-08-31 11:05:32
阅读次数:
91
1.同步阻塞与异步非阻塞 1.1同步阻塞消息处理 服务端监听端口,客户端提交Event,服务端创建线程接收Event,处理Event,返回结果 缺陷: 同步Event提交,客户端等待时间过长(提交Event时间+接收Event时间+处理Event时间+返回结果时间)会陷入阻塞,导致二次提交Event ...
分类:
编程语言 时间:
2019-08-27 12:24:42
阅读次数:
78
背景 从最早bio的只支持阻塞的bio(同步阻塞) 到默认阻塞支持非阻塞nio(同步非阻塞+同步阻塞)(此时加入mmap类) 再到aio(异步非阻塞) 虽然这些api改变了调用模式,但真正执行效率上是否也会有所不同,对此进行了此次java io的性能测试 首先从github上找到了2个项目,然后自己 ...
分类:
编程语言 时间:
2019-08-19 18:56:10
阅读次数:
95
BIO:同步阻塞式IO NIO:同步非阻塞式IO AIO(NIO2.0):异步非阻塞式IO 同步:指虚拟机来完成IO读写,如果读写没有完成程序一直等待。 异步:指将读写交给操作系统来做,java代码要干的事就是将想读的写的东西给操作系统然后返回状态值,最后让操作系统通知程序是否完成。 阻塞:指对网络 ...
分类:
其他好文 时间:
2019-07-29 11:33:12
阅读次数:
130
假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员、商品、推荐服务等等。 那么这里就会遇到一个问题,APP/Browser怎么去访问这些后端的服务? 如果业务比较简单的话,可以给每个业务都分配一个独立的域名(https://service.api.company.com),但这种 ...
一.BIO与NIO以及AIO的概念 BIO是同步阻塞式的IO NIO是同步非阻塞的IO (NIO1.0,JDK1.4) AIO是非同步非阻塞的IO(NIO2.0,JDK1.7) 二.BIO简单分析 1.简单分析 BIO是阻塞的IO,原因在于accept和read会阻塞。所以单线程的BIO是无法处理并 ...
分类:
编程语言 时间:
2019-07-04 00:12:36
阅读次数:
147
高性能 I/O 设计模式 Reactor 一.Reactor模式与Proactor模式比较 一般I/O模型分为如下三类:同步阻塞、同步非阻塞、异步阻塞、异步非阻塞 (1)同步阻塞 在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。J ...
分类:
其他好文 时间:
2019-06-28 22:34:32
阅读次数:
137
BIO编程 最原始BIO 网络编程的基本模型是C/S模型,即两个进程间的通信。 服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。 传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听 ...
分类:
编程语言 时间:
2019-06-24 12:39:18
阅读次数:
99
BIO(blocking io,同步阻塞) 场景:客户端向服务端发送请求,服务端会为每个客户端建立一个线程来响应,问题来了,如果客户端出现了延时等异常,服务端为客户端建立的线程,就会一直出于等待状态,这个线程就会占用很长时间(因为数据的准备和处理都在这个线程上完成),更糟糕的是,如果有大量并发访问, ...
分类:
编程语言 时间:
2019-06-04 22:54:07
阅读次数:
249
CAsyncSocket是在socket基础上封装的第三方类库 1.CAsyncSocket与CSocket的选择 前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则被称为短连接。 ...
分类:
其他好文 时间:
2019-06-01 21:27:43
阅读次数:
124