
IO网络那些事
文章平均质量分 85
小猫猫猫◍˃ᵕ˂◍
2024数学全国大学生数学建模比赛B题湖北省第一/2023亚太杯三等奖/全国生物联赛国家级三等奖;现大三,目标是成为后端架构师,立志于挑战更难的技术和最复杂的逻辑,加油!未来会变的更好!
展开
-
Netty 框架——protobuf的使用
Netty 默认使用 Java 序列化,但其性能和跨语言支持存在一定问题,特别是 Java 序列化性能较低且无法在不同编程语言间互通。因此,使用 Protobuf(Protocol Buffers)替代 Java 原生序列化能够提高效率并支持跨语言通信。成功实现客户端与服务器间基于 Protobuf 的高效通信,服务器接收到客户端消息后打印其 ID 和 Name,客户端接收到服务器的响应消息。Netty 是一个高性能、异步事件驱动的网络通信框架,它提供了丰富的编码解码器(codec),如。原创 2024-12-07 03:55:53 · 1095 阅读 · 0 评论 -
Netty 心跳机制示例 —— 服务端实现
在 Netty 中,心跳机制的核心组件是,它会监测连接的读空闲(READ_IDLE)、写空闲(WRITE_IDLE)和读写空闲(ALL_IDLE)状态。当触发这些空闲状态时,Netty 会生成一个事件,并交由相应的处理器来处理(通常是发送心跳包或关闭连接等)。原创 2024-12-06 15:00:20 · 767 阅读 · 0 评论 -
小白也能看懂的 Netty 框架——实战(二)
普通任务通常用于处理不需要定时触发的耗时操作。例如,我们可能会在收到客户端请求后,执行一些后台任务(如数据处理、文件操作等),然后向客户端返回结果。此类任务会被提交到taskQueue中异步执行。@Overridetry {// 模拟耗时操作});在上面的代码中,我们将任务提交给eventLoop,该任务会被放入taskQueue中异步执行,避免了阻塞当前线程。定时任务用于处理那些需要延迟执行的操作。例如,定时推送消息、定时清理缓存等任务。这类任务会被提交到。原创 2024-12-05 05:14:43 · 952 阅读 · 0 评论 -
小白也能看懂的 Netty 框架——实战(一)
服务端:使用创建服务端,配置了,分别负责接收连接和处理业务。客户端:使用Bootstrap创建客户端,配置了并与服务端建立连接。Netty的异步模型:客户端和服务端之间的通信是异步的,通过进行异步操作,确保不会阻塞主线程。原创 2024-12-04 15:55:51 · 503 阅读 · 0 评论 -
小白也能看懂的 Netty 框架——理论篇
官网地址Netty 是一个高性能、异步事件驱动的网络通信框架,广泛应用于分布式系统、即时通讯、文件传输等领域。它为开发者提供了一个简洁而强大的 API,支持各种通信协议的实现。在传统的 IO 模式下,每个连接都需要一个独立的线程进行处理,线程数量随着连接数的增加而增加。这种模式下,系统的性能受限于线程管理,且由于线程切换的开销较大,不适合高并发场景。单 Reactor 单线程:适合客户端少、业务简单的场景,但无法充分利用多核 CPU。单 Reactor 多线程。原创 2024-12-03 22:37:23 · 650 阅读 · 0 评论 -
NIO和零拷贝
通过内存的映射,将文件映射到内核缓冲区,且用户空间可以共享内核空间的数据,于是在进行网络传输的时候可以减少内核空间到用户空间的拷贝次数。虽然有一次cpu拷贝,但是拷贝的信息很少,都是一些length、offset等信息,可以忽略不记。mmap需要四次状态的切换,3次数据拷贝;sendFile需要三次状态切换,2次数据拷贝。数据不经过用户态,从内核缓冲区进入socketbuffer,减少一次上下文切换。四次拷贝,三次状态的切换。三次拷贝,三次状态的切换。三次拷贝,两次状态的切换。两次拷贝,两次状态的切换。原创 2024-12-03 09:50:28 · 460 阅读 · 0 评论 -
NIO群聊系统demo示例
初始化:服务器启动时,初始化Selector和,并绑定到指定端口6667。客户端连接:服务器通过接受来自客户端的连接请求,并为每个连接创建一个。事件轮询:服务器进入循环,阻塞式地等待客户端事件(如连接请求或数据读取),并处理每个事件。数据读取与转发:当有客户端发送消息时,服务器读取消息,并将消息转发给其他客户端。断开连接处理:当客户端断开连接时,服务器关闭该客户端的连接。初始化客户端客户端连接到服务器(设置为非阻塞模式,注册到Selector上监听OP_READ事件。发送消息。原创 2024-12-03 08:50:30 · 1116 阅读 · 0 评论