谈服务器端网络编程学习

这里主要说一下自己看的书和一些心得体会,把自己的学习路线梳理一下,也是作为自己这段时间的学习总结。

因为从事的都是服务器端开发和学习,所以本文内容主要在该范围内,假定读者经过了系统的CS学习(DS、OS、组成原理等核心课程)。

 

First

我的学习书籍路线参考如下内容:

 

 1 A:《Linux鸟哥私房菜》(第三版);
 2 
 3 B:《Linux程序设计》(第四版 中文版);
 4 
 5 C:《TCP/IP详解v1》(第一版 英文版);
 6 
 7 D:C/C++语言相关;
 8 
 9 E:《UNP v1》(第三版 中文版);
10 
11 F:《APUE》(第三版 中文版),《UNP v2》(第二版 中文版);

这些书没有非常严格的先后次序,需要根据自己的功力和实际情况而定,比如说刚接触Linux不久就去看《APUE》,估计被虐的要哭啦;如果没有实际的操作环境或者应用环境,就去搞内核方面的书,那你基本上是浪费时间,等等,这都是我走过的一些弯路,浪费了很多宝贵时间,希望大家引以为戒,把时间用到刀刃上。

 

Second

下面分门别类的说说读这些书的心得体会:

(1)系统入门必备(《鸟哥私房菜》)

说实话,这是业内公认的绝对入门书籍,作者是台湾的;这本书基本上是他一步步学习和管理Linux系统的手册,所以这本书适合从无到有(基本对Linux零基础)的学习Linux系统(基于CentOS),基本算是手把手的教吧,个人认为它比较适合完全菜鸟级别的入门学习,或者入门级别的参考手册,比如Linux安装,配置等等一些最基本的Linux操作,当然也包括一些系统级别的介绍、工具的使用等等;另外,这本书是基于CentOS的,该系统主要是做服务器端操作系统用的。

优点:入门级别,门槛低; 缺点:作者稍啰嗦,内容多且点到为止; 

我的用途:入门是大致看了一下重点章节,操作一些,后来就当配置参考手册、工具(awk,vim等)的快速参考资料

PS:该类别的其他菜鸟书籍没看过,不做评论

 

(2)编程入门(《Linux程序设计》)

这本书知名度并不高,写的也一般吧,Linux下的程序设计用到的方法、工具、函数等等都涉及到了,比《鸟哥私房菜》前进了一步;

这里的编程入门并不是学过数据结构和算法、会点编程语言就OK啦,而是Linux环境下的编程、调试,这本书基本涵盖了Linux程序设计(不止是服务器端编程)涉及到的大部分内容;大部分章节我都看过,后面的图形化那部分我没看。

同类别同层次的书我认为比较好的一本是《Unix-Linux编程实践教程》,这本书好像只有一版,讲的东西比上面这本更深入点,更多的是从系统的角度去看,所以涉及到了一些操作系统、组成原理方面的内容,并引领读者怎么一步步编写一些系统程序的实现(比如ls命令),还算比较好懂;另外,这本书是很久之前写的(很多函数没有返回值),在调试的时候会遇到一些问题;这本书我也只是浏览了几章,没细看。

优点:开发方面的东西都涉及到了,也容易理解,让你知道有这么个内容; 缺点:编程能力不会有太大提升,例子的实践价值不高。

PS:编程能力好一点的建议用《Linux程序设计》学习工作中会用到的基本技术,差一点的用《Unix-Linux编程实践教程》提高程序设计能力。

 

(3)协议(《TCP/IP详解》v1)

大神Stevens的六部大作之一;既然是服务器端编程,网络协议方面的东西还是要懂一点,主要是TCP、UDP、Http这三个协议吧,当然在校的最好把《TCP/IP详解》的第一卷给啃了,工作之余的学习就看对应的章节就可以啦(我是这么干的O(∩_∩)O哈!),其他的协议需要的时候再去搞就可以啦。有一点需要注意,这本书第一版出版非常早,但是重点的协议问题都讲的非常清楚,一般的开发问题足够了;11年好像出了第二版,但是据说修订版作者把经典给糟蹋啦。

读这本书可能需要一点点网络基础,如果感觉比较难懂的可以先学习一下《图解TCP/IP》,小日本写的,适合零基础了解,也不厚,三百页的样子,我从头到尾看了一遍。

优点:太多,大家知道的,用过的都说好; 缺点:得有点英语基础,读起来比较费时;有些情况的讨论在今天已经无意义,而新出现的问题可能没有相应的讲解部分。

PS:内容多,深入浅出,需要自己把握重点;另外好像有本《Effective TCP/IP》,网上有人推荐,专注于解决常见问题,我还没读过。

 

(4)C/C++(语言相关)

这部分是基本功,相关的帖子和书都比较多,网上的帖子大把的是,可以先了解下,这里只说基础;

C语言基础:《The C Programming Language》 

C++的基础书籍有两本:《C++ Primer》 and 《The C++ Programming Language》,业内公认;

更深入的就看你自己的功力和想法啦,个人没什么参考性;还有,要是推荐C++理论方面(不包括工程应用方面)的书,国内的只有估计就侯捷的啦,however,这位大神是台湾的。

PS:搞C++心有余而力不足,看一下《深入理解C++对象模型》和陈硕的《Linux多线程服务器编程》你就知道我啥意思啦;学C++很久,但是准备放弃,因为我觉得更多精力应该放在系统业务逻辑、架构本身(服务器端的开发语言有很多,C、Go、Python等等),而不是反复琢磨一门编程语言的模型和特性上;专心做一件事,如果工具本身特性我都很难搞定,我会选择更合适的工具,而不是反复练习这个工具的使用,人各有志吧。

 

(5)网络编程(《Unix Network Programming v1》 3rd)

 Stevens的六部大作之一,网络编程方面的常见问题这本书都讲到了,甚至网上讨论概念问题的时候,都是以此书为基准,可见其经典程度(搞得后辈们都不敢写这方面的书啦O(∩_∩)O哈!)。重点是这本书的前三分之一,和后面的个别章节;第一遍没怎么看懂,硬着头皮看完,现在在看第二遍,细细琢磨之后豁然开朗的感觉,能够感觉到明显的提升,这feel倍爽。感觉这本书是这样的,第一遍可能带你入门,再细读第二遍甚至是第三遍就会提高很大,然后就可以成为案头必备啦。

优点:同(3) 缺点:没有具体应用场景,要靠你自己去思考其应用

PS:我是看的中文第三版,翻译的还行,具体参考亚马逊书评、豆瓣或者知乎评论。

(6)系统编程

《Advanced Programming in the UNIX Environment》 3rd

《Unix Network Programming v2》 2nd

《APUE》其实并不适合入门,比较适合初级到中级提升功力用的,所以如果没有一些基础,不要一开始就去啃这本书;有了基础之后去捡重点章节读一下,重中之重是文件系统和文件IO、进程属性和进程控制,我也是捡重点的章节先看看,涉及到不懂的再去看相应的章节,而且后面的打印机程序很不错,能把前面的很多重点串起来,相当有用啊(要是《UNP》也这么干该多好,唉)。另外,《APUE》第二版据传翻译的比较烂,搞的大家都去看英文版,现在的第三版翻译的还不错,我是看的这版,没什么问题,建议看第三版中文。

《UNP v2》说的是各种IPC机制是怎么实现的,以及一些应用和常见问题,我看了一遍,但是后来基本上也忘了,只是需要的时候去看看。

优点:同(3); 缺点:《APUE》门槛较高

PS:今年新出的《Linux/Unix系统编程手册》,德国人写的,据说要超越《APUE》,网上没有完整中文电子版的,能找到的中文电子版我都看了,甚至浏览了下亚马逊买的纸质书,浏览了几章,后来又退了。该书基本上是完全面向Linux的,分了60多个章节,感觉应该属于是系统相关比较入门级别的书,适合基础不太好的童鞋;考虑到排版、纸质、写书风格问题(毕竟不想在两种风格之间转换),我最终选的还是Stevens的《APUE》,反正既然能看懂经典,还是去读经典吧。

 

Last

上面就是自己这一年左右看的书,都是我认为比较核心的书,读这些书自己能感觉到功力的明显提升,其他的零敲碎打的、读了也感觉不到进步的一些书就没列出来。

另外,这些经典是用来阅读、品味和收藏的,尽量买正版吧,看着也舒服;我还把封面沾了一层透明胶,O(∩_∩)O,不怕磨破啦。

最后赠汝一句:一本经典读十遍,远胜过十本烂书读一遍(多么痛的领悟),各位,且读且珍惜!

转载于:https://www.cnblogs.com/lizhanwu/p/4164456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值