Netty
文章平均质量分 50
酱油瓶啤酒杯
这个作者很懒,什么都没留下…
展开
-
Netty-ChannelInitializer-实现原理
在之前的文章中解读了Netty对于一条连接的各个状态的生命周期进行了解读1、ChannelInitializer的实现原理在定义handler的时候通过childHandler()方法设置了一个handle/也就是ChannelInitializer在ChannelInitializer的initChannel()方法中,通过获取channel对应的管道,在里面加入各种方法//xxxxxxxxxxxxxx省略代码```.childHandler(new ChannelInitializer&l原创 2021-02-17 21:42:20 · 880 阅读 · 0 评论 -
Netty-ChannelHandler-生命周期/顺序解读
继承关系ChannelHandler---------->ChannelInboundHandler----------->ChannelInboundHandlerAdapter自定义一个handler继承ChannelInboundHandlerAdapter,来查看ChannelInboundHandlerAdapter中各个方法的执行顺序LifeCyCleTestHandler.javapublic class LifeCyCleTestHandler extends Cha.原创 2021-02-17 21:18:45 · 768 阅读 · 1 评论 -
Netty-基于Netty实现RPC-仿Dubbo
1、什么是RPCRPC,英文全称是Remote Procedure Call,翻译过来就是远程过程调用。作为一个计算机通信协议,运行在计算机A的程序调用另一台计算机B上的子程序就像调用本地方法一样方便,而这两个程序是分布在不同的服务器上的RPC远程过程调用图示:其中Client就是RPC服务的消费者,Server就是服务提供者,通过上图可以看到完整的调用关系RPC就是将以上的步骤全部封装起来,用户直接使用,而不用关心使用细节,部署后直接能像使用本地方法一样使用远程程序2、设计一个RPC原创 2021-02-05 22:07:44 · 239 阅读 · 0 评论 -
Netty-使用netty实现群聊-代码实现
使用Netty实现一个简单的群聊功能原创 2021-02-02 21:29:45 · 435 阅读 · 0 评论 -
Netty-Unpooled类-细节使用
1、是缓冲区工具类作为Netty具体的缓冲区/数据容器,提供的常用方法如下区别于NIO的ByteBuffer通过给定的数据和字符返回一个Bytebuf对象public static ByteBuf copiedBuffer(CharSequence string,Charset charset)2、内部细节ByteBuf内部维持了三个变量,一个是readerIndex/读数据的指针,一个是writerIndex/写数据的指针,一个是capacity/容量大小3、实战分析代码1pack原创 2021-02-02 17:46:43 · 955 阅读 · 0 评论 -
Netty-EventLoopGroup/NioEventLoopGroup-自动向下
1、NioEventLoopGroup是EventLoopGroup的实现类EventLoopGroup接口直接继承JDK中的EventExecutorGroup接口。Netty中的NioEventLoopGroup是继承了MultithreadEventLoopGroup抽象类,而MultithreadEventLoopGroup继承MultithreadEventExecutorGroup抽象类。MultithreadEventExecutorGroup抽象类实现了Netty中的EventLoo.原创 2021-02-02 16:52:05 · 192 阅读 · 0 评论 -
Netty-Future/ChannelFuture-核心组件II
1、在Netty中的作用Netty中的IO操作都是异步进行的,并不能和同步一样立即知道消息是否被正确处理Netty为IO操作注册一个监听,当IO操作成功或者不成功的时候都会自动触发注册的监听事件Future和ChannelFuture就是为监听IO事件服务的,不敢IO操作成功不成功都会返回一个ChannelFuture2、FutureNetty的Future接口继承了JDK的Future接口,同时提供了更多的方法public interface Future<V> exten原创 2021-02-01 21:47:36 · 232 阅读 · 0 评论 -
Netty-Bootstrap/ServerBootstrap-核心组件I
1、BootstrapBootstrap的字面意思是引导,通常情况下,一个Netty应用由一个Bootstrap开始,配置整个Netty程序和串联各个组件在Netty中,Bootstrap是客户端程序的启动引导类2、ServerBootstrap在Netty中,ServerBootstrap是服务端启动引导类3、二者相关的常用方法//该方法用于配置两个服务器端的EventLooppublic ServerBootstrap group(EventLoopGroup parentGrou原创 2021-02-01 21:28:05 · 202 阅读 · 0 评论 -
Netty-通过Maven构建Netty项目-IDEA依赖导入
1、IDEA IntellIJ左上角File ->New -> Project -> 新建一个Maven工程2、左上角打开pom.xml文件配置依赖3、加入依赖语句,根据需求选择Netty的版本 <dependencies> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all.原创 2021-01-31 20:12:35 · 12444 阅读 · 1 评论 -
Netty-基于NIO实现群聊系统-逐步搭建
1、功能介绍基于NIO实现一个群聊系统,实现服务器端和客户端之间的简单通讯,非阻塞方式实现多人群聊,客户端的消息可以无阻塞的发给所有的其他用户,也能接收其它用户的消息服务器端:需要监测用户上线、下线,实现客户端消息转发功能客户端:通过通道无阻塞的发送消息给其它用户,并接收其他用户的消息2、系统分析**服务器端:**服务器启动并监听端口,服务器接收客户端的消息并转发,同时处理客户端上线和离线**客户端:**连接服务器,发送消息,接收服务器转发的消息3、服务器端实现package N原创 2021-01-30 20:32:43 · 211 阅读 · 2 评论 -
Netty-NIO学习-基于FileChannel读写实战
1、准备知识介绍NIO模式的三大组件:Selector/选择器、Channel/通道、Buffer/缓存的关系图如下所示:每个线程对应一个Selector,每个Selector对应多个Channer,每个Channerl对应一个Buffer,每个Buffer对应一个客户端程序。缓冲区/Buffer的实质是一个可以读写数据的内存块,底层是容器对象/数组。可以使用flip()方法进行读写切换。Buffer是一个顶层抽象父类,有很多实现子类2、本地文件写数据FileChannal主要用作对本地文原创 2021-01-28 20:10:10 · 673 阅读 · 2 评论 -
Netty-使用线程池优化BIO-代码实现
1、背景介绍已知NIO的性质是每有一个新的连接请求就要新建一个线程与之连接,线程的创建对资源的消耗是很大的,可以使用之前学过的池化思想来节省线程资源2、设计要求使用BIO模型食记一个服务器端,监听某个端口,当有客户端请求连接时就启动一个线程与之通讯,服务器端可以接收服务器发生的数据3、代码实现代码分为两部分,第一部分是main函数,第二部分是handler函数,需要注意是是涉及到Socke和输入流的一些Java知识点package BIO;import java.io.IOExceptio原创 2021-01-27 22:07:15 · 366 阅读 · 1 评论 -
Netty-三种IO方式-对比介绍
1、IO模型是什么IO模型可以理解为是通信双方用什么样的通道进行数据的接收和发送2、Java支持的IO模型Java支持三种网络编程模型/IO模式:BIO、NIO、AIOBIO:同步阻塞,服务器实现模型是为每个连接创建一个线程,当客户端请求服务端时就要启动一个新线程进行处理,不管这个连接要求什么数据/不要求数据NIO:同步非阻塞,服务器实现模式–一个线程处理多个请求,客户端发起的连接请求都会注册到多路复用器上进行轮询,一次只有一个进行IO请求AIO/NIO.2:异步非阻塞,当前使用的不多,A原创 2021-01-27 20:59:30 · 351 阅读 · 2 评论