
Netty
文章平均质量分 78
码小呆~
命运已做出了选择!
展开
-
Netty-数据传输秘密
描述网络编程中传输的数据总是具有相同的类型: 字节,这些字节是如何流动的主要取决于我们所说的网络传输一个帮助我们抽象底层的数据传输机制的概念,在网络编程中主要的传输有 OIO-阻塞传输,NIO-异步传输,Local-JVM内部的异步通信,Netty-异步通信在实现这种编程的转换的时候,比如 阻塞io传输到 nio异步传输,的时候,你会发现代码往往不能进行复用。并且自己可能要重新编写一套代码来解决问题,然而Netty 为他所有的传输实现了提供了一个通用的API,这相较于JDK所提供的简单的很多,接原创 2021-05-24 20:48:25 · 260 阅读 · 0 评论 -
Netty-实现一个简单的Http 服务器
在前面的学习中我们对netty模型以及组成部分有了初步的认识,这里我们使用Netty 实现一个简单的http 服务。来加深对Netty的认识。描述1.Netty监听8080端口,当用户访问浏览器的时候,http://localhost:8080/2.客户端接收到请求,然后转发数据到浏览器:hello, Netty !3.实现url 过滤,对不处理的请求,无需做处理。代码实例ChannelHandler/** * @Author qrn * @Title https://blog.csdn原创 2021-05-23 19:07:11 · 348 阅读 · 0 评论 -
Netty-核心组件
描述在Netty中包括了以下核心组件,这些组件代表了不同类型的构造: 资源,逻辑以及通知。对于每个组件来说,都提供了一个基本的定义,并且在适当情况下,还会踢动一个简单的实例代码来说明他的用法。ChannelChannel 是Java Nio的一个基本构造,他代表一个到实体的开发连接,也就是通道,在通道中进行读写操作。回调一个回调就是一个方法,一个指向已经被提供给另外一个方法的方法的引用。Netty 在内部使用了回调来处理时间,当一个回调被处罚时,相关的时间已经被一个ChannelHandler 的原创 2021-05-20 18:47:18 · 170 阅读 · 4 评论 -
Netty-Reactor模型
Reactor模式io复用结合线程池,就是Reactor模式的基本设计思想,可以理解为:客户发送请求到服务端,服务端完成监听到工作,然后在转发给多个线程去执行业务处理,前面的nio模型就是这样去做处理的,比如nio群聊系统的例子。核心组成:ReactorReactor在一个单独的线程中运行,负责监听和分发事件,分发给适当的处理程序来怼io事件做出反应。HandlersHandlers处理程序执行io事件要完成的实际事件,处理业务逻辑的部分。模式分类:根据Reactor 的数量和处理资源池的原创 2021-05-18 23:43:18 · 217 阅读 · 0 评论 -
Netty-NIO 零拷贝
描述:在java程序中,常用的零拷贝有mmap(内存映射) 和 sendFile,那么他们在系统里,到底是怎么样的一个设计?在nio中是如何实现零拷贝的呢?传统io拷贝直接内存拷贝:从图中可以看到,内核缓冲区,拷贝到 用户缓冲,在拷贝到socket 缓冲,在dma 拷贝,这是非常耗费资源的。mmap优化mmap 通过内存映射,将文件映射到内核缓冲区中,同时用户空间可以共享内核空间的数据,这样在网络传输的时候,就可以减少内核空间到用户空间的拷贝。sendFile 1.0数据传输不经过用原创 2021-05-14 20:10:48 · 252 阅读 · 5 评论 -
Netty-NIO 实现简单的群聊系统
场景1.服务端能够获取客户端信息2.服务端获取客户端发送的信息3.服务端实现信息转发,给其他客户端4.客户端连接服务端,发送数据5.接收服务端转发的信息,打印在控制台上。流程图需求描述这个小实例,可以用到前面所说的 Buffer,Channel,Selector,SelectionKey,整合在一起使用。如果有不懂这几个之间的关系,先看看前面的讲解会好很多。Server1.构建 Selector,Channel,并且注册进Selector ,SelectionKey 状态为 OP_A原创 2021-05-12 16:02:22 · 234 阅读 · 6 评论 -
Netty-NIO:核心组件(Buffer,Channel,Selector)详解
Nio最核心的组成部分就是Selector与Channe,还有Buffer,一个选择器中可以有多个通道和缓冲。BufferBuffer 是一个顶级抽象类,所在java.nio.Buffer 中,里面提供了一些属性和方法来提供缓冲的功能操作。 private int mark = -1; //标记 private int position = 0;//位置 private int limit;//最大的长度 private int capacity;//容量buffer原创 2021-05-11 00:01:54 · 266 阅读 · 4 评论 -
Netty-NIO线程模型
IO模型基本说明IO模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。目前为止java共支持3种网络编程模型:BIO,NIO,AIO:BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。线程模型图代码实例/** * @Author qrn * @Date 2021/5/9 下午9:20 * @Version 1.0原创 2021-05-09 23:17:39 · 585 阅读 · 4 评论