摘要:
如果将消息看作是对于特定的应用程序具有具体含义的结构化的字节序列—它的数据。那么编码器是将消息转换为适合于传输的格式(最有可能的就是字节流);而对应的解码器则是将网络字节流转换回应用程序的消息格式。 在了解Netty编解码之前,先了解Java的编解码: 编码(Encode)称为序列化, 它将对象序列
阅读全文
posted @ 2020-03-24 15:25
kosamino
阅读(864)
推荐(0)
摘要:
一、什么是粘包、半包 1、粘包半包场景重现 来做这么一个测试,在Netty客户端发送数据到Netty服务端,代码如下: public void channelActive(ChannelHandlerContext ctx) throws Exception { for (int i = 0; i
阅读全文
posted @ 2020-03-23 20:18
kosamino
阅读(840)
推荐(0)
摘要:
Netty提供的ByteBuf不同于JDK中NIO的ByteBuffer,ByteBuf是netty中数据传输的容器,是Netty自己实现的,作为NIO ByteBuffer的替代品,提供了更好的API供开发者使用。相较于NIO的ByteBuffer更具有卓越的功能性和灵活性。具体NIO的ByteB
阅读全文
posted @ 2020-03-23 18:32
kosamino
阅读(1592)
推荐(0)
摘要:
ChannelPipeline 提供了ChannelHandler 链的容器,并定义了用于在该链上传播入站和出站事件流的API。ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起。 一、Channe
阅读全文
posted @ 2020-03-19 20:06
kosamino
阅读(732)
推荐(4)
摘要:
Netty的核心组件的设计都很模块化,如果想要实现一个应用程序,就需要将这些组件组装到一起。Netty通过Bootstrap类,以对一个Netty应用程序进行配置(组装各个组件),并最终使它运行起来。对于客户端程序和服务器程序所使用到的Bootstrap类是不同的,后者需要使用ServerBoots
阅读全文
posted @ 2020-03-19 05:25
kosamino
阅读(1793)
推荐(0)
摘要:
一、EventLoop、EventLoopGroup概述 由下图所示,NioEventLop是EventLoop的一个具体实现,EventLoop是EventLoopGroup的一个属性,NioEventLoopGroup是EventLoopGroup的具体实现,都是基于ExecutorServic
阅读全文
posted @ 2020-03-18 05:17
kosamino
阅读(3219)
推荐(1)
摘要:
如下所示,我们写一个简单的Netty Demo,实现客户端与服务端进行通讯。 1、Netty 服务端启动类 /** * (1)、 初始化用于Acceptor的主"线程池"以及用于I/O工作的从"线程池"; * (2)、 初始化ServerBootstrap实例, 此实例是netty服务端应用开发的入
阅读全文
posted @ 2020-03-18 04:20
kosamino
阅读(3969)
推荐(2)
摘要:
一、什么是Reactor模型 Reactor设计模式是event-driven architecture(事件驱动)的一种实现方式。Reactor会解耦并发请求的服务并分发给对应的事件处理器来处理。 目前,许多流行的开源框架都用到了Reactor模型。如:netty、node.js等,包括java的
阅读全文
posted @ 2020-03-15 17:39
kosamino
阅读(2867)
推荐(0)
摘要:
一、AIO简介 AIO是java中IO模型的一种,作为NIO的改进和增强随JDK1.7版本更新被集成在JDK的nio包中,因此AIO也被称作是NIO2.0。区别于传统的BIO(Blocking IO,同步阻塞式模型,JDK1.4之前就存在于JDK中,NIO于JDK1.4版本发布更新)的阻塞式读写,A
阅读全文
posted @ 2019-12-13 08:41
kosamino
阅读(4476)
推荐(3)
摘要:
一、简介 NIO我们一般认为是New I/O(也是官方的叫法),因为它是相对于老的I/O类库新增的( JDK 1.4中的java.nio.*包中引入新的Java I/O库)。但现在都称之为Non-blocking I/O,即非阻塞I/O,因为这样叫,更能体现它的特点。而下文中的NIO,不是指整个新的
阅读全文
posted @ 2019-12-12 18:12
kosamino
阅读(2175)
推荐(0)
摘要:
一、BIO简介 BIO是java1.4之前唯一的IO逻辑,在客户端通过socket向服务端传输数据,服务端监听端口。由于传统IO读数据的时候如果数据没有传达,IO会一直等待输入传入,所以当有请求过来的时候,新起一条线程对数据进行等待、处理,导致每一个链接都对应着服务器的一个线程。 BIO是同步阻塞的
阅读全文
posted @ 2019-12-06 04:07
kosamino
阅读(1072)
推荐(0)
摘要:
一、七层网络模型 OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,它是一个七层的、抽象的模型体。 1、物理层 并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和
阅读全文
posted @ 2019-12-05 05:34
kosamino
阅读(1601)
推荐(0)
摘要:
在Java项目中,经常对JDK版本有不同的要求,可是不可能为了某个项目的运行重新下载不同版本JDK进行安装,这样就涉及到对本地环境中多个JDK版本的管理。 Mac的JDK都是安装到一个指定目录的:/Library/Java/JavaVirtualMachines/,因此可以在这个目录下查看自己安装的
阅读全文
posted @ 2019-11-29 03:28
kosamino
阅读(6910)
推荐(0)
摘要:
程序运行在内存以及IO的体现 首先普及一下常识,如图所示: 1、在整个内存空间中,跑着各种各样的程序,有Java程序、C程序,他们共用一块内存空间。 2、对于Java程序,JVM会申请一块堆空间,通过Xmx可以设置,其余空间是堆外空间,其中每个线程有自己的线程栈,保证线程内存隔离,堆空间使用完以后,
阅读全文
posted @ 2019-11-27 20:34
kosamino
阅读(1680)
推荐(0)
摘要:
一、什么是泛型 Java从1.5之后支持泛型,泛型的本质是类型参数,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 若不支持泛型,则表现为支持Object,不是特定的泛型。泛型是对 Java 语言的类型系统的一种扩展,以支持
阅读全文
posted @ 2019-11-15 18:55
kosamino
阅读(1612)
推荐(0)