现在比较纠结的地方很多:
1:进程 线程的编程的问题,在实际中怎么具体使用
2:网络编程的问题,高性功能服务器的设计实现问题,看tornado的服务器代码看不懂啊,可想而知我很菜了。
3:UNIX环境高级编程 UNIX网络编程 卷1 2这三本书先看哪个一个比较好那?或者应该看那本书哪,个人感觉UNIX网络编程看到目录里面设置服务器的设计,还有线程进程的问题,难道先看这个?
其实最主要想看懂torando的服务器设计,里面设计很多I/O,同步,异步啊,服务器设计啊,不想只会web的curd,不然太没有竞争力了(不知道web编程和网络编程是不是一个概念,我觉得不是一个概念。)
不知道我上面说的对不对,因为自己是自学,有错的地方请大神指教。
最后就是自己也看了python自带的那个最简单的服务器代码,能看懂,基本就是socket,然后符合WSGI的规范,但那个肯定是没任何性能可言,
回复内容:
我的建议如下1.先看 图解tcp/ip 抓重点 。理解面向连接,无连接,tcp粘包,udp有界等
2.然后看 linux/unix系统编程手册 socket几章,号称超越apue的好书。这几章将socket,select,poll,epoll讲的很到位。理解select,poll的原理,大并发为啥epoll有优势,epoll的水平触发和边缘触发
区别,如何解决边缘触发饿死问题等等。
3.看 tornado源码,这时候看起来应该比较轻松。比如tornado中用pipe做waker,上本书都有讲解。
4.阅读 effective tcp/ip ...
5.慢慢读 tcp/ip详解卷一和unix网络编程
为啥最经典的书最后推荐,主要是让大家刚开始不要太纠结细节,unp实在太厚了,会吓死自己的。当能力够了再回头,才有共鸣,才有大收获。 基本网络模型可以看unix网络编程1,里面有echo服务器程序多进程版本,多线程版本,I/O复用select和pool。非阻塞web客户程序,多线程web客户程序。我记得大概这么多,大概看了70%,有些章节没有看,比如sctp有关章节,数据库章节。
然后可以看看陈硕的多线程服务端编程,c++我不熟悉,就看看部分章节。
线程的话,我看完unix网络编程看了一本posix多线程编程。很多基本概念再讲,比如条件变量,锁,竞态等
学习高性能服务器,我觉得还是要看源码。我现在在看lighttped,这个是IO复用。还有你问的太广了,进程线程从操作系统就有值得借鉴的地方。
我也是初学者,学生,感觉网络编程的坑特别大,希望大家多多指点