zoukankan      html  css  js  c++  java
  • 结尾

    结尾

    这本书被我翻完了,我不敢说读完了,因为在我阅读完后是有些遗憾又有些敬佩.

    遗憾在于无法完整的吸收作者的这些实践经验,我只有阅读理论的份,有时理论都还得借助其他资料来协助,因为这不是一本以理论为主的书,不过这种学习是有趣的,作者把理论和应用结合在了一起.在第八章介绍的高性能服务器程序框架和第九章的select/poll/epoll调用讲解和案例,我都是首次接触.这也是阅读这本书的惊喜之一,加上30天必须阅读完的压力,我在许多章节上没有过多的去了解,这一点后面讲.讲到敬佩,我确实是对这本书的作者是敬佩的,我甚至在心里有一种想法,哪家公司要是有这样的一名工程师的话绝对是一大利器,因为我体会到了作者的基础功力的深厚和实践的积累.作为一本颇具实践价值的一本书,在第一部分近70页的时间介绍了TCP/IP协议以及网络通信相关内容,重点是他不像教科书那样用原理给你娓娓道来,而是使用arp -a,tcpdump等来给你走一步看一步,从数据包中的发现与协议的标准相互映射,这就是在告诉你,"呢,我教你的这个是这样的吧,一点没差",这给我的印象是比较深刻的,所以我觉得作为一本以实践价值为基础的书来讲,这一点是很用心的,至少它做到了以实践为主的任务,无时无刻都在告诉读者我教的都是有用的.

    到了本书的第二/三部分,我开始快速的翻阅了,原因有两个:

    1. 自身水平是在有限,加上对网络原理的一知半解,其实前面看的还好,socket在大二一次项目中大量使用过,虽然回忆起来那时用的非常糟糕,但是看起来的熟悉感让我没有太大的压力,对相关知识的补充很有帮助,所以这样下来对TCP连接的过程,创建-绑定-监听-接受,connect的连接,非/阻塞,TCP连接状态等都是印象深刻的,网络编程以前也多多稍稍接触过一点,如根据主机名获取主机信息等等.当然这里就渐渐暴露出本书的缺点了,后面讲.

    2. 代码太多,真的太多,而且有点凑代码页数的嫌疑,同样的服务端socket创建过程使用了很多次,甚至include内容都是一样的,每次的代码若去掉这部分重复的代码可能就只有十几行是有差异的.也是从这里开始,我看本书的时候动手的概率少了很多,但这和代码多并没有什么关系,而是因为我全球最大的男性社交网站上找到了这本书的源码,在我的读书笔记有链接的.找到链接之后就开始看源码了,自己动手敲的次数少了很多很多,此后的代码几乎没自己敲过了.

    在这之间还经历了春节,要回老家,所以阅读停了(十)几天(其实是开始完善另一个小项目去了).春节回来又开始了继续阅读.

    都谈到了这本书的一些缺点,就是代码有凑字数的嫌疑,其实还有一点,就是有点像手册,在书的285页,也就是在线程和信号那一节,直接说白了使用man中提供的例子,我也在查阅这个函数(pthread_sigmask)的时候看到了,确实是的.其实我觉得这样没什么不好,保证了代码的严谨性,而且这个案例还有谁能举得比man更有代表性的呢.不过为什么像这类的代码不能只给出一小段代码,如可以省略错误处理函数和main入口,直接挑有代表性的地方讲,如如何调用相关参数(回调函数的设置),最后在结尾给一个完整代码的链接(二维码)或者github地址就好啦.类似手册代码的使用在本书的后半章甚至在第一部分就已经出现了,不过出现的不是直接使用手册中的代码,而是对某些函数的参数的超级详细解读,不过这到底是不是问题真不好说,不过对于这本书来讲我觉得前半部分还行,能接受,但是在后半部分就是问题了.在前半部分的时候,对一个参数的所有情况都有过讲解,比如TCP协议的头部内容,scoket地址族种类等这些之所以我能接收是因为它们在后面的章节中都有所涉及,而且讲的非常详细,还比如带外数据的处理,在第三章谈到处理方法之后又在第五章谈到了接收带外数据的实现,甚至还在第十章的信号种类中谈到了带外数据,这一点对于我这个刚刚认识带外数据的来说印象很是深刻.但是后面对函数参数的相关细节介绍依旧保持这巨多的特性,对于Linux信号居然列出了一张完整的表(一整页),不过我依旧认为这个是我的问题,因为可能只是我无法意识到这些参数的作用已经其重要性,只是说我在看完后在心中只会说"哦,这个参数还能这样控制这个行为",除此之外,我的水平认知就无法再联想到其他地方了,比如,这个参数如何影响,影响的结果是什么.这些都需要自己动手来实践,不过我没有,这是我的错.不过我更希望看到的是具有代表性的参数,而不是所有参数的讲解.

    总之,这是本具有实践意义的书,真是没错的,而且建议有过工作经验的阅读.
    在本书的前沿部分,作者已经说过了

    阅读本书之前,读者需要了解基本的计算机网络知识,并具有一定的Linux系统编程和C++编程基础,否则阅读起来会有些困难.本书读者对象包括:

    • Linux网络应用程序开发人员
    • Linux系统程序开发人员
    • C/C++程序开发人员 (我就是这一类)
    • 对网络编程技术感兴趣,或希望参与网络程序开发人员 (我就是这一类)
    • 开设相关课程的大专院校生

    可见针对的都是开发人员,不知道开发人员看完这本书的感想如何,我可能并不是作者想象中的适合读者,网络课下学期才开,Linux只了解基础命令,所以相关的评价肯定会有失偏颇.

    对于一名学生,这本书给了我一个视角,认识到了开发网络服务器的需要知识,认识到了网络在网络服务器中种种应用.应该来说这是学校的教科书无法提供的.

    只是,这本书给我读了我觉得会有点遗憾,不过很精彩.

    谢谢游双,谢谢学校图书馆.


    From

    MarkdownPad2

    2017/2/13 16:23:12

  • 相关阅读:
    【题解】 保镖 半平面交
    【题解】 CF1492E Almost Fault-Tolerant Database 暴力+复杂度分析
    【题解】 闷声刷大题 带悔贪心+wqs二分
    【题解】 「WC2021」表达式求值 按位+表达式树+树形dp LOJ3463
    EasyNVR及EasyRTC平台使用Go语言项目管理GoVendor和gomod的使用总结
    一天一个开发技巧:如何基于WebRTC建立P2P通信?
    HTML5如何实现直播推流?值得学习一下!
    java后端学习-第一部分java基础:Scanner的基本使用
    java后端学习-第一部分java基础:三元运算符、运算符优先级、标识符、关键字和保留字
    java后端学习-第一部分java基础:赋值运算符
  • 原文地址:https://www.cnblogs.com/leihui/p/6394466.html
Copyright © 2011-2022 走看看