netty学习1
2024-10-08 11:00:18
1、IO
java 自带IO流
1)同步处理方式,一个请求占用一个线程,高并发常见出现问题
2、java nio
实在jdk1.4版本上新添加的new IO / 非阻塞IO
可多路并发
3、Netty封装NIO开发
netty可轻松开发高性能Client-server应用程序
4、netty粘包、拆包问题
数据传输过程中使用的为byte,会出现两次数据内容在一起(粘包)
一次数据被解析成2个 (拆包)
本质是server、client解析数据内容时不知道数据内容的长短,出现数据缺失或者过多解析问题
解决方法:
1)、消息长度固定
2)使用回车换行符作为消息结束符
3)通过其他特殊字符作为消息的结束标志
4)通过在消息头中国你定义长度字段来标示消息的总长度
5、netty自带的分隔符/定长解码器的应用
DelimiterBasedFrameDecoder
FixedLengthFrameDecoder
6、编解码技术
java自带序列化缺点:
1、无法跨语言
2、序列化后码流偏大
3、序列化性能太低
业界主流的编解码框架
1、google的protobuf
通过对比发现json性能仅次于protobuf
2、facebook的Thrift
3、JBoss marshalling
4、MessagePack编解码(传输对象)
5、使用LengFieldPrepender
LengthFieldBasedFrameDecoder解决粘包、拆包问题
最新文章
- mysql set names 命令和 mysql 字符编码问题
- 20150612_Andriod contextual action mode 菜单
- c# 字符串(含有汉字)转化为16进制编码(转)
- 经典非原创,网页常用Javascript
- Swift概览
- LoadRunner测试问题
- Linux下编译boost库和qt和ImageMagick
- VS调试时监视上一个错误代码和错误的文本描述
- java-finalize
- robot framework 使用四:分层设计和截图以及注意事项
- HDU 2102 A计划(DFS)
- Spark源码分析之Spark-submit和Spark-class
- Maven项目搭建(二):Maven搭建SSM框架
- SpringBoot Tomcat启动报错
- 注册MongoDB为系统服务(二)
- ubuntu18.04 运行时提示缺少libstdc++.so.6
- 3 jmeter的两种录制方法
- 详解Vue中watch的高级用法
- BZOJ3328: PYXFIB
- UWP开发入门(二)——RelativePanel