netty 之 传统的阻塞io 体系回顾
io 体系回顾:
流的概念:
java 程序 通过流来进行完成输入与输出的。流是生产或者消费信息的抽象,流通过java 的 输入/输出系统与物理设备相连,尽管与他们链接的物理设备不尽相同,所有流的行为具有相同的方式.这样,相同的输入输出类和方法适用于所有类型的外部设备,这意味着一个输入流能够抽象多种不同类型的输入:磁盘文件,键盘或者网络套接字,
同样一个输出流可以输出到控制台,磁盘文件,或者相连的网络,流是处理输入与输出的一个洁净地方,例如他不需要代码理解键盘与网络的不同,java中的流的实现在java.io 包定义的类层次结构内部的
从功能来分:输入流与输出流
从流的结构来分:字节流,字符流
字节流的输入流与输出流基础是InputStream 和OutputStream这两个抽象类,字节流的输入与输出操作是由这两个类的子类实现的
字符流的输入输出基础是抽象类Reader 和Writer

在最底层,所有的输入与输出都是字节形式
输入流(java 阻塞io 读取逻辑):
读取的逻辑: 1.open a stream 2.while more information ----->while 循环 3.read information 4.close thestream
输出流(java 阻塞io 写入逻辑):
输出的逻辑: 1.open a stream 2.while more information ----->while 循环 3.write information 4.close thestream
InputStream 类的层次:

OutputStream 类的层次

inputStream 与OutputStream 中FilterOutputStream FilterInputStream属于过滤流,他们必须依赖于节点流,典型的Buffered 就是过滤流。当然了,除了这两个,其他都是节点流,节点流即能与外部打交道操作的流 ,过滤流是用来进一步封装处理节点的流,使用的是装饰者模式

在节点流与过滤流的处理体系上,使用的是装饰者模式(很重要) == > new ccc(new bbb(new aaa))
-------------------------------------------------IO 基础知识 ------------------------------------------------------
字节流顶层父类:
输入流:IputStream
输出流:OutputStream
字符流顶层父类:
Reader
Writer
netty 之 传统的阻塞io 体系回顾的更多相关文章
- suging闲谈-netty 的异步非阻塞IO线程与业务线程分离
前言 surging 对外沉寂了一段时间了,但是作者并没有闲着,而是针对于客户的需要添加了不少功能,也给我带来了不少外快收益, 就比如协议转化,consul 的watcher 机制,JAVA版本,sk ...
- 理解Node.js异步非阻塞I/O与传统线性阻塞IO的区别(转)
阻塞I/O 程序执行过程中必然要进行很多I/O操作,读写文件.输入输出.请求响应等等.I/O操作时最费时的,至少相对于代码来说,在传统的编程模式中,举个例子,你要读一个文件,整个线程都暂停下来,等待文 ...
- 谈谈对不同I/O模型的理解 (阻塞/非阻塞IO,同步/异步IO)
一.关于I/O模型的问题 最近通过对ucore操作系统的学习,让我打开了操作系统内核这一黑盒子,与之前所学知识结合起来,解答了长久以来困扰我的关于I/O的一些问题. 1. 为什么redis能以单工作线 ...
- Linux下的非阻塞IO(一)
非阻塞IO是相对于传统的阻塞IO而言的. 我们首先需要搞清楚,什么是阻塞IO.APUE指出,系统调用分为两类,低速系统调用和其他,其中低速系统调用是可能会使进程永远阻塞的一类系统调用.但是与磁盘IO有 ...
- 理解同步/异步/阻塞/非阻塞IO区别
5种IO模型 1.阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回.进程从调用recvfr ...
- Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用
Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...
- TCP粘包/拆包 ByteBuf和channel 如果没有Netty? 传统的多线程服务器,这个也是Apache处理请求的模式
通俗地讲,Netty 能做什么? - 知乎 https://www.zhihu.com/question/24322387 谢邀.netty是一套在java NIO的基础上封装的便于用户开发网络应用程 ...
- 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法
笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...
- 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...
随机推荐
- netty为啥要二次开发
很早之前就看过李林峰写的netty的书,但是感觉没有直接用到还是理解不够深入,现在的公司有两套自己基于Netty开发的系统,感觉才真正理解为啥要这么做 借用别人文章回顾下 https://www.cn ...
- 使用ab对网站进行压力测试
1.安装yum install httpd-tools 2.ab -kc 1000 -n 1000 http://localhost/ab.html 这个指令会使用1000个并发,进行连接1000次
- react native 中es6语法解析
react native是直接使用es6来编写代码,许多新语法能提高我们的工作效率 解构赋值 var { StyleSheet, Text, View } = React; 这句代码是ES6 中新增的 ...
- C# 图像处理: 获取当前活动窗口句柄,获取窗口大小及位置
需调用API函数 需在开头引入命名空间 using System.Runtime.InteropServices; 获取当前窗口句柄:GetForegroundWindow() [DllImport( ...
- http://wenku.baidu.com/view/26afdb8371fe910ef12df8ccRevit采用DWG和FBX两种格式导入3D max方法的总结
2.DWG 属性——导出为 ACIS 实体(如果选择导出为多边形网格,则将每个图元导出为 由多个多边形组成的对象,这些多边形相互连接或组成 “ 网格 ” .在导出到 DWG 文件以用 于 Ma ...
- Oracle 导入大量数据
环境是这样的: 需要导入大量数据到Oracle,目前Oracle已建立索引和触发器了,导入的数据是树型结构,需要关联. 采用的方法是: 删除以前数据库的索引和触发器,用OracleBulkCopy批量 ...
- css 响应式布局
移动端最让人闹心的就是在不同的手机要做错响应式布局适应各种手机,开始自己做这方面走了很多的弯路,响应式布局如果是部件,就按实际的大小单位px等设置,像宽可以按照百分比计算,长的可以百分比.auto 或 ...
- 2018面向对象程序设计(Java)第8周学习指导及要求
2018面向对象程序设计(Java)第8周学习指导及要求 (2018.10.18-2018.10.21) 学习目标 掌握接口定义方法: 掌握实现接口类的定义要求: 掌握实现了接口类的使用要求: 理 ...
- C++字符串和向量
陷阱:C字符串使用=和== char a_string[10]; a_string="Hello" 非法 strcpy(a_string,"Hello"); ...
- Mat取行或列
Mat dst; dst = FeatureValue.colRange(j,j+).clone(); 直接使用Mat类中成员函数,方法,colRange对应的是列,rowRange对应的是行,从第j ...