服务端C/C++开发所需要准备的

---FD---

1、服务器所用到的知识:(记录自百度知道)

  1. TCP/UDP,最基本的

  2. 并发——你可以选择使用select、poll,或者是多线程、多进程

  3. 如果你使用多线程,那么就必须使用同步技术——信号量、互斥体、条件变量的一种或几种,并且对于多线程技术,你还需要考虑使用进行线程分离与合并,

  4. 如果你使用了多进程,那么同步技术就不是你需要考虑的了,你需要考虑的是进程相关的问题了,你是使用fork还是vfork,你该如何处理客户端的请求,如何处理客户端断开连接后保证能够处理完数据并且没有僵尸进程产生,你还需要考虑高并发的问题

  5. 你发送接受数据的时候,采用何种方式,是阻塞的还是非阻塞的,还有连接超时、重传等问题

  6. 你是选择TCP还是UDP,如果选择UDP你可得忙了,需要你自己去进行重传验证,模拟TCP的三次握手,保证数据不会丢失,保证数据的有序性

  7. 还有其他很多需要你考虑的,以上都是指在Linux下的C++,本人对windows C++不了解

  8. 推荐书目:UNIX高级环境编程,UNIX网络编程,卷一。C++只不过是你使用这些技术的方式,不管你使用C还是C++,你都可以使用从这两本书中学习到很多有用的知识,但是不能保证你就可以写出高质量的服务器程序。

2、经过一段时间之后加强了对服务端C/C++开发的认识

最重要的是高并发————libevent (epoll)

多线程————————资源同步(信号量和相关锁)

多进程————————进程间通信

数据库————————MySQL及其他

数据库之前的缓存区——redis及其他

崩溃调试方式—————gdb调试

内存泄漏方式调试———Valgrind(memcheck)

(附加一个Linux C/C++程序员必须熟悉的开源项目链接:)

(https://blog.csdn.net/yuesichiu/article/details/40823299)



你可能感兴趣的:(Linux)