Netty
Hosea91
这个作者很懒,什么都没留下…
展开
-
Netty之私有协议栈开发(一)
1.私有协议栈定义通讯协议从广义上区分,可以分为公有协议和私有协议。公有协议是由公共的组织或机构公开定义的具有通用性的协议。而私有协议一般是某个公司或组织内部使用的协议,按需定制,不具有公开性。绝大多数的私有协议都是基于TCP/IP基础上定义的。私有协议并没有标准的定义,只要能够进行跨进程、跨主机的数据交换,这些非标准的协议都可以称为私有协议。2.Netty协议栈Netty协议栈用于Netty内部各个模块之间的通讯,基于TCP/IP设计,类似HTTP协议,相比传统的协议栈,更加轻巧和灵活。2.1原创 2020-09-20 19:48:07 · 298 阅读 · 0 评论 -
Netty权威指南——WebSocket协议开发
1.Http协议的弊端半双工传输消息格式造成的消息冗长繁复可能造成对服务器的长时间轮询攻击等黑客攻击2.WebSocket入门WebSocket是HTML5开始提供的一种全双工的网络通讯协议,WebSocket基于TCP协议进行双向全双工消息传输,通讯双方只需要进行一个握手,然后就形成了一个快速通道,两者就可以持续通讯。相对于HTTP协议来说,通讯性能得到了很大的提升。特点:单一tcp连接,全双工通讯模式对代理、防火墙、路由器透明无头部、cookie和身份验证无安全开销通过“pi原创 2020-09-13 11:51:25 · 208 阅读 · 0 评论 -
Netty权威指南——Http协议开发应用
1. 什么是HTTP协议?http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信原创 2020-09-06 18:27:43 · 138 阅读 · 0 评论 -
JBoss Marshalling 编解码
JBoss Marshalling是一个Java对象序列化包,对JDK默认的序列化框架进行了优化,但又保持了跟java的Serializable接口的兼容,同时增加了一些可调的参数和附加特性。1.Marshalling 工厂类Marshalling的可调参数和附加特性通过工厂类进行配置。使用工厂类定义Marshalling编解码器。public final class MarshallingCodeCFactory { /** * JBoss Marshalling 解码器原创 2020-08-29 12:22:29 · 398 阅读 · 0 评论 -
Google Protobuf
1.Google Protobuf是什么?Protobuf .是Google的语言无关,平台无关的可扩展机制,用于序列化结构化数据, 相比与 xml 等传统的序列化工具, 它更小、更快、更简单。github地址:protobuf源码地址优点:在谷歌内部长期使用, 产品成熟度高跨语言、支持多种语言, 包括 C++、Java 和 Python编码后的消息更小, 更加有利于存储和传输编解码的性能非常高支持不同协议版本的前向兼容支持定义可选和必选字段2.ProtoBuf的使用2.1 安装原创 2020-08-22 21:46:51 · 154 阅读 · 0 评论 -
MessagePack编解码
1.什么是MessagePackMessagepack是一个高效的二进制序列化框架,支持多语言,跟json很像,但是性能更快,序列化后的码流更小。官方说明:MessagePack官网MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it’s faster and smaller. Small integers原创 2020-08-16 22:07:24 · 639 阅读 · 0 评论 -
编解码技术
1.Java的编解码技术含义将java对象编码为字节数组写入文件,或用于网络传输,在读取文件或者接受数据的时候,将其再解码为java对象。从而引出Java进行编解码的目的:网络传输对象持久化java的序列化(实现Serializable接口)是java编解码技术中的一种实现方式。java序列化技术有以下缺陷:java序列化技术使用内部私有协议,无法跨语言序列化后的字节码数组太大;序列化的性能太低,耗时长;因此,远程服务调用(RPC)不直接使用java原生序列化技术。也正是因为这些原原创 2020-08-08 15:43:20 · 526 阅读 · 0 评论 -
分隔符和定长解码器
TCP以数据流的方式进行数据传输,上层应用通常采用以下4种方式来对数据流进行解析,解析出每个业务基本的消息内容:定长消息:消息长度固定,读取到固定长度的数据报文后停止;计数器重置,再开始下一个报文。回车换行符为结束符:...原创 2020-08-01 18:52:29 · 252 阅读 · 0 评论 -
TCP粘包/拆包问题的解决方法
1.什么是TCP的粘包/拆包TCP的粘包和拆包,指的是上层同一个业务逻辑中的数据可能再发送过程中被TCP拆成多个包,或多个小包连成一个大包发送出去,从而导致业务处理逻辑出错的问题。造成TCP粘包/拆包的原因:应用程序写入的字节长度大于发送缓冲区大小;进行MSS大小的TCP分段;以以太帧的payload大于MTU进行IP分片。2.怎么解决粘包/拆包问题3.粘包/拆包问题案例4.使用Netty解决粘包/拆包问题...原创 2020-07-26 12:05:49 · 1194 阅读 · 0 评论 -
Netty入门应用
使用Netty编写一个时间服务器服务端程序public class TimeServer { public void bind(int port) throws InterruptedException { NioEventLoopGroup bossGroup = new NioEventLoopGroup(); NioEventLoopGroup workerGroup = new NioEventLoopGroup(); try {原创 2020-07-19 15:43:33 · 123 阅读 · 0 评论 -
NIO入门
1.传统的同步阻塞式I/O编程2.基于NIO的非阻塞式I/O编程3.基于NIO2.0的异步I/O(AIO)编程4.为什么要使用NIO5.为什么使用Netty原创 2020-07-12 15:05:00 · 209 阅读 · 1 评论 -
Java的I/O演进之路
1.I/O介绍按照百度百科上对IO的定义来说,计算机领域的I/O指的是输入/输出流,输入输出I/O流可以看成对字节或者包装后的字节的读取就是拿出来放进去双路切换;实现联动控制系统的弱电线路与被控设备的强电线路之间的转接、隔离,以防止强电窜入系统,保障系统的安全。Unix提供了5中I/O模型:阻塞I/O模型(blocking I/O):缺省情况下,所有操作都是阻塞的。非阻塞I/O模型(noblocking I/O):定时轮训是否有数据到来,无数据返回固定错误码,有数据则进行数据复制I/O多路复用模原创 2020-07-05 10:36:58 · 285 阅读 · 0 评论