随笔分类 -  Netty

摘要:1. 什么是零拷贝 维基上是这么描述零拷贝的:零拷贝描述的是CPU不执行拷贝数据从一个存储区域到另一个存储区域的任务,这通常用于通过网络传输一个文件时以减少CPU周期和内存带宽。 2. 零拷贝给我们带来的好处 减少甚至完全避免不必要的CPU拷贝,从而让CPU解脱出来去执行其他的任务 减少内存带宽的占 阅读全文
posted @ 2021-03-15 23:04 IT路上的小白 阅读(146) 评论(0) 推荐(0)
摘要:实例要求:1) 编写一个 Netty 群聊系统, 实现服务器端和客户端之间的数据简单通讯(非阻塞)2) 实现多人群聊3) 服务器端: 可以监测用户上线, 离线, 并实现消息转发功能4) 客户端: 通过 channel 可以无阻塞发送消息给其它所有用户, 同时可以接受其它用户发送的消息(有服务器转发得 阅读全文
posted @ 2020-05-03 23:52 IT路上的小白 阅读(1043) 评论(0) 推荐(0)
摘要:1.IO模型,首先对Java网络编程的发展流程回顾一下,最开始的TCP/IP服务器,Java原生IO,到后面的BIO,最后是Netty。 2.Java 共支持 3 种网络编程模型/IO 模式: BIO、 NIO、 AIO 。 Java BIO : 同步并阻塞(传统阻塞型), 服务器实现模式为一个连接 阅读全文
posted @ 2020-05-03 23:46 IT路上的小白 阅读(220) 评论(0) 推荐(0)
摘要:1.Java NIO 基本介绍 1) Java NIO 全称 java non-blocking IO, 是指 JDK 提供的新 API。 从 JDK1.4 开始, Java 提供了一系列改进的输入/输出的新特性, 被统称为 NIO(即 New IO), 是同步非阻塞的.2) NIO 相关类都被放在 阅读全文
posted @ 2020-05-03 23:45 IT路上的小白 阅读(477) 评论(0) 推荐(0)
摘要:Java AIO 基本介绍 1) JDK 7 引入了 Asynchronous I/O, 即 AIO。 在进行 I/O 编程中, 常用到两种模式: Reactor 和 Proactor。 Java 的NIO 就是 Reactor, 当有事件触发时, 服务器端得到通知, 进行相应的处理2) AIO 即 阅读全文
posted @ 2020-05-03 23:44 IT路上的小白 阅读(1487) 评论(1) 推荐(1)
摘要:基本介绍 1) Java 的 NIO, 用非阻塞的 IO 方式。 可以用一个线程, 处理多个的客户端连接, 就会使用到 Selector(选择器)2) Selector 能够检测多个注册的通道上是否有事件发生(注意:多个 Channel 以事件的方式可以注册到同一个Selector), 如果有事件发 阅读全文
posted @ 2020-05-03 23:43 IT路上的小白 阅读(809) 评论(0) 推荐(0)
摘要:工作原理示意图 1-简单版 Netty 主要基于主从 Reactors 多线程模型(如图) 做了一定的改进, 其中主从 Reactor 多线程模型有多个 Reactor 对上图说明 1) BossGroup 线程维护 Selector , 只关注 Accecpt。2) 当接收到 Accept 事件, 阅读全文
posted @ 2020-05-03 23:41 IT路上的小白 阅读(389) 评论(0) 推荐(0)
摘要:基本介绍 1) 异步的概念和同步相对。 当一个异步过程调用发出后, 调用者不能立刻得到结果。 实际处理这个调用的组件在完成后, 通过状态、 通知和回调来通知调用者。2) Netty 中的 I/O 操作是异步的, 包括 Bind、 Write、 Connect 等操作会简单的返回一个 ChannelF 阅读全文
posted @ 2020-05-03 23:40 IT路上的小白 阅读(597) 评论(0) 推荐(0)
摘要:1.编码和解码的基本介绍 :1) 编写网络应用程序时, 因为数据在网络中传输的都是二进制字节码数据, 在发送数据时就需要编码, 接收数据时就需要解码 [示意图]2) codec(编解码器) 的组成部分有两个: decoder(解码器)和 encoder(编码器)。 encoder 负责把业务数据转换 阅读全文
posted @ 2020-05-03 23:39 IT路上的小白 阅读(248) 评论(0) 推荐(0)
摘要:1) 实例要求: 使用 IDEA 创建 Netty 项目2) Netty 服务器在 6668 端口监听, 浏览器发出请求 "http://localhost:6668/ "3) 服务器可以回复消息给客户端 "Hello! 我是服务器 5 " , 并对特定请求资源进行过滤.4) 目的: Netty 可 阅读全文
posted @ 2020-05-03 23:37 IT路上的小白 阅读(277) 评论(0) 推荐(0)
摘要:1.Bootstrap、ServerBootstrap 1) Bootstrap 意思是引导, 一个 Netty 应用通常由一个 Bootstrap 开始, 主要作用是配置整个 Netty 程序, 串联各个组件, Netty 中 Bootstrap 类是客户端程序的启动引导类, ServerBoot 阅读全文
posted @ 2020-05-03 23:34 IT路上的小白 阅读(476) 评论(0) 推荐(0)
摘要:1.基本说明 1) netty 的组件设计: Netty 的主要组件有 Channel、 EventLoop、 ChannelFuture、 ChannelHandler、 ChannelPipe 等2) ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。 例如, 实现 C 阅读全文
posted @ 2020-05-03 23:33 IT路上的小白 阅读(1012) 评论(0) 推荐(1)
摘要:1 TCP 粘包和拆包基本介绍 1) TCP 是面向连接的, 面向流的, 提供高可靠性服务。 收发两端(客户端和服务器端) 都要有一一成对的 socket,因此, 发送端为了将多个发给接收端的包, 更有效的发给对方, 使用了优化方法(Nagle 算法) , 将多次间隔较小且数据量小的数据, 合并成一 阅读全文
posted @ 2020-05-03 23:29 IT路上的小白 阅读(1176) 评论(2) 推荐(1)
摘要:1.线程模型基本介绍 目前存在的线程模型有: 传统阻塞 I/O 服务模型 Reactor 模式 2.根据 Reactor 的数量和处理资源池线程的数量不同, 有 3 种典型的实现 单 Reactor 单线程; 单 Reactor 多线程; 主从 Reactor 多线程 3.Netty 线程模式 (N 阅读全文
posted @ 2020-04-26 11:56 IT路上的小白 阅读(446) 评论(0) 推荐(0)