你好,我是彤哥,本篇是netty系列的第二篇。欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。简介本文将介绍linux中的五种IO模型,同时也会介绍阻塞/非阻塞与同步/异步的区别。何为IO模型对于一次IO操作,数据会先拷贝到内核空间中,然后再从内核空间拷贝到用户空间中,所以一次read操作,会经历两个阶段:(1)等待数据准备(2)数据从内核空间拷贝到用户空间基于以上两个阶段就产生了五
分类:
Web程序 时间:
2019-11-14 14:59:03
阅读次数:
69
1、业务需求 2、性能需要 3、可简化任务调度 4、并行程序在多核心CPU有优势: a、比如因为IO操作遇到了阻塞,CPU可以转去执行其他线程,这时并发的优点就显示出来了:更高效的利用CPU,提高程序的响应速度。 b、java线程机制是抢占式的,会为每个线程分配时间片。 c、由于I/O等待,CPU较 ...
分类:
其他好文 时间:
2019-11-11 21:52:16
阅读次数:
104
1.StringIO的使用 # 类似文件的缓冲区 from io import StringIO cache_file = StringIO() print(cache_file.write('hello world')) # 11 print(cache_file.seek(0)) # 0 pri ...
分类:
编程语言 时间:
2019-11-11 12:40:11
阅读次数:
106
nodejs学习 nodejs非阻塞io原理非阻塞io操作流程主要是有个线程池实现异步操作,最后返回结果再由loop进行接收 ,loop单线程接收任务是单线程。`什么是异步非阻塞` 排队:在排队的时候,你除了等之外什么都干不了 叫号机:你要做的是先取号码,等轮到你的时候,系统会通知你,这中间,你可以... ...
分类:
Web程序 时间:
2019-11-10 19:16:50
阅读次数:
81
1. 什么是IO? 在计算机中无时无刻不存在着对数据的访问和读取(数据都存储在物理的媒介上,例如寄存器,高速缓存,内存,磁盘,网卡等等),这些操作被称为IO。 2. 阻塞IO (1)当用户线程发起IO请求后,会进行系统调用(system call)来让内核(Kernel)进行IO操作 (2)此时用户 ...
分类:
其他好文 时间:
2019-11-08 21:09:21
阅读次数:
92
目录: 格式化输入 格式化输出 终端输入输出背后的原理理 bufio包的使用 命令行参数处理理和urfave/cli使用 格式化输入 1、从终端获取?用户的输入 格式化输入 fmt.Scan(a …interface{}): 从终端获取?用户输入,存储在Scanln中的参数里,空格和换行符作为分隔符 ...
分类:
编程语言 时间:
2019-11-07 17:37:34
阅读次数:
87
之前写过DataInputStream和DataOutputStream,使用这两个类可以对java基本数据类型进行序列化和反序列化。 本篇再来两个新东西:ObjectInputStream,ObjectOutputStream,这二位不但能对java基本数据类型进行操作,还可以直接干对象,使用起来 ...
分类:
其他好文 时间:
2019-11-04 21:39:41
阅读次数:
101
什么是协程?协程:是单线程下的并发,又称为微线程,纤程。协程是由用户程序自身控制的。ps:1、python的线程属于内核级别的,是由操作系统调度 2、单线程内开启协程,一旦遇到io,就会从应用程序级别控制切换,而不是由操作系统来进行切换,(如果不是io操作而进行切换,并不会提升效率)协程的优点:1、 ...
分类:
其他好文 时间:
2019-11-04 00:02:03
阅读次数:
108
实验代码截图 1 2 学习总结: 字节流与字符流 字节流: 1)输入:inputStream, 2)输出:outPutStream; 字符流: 1)输入主要使用:reader类。 2)输出主要使用:write类。 注意: 1) IO操作属于资源操作,对于资源操作,操作最后必须关闭,否则有可能出现未知 ...
分类:
其他好文 时间:
2019-11-03 20:30:51
阅读次数:
81
一、字节流与字符流基本操作 1. 在Java中IO操作以文件操作为例,主要操作流程如下: (1) 使用File类打开一个文件。 (2)通过字节流或字符流的子类指定输出的位置。 (3)进行读/写操作。 (4)关闭输入/输出。 2. 异常的处理的格式 二、字节流与字符流的区别(除了代码上的区别) 1.在 ...
分类:
其他好文 时间:
2019-11-03 20:21:11
阅读次数:
73