首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏大宽宽的碎碎念

    聊聊BIO,NIO和AIO (2)磁盘IO磁盘IO的优化AIO反思AIO

    磁盘IO的优化 除非用Direct IO,对于磁盘IO的优化主要在读取操作上。这是因为写入时总是写到Page Cache,而写内存比写磁盘要高效的多。 从业务上讲,一般来讲上传文件的请求量要远远小于获取文件(图片、html、js、css……),所以在Web场景下,对磁盘IO的优化的主要思路其实很简单——尽量保证要读取的文件在内存里,而不是取磁盘上读取。 POSIX AIO 第一套被称作POSIX AIO。顾名思义,这套接口是POSIX标准规定的。这套AIO的接口的定义可以参考这里。 Linux AIO Linux中的另外一套AIO接口被称为Linux AIO,是Linux在内核实现的一套AIO接口。这套是"真・AIO"。接口的详细用法可以参考这里。 反思AIO 上面讨论了这么多操作系统接口层面上的AIO,有很多细节和不完善的。但是,AIO在概念上却很简单,意思是通过一个回调处理数据。

    4.6K90发布于 2018-05-14
  • 来自专栏子木聊出海

    在 GEO AIO 角度:如何优化 SEO 内容?

    一、先把优化方向说清楚现在做内容的目标不仅仅是 SEO 排第几,而是被选进 AI 答案。AI 搜索会把页面切成可复用的小块,再按权威与相关性拼答案。

    21610编辑于 2025-10-23
  • 来自专栏Linux内核那些事

    Linux 原生 AIO 实现(Native AIO

    上一篇文章 主要分析了 Linux 原生 AIO 的原理和使用,而这篇要介绍的是 Linux 原生 AIO 的实现过程。 所以,我们可以通过分析这三个函数的实现来理解 Linux 原生 AIO 的实现。 Linux 原生 AIO 实现在源码文件 /fs/aio.c 中。 调用 aio_setup_ring 函数初始化环形缓冲区。 函数 if (file->f_op->aio_read) ret = file->f_op->aio_read(req, buf, iocb->aio_nbytes 不同的文件系统,其 aio_read 方法的实现不一样,如 Ext3 文件系统的 aio_read 方法会指向 generic_file_aio_read 函数。

    3.1K30发布于 2021-04-08
  • 来自专栏小小码农一个。

    BIO,NIO,AIO总结

    Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。 在讲 BIO,NIO,AIO 之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。 同步与异步 同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。 伪异步 IO 为了解决同步阻塞I/O面临的一个链路需要一个线程处理的问题,后来有人对它的线程模型进行了优化一一一后端通过一个线程池来处理多个客户端的请求接入,形成客户端个数M:线程池最大线程数N的比例关系

    1.1K10发布于 2020-06-08
  • 来自专栏若尘的技术专栏

    BIO、NIO、AIO

    以上的两组概念可以两两组合,就组合了我们熟悉的BIO、NIO、AIO。 3. 异步非阻塞I/O(AIO): 异步非阻塞I/O,服务器实现模式为一个有效请求一个线程,客户端的IO请求都是由操作系统先完成了再通知服务器用其启动线程进行处理。 AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,jdk1.7开始支持。 AIO:我在厕所外做别的事,等有人来通知我了我再去占坑。

    93975发布于 2021-11-25
  • 来自专栏宇宙之_一粟

    BIO、NIO、AIO

    16.BIO、NIO、AIO 有什么区别? BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。 AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

    74021发布于 2020-10-26
  • 9个SQL优化技巧

    大多数的接口性能问题,很多情况下都是SQL问题,在工作中,我们也会定期对慢SQL进行优化,以提高接口性能。这里总结一下常见的优化方向和策略。 过度索引:当表中存在过多的索引时,可能会导致数据库优化器在选择使用哪个索引时变得困难。这可能会导致查询性能下降,因为优化器可能选择了不是最优的索引。 为了优化这个查询,我们可以考虑以下几种方法: 索引优化: 确保在 customer_id 字段上创建索引,以加速 GROUP BY 和 WHERE 子句的执行。 条件优化: 使用WHERE条件在分组前,就把多余的数据过滤掉了,这样分组时效率就会更高一些。而不是在分组后使用having过滤数据。 深分页limit优化深分页通常指的是在处理大量数据时,用户需要浏览远离首页的页面,例如第100页、第1000页等。

    1.3K10编辑于 2024-05-21
  • 来自专栏精讲JAVA

    Java新一代网络编程模型AIO原理及Linux系统AIO介绍

    所以本文也附带介绍了Linux 2.6及以后版本新增的AIO特性(因为这跟Java AIO是对应关系)。 Java AIO 1基本原理 目前为止,Java共支持3种网络编程模型:BIO、NIO、AIO: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理 Linux AIO 1Linux AIO 简介 Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。 3异步 I/O(AIO) 的动机 从前面 I/O 模型的分类中,我们可以看出 AIO 的动机。这种阻塞模型需要在 I/O 操作开始时阻塞应用程序。这意味着不可能同时重叠进行处理和 I/O 操作。 总结 使用异步 I/O(AIO)可以帮助我们构建 I/O 速度更快、效率更高的应用程序。

    2.1K80发布于 2018-01-30
  • 来自专栏SpringCloud专栏

    聊聊BIO,NIO和AIO (2)

    磁盘IO的优化 除非用Direct IO,对于磁盘IO的优化主要在读取操作上。这是因为写入时总是写到Page Cache,而写内存比写磁盘要高效的多。 从业务上讲,一般来讲上传文件的请求量要远远小于获取文件(图片、html、js、css……),所以在Web场景下,对磁盘IO的优化的主要思路其实很简单——尽量保证要读取的文件在内存里,而不是取磁盘上读取。 POSIX AIO 第一套被称作POSIX AIO。顾名思义,这套接口是POSIX标准规定的。这套AIO的接口的定义可以参考这里。 Linux AIO Linux中的另外一套AIO接口被称为Linux AIO,是Linux在内核实现的一套AIO接口。这套是"真・AIO"。接口的详细用法可以参考这里。 反思AIO 上面讨论了这么多操作系统接口层面上的AIO,有很多细节和不完善的。但是,AIO在概念上却很简单,意思是通过一个回调处理数据。

    1.6K20发布于 2019-07-12
  • 来自专栏SpringCloud专栏

    聊聊BIO,NIO和AIO (1)

    poll优化了select的一些问题。比如不再有3个数组,而是1个polldfd结构的数组了,并且也不需要每次重设了。数组的个数也没有了1024的限制。

    88630发布于 2019-07-12
  • 来自专栏DotNet NB && CloudNative

    .NET 9 的 LINQ 优化详解

    在 .NET 9 中,微软为 LINQ(Language Integrated Query)引入了三个新的扩展方法,增强了数据查询的灵活性和表达力。 这是对 GroupBy(...).Select(g => new { g.Key, Aggregate = g.Aggregate(...) }) 的优化,性能更高且代码更简洁。 91533 • Index: https://github.com/dotnet/runtime/issues/95563 • 博客文章: • Three new LINQ methods in .NET 9 Three new LINQ methods in .NET 9 • Unlocking New Possibilities: Top LINQ Methods Introduced in .NET 9

    26610编辑于 2025-07-26
  • 来自专栏九州牧云

    Java IO: BIO, NIO, AIO

    BIO, NIO, AIO,本身的描述都是在Java语言的基础上的。 而描述IO,我们需要从三个层面: 编程语言 实现原理 底层基础 从编程语言层面 BIO, NIO, AIO以Java的角度理解: BIO,同步阻塞式IO,简单理解:一个连接一个线程 NIO,同步非阻塞IO 而AIO,在windows上是通过IOCP实现的,在linux上还是通过epoll来实现的。 这里强调一点:AIO,这是I/O处理模式,而epoll等都是实现AIO的一种编程模型;换句话说,AIO是一种接口标准,各家操作系统可以实现也可以不实现。 Linux上还没有真正实现网络方式的AIO

    86440发布于 2019-08-21
  • 来自专栏测试开发干货

    【简历优化平台开发教程-9】目标企业 优化意向

    所以,简历优化的话后期算法上,也会着重偏向检查各位简历的内容是否满足上述目标企业。

    27920编辑于 2023-08-14
  • 来自专栏lgp20151222

    BIO,NIO,AIO的理解

    AIO(NIO.2):异步非阻塞式IO,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。

    72810发布于 2018-09-10
  • 来自专栏java学习java

    简单谈谈BIO,NIO,AIO

    ---- IO 概述 IO 的操作方式通常分为几种:同步阻塞 BIO、同步非阻塞 NIO、异步非阻塞 AIO。 (1)在 JDK1.4 之前,我们建立网络连接的时候采用的是 BIO 模式。 (3)AIO 也就是 NIO 2,在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的IO 模型。 异步非阻塞 IO(AIO) (1)AIO 也就是 NIO 2,在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞 的 IO 模型。 异步 IO 是基于事件和回调机制实现的,也就是说 AIO 模式不需要selector 操作,而是是事件驱动形式,也就是当客户端发送数据之后,会主动通知服 务器,接着服务器再进行读写操作。 (2)Java 的 AIO API 其实就是 Proactor 模式的应用,和 Reactor 模式类似。

    55850编辑于 2023-10-15
  • 来自专栏java 成神之路

    IO、NIO、AIO 内部原理分析

    ---- 下面分析下 阻塞I/O、NIO、AIO的数据处理流程 阻塞I/O 数据处理流程 ? 3.AIO 数据处理流程 ? AIO 实现原理 程序调用AIO的accept方法并传入Completionhandler,该方法是非阻塞方法。 程序只需要把具体的操作告知AIO就可以了,具体操作AIO来帮助你来操作。 NIO 和 AIO 性能上对比 AIO在性能上相对于NIO没有本质的提升。 AIO只是帮助你从内核中将数据复制到用户空间中,并调用你传入的回调方法。 NIO 是需要程序自己从内核中将数据复制到用户空间中,并需要程序自己调用相应的处理逻辑。 ----

    1.1K60发布于 2018-05-18
  • 来自专栏用户5325874的专栏

    BIO、NIO、AIO原理及总结

    )){ this.read(key); } //9 body = new String(bytes).trim(); System.out.println("Server : " + body); // 9. AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用操作系统参与并发操作,编程比较复杂,JDK7开始支持。 所以出现AIO。 如果你理解了Java NIO ,下面讲的netty也是水到渠成的事,只想说,深水区已过了! 差点忘记还要补下AIO的,这个比NIO先进的技术,最终实现了netty。 、AIO适用场景

    1K20发布于 2020-04-13
  • 来自专栏Java基础

    【关于Java的BIO、NIO、AIO

    面试官问:“说说 BIO、NIO、AIO 的区别?” 你脑子里蹦出几个词:“阻塞”、“非阻塞”、“异步”,但串不起来,说不完整…… 一、先搞懂:BIO、NIO、AIO 到底是谁? 在 Java AIO 中: 所有 IO 操作都是异步的 调用 read() 后立即返回,不阻塞 数据准备好后,通过 回调函数 或 Future 通知你 // AIO 服务器示例(基于回调) AsynchronousServerSocketChannel Netty)仍基于 NIO AIO 适用于:对延迟极度敏感、连接数极高的场景,但实际应用不如 NIO 广泛。 五、BIO、NIO、AIO 对比总结 特性 BIO NIO AIO 模型 同步阻塞 同步非阻塞 异步非阻塞 核心机制 每连接一线程 多路复用(Selector) 回调 / Future 是否阻塞 是(read 谁性能最强 理论 AIO > NIO > BIO,但实际 NIO 最常用 面试怎么说 “我理解 NIO 的多路复用原理,项目用 Netty(NIO)做高性能通信” 最后一句话 BIO、NIO、AIO

    45210编辑于 2025-08-28
  • 来自专栏即时通讯技术

    到底什么是Java AIO?为什么Netty会移除AOI?一文搞懂AIO的本质!

    2)Java AIO又称为NIO 2.0,难道它也是基于NIO来实现的? 3)Netty为什么会舍去了AIO的支持?(点此查看); 4)AIO看起来貌似只是解决了有无,实际是发布了个寂寞? Java AIO的这些不合常理的现象难免会令人心存疑惑。所以决定写这篇文章时,我不想只是简单的把AIO的概念再复述一遍,而是要透过现象,深入分析、思考和并理解Java AIO的本质。 图片 8、Java AIO的本质是什么? Netty之所以移除掉AIO:很大的原因是在性能上AIO并没有比NIO高。 Linux虽然也有一套原生的AIO实现(类似Windows上的IOCP),但Java AIO在Linux并没有采用,而是用epoll来实现。 Java AIO不支持UDP。

    75120编辑于 2023-06-21
  • 来自专栏JusterZhu

    .NET9 AOT的性能优化

    前言 .NET9里面重要的一个优化是对于AOT预编译的内联优化,这种优化较高的提升了AOT运行的性能。本篇看下这种优化技术。 AOT优化概述 优化从来都不是简单的去掉几行代码或者改动几个机器码就行了,需要统筹考虑,以AOT优化来参考说明。 .NET9里面AOT的优化主要聚焦于内联上面。 实际上的更复杂,举个例子比如在一些编译器中,发现DEF函数里面的int变量x并没有做任何事情,激进下的优化直接把变量x也给删除了。 回到正题,上面略微了解下优化的关键点。 注意,本篇的AOT的内联优化是直接在编译阶段,无论是否有热点都会一次性的优化到可执行文件二进制的结果。我们下面继续看AOT的内联优化操作。 优化之后的代码,凸显了可见性的精简和凝练。 这依然只是部分优化,可以预见后续的.NET10,11,12等等在AOT上有更大性能的提升。 以上就是本篇内容,欢迎点赞,关注。

    38800编辑于 2025-01-23
领券