C++之网络陷阱

来源:互联网 发布:个人数字图书馆软件2.1 编辑:程序博客网 时间:2024/06/02 06:00
●多线程服务器模型
  one loop per thread.
  多线程发挥多核CPU的效率
●muduo网络库 86元
●术语
  Observer
  Reactor
  Sigleton
  override覆写
  dereference提领指针
●同步原语
  互斥锁、读写锁、条件变量、信号量
●网络编程的坑爹陷阱
1.程序在本机测试正常,放到网络运行上就经常出现数据收不全的情况?
  丢包
2.TCP 协议真的有所谓的“粘包问题”吗?该如何设计打包拆包的协议?又该如何编码实现才不会掉到陷阱里?
  粘包
3.带外数据(OOB)、信号驱动IO这些高级特性到底有没有用?
  IO性能
4.网络协议格式该怎么设计?发送 C struct 会有对齐方面的问题吗?对方不用 C/C++ 怎么通信? 将来服务端软件升级,需要在协议中增加一个字段,现有的客户端就必须强制升级?
  网络协议设计原则
5.要处理几千上万的并发连接,似乎书上讲的传统 fork() 模型应付不过来,该用哪种并发模型呢? 
  试试 select、poll、epoll 这种 IO 复用模型吧,又感觉非阻塞IO陷阱重重,怎么程序的 CPU 使用率一直是100%?
  实现高并发模型
6.要不改用现成的 libevent 网络库吧,怎么查询一下数据库就把其他连接上的请求给耽误了?
  libevent库使用
7.再用个线程池吧。万一发回响应的时候对方已经断开连接了怎么办?会不会串话?
  线程池引入
8.C++开发导致内存碎片的问题?
9.传闻服务端开发主要通过日志来查错,那么日志里该写些什么?日志是写给谁看的?怎样写日志才不会影响性能?
  日志编写原则
10.分布式系统跟单机多进程到底有什么本质区别?心跳协议为什么是必须的,该如何实现?
  分布式与多进程区别
11.C++ 的大型工程该如何管理?库的接口如何设计才能保证升级的时候不破坏二进制兼容性?
  接口设计
0 0
原创粉丝点击