如果主要希望掌握UNIX下的编程技术,尤其是网络编程技术的话,可以有两条路走:

1、以实际需要完善知识架构:为自己做一个项目,比方说自己写个简单的 Web 服务器,因为现在 Web 应用非常丰富,既有成熟的客户端如浏览器可以配合,又有足够全的文档如 RFC文档可供参考,再加上最基本的 socket 编程经验,就可以开始做自己的 Web 服务器。一步一步的为 Web 服务器添加流行的功能,如支持后台 FastCGI 接口,支持 WebDAV,支持流媒体等。在这个过程中不断地学习和掌握相关的理论知识,有时在发觉设计上的不足时甚至需要推翻全盘重新架构。当最终一个完全符合自己心意且足够实用的 Web 服务器做成时,就拥有了可以由自己支配和修改的服务器,同时也掌握了相关的专业理论。这种方式比较适合有一定专业基础的人使用。优点是直观,方向明确所以学习效率高。缺点是需求驱动,形成知识架构不容易完整。

2、系统掌握计算机专业理论:最好的书就是大学里的理论教科书,这些书不会去讲解过于具体的计算机应用,而是从概念开始讲起,力图使学习者获得一个完整的知识体系。只要以后碰到的工作和这个知识体系相关,自然就能很快学会。这种方式比较适合没有基础,或者希望深入学习的人使用,优点是知识架构会逐渐趋于完整,理论功底扎实,后劲足。缺点是花费时间长,方向不明确所以学习效率低,初期会因缺少实践而进展缓慢。

首先,不要抱着一口气把这本书学完的心态去看。
尝试根据自己的兴趣,选择一个规模适当的开源项目,去阅读它的源代码。(例如我选择的就是一个小型的http服务器--Mongoose)当在某一方面发现自己有很多问题时,很希望去弄清楚时,这时候就可以去翻开手中的APUE,带着问题去阅读。这时候学习的效率必然比盲目地去看书更高,而且遗忘率也会降低。
但是,仅仅读完是不够的。

很多时候,你看书的时候,会感觉自己看懂了,但是没过多久,又会发现自己忘了。或者,有时候你根本没看懂,而只是囫囵吞枣地看过去。所以,看完后,最好的方法就是写博客。尝试按照自己的理解以及逻辑,去将你学到的知识系统地阐述出来。这样,就算你以后忘了,再去翻翻博文,也能很快就捡起来。

原文:https://www.cnblogs.com/huanxiyun/articles/5420584.html

APUE和UNP怎么学?相关推荐

  1. 学C++就学服务端,先把apue和unp两卷看了,接着libevent,出来找工作应该没问题

    学C++就学服务端,先把apue和unp两卷看了,接着libevent,出来找工作应该没问题

  2. apue和unp的学习之旅05——包裹函数

    看到第5章就会发现,作者用了好多包裹函数,封装原始的api,所以不可避免必须学习下unix里出错处理方面的知识. 例如: sockfd = Socket(AF_INET,   SOCK_STRAM, ...

  3. 【book】apue和unp

    目录 unix 网络编程 unix 进程间通信 信号量: 条件变量 pipe FIFO 共享内存 套接字 消息队列 RPC: 1.本地过程调用 2.远程过程调用-同一台主机两个进程中 3.远程过程调用 ...

  4. 如何学习网络协议(学习笔记)

    引: 抓包软件---tcp状态转换..构造包--->2011-12-31 15:51:26 一个前辈写的网络协议学习方法 分类: Linux开发c/c++2008-10-02 00:35 257 ...

  5. Linux C 服务器端这条线怎么走?

    在校学生的编程语言和数据结构的基础还不错,我认为应该在<操作系统>和<计算机体系结构>这两门课上下功夫,然后才去读编程方面的 APUE.UNP 等书. 下面简单谈谈我对学习这两 ...

  6. 岁月划过生命线(从0到阿里)

    从来没有想到自己的求职之路会这么顺利, 第一次投阿里就拿到了offer, 以前一直都是做好被刷的准备的... 3月31号晚上收到了来自阿里的正式offer, 签下录取意向书, 粗略算了一下, 从201 ...

  7. Linux C++ 服务器端这条线怎么走?一年半能做出什么?

    origin:http://www.zhihu.com/question/22608820 您好,我现在大三了,请问我想往 Linux C++ 服务器方向发展该怎么走,比如现在在看 Linux 程序设 ...

  8. 如何学习技术(任何东西),重点是什么(转自知乎)

    Linux C++ 服务器端这条线怎么走?一年半能做出什么? 陈硕,Linux C++程序员,muduo 网络库作者 既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在<操作系统 ...

  9. 一些 别人建议的学习书目

    理想化的计算机科学知识体系:   -∞.Theory    (Math, Number Theory, Graph, Automata, Geometry) -3.Hardware    (Proce ...

最新文章

  1. linux环境下和网络服务相关的配置文件含义及如何配置
  2. sql server 数据库性能忧化
  3. 感动哭!Starbreeze发布《收获日2》VR版
  4. java:BIO, NIO
  5. pinpoint 安装部署
  6. Golang之空结构体和零长数组的实践
  7. Windows窗口分析
  8. centOS6.5下openfoam-2.4.0安装及并行实现
  9. [svc]jdk+tomcat部署.jforum论坛部署
  10. 小于等于0_从0开始学ARMARM汇编指令其实很简单
  11. 12v直流电机并联多大电容_对电容的理解
  12. Double 中的 NAN与INFINITY
  13. nginx rewrite重写规则配置详解
  14. 管理者必须要精通的六项管理技能
  15. Excel——输入身份证号后三位显示为0的问题
  16. INSERT 语句与 FOREIGN KEY 约束FK_comment_news冲突。该冲突发生于数据库newssystem,表dbo.news, column 'id'。 语句已终止。
  17. make_blobs方法的使用
  18. 未来全世界油气的发展之路
  19. 手把手教你一小时设计基于matlab的信号发生器GUI界面(1)
  20. win10系统小米妙享中心,在手机可搜索到电脑,与之跨屏协作

热门文章

  1. JavaFX项目jar使用javafxpackager生成exe
  2. golang的包管理系统比较
  3. Oracle RAC 常用维护工具和命令
  4. mongodb log ,warning: chunk is larger than 65203623200 bytes because of key
  5. Log4j官方文档翻译(九、输出到数据库)
  6. linux学习之yum命令的使用
  7. 建堆 java_堆排序就这么简单
  8. html5 strongeaseinout,Canvas開發庫封裝
  9. c语言写的跳转心理测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...
  10. 简单介绍Go 语言常见的一些坑