![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IO
文章平均质量分 93
duration~
努力学习吧~
展开
-
Netty-优化与源码
### 3)ulimit -n* 属于操作系统参数* 可以设置一个进程同时打开的文件描述符的数量。### 4)TCP_NODELAY* 属于 SocketChannal 参数* 默认 false 开启了 nagle 算法### 5)SO_SNDBUF & SO_RCVBUF* SO_SNDBUF 属于 SocketChannal 参数* SO_RCVBUF 既可用于 SocketChannal 参数,也可以用于 ServerSocketChannal 参数(建议设置到 Se原创 2024-04-23 20:29:13 · 586 阅读 · 0 评论 -
Netty 进阶
魔数,用来在第一时间判定是否是无效数据包版本号,可以支持协议的升级序列化算法,消息正文到底采用哪种序列化反序列化方式,可以由此扩展,例如:json、protobuf、hessian、jdk指令类型,是登录、注册、单聊、群聊… 跟业务相关请求序号,为了双工通信,提供异步能力正文长度消息正文/*** 用户管理接口/*** 登录* @param username 用户名* @param password 密码* @return 登录成功返回 true, 否则返回 false。原创 2024-04-22 20:16:27 · 518 阅读 · 0 评论 -
Netty 入门
Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。原创 2024-04-22 10:06:40 · 831 阅读 · 0 评论 -
实现HttpServletRequest下多次获取流数据
众所周知request的输入流只能读取一次,不能重复读取。而在`HttpServletRequest`中,获取请求体数据的流(通过getInputStream()方法)默认只能被读取一次。一旦读取后,流将处于末尾状态,再次尝试读取会返回EOF(文件结束符),无法重新获取原始数据。如果在过滤器或者拦截器中有业务需求对输入流进行一些其他操作,那么此处读取过后再到`controller`层就会报错,提示IO异常,本次的需求就是在拦截器中获取请求体中的数据。如果多次调用会出现如下错误【如果拦截器中将请求体原创 2024-03-08 17:49:41 · 1714 阅读 · 0 评论 -
网络编程ServerSocketChannel
因为 select 在事件发生后,就会将相关的 key 放入 selectedKeys 集合,但不会在处理完后从 selectedKeys 集合中移除,需要我们自己编码删除。只要向 channel 发送数据时,socket 缓冲可写,这个事件会频繁触发,因此应当只在 socket 缓冲区写不下时再关注可写事件,数据写完之后再取消关注。事件发生后,要么处理,要么取消(cancel),不能什么都不做,否则下次该事件仍会触发,这是因为 nio 底层使用的是水平触发。拷贝 01234567890abcdef。原创 2024-04-19 10:02:39 · 771 阅读 · 0 评论 -
JAVA AIO
AIO 用来解决数据复制阶段的阻塞问题* 同步意味着,在进行读写操作时,线程需要等待结果,还是相当于闲置* 异步意味着,在进行读写操作时,线程不必等待结果,而是将来由操作系统来通过回调方式由另外的线程来获得结果> 异步模型需要底层操作系统(Kernel)提供支持>> * Windows 系统通过 IOCP 实现了真正的异步 IO> * Linux 系统异步 IO 在 2.6 版本引入,但其底层实现还是用多路复用模拟了异步 IO,性能没有优势原创 2024-04-19 09:44:51 · 665 阅读 · 0 评论 -
其它IO合集
缓冲流,也叫高效流,是对4个基本的FileXxx字节缓冲流字符缓冲流缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据对象的类型和对象中存储的数据。原创 2024-04-17 15:33:42 · 950 阅读 · 0 评论 -
IO基础合集
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File类只能对文件本身进行操作,不能读写文件里面存储的数据。生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output。原创 2024-04-17 12:13:20 · 713 阅读 · 0 评论 -
JAVA NIO深入剖析
Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。原创 2023-12-14 05:45:00 · 1859 阅读 · 0 评论 -
JAVA BIO深入剖析
Java BIO 就是传统的 java io 编程,其相关的类和接口在 java.ioBIO(blocking I/O) : 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器). 在上述的案例中,一个服务端只能接收一个客户端的通信请求,那么如果服务端需要处理很多个客户端的消息通信请求应该如何处理呢 在上述案例中:客户端的并发访问增加时。原创 2023-12-13 08:00:00 · 1336 阅读 · 0 评论 -
Java的I/O演进之路
I/O 模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,Java 共支持 3 种网络编程的/IO 模型:**BIO、NIO、AIO**实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型原创 2023-12-09 16:53:49 · 390 阅读 · 0 评论