Java NIO:浅析I/O模型 也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的 ...
分类:
编程语言 时间:
2018-07-21 18:05:40
阅读次数:
209
初识Mina,简要记录理解内容和实现demo。 这里先简述一下BIO和NIO的区别: 同步阻塞IO(BIO):一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善。 同步非阻塞IO(NIO):一个请求一个线程, ...
分类:
其他好文 时间:
2018-07-17 18:16:41
阅读次数:
178
一、阻塞IO与非阻塞IO Linux网络IO模型(5种) (1)阻塞IO模型 所有文件操作都是阻塞的,以套接字接口为例,在进程空间中调用recvfrom,系统调用直到数据包到达且被复制到应用进程缓冲区或发生错误时才返回,期间会一直等待(阻塞)。模型如图: (2)非阻塞IO模型 recvfrom从应用 ...
分类:
Web程序 时间:
2018-07-14 13:02:21
阅读次数:
230
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO ...
分类:
其他好文 时间:
2018-07-14 10:23:22
阅读次数:
264
非阻塞IO(non-blocking IO) Linux下,可以通过设置socket使其变为non-blocking,当对一个non-blocking socket执行读操作时,流程是这个样子 从图中可以看出,当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会block ...
分类:
编程语言 时间:
2018-07-12 23:50:44
阅读次数:
197
阻塞IO:socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。 非阻塞IO:非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。 两者区别: 所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进 ...
分类:
其他好文 时间:
2018-07-09 19:13:54
阅读次数:
355
一、概念 ①JavaScript运行环境 ②事件驱动与非阻塞io模型(异步) ③npm 二、作用 ①web服务器后台、游戏服务器、接口服务器 ②命令行根据,比如git、npm、webpack、gulp 三、相关资源 四、安装 ①下载(官网):稳定版和最新版 ②安装 ③查看是否成功安装 五、利用nod ...
分类:
Web程序 时间:
2018-07-08 21:14:53
阅读次数:
199
1 TCP协议 每一个TCP通信的的socket的内核里面都会有一个发送缓冲区和接收缓冲区 发送端 : send 报文 TCP发送缓冲区 接收端 :TCP接收缓冲区 receive TCP报文 2 滑动窗口协议 3. 阻塞IO 发送一个消息,发送端必须准备好 发送缓冲区满,阻塞send操作,等缓冲区 ...
分类:
其他好文 时间:
2018-07-08 18:57:28
阅读次数:
179
一、什么是进程、线程 在早期的计算机中,从计算机启动到关闭只执行一个程序,这个程序能够访问计算机内的所有资源。在计算机程序启动执行的时候你无法做任何别的事,这种裸机环境中是对资源极大的浪费。 那么这个时候,操作系统就应运而生了。在操作系统中,你可以运行多个应用程序,每个程序运行在独立的进程当中,操作 ...
分类:
其他好文 时间:
2018-07-07 20:32:14
阅读次数:
154
1、非阻塞套接字 第一部分 基本IO模型 一次只能服务一个客户端! accept阻塞! 在没有新的套接字来之前,不能处理已经建立连接的套接字的请求。 recv 阻塞! 在没有接受到客户端请求数据之前, 不能与其他客户端建立连接! 第二部分 非阻塞套接字 connect操作一定会引发BlockingI ...
分类:
其他好文 时间:
2018-07-07 00:21:18
阅读次数:
234