2021SC@SDUSC
文章平均质量分 86
fangjiayou
这个作者很懒,什么都没留下…
展开
-
Netty 接受请求过程源码剖析 2021SC@SDUSC
Netty 接受请求过程源码剖析1 源码剖析目的服务器启动后肯定是要接受客户端请求并返回客户端想要的信息的,下面源码分析 Netty 在启动之后是如何接受客户端请求的在 io.netty.example 包 下2 源码剖析说明:从之前服务器启动的源码中,我们得知,服务器最终注册了一个 Accept 事件等待客户端的连接。我们也知道,NioServerSocketChannel 将自己注册到了 boss 单例线程池(reactor 线程)上,也就是 EventLoop 。先原创 2021-12-27 15:23:57 · 595 阅读 · 0 评论 -
山东大学Netty 启动过程源码剖析2021SC@SDUSC
2021SC@SDUSCNetty 核心源码剖析1基本说明只有看过 Netty 源码,才能说是真的掌握了 Netty 框架。在 io.netty.example 包下,有很多 Netty 源码案例,可以用来分析源码分析章节 是针对有 Java 项目经验,并且玩过框架源码的人员讲的,否则看起来会有相当的难度。2 Netty 启动过程源码剖析2.1 源码剖析目的用源码分析的方式走一下 Netty (服务器)的启动过程,更好的理解 Netty 的整体 设计和运行机制。2.2原创 2021-12-27 15:23:01 · 94 阅读 · 0 评论 -
<2021SC@SDUSC>山东大学Netty小组——Google Protobuf
Google Protobuf1 编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 [示意图]codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据2 Netty 本身的编码解码的机制和问题分析Netty 自身提供了一些 codec(编解码器)Netty 提供的原创 2021-12-20 07:55:13 · 106 阅读 · 0 评论 -
山东大学Netty 编解码器和 handler 的调用机制
2021SC@SDUSCNetty 编解码器和 handler 的调用机制1 基本说明netty 的组件设计:Netty 的主要组件有 Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe 等ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现 ChannelInboundHandler 接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被原创 2021-12-13 14:15:06 · 85 阅读 · 0 评论 -
<2021SC@SDUSC>Netty 应用实例-群聊系统
2021SC@SDUSCNetty 应用实例-群聊系统实例要求:编写一个 Netty 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务器端:可以监测用户上线,离线,并实现消息转发功能客户端:通过 channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到)目的:进一步理解 Netty 非阻塞网络编程机制代码演示代码如下:GroupChatServerpackage com.shandonguniversity.ne原创 2021-12-06 08:00:23 · 84 阅读 · 0 评论 -
<2021SC@SDUSC>Netty 心跳检测机制案例
2021SC@SDUSCNetty 心跳检测机制案例实例要求:编写一个 Netty 心跳检测机制案例, 当服务器超过 3 秒没有读时,就提示读空闲当服务器超过 5 秒没有写操作时,就提示写空闲实现当服务器超过 7 秒没有读或者写操作时,就提示读写空闲代码如下:MyServerpackage com.shandonguniversity.netty.heartbeat;import io.netty.bootstrap.ServerBootstrap;import原创 2021-11-29 08:46:07 · 166 阅读 · 0 评论 -
山东大学Netty 心跳(heartbeat)服务源码剖析
2021SC@SDUSCNetty 心跳(heartbeat)服务源码剖析1 源码剖析目的Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一个服务——心跳机制 heartbeat。通过心跳检查对方是否有效(检查客户端和服务器端是否有效),这是 RPC 框架中是必不可少的功能。下面我们分析一下 Netty内部心跳服务源码实现。2 源码剖析说明Netty 提供了 IdleStateHandler ,ReadTimeoutHandler,WriteTime原创 2021-11-22 08:25:23 · 642 阅读 · 0 评论 -
<2021SC@SDUSC>Netty任务队列TaskQueue
2021SC@SDUSC左上NioEventGroup中除了Selector,还有一个很重要的TaskQueue任务队列,在整个事件循环的过程中,右下pipeline中会有一系列Handler对业务和数据进行处理,如果在某个Handler里有一个长时间的操作,势必造成pipeline有一定的阻塞,所以对某些任务可以提交到对应的TaskQueue中异步处理。任务队列中的 Task 有 3 种典型使用场景用户程序自定义的普通任务 [举例说明]用户自定义定时任务非当前 Reactor 线程调原创 2021-11-15 08:18:34 · 149 阅读 · 0 评论 -
<2021SC@SDUSC>Netty核心模块组件
2021SC@SDUSCNetty 核心模块组件1 Bootstrap、ServerBootstrapBootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类常见的方法有 public ServerBootstrap group(EventLoopGroup parentGroup, E原创 2021-11-01 19:06:59 · 104 阅读 · 0 评论 -
山东大学Netty高性能架构设计Reactor 模式
Netty高性能架构设计5.1线程模型基本介绍1)不同的线程模式,对程序的性能有很大影响,为了搞清 Netty 线程模式,我们来系统的讲解下 各个线程模式, 最后看看 Netty 线程模型有什么优越性.2)目前存在的线程模型有: 传统阻塞 I/O 服务模型Reactor 模式3)根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程; 单 Reactor 多线程; 主从 Reactor 多线程4)Netty 线程模式(Netty 主要基原创 2021-10-25 18:46:19 · 133 阅读 · 0 评论 -
Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>
Netty 通过 WebSocket 编程实现服务器和客户端长连接实例要求:Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接.要求:实现基于 webSocket 的长连接的全双工的交互改变 Http 协议多次请求的约束,实现长连接了, 服务器可以发送消息给浏览器客户端浏览器和服务器端会相互感知,比如服务器关闭了,浏览器会感知,同样浏览器关闭了,服务器会感知运行界面package com.shandonguniversity.netty.原创 2021-10-18 21:18:09 · 476 阅读 · 0 评论 -
山东大学Netty实验小组-NIO零拷贝案例 异步 同步 阻塞 非阻塞 的说明 2021SC@SDUSC
NIO 与零拷贝1.零拷贝基本介绍1)零拷贝是网络编程的关键,很多性能优化(比如文件传输)都离不开。2)在 Java 程序中,常用的零拷贝有 mmap(内存映射) 和 sendFile方法。那么,他们在 OS 里,到底是怎么样的一个的设计?我们分析 mmap 和 sendFile 这两个零拷贝3)另外我们看下 NIO 中如何使用零拷贝2.传统IO 数据读写Java 传统 IO 和 网络编程的一段代码3.传统IO 模型DMA: direct memory access 直接内存拷贝(不使用原创 2021-10-14 18:15:06 · 92 阅读 · 0 评论 -
山东大学Netty学习小组NIO网络编程应用实例-群聊系统与NIO 零拷贝 2021SC@SDUSC
2021SC@SDUSCSelectionKey1)SelectionKey,表示 Selector 和网络通道的注册关系, 共四种:int OP_ACCEPT:有新的网络连接可以 accept,值为 16 int OP_CONNECT:代表连接已经建立,值为 8int OP_READ:代表读操作,值为 1int OP_WRITE:代表写操作,值为 4源码中:public static final int OP_READ = 1 << 0; public static final原创 2021-10-04 12:44:52 · 165 阅读 · 0 评论 -
NIO 非阻塞 网络编程 2021SC@SDUSC
关于Buffer 和 Channel 的注意事项和细节ByteBuffer 支持类型化的 put 和 get, put 放入的是什么数据类型,get 就应该使用相应的数据类型来取出,否则可能有 BufferUnderflowException 异常。[举例说明]package com.shandonguniversity.nio;import java.nio.ByteBuffer;public class NIOByteBufferPutGet { public static vo原创 2021-10-01 14:41:34 · 96 阅读 · 0 评论 -
我的学习计划目录(任务+核心代码)2021SC@SDUSC
第 1 部分 JAVA BIO 编程I/O 模型 I/O 模型基本说明 BIO、NIO、AIO 适用场景分析 JAVA BIO 基本介绍 JAVA BIO 工作机制 JAVA BIO 应用实例 JAVA BIO 问题分析第 2 部分 JAVA NIO 编程JAVA NIO 基本介绍 NIO 和 BIO 的比较 NIO 三大核心原理示意图 Selector 、 Channel 和 Buffer 的关系图(简单版) 缓冲区(BUFFER) 基本介绍原创 2021-09-28 09:20:34 · 172 阅读 · 0 评论 -
Java NIO 编程2021SC@SDUSC
2021SC@SDUSCJava NIO 基本介绍Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。【基本案例】NIO 有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(选择器)原创 2021-09-25 20:03:33 · 381 阅读 · 1 评论 -
山东大学Netty小组——Java BIO 编程
I/O 模型今天我们先介绍绿色部分Java BIO,也就是Java的原生IO,然后进行一个Java BIO的实例分析。I/O 模型基本说明I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能(Client和Sever之间通讯的通道,单通道还是双通道,有没有通道缓冲,异步还是同步,阻塞还是非阻塞)Java 共支持 3 种网络编程模型I/O 模式:BIO、NIO、AIO(原来程序小,网络的并发性要求不高,原生java BIO就可以满足,但随着网络大并原创 2021-09-20 09:36:33 · 248 阅读 · 0 评论