参考文档https://blog.csdn.net/weixin_40845956/article/details/130190083
转载 2024-01-18 14:22:37
94阅读
golang ioutil与io包详解ioutilio错误变量接口结构体函数 前提概要,公共错误处理 func checkErr(err error) { if err != nil { log.Fatil(err) } }输出文件目录 file1.txt中的内容为1行 1:街角魔族是最好看的动漫! file2.txt中的内容为2行 2:街角魔族是最好看的动漫! 还有一个输入文件夹in,
博客主页:?看看是李XX还是李歘歘??每天分享一些包括但不限于计算机基础、算法等相关的知识点??是一旦调用返回...
原创 2022-06-29 17:22:38
93阅读
作为软件开发者特别是server开发,
原创 2022-11-11 15:51:41
210阅读
文章目录IO模型PCBsocket多路复用select IO模型PCBsocket 1进程打开的文件,socket等都会由pcb记录到文件描述符 2 socket的操作有系统调用来完成,返回给应用程序描述符 3tcp socket在创建时操作系统都会给它分配一个读缓冲区和写缓冲区,获得响应数据就从读缓冲区拷贝,发送数据则写到写缓冲区 4如何解决读的时候缓冲区无数据,写的时候缓冲区没有空间多路复用
本地IO:程序读写磁盘数据很慢,于是在内核中建立了pagecache进行加速。 不同的磁盘文件可能对应不同pagecache。 如果程序读写速度太快,可能pagecache来不及向磁盘写数据,需要注意双写一致性。 网络IO:待处理的数据存储在网卡的缓存buf中,每和其他主机建立一个连接,都会在内核新 ...
转载 2021-08-25 16:08:00
1156阅读
2评论
什么是IOI/O(Input/Outpu) 即输入/输出 。 从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。 从应用程序的视角来看的话,我们的应用程序对操作系统的内核发起 IO 调用(系统调用),操作系统负责的内核执行具体的 IO 操作。也就是说,我们的应用程序实际上只是发起了 IO 操作的调用而已,具体 IO 的执行是由操作系统的内核来完成的。 当应用程序发起
转载 2023-07-19 09:23:59
93阅读
I/O 类库的基本架构java的io操作类可以分为四组,分别为:基于字节操作的 I/O 接口:InputStream 和 OutputStream基于字符操作的 I/O 接口:Writer 和 Reader基于磁盘操作的 I/O 接口:File基于网络操作的 I/O 接口:Socket前两组主要是根据传输数据的格式,后两组主要根据传输数据的方式。 I/O的核心问题是将什么样的数据,写到什么地方的问
转载 2023-11-27 18:15:58
62阅读
序NIO(Non-blocking I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,是现今主流的大流量、高并发IO有效解决方案。五种IO模型在UNIX下,IO模式分为五类,分别是:阻塞式IO(bloking IO)、非阻塞式IO(non-blocking IO)、多路复用IO模型(multiplexing IO)、信号驱动IO模型(signal-driven IO)以及异步IO
4种情况: 1、输入操作:等待数据到达套接字接收缓冲区; 2、输出操作:等待套接字发送缓冲区有足够的空间容纳将要发送的数据; 3、服务器接收连接请求:等待新的客户端连接请求的到来; 4、客户端发送连接请求:等待服务器回送客户端的发起的SYN所对应的ACK。 5种网络IO模型: ·阻塞IO:等待完成 ...
转载 2021-10-07 20:22:00
112阅读
2评论
IO模型类型 Linux内核将所有的外部设备都当作文件来处理,对于文件的读写会调用内核提供的命令返回一个file scripter(fd文件描述符),对于一个Socket的读写也会有对应的描述符——socket fd,描述符是一个数字指向内核中的结构体。 阻塞IO ​ 最常用的IO模型就是阻塞IO模 ...
转载 2021-09-07 10:05:00
259阅读
2评论
同步和异步,阻塞和非阻塞 同步和异步 关注的是结果消息的通信机制 同步:同步的意思就是调用方需要主动等待结果的返回 异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等。 阻塞和非阻塞 主要关注的是等待结果返回调用方的状态 阻塞:是指结果返回之前,当前线程被挂起,
原创
Soy
2021-08-10 17:22:10
250阅读
I/O 模型简单的理解: 就是数据的发送和接收使用哪种通道, 这个通道决定了程序通讯性能.Java 共支持3中网络编程模型: BIO NIO AIO.BIO特点: BIO 是 blocking I/O, 同步阻塞, 就是传统的 Java 原生阻塞模型.采用 BIO 通信模型的服务端, 通常由一个独立的 Acceptor 线程负责监听客户端的连接, 它接收到客户端连接请求之后 为每个客户端创建一个新
转载 2023-11-28 08:26:09
40阅读
我们经常听到说Redis是单线程的,也会有疑问:为什么单线程的Redis能那么快?这里要明白一点:Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程。但Redis的其他功能,比如持久化、异步删除、集群数据同步等,都是由额外的线程执行的。我们知道多线程能够提升并发性能,那为什么Redis会采用单线程,而非多线程?为什么单线
转载 2023-11-15 23:49:23
69阅读
导言在目前的技术选型中,Redis 俨然已经成为了系统高性能缓存方案的事实标准,因此现在 Redis 也成为了后端开发的基本技能树之一,Redis 的底层原理也顺理成章地成为了必须学习的知识。Redis 从本质上来讲是一个网络服务器,而对于一个网络服务器来说,网络模型是它的精华,搞懂了一个网络服务器的网络模型,你也就搞懂了它的本质。本文通过层层递进的方式,介绍了 Redis 网络模型的版本变更历程
转载 2024-04-10 21:42:24
83阅读
网络模型用户空间和内核空间任何Linux发行版,其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。**内核:**本质上可以理解为一种软件,控制计算机的硬件资源,并提供上层应用程序运行的环境。为了保证系统安全,有些指令不能随便被执行去操作底层资源,这些内核指令只能在内核空间执行,普通程序在用户空间执行,但有时用户程序中可能涉及到内核指令的调用,此时就需要陷入内核中运行,CPU从
带着问题阅读 1、什么是同步异步、阻塞非阻塞 2、有几种IO模型,不同模型之间有什么区别 3、不同IO模型的应用场景都是什么 同步和异步、阻塞和非阻塞 同步和异步 广义上讲同步异步描述的是事件中发送方和接收方之间的关系。 当发送方必须依赖接收方的响应结果(无论正确与否)才能进行下一步操作,则两者间的 ...
转载 2021-08-03 00:01:00
135阅读
2评论
硬核图解网络IO模型
转载 2022-04-20 22:13:27
116阅读
一、同步阻塞 IO(BIO) 当用户线程调用了 read 系统调用,内核(kernel)就开始了 IO 的第一个阶段:准备数据。很多时候,数据在一开始还没有到达(比如,还没有收到一个完整的Socket数据包),这个时候 kernel 就要等待足够的数据到来。 当 kernel 一直等到数据准备好了, ...
转载 2021-05-08 21:18:27
322阅读
2评论
2.1 阻塞式IO模型最流行的IO模型是阻塞式IO模型,基本所有函数默认都是阻塞的,阻塞式编程是最简单的,也是很多人学习网络编程的时候,都使用的方法。 用户进程调用recvfrom函数的时候,kernel就开始装备数据了,一般数据都不是立刻就能获取到,这个时候kernel会等待数据的到来,而应用层就会把这个线程阻塞,当kernel一直等到数据准备好了,就会把数据从内核态拷贝到用户态,然后才返回结
原创 2022-01-14 15:07:15
115阅读
  • 1
  • 2
  • 3
  • 4
  • 5