nio
文章平均质量分 89
阿昌喜欢吃黄桃
这个作者很懒,什么都没留下…
展开
-
Day786.NIO的优化实现原理 -Java 性能调优实战
阻塞IO:调用read()线程阻塞了非阻塞IO:调用read()马上拿到一个数据未就绪,或者就绪。I/O多路复用:selector线程阻塞,channel非阻塞,用阻塞一个selector线程换了多个channel了非阻塞。select()函数基于数组,fd个数限制1024,poll()函数也是基于数组但是fd数目无限制。都会负责所有的fd(未就绪的开销浪了),epll():基于红黑数实现,fd无大小限制,平衡二叉数插入删除效率高。信号驱动模式IO:对IO多路复用进一步优化,selector也非阻塞了。原创 2022-10-31 21:21:05 · 323 阅读 · 0 评论 -
Day785.网络通信优化之通信协议:如何优化RPC网络通信 -Java 性能调优实战
一提到 RPC,是否还想到 MVC、SOA 这些概念呢?如果没有经历过这些架构的演变,这些概念就很容易混淆。架构的演变史:无论是微服务、SOA、还是 RPC 架构,它们都是分布式服务架构,都需要实现服务之间的互相通信,我们通常把这种通信统称为RPC 通信。,即远程服务调用,是通过网络请求远程计算机程序服务的通信技术。RPC 框架封装好了底层网络通信、序列化等技术,我们只需要在项目中引入各个服务的接口包,就可以实现在代码中调用 RPC 服务同调用本地方法一样。原创 2022-10-30 15:24:24 · 409 阅读 · 0 评论 -
Day783.网络通信优化之I/O模型:如何解决高并发下I/O瓶颈 -Java 性能调优实战
I/O是机器获取和交换信息的主要渠道,而流是完成 I/O 操作的主要方式。在计算机中,流是一种信息的转换。流是有序的,因此相对于某一机器或者应用程序而言,通常把机器或者应用程序接收外界的信息称为输入流从机器或者应用程序向外输出的信息称为输出流(OutputStream),合称为输入 / 输出流(I/O Streams)。机器间或程序间在进行信息交换或者数据交换时,总是先将对象或数据转换为某种形式的流,再通过流的传输,到达指定机器或程序后,再将流转换为对象数据。因此,流就可以被看作是一种。原创 2022-10-28 20:15:58 · 1106 阅读 · 0 评论 -
Day681.NioEndpoint组件:Tomcat如何实现非阻塞I/O -深入拆解 Tomcat & Jetty
I/O模型是为了解决内存和外部设备速度差异的问题。我们平时说的阻塞或非阻塞是指应用程序在发起I/O操作时,是立即返回还是等待。而同步和异步,是指应用程序在与内核通信时,数据从内核空间到应用空间的拷贝,是由内核主动发起还是由应用程序来触发。在Tomcat中,Endpoint组件的主要工作就是处理I/O,而NioEndpoint利用JavaNIOAPI实现了多路复用I/O模型。谁主动,同步就是A问B要东西,总是A主动”伸手“问B要。httpshttpshttps。...原创 2022-07-18 21:39:31 · 440 阅读 · 1 评论 -
Day467&468&469.JavaBIO&NIO编程&AIO&NIO与零拷贝&对比 -netty
Java BIO 编程一、I/O 模型I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java 共支持 3 种网络编程模型/IO 模式:BIO、NIO、AIOJava BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销Java NIO :同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的原创 2021-12-02 22:31:32 · 2173 阅读 · 1 评论 -
Day389.使用JavaNIO实现简易在线多人聊天室 -NIO
使用JavaNIO实现简易在线多人聊天室一、 服务端代码package chatroom.server;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.nio.charset.Charset;import java.util.Iterator;import java.util.Set原创 2021-09-13 21:54:11 · 557 阅读 · 1 评论 -
Day388.Selector&Pipe&fileLock文件锁&Path&Files&AsynchronousFileChannel异步通道 -NIO
Selector一、 Selector 简介1 、Selector 和 Channel 关系Selector 一般称 为选择器 ,也可以翻译为 多路复用器。它是 Java NIO 核心组件中的一个,用于检查一个或多个 NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个 channels,也就是可以管理多个网络链接。使用 Selector 的好处在于:使用更少的线程来就可以来处理通道了, 相比使用多个线程,避免了线程上下文切换带来的开销。2、 可选择通道(Se原创 2021-09-12 19:41:12 · 694 阅读 · 0 评论 -
Day387.Buffer缓冲区 -NIO
Java NIO(Buffer)1.1 Buffer 简介Java NIO 中的 Buffer 用于和 NIO 通道进行交互。数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成 NIO Buffer 对象,并提供了一组方法,用来方便的访问该块内存。缓冲区实际上是一个容器对象,更直接的说,其实就是一个数组,在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的; 在写入数据时,它也是写入到缓冲区中原创 2021-09-11 22:53:08 · 563 阅读 · 0 评论 -
Day386&387.Nio概述&Nio的Channel通道 -NIO
Java NIO 概述Java NIO(New IO 或 Non Blocking IO)是从Java 1.4 版本开始引入的一个新的IO API,可以替代标准的 Java IO API。NIO 支持面向缓冲区的、基于通道的 IO 操作。NIO 将以更加高效的方式进行文件的读写操作。1.1 阻塞 IO通常在进行同步 I/O 操作时,如果读取数据,代码会阻塞直至有可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的 Server/Client 模式会基于 TPR(Thread per Requ原创 2021-09-10 22:44:10 · 1224 阅读 · 0 评论