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 体系回顾的更多相关文章

  1. suging闲谈-netty 的异步非阻塞IO线程与业务线程分离

    前言 surging 对外沉寂了一段时间了,但是作者并没有闲着,而是针对于客户的需要添加了不少功能,也给我带来了不少外快收益, 就比如协议转化,consul 的watcher 机制,JAVA版本,sk ...

  2. 理解Node.js异步非阻塞I/O与传统线性阻塞IO的区别(转)

    阻塞I/O 程序执行过程中必然要进行很多I/O操作,读写文件.输入输出.请求响应等等.I/O操作时最费时的,至少相对于代码来说,在传统的编程模式中,举个例子,你要读一个文件,整个线程都暂停下来,等待文 ...

  3. 谈谈对不同I/O模型的理解 (阻塞/非阻塞IO,同步/异步IO)

    一.关于I/O模型的问题 最近通过对ucore操作系统的学习,让我打开了操作系统内核这一黑盒子,与之前所学知识结合起来,解答了长久以来困扰我的关于I/O的一些问题. 1. 为什么redis能以单工作线 ...

  4. Linux下的非阻塞IO(一)

    非阻塞IO是相对于传统的阻塞IO而言的. 我们首先需要搞清楚,什么是阻塞IO.APUE指出,系统调用分为两类,低速系统调用和其他,其中低速系统调用是可能会使进程永远阻塞的一类系统调用.但是与磁盘IO有 ...

  5. 理解同步/异步/阻塞/非阻塞IO区别

    5种IO模型 1.阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回.进程从调用recvfr ...

  6. Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用

    Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...

  7. TCP粘包/拆包 ByteBuf和channel 如果没有Netty? 传统的多线程服务器,这个也是Apache处理请求的模式

    通俗地讲,Netty 能做什么? - 知乎 https://www.zhihu.com/question/24322387 谢邀.netty是一套在java NIO的基础上封装的便于用户开发网络应用程 ...

  8. 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...

  9. 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...

随机推荐

  1. MySQL5.7 并行复制配置

    转自:https://www.cnblogs.com/langdashu/p/6125621.html [MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7 一.缘由: 某天看到主从 ...

  2. libcurl+OpenSSL 库分享

    首先,我要感谢这两个博客给我的帮助: https://www.cnblogs.com/findumars/p/7496122.html https://blog.csdn.net/yannanxiu/ ...

  3. 一种比较low的linux的hung分析

    在调试一个功能的时候,发现了两种hung,以前认为的hung肯定是softlock导致的,后来才发现不一定要有lock这种结构,但是有类似于锁的功能的时候,也可能触发hung,为了避免大家走弯路,故记 ...

  4. js 高效拼接字符串

    <script>//如果我们大量使用+=进行字符串拼接的话,将会使界面失去响应(卡死状态) //高效拼接字符串 var StringBuilder=function() { this.da ...

  5. 【转】使用SecureCRT连接ubuntu

    1.  Ubuntu 装好之后默认是没有安装ssh服务的(我的版本是Ubuntu 12.04.3 LTS),需要手动安装:  安装命令:sudo apt-get install openssh-ser ...

  6. C#中的 new Random()

    在C#中,产生随机数常用大方法是 new Random().Next(1,10)等方法. 但是仔细发现会有个问题: 看代码: ; i < ;i++ ) { Console.WriteLine(, ...

  7. canvas画布内部重复画圆

    <!DOCTYPE html><html><head> <title>canvas example</title> <meta cha ...

  8. depth: working copy\infinity\immediates\files\empty

    depth: working copy\infinity\immediates\files\empty 有时间,需要整理下,svn 合并深度这四项:具体的意思.

  9. Tween animation

    [Tween animation] An animation defined in XML that performs transitions such as rotating, fading, mo ...

  10. veil-evasion免杀处理

    veil-evasion 开启 y 配置安装 安装好之后,再次运行veil-evasion 有50个payload模块 update 升级 list 查看有哪些payload 选一个payload 它 ...