项目遇到问题及解决方案
来源:互联网 发布:海鹰数据官网 编辑:程序博客网 时间:2024/05/20 09:43
1、QT滚动条问题
qt自带的滚动条,每次点击最大移动10%,为了良好的用户体验,滚动条进行重写实现了无限制滚动。
并且对进度条、音量条与UI主界面分离,底层逻辑相结合,提高了复用性。
2、UI界面相同问题
本地的音视频列表界面采用的是同一个UI界面,开始设计的时候,俩个界面用了一个UI类对象,导致了这个UI类对象十分代码臃肿,相同意义的成员变量过多。
后来采取了,这俩个UI界面各用一个对象
3、TCP接受沾包处理:
TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。
粘包情况有两种,一种是粘在一起的包都是完整的数据包、另一种情况是粘在一起的包有不完整的包
原因:它既可能由发送方造成,也可能由接收方造成。
1、发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据
2、接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。这是因为接收方先把收到的数据放在系统接收缓冲区,用户进程从该缓冲区取数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据放到系统接收缓冲区时就接到前一包数据之后,而用户进程根据预先设定的缓冲区大小从系统接收缓冲区取数据,这样就一次取到了多包数据
自定义数据包基本格式:
类型(1)+大小(4)+数据(n)
基本分包算法:
取出:只拷贝缓冲区数据,而不进行删除
(1)开辟一块socket接收缓冲区
(2)接收数据存入缓冲区尾部
(3)判断缓冲区数据满足类型大小否,不满足,返回(2);满足则取出数据
(4)判断缓冲区剩余数据满足包体大小否,不满足,返回(2);满足则取出数据
(5)判断缓冲区剩余数据满足数据大小否,不满足,返回(2);满足泽取出数据
(6)根据数据包类型,进行数据包处理
(7) 清除缓冲区中已处理的数据包
4、不满足基本数据包格式的数据包处理:
比如说一个请求数据包,只包含了一个一字节的数据包类型。基本数据包的处理方式接下来是要继续读出数据的大小。但是接下来的数据则是下一个数据包
这种情况下,我们通过对数据包类型进行单独处理,根据类型判断,下一次应该读出的是什么数据。
- 项目遇到问题及解决方案
- 项目中遇到的 问题及解决方案
- 做项目遇到的问题及解决方案
- IOS在项目中遇到的问题及解决方案
- Spring4MVCHibernate4重构项目遇到的问题及解决方案
- Git提交项目遇到的问题及解决方案!
- ios 写项目的时候遇到的问题及解决方案
- 项目交付中遇到的问题及解决方案
- 在Eclipse中导入及部署JavaWeb项目遇到的问题及解决方案
- Android问题收集——实际项目中遇到的问题及解决方案
- maven 私服(nexus)架设以及项目管理中遇到的问题及解决方案
- 一个笨鸟在使用Eclipse导入Maven项目遇到的问题及解决方案
- RK平台 2926 3168项目中遇到的问题及解决方案
- cocos2dx项目接入爱贝第三方支付sdk遇到的问题及解决方案
- spring mvc +mybatis+spring +shrio 项目开发遇到的问题及解决方案。
- 安卓项目升级sdk和第三方库遇到的问题及解决方案
- 使用angular-cli构建angular2项目时遇到的问题及解决方案
- 升级到AndroidStudio3.0之后项目打包遇到的问题及解决方案
- 混乱的First,Follow,Firstvt和Lastvt
- 公用方法:得到汉字的首字母(大写) 2
- 利用归并排序求逆序对
- 编译器的自展与交叉
- 移动开发问题
- 项目遇到问题及解决方案
- Qt 界面文件不更新以及qmake和shadow build简介
- oracle 11gr2在linux环境下的系统参数设置
- RPT 实验指导
- j2ee小结
- 在Netbeans中搭建Android开发环境
- IOS音频开发
- NVIDIA开启独显
- 递归处理正则表达式