Netty
qq_36594703
这个作者很懒,什么都没留下…
展开
-
ZipInputStream 和 ZipOutputStream
ZipInputStream 和 ZipOutputStream 可以用于处理 ZIP 文件格式,ZipInputStream 可以从 ZIP 文件中读取数据,ZipOutputStream 可以向 ZIP 文件中写入数据。原创 2023-08-16 15:46:19 · 559 阅读 · 0 评论 -
Netty实现webSocket实例(Netty十二)
netty实现websocket实例原创 2023-01-30 14:37:13 · 442 阅读 · 0 评论 -
Netty群聊系统(Netty十一)
服务器端:public class GroupChatServer { private int port; public GroupChatServer(int port) { this.port = port; } public void run() throws Exception { //创建两个线程组 NioEventLoopGroup bossGroup = new NioEventLoopGroup(1)原创 2020-10-11 18:00:45 · 285 阅读 · 0 评论 -
Netty核心组件(Netty十)
1.ChannelHandlerContext(1)保存channel相关的上下文信息,同时关联一个ChannelHandler对象(2)ChannelHandlerContext中包含一个具体的事件处理器channelHandler,同时ChannelHandlerContext中也绑定了对应的pipelin和Channel的信息,方便对ChannelHandler进行调用。(3)常用方法:ChannelFuture close()关闭通道ChannelOutboundInvoker原创 2020-09-26 18:01:23 · 186 阅读 · 0 评论 -
Netty异步模型(Netty九)
1.Netty模型:①Netty抽象出两组线程池,BossGroup专门负责接收客户端连接,WorkerGroup专门负责网络读写操作②NioEventLoop表示一个不断循环执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上的socket网络通道③NioEventLoop内部采用串行化设计,从消息的读取-》解码-》处理-》编码-》发送,始终由IO线程NioEventLoop负责④NioEventLoopGroup下包含多个NioEventLoop,每个NioEve原创 2020-09-26 16:16:48 · 195 阅读 · 0 评论 -
Netty入门实例-TCP服务(Netty八)
1.Netty服务器在6668端口监听,客户端能发送消息给服务器“hello 服务器”,服务器可以回复消息给客户端“hello,客户端”服务器端代码:public class NettyServer { public static void main(String[] args) throws Exception { //创建bossGroup,workGroup //bossGroup只处理连接请求,真正的和客户的业务处理会交给workGroup完成原创 2020-09-20 17:27:42 · 871 阅读 · 0 评论 -
Reactor模式(Netty七)
1、Reactor基于I/O复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接,当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。基于线程池复用线程资源:不必再为每个连接创建线程,将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。2.单Reactor多线程模型:①Reactor对象通过select监控客户端请求事件,收到事件后,通过dispatch进行分发②如果建立连接请求,则由acce原创 2020-09-19 21:41:25 · 325 阅读 · 0 评论 -
NIO零拷贝(Netty六)
1. 零拷贝是从操作系统角度考虑的,是指不进行CPU拷贝 DMA:direct memory access直接内存拷贝(不使用CPU) mmap:通过内存映射,将文件映射到内存缓冲区,同时用户空间可以共享内核空间的数据,这样,在进行网络传输时,就可以减少内核空间到用户空间的拷贝次数。 sendFile:在Linux2.1版本中,数据根本不经过用户态直接从内核缓冲区进入socket buffer,同时,由于和用户态完全无关就减少了一次上下文切换。 sendFile:在linux...原创 2020-09-19 16:53:50 · 202 阅读 · 0 评论 -
NIO之群聊系统(Netty五)
服务端代码:public class GroupChatServer { //定义事件 private Selector selector; private ServerSocketChannel listenChannel; private static final int PORT = 6667; public GroupChatServer(){ try{ //得到选择器 selector原创 2020-09-13 18:49:35 · 191 阅读 · 0 评论 -
NIO之Selector(Netty四)
1.Selector能够检测多个注册的通道上是否有事件发生(多个channel以事件的方式可以注册到同一个Selector),如果有事件发生,便获取事件然后针对每个事件进行相应的处理,这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求。2.只有在连接/通道真正有读写事件发生时,才会进行读写,就大大减少了系统开销,并且不必为每个连接都创建一个线程,不用去维护多个线程,避免了多线程之间的上下文切换导致的开销。3、selector类相关的方法:public abstract class原创 2020-09-13 15:57:59 · 217 阅读 · 0 评论 -
NIO之Channel(Netty三)
1.channel通道可以同时进行读写,而流只能读或者只能写,通道可以实现异步读写数据,通道可以从缓冲区读数据,也可以写数据到缓冲区。Channel在NIO中是一个接口,常用的channel类有FileChannel,DatagramChannel,serverSocketChannel,socketChannel,FileChannel用于文件的数据读写,DatagramChannel用于UDP的数据读写,ServerSocketChannel和SocketChannel用于TCP的数据读写。2.Fi原创 2020-08-30 18:37:57 · 260 阅读 · 0 评论 -
NIO之Buffer(Netty二)
1.NIO是面向缓冲区编程的,数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使他可提供非阻塞式的高伸缩性网络。2.Selector,channel,buffer的关系图①每个channel都会对应一个Buffer②selector对应一个线程,一个线程对应多个channel(连接)③该图反应了有三个channel注册到该selector程序④程序切换到哪个channel是有事件决定的,event就是一个重要的概念⑤selector会根据不原创 2020-08-30 18:26:13 · 176 阅读 · 0 评论 -
IO模型之BIO模型(Netty一)
1.Netty是一个异步的,基于事件驱动的网络应用框架,用以快速开发高性能、高可靠的网络IO程序,netty主要针对在TCP协议下,面向clients端的高并发应用或者Peer To Peer场景下的大量数据传输应用,netty本质是一个NIO框架,适用于服务器通讯的相关的多种应用场景。2.IO模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。3.Java共支持3种网络编程模型IO模式:BIO,NIO,AIO4.BIO(同步并阻塞):服务器实现模式为一个连接原创 2020-08-29 18:36:08 · 240 阅读 · 0 评论