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解决粘包、拆包问题

最新文章

  1. mysql set names 命令和 mysql 字符编码问题
  2. 20150612_Andriod contextual action mode 菜单
  3. c# 字符串(含有汉字)转化为16进制编码(转)
  4. 经典非原创,网页常用Javascript
  5. Swift概览
  6. LoadRunner测试问题
  7. Linux下编译boost库和qt和ImageMagick
  8. VS调试时监视上一个错误代码和错误的文本描述
  9. java-finalize
  10. robot framework 使用四:分层设计和截图以及注意事项
  11. HDU 2102 A计划(DFS)
  12. Spark源码分析之Spark-submit和Spark-class
  13. Maven项目搭建(二):Maven搭建SSM框架
  14. SpringBoot Tomcat启动报错
  15. 注册MongoDB为系统服务(二)
  16. ubuntu18.04 运行时提示缺少libstdc++.so.6
  17. 3 jmeter的两种录制方法
  18. 详解Vue中watch的高级用法
  19. BZOJ3328: PYXFIB
  20. UWP开发入门(二)——RelativePanel

热门文章

  1. Python学习第三天(持续学习了很多的str类型相关方法)
  2. codeforces 1285D. Dr. Evil Underscores(字典树)
  3. Flink流处理(二)- 流处理基本概念
  4. 题解【洛谷P3884】[JLOI2009]二叉树问题
  5. 题解【CJOJ1071/UVA】硬币问题
  6. sqlldr总结参数介绍
  7. CentOS 7 使用笔记
  8. macos 杀掉端口 命令行
  9. 【转载】Java开发中的23种设计模式
  10. java学生成绩管理系统