
Netty
文章平均质量分 58
木已成木炭
旅游
展开
-
Netty学习之路(一)- 同步与异步IO
瞄一瞄Netty[1]同步与异步IOI/O基础入门Linux网络I/O模型简介同步与异步IO(校招对我来说已经结束了,虽然找的并不是很满意,但是已经不想再尝试了,毕竟能力所限,不管去哪个公司还是先提高自己的水平吧,从今天开始先搞搞Netty)本篇博客主要是讲一些基础,记录我的学习过程,同时尝试养成写博客的习惯。内容基本来自Netty权威指南加上一丢丢的个人理解。。。。I/O基础入门在jdk...原创 2018-11-01 15:03:37 · 864 阅读 · 0 评论 -
Netty学习之路(三)-AIO编程
AIO编程NIO 2.0引入了新的异步通道的概念,与之前非阻塞IO(NIO)不同的是,NIO 2.0异步套接字通道是真正的异步非阻塞I/O,对应于UNIX网络编程中的事件驱动I/O(AIO)。它不需要通过多路复用器对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO的编程模型。话不多说,直接代码实践。AIO服务端package com.ph.AIO;import java.io.I...原创 2018-11-03 13:05:42 · 218 阅读 · 0 评论 -
Netty学习之路(四)-Netty入门实战
Netty入门实战前面学习了用Java原生NIO的编程实践,过程还是挺复杂的,需要熟练掌握Selector,ServerSocketChannel握,SocketChannel,ByteBuffer等。所以在绝大多数业务场景中我们可以使用Netty来进行NIO编程。先总结一下Netty的优点:API使用简单,开发门槛低;功能强大,预制了多种编解码功能,支持多种主流协议定制能力强,可以通过...原创 2018-11-03 23:26:07 · 285 阅读 · 0 评论 -
Netty学习之路(六)-分隔符和定长解码器的应用
分隔符和定长解码器的应用之前已经使用了LineBasedFrameDecoder解决TCP粘包问题,现在再学两种解决TCP粘包的方法。DelimiterBasedFrameDecoder:可以自动完成以分隔符做结束标志的消息的解码,分隔符自定义。FixedLengthFrameDecoder: 固定长度解码器,它能够按照指定的长度对消息进行自动解码,开发者不需要考虑TCP的粘包/拆包问题...原创 2018-11-06 16:20:09 · 228 阅读 · 0 评论 -
Netty学习之路(八)-Google Protobuf编码
Protobuf是一个灵活,高效,结构化的数据序列化框架,相比于XML等传统的序列化工具,它更小,更快,更简单。Protobuf支持数据结构化一次可以到处使用,甚至可以跨语言使用,通过代码生成工具可以自动生成不同语言版本的源代码,甚至可以在使用不同版本的数据结构进程间进行数据传递,实现数据结构的前向兼容。Protobuf入门首先下载Protobuf的最新Windows版本:地址,下载底部的pr...原创 2018-11-09 16:41:34 · 236 阅读 · 0 评论 -
Netty学习之路(二)-异步IO(NIO)编程
异步IO(NIO)编程NIO到底是什么简称?有人称之为New I/O,原因为他相对于之前的I/O类库来说是新增的。这是官方叫法。但是,由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是让java支持非阻塞I/O,所以更多的人称之为非阻塞I/O(Non-block I/O)。在开始进行NIO编程之前,先得了解几个NIO类库的概念:通道(Channel):通道是对原 I/O 包中...原创 2018-11-02 22:32:39 · 768 阅读 · 0 评论 -
Netty学习之路(九)-JBoss Marshalling编解码
JBoss Marshalling 是一个Java对象序列化包,对JDK默认的序列化框架进行了优化,但又保持跟java.io.Serializable接口的兼容,同时增加了一些可调的参数和附加的特性。Marshalling开发环境准备下载相关的Marshalling类库:地址,将该jar导入项目即可。创建Marshalling编解码器通过创建MarshallingCodeCFactory工...原创 2018-11-10 16:04:50 · 665 阅读 · 0 评论 -
Netty学习之路(七)-编解码技术
当进行远程跨进程服务调用时,需要把被传输的Java对象编码为字节数组或者ByteBuffer对象。而当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码为发送时的Java对象。这被称为Java对象编解码技术。而我们常见得Java序列化仅仅是Java编解码技术的一种,由于java序列化有以下缺点:无法跨语言序列化后的码流太大序列化性能太低因此衍生了多种编解码技术和框架。...原创 2018-11-07 17:42:50 · 383 阅读 · 0 评论 -
Netty学习之路(五)-TCP粘包/拆包问题
TCP粘包/拆包问题TCP是个“流协议”,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以一个完整的包可能会被TCP拆分成多个包进行发送,也有可能吧多个小的包封装成一个大的数据包发送,这就是TCP粘包和拆包问题。TCP粘包/拆包产生情况服务端分两次读取到了两个独立的数据包,没有粘包和拆包服务端一次接收到了两个数据包...原创 2018-11-05 19:30:25 · 260 阅读 · 0 评论