
IO
文章平均质量分 88
959y
奋斗ing
展开
-
[Netty] 面试问题 1 (十八)
Netty面试题1原创 2023-05-06 16:44:36 · 751 阅读 · 0 评论 -
[Netty] Mpsc Queue (十七)
[Netty] Mpsc Queue (十七)原创 2023-04-24 19:48:11 · 800 阅读 · 0 评论 -
[Netty] HashWheelTimer时间轮 (十六)
HashWheelTimer时间轮 (十六)原创 2023-04-23 21:33:01 · 1004 阅读 · 0 评论 -
[Netty源码] 各个组件介绍 (一)
对于netty源码做了大体的介绍, 各个组件的功能介绍原创 2023-03-23 20:41:19 · 517 阅读 · 0 评论 -
[Netty源码] 服务端启动过程 (二)
Netty源码之服务端启动过程 1.创建服务端channel 2.初始化channel 3.注册selector 4.服务端端口的绑定和触发读事件原创 2023-03-25 21:06:49 · 1093 阅读 · 0 评论 -
[Netty源码] 客户端启动流程 (三)
[Netty源码] 客户端启动流程: 客户端通过解析地址, 获取连接原创 2023-03-28 15:08:21 · 380 阅读 · 0 评论 -
[Netty源码] NioEventLoop相关问题 (四)
[Netty源码] NioEventLoop相关问题 (四), NioEventLoop的创建, 启动, 运行逻辑, 以及空轮询bug的解决方法, 如何异步串行无锁化等问题的解决方法原创 2023-03-30 15:43:11 · 478 阅读 · 0 评论 -
[Netty] Netty自带的心跳机制 (十五)
[Netty] Netty自带的心跳机制 (十五)原创 2023-04-20 18:33:25 · 1172 阅读 · 0 评论 -
[Netty] FastThreadLocal (十四)
FastThreadLocal 相关源码分析, 结构分析原创 2023-04-17 18:40:00 · 776 阅读 · 0 评论 -
[Netty源码] Netty轻量级对象池实现分析 (十三)
[Netty源码] Netty轻量级对象池实现分析 (十三)原创 2023-04-16 14:25:01 · 601 阅读 · 0 评论 -
[Netty源码] 编码和解码相关问题 (十二)
[Netty源码] 编码和解码相关问题 (十二)原创 2023-04-15 21:27:19 · 736 阅读 · 0 评论 -
[Netty源码] ByteBufAllocator内存管理器相关问题 (十一)
[Netty源码] ByteBufAllocator内存管理器相关问题 (十一)原创 2023-04-14 19:16:41 · 677 阅读 · 0 评论 -
[Netty源码] ByteBuf相关问题 (十)
[Netty源码] ByteBuf相关问题 (十)原创 2023-04-12 20:41:11 · 762 阅读 · 0 评论 -
[Netty源码] ChannelHandler相关问题 (九)
ChannelHandler相关问题原创 2023-04-09 21:53:08 · 881 阅读 · 0 评论 -
[Netty源码] Pipeline相关问题 (八)
Pipeline的相关问题, 初始化以及添加和删除ChannelHandler原创 2023-04-08 18:17:24 · 484 阅读 · 0 评论 -
[Netty] Channel和ChannelFuture和ChannelFutureListener (六)
Channel和ChannelFuture和ChannelFutureListener原创 2023-04-05 17:33:45 · 1746 阅读 · 0 评论 -
[Netty] Netty与Os的零拷贝 (五)
Netty与os的零拷贝原创 2023-04-04 22:09:26 · 401 阅读 · 0 评论 -
Netty_01_最简单的服务器与客户端之间的交互
Server:public class HelloServer { public static void main(String[] args) { // 服务器端启动器,将下面的组件进行启动 new ServerBootstrap() // 2.BossEventGroup, WorkerEventGroup // 检查IO事件 .group(new NioEventL原创 2021-10-31 16:14:56 · 302 阅读 · 0 评论 -
Netty为什么高性能
Netty作为异步事件驱动的网络,高性能之处主要来自于其I/O模型和线程处理模型,前者决定如何收发数据,后者决定如何处理数据文章目录异步非阻塞通信零拷贝零拷贝的实现原理基于buffer内存池无锁化的串行设计理念事件驱动模型Netty线程模型异步处理高效的并发编程高性能的序列化框架灵活的TCP参数配置能力异步非阻塞通信Netty的非阻塞I/O的实现关键是基于I/O复用模型,这里用Selector对象表示:Netty的IO线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处原创 2021-11-01 20:39:11 · 1809 阅读 · 1 评论 -
redis_io多路复用
Redis利用epoll实现io多路复用,将连接信息和事件放入队列,一次放到文件事件派发器,事件派发器将事件分发给事件处理器。io多路复用机制:监视多个描述符fd,一旦某个描述符就绪,可以通知程序进行响应的读写操作。这种机制需要select,poll,epoll。多个连接公用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,不需要全部的阻塞连接。当某条连接有新的数据可以处理的时候,操作系统通知应用程序。Redis采用基于Reator的方式实现的文件事件处理器。Redis基于Reactor模型开发原创 2021-10-05 18:06:31 · 685 阅读 · 0 评论 -
理解高性能网络模型_IO模型
文章目录服务端处理网络请求I/O模型阻塞式I/O模型非阻塞式I/O模型I/O复用模型信号驱动式I/O模型异步I/O模型总结服务端处理网络请求首先看看服务端处理网络请求的典型过程:1、获取请求数据客户端与服务器建立连接发出请求,服务器接受请求(1-3)2、构建响应当服务器接收完请求,并在用户空间处理客户端的请求,直到构建响应完成(4)3、返回数据服务器将已构建好的响应再通过内核空间的网络I/O发还给客户端(5-7)服务器如何管理连接,获取输入数据服务器如何处理请求I/O模型阻塞调用与原创 2021-11-01 22:14:34 · 270 阅读 · 0 评论 -
select、poll、epoll之间的区别
文章目录1.时间复杂度2.区别3.epoll的好处4.总结4.1 支持一个进程所能打开的最大连接数4.2 FD剧增后带来的IO效率问题4.3 消息传递方式5.总结1.时间复杂度(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>原创 2021-09-30 16:20:35 · 659 阅读 · 0 评论 -
零拷贝的实现原理
1、应用程序中调用read() 方法,这里会涉及到一次上下文切换(用户态->内核态),底层采用DMA(direct memory access)读取磁盘的文件,并把内容存储到内核地址空间的读取缓存区。2、由于应用程序无法读取内核地址空间的数据,如果应用程序要操作这些数据,必须把这些内容从读取缓冲区拷贝到用户缓冲区。这个时候,read() 调用返回,且引发一次上下文切换(内核态->用户态),现在数据已经被拷贝到了用户地址空间缓冲区,这时,如果有需要,应用程序可以操作修改这些内容。3、我们最终.原创 2021-11-01 21:53:01 · 540 阅读 · 0 评论 -
Linux的 I/O 系统
文章目录1.传统的 System Call I/O2.高性能IO3.存储设备的 I/O 栈4.I/O Buffering1.传统的 System Call I/Owrite() 和 read() 两个系统调用实现的read(file_fd, tmp_buf, len);write(socket_fd, tmp_buf, len);整个过程涉及 2 次 CPU 拷贝、2 次 DMA 拷贝,总共 4 次拷贝,以及 4 次上下文切换。CPU 拷贝:由 CPU 直接处理数据的传送,数据拷贝时会一直占原创 2021-12-15 15:39:33 · 171 阅读 · 0 评论