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

    聊聊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 搜索会把页面切成可复用的小块,再按权威与相关性拼答案。

    21710编辑于 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
  • 来自专栏精讲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
  • 来自专栏mathor

    枚举+优化6)——双指针优化2

    ans ans = s } } } print ans  这个算法的时间复杂度是O(NML),NML是三个数组的长度,最大值都是10万,显然会超时 优化 ); } cout << ans; return 0; } 例4.题目链接:hihoCoder1607 思路  一般的暴力枚举这题肯定是过不了的,数据量太大,那我们就要想办法优化

    62750发布于 2018-06-19
  • 来自专栏SpringCloud专栏

    聊聊BIO,NIO和AIO (1)

    poll优化了select的一些问题。比如不再有3个数组,而是1个polldfd结构的数组了,并且也不需要每次重设了。数组的个数也没有了1024的限制。 在t6时,只有fd1会返回,因为fd1里的数据没有读完,仍然处于“被触发”状态;而fd2不会被返回,因为没有新数据到达。 ? 这个例子很明确的显示了水平触发和边沿触发的区别。

    88630发布于 2019-07-12
  • 来自专栏九州牧云

    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
  • 来自专栏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 模式类似。

    55950编辑于 2023-10-15
  • 来自专栏后端精进之路

    JVM性能优化系列-(6) 晚期编译优化

    6. 晚期编译优化 晚期编译优化主要是在运行时做的一些优化手段。 “逃生门”,让编译器根据概率选择一些大多数时候都能提升运行速度的优化手段,当激进优化的假设不成立时,可以通过逆优化退回到解释状态继续执行。 从而抵消了额外的编译时间开销. 6.4 编译优化技术 在即时编译器中采用的优化技术有很多,本节主要针对以下四种优化技术: 语言无关的经典优化技术之一:公共子表达式消除 语言相关的经典优化技术之一:数组范围检查消除 最重要的优化技术之一:方法内联 最前沿的优化技术之一:逃逸分析 公共子表达式消除 公共子表达式消除是一个普遍应用与各种编译器的经典优化技术,它的含义是: 如果一个表达式E已经计算过了,并且从先前的计算到现在 ,它与类型继承关系分析一样,并不是直接优化代码的手段,而是为其他优化手段提供依据的分析技术。

    49410编辑于 2023-10-19
  • 来自专栏iSharkFly

    Confluence 6 性能优化

    新的版本通常有更好的性能优化。 因没有足够内存避免 swapping 总是关注你服务器的交换(swapping)活动。 我们推荐你使用你熟悉的数据库,因为你能够更好的对数据库进行维护,这个可能相对你不熟悉的数据库来说,能更好的让你对数据库的性能进行优化。 数据库状态和查询分析 现代的数据库会基于你对数据库运行的查询历史来对查询进行优化。使用 SQL EXPLAIN 语句将会告诉你数据库查询的优化情况。 如果数据库查询命中率明显的不同,那么你需要考虑对数据库运行状态收集和优化。针对你数据库的版本不同,优化的版本和方向也会不同。 https://www.cwiki.us/display/CONF6ZH/Performance+Tuning

    1.4K40发布于 2019-01-30
  • 来自专栏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原理及总结

    keys.next(); //5 直接从容器中移除就可以了 keys.remove(); //6 //5 有数据则进行读取 读取之前需要进行复位方法(把position 和limit进行复位) this.readBuf.flip(); //6 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
  • 来自专栏每天晒白牙

    IPv6定位优化

    背景 随着 IPv6的推进,我们发现线上需要使用 IPv6 定位的流量已经达到了 8000 QPS。 此前我们并未对 IPv6 定位做任何缓存或者其它优化,这部分流量会直接请求定位服务,随着流量进一步提升可能触发调用量报警以及流控。 另外由于此前已经对 IPv4 进行了缓存,如果 IPv6 不做相应的优化,因为多了一次 RPC 请求,服务的响应时间会随着 IPv6 流量占比提升而变长。 inet6Address, Integer mask, Integer localId) { if (inet6Address == null || localId == null || localId 通过上述代码使用定位数据的每一行调用 put 方法即可完成前缀树的构建,下边看下构建好的前缀树如何进行查找: public Integer get(Inet6Address inet6Address)

    94320发布于 2021-04-12
  • 来自专栏即时通讯技术

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

    2)Java AIO又称为NIO 2.0,难道它也是基于NIO来实现的? 3)Netty为什么会舍去了AIO的支持?(点此查看); 4)AIO看起来貌似只是解决了有无,实际是发布了个寂寞? Java AIO的这些不合常理的现象难免会令人心存疑惑。所以决定写这篇文章时,我不想只是简单的把AIO的概念再复述一遍,而是要透过现象,深入分析、思考和并理解Java AIO的本质。 6AIO示例引发思考2:AIO注册事件监听和执行回调是如何实现的? 带着这个问题,去阅读JDK分析源码时,发现源码特别的长,而源码解析是一项枯燥乏味的过程,很容易把阅读者给逼走劝退掉。 Netty之所以移除掉AIO:很大的原因是在性能上AIO并没有比NIO高。 Linux虽然也有一套原生的AIO实现(类似Windows上的IOCP),但Java AIO在Linux并没有采用,而是用epoll来实现。 Java AIO不支持UDP。

    75120编辑于 2023-06-21
领券