apue 外传
先上目录
chapter 3
chapter 10
chapter 14
chapter 15
chapter 16
chapter 17
[apue] 作为 daemon 启动, Unix Domain Socket 侦听失败?
chapter 18
chapter 19
前言
开技术博客最好的时间是十年前(2010),其次是现在。
遥想当年读大学时,费尽心力读过一些书,其中不乏一些“教材型”书籍:概念罗列了一大堆,也用心看了,但是看完了就忘了——就是没有收获。
毕业后,记得第一次有种醍醐灌顶的感觉,还是在读侯捷的《深入浅出MFC》,真的有种 under hood 之后的恍然大悟的感觉。
同时为了更深入的理解书中内容,将整个 MFC 源码翻出来看了一遍,对于如何搭建一个框架来简化应用开发有了一些理解。
同时知道了看书不能不加选择,要看就要看经典的书、看经典作者。
后来又看了一系列侯捷的作品/译作:《Effective C++》《More Effective C++》《Essential C++》《深度探索 C++ 对象模型》《Win32 多线程程序设计》;
还有一些其它的作者,例如:
潘爱民的:《Effective STL》《COM原理与应用》;李师贤的:《C++ Primer 中文版》;荣耀的:《C++ 必知必会》;陈伟柱的:《C++ Templates》;
马维达的:《C++ 网络编程》《C++ 网络编程 II》;宋劲杉的:《Linux C 编程一站式学习》《Linux C 编程一站式学习 II》;
在看马维达的几本关于 C++ 网络的书籍时,其实主要是基于当时 (2010年)很火的一个C++网络库ACE展开的。当时也是把 ACE 的源代码翻出来通读了一遍,了解到了山外有山,Windows 之外还有一个 Unix 的世界,看着 ACE 对各种 Unix like 系统的跨平台封装的底层系统调用一头雾水,暗暗下定决定有机会要把 Linux 编程接口作一番深入了解。
其实现在回过头来看 ACE,确实是笨重了一些,它的代码量甚至能比得上一个早期的 Linux 内核 :),后来就出来许多专攻网络服务的库(asio、libevent……),就相当轻量级了,看起来也不会太费力。
当时也看到了 ACE 一些相当精巧的实现,例如通过一个锁来实现 Leader/Follower 线程池 (内部暗藏通知机制),甚至基于 ACE 现有的类搭建了一个跨机器的远程锁系统,都是让人叹为观止的杰作,但是最让我遗憾的是这些东西没有记录下来,以至于现在也只有一些模糊的印象,而说不出所以然了。这也是我开始写技术博客的一个重要驱动力,即写文章不光是给别人分享,也是自己的一个记录。
后来开始看 《Advanced Programming Unix Environment》这本经典著作,前几章看得有点枯燥,主要是一些基础知识,心想自己不会又读了一本教材吧。
但是越到后来,越感觉作者并不是简单的去写作,背后有他自己大量的实践,很可能他就是一边写着代码、一边去印证各个技术点。
常常一段话就能提炼出三、四个测试用例去验证,而作者在每章的练习题中,更是经常以一些他自己在验证过程中遇到的问题作为题目。
作者经常声明,他是四种平台(linux / mac / freebsd / solaris)上去验证一个特性,所以如果一些特性仅在某些平台存在,他一定会给出提示。
这里作者有着一种非常严谨的态度,我想经典之所以称之为经典、大师之所以成为大师,概为此也。
吸取之前看书的经验,既不能囫囵吞枣、不求甚解的看一本书,也不能看懂了实践了却没有记录下来,
于是从这本书开始,展开“工程师”视角,对书中每个技术点亲自做验证,验证通过了,固然证明书上所说不虚;
验证不通过,如果能弄明白原因,也能加深认识;如果弄不明白,就先放着,做个标记,留待将来看 linux 源码时解决。
总而言之,看这个系列的文章所面向的读者,乃是读过原著或者对 linux 系统编程特别熟悉、而且对 linux 底层实现有一定兴趣的人,否则读起来会不知所云,徒徒浪费时间。
apue 外传的更多相关文章
- [APUE]进程控制(上)
一.进程标识 进程ID 0是调度进程,常常被称为交换进程(swapper).该进程并不执行任何磁盘上的程序--它是内核的一部分,因此也被称为系统进程.进程ID 1是init进程,在自举(bootstr ...
- [APUE]UNIX进程的环境(下)
一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试
此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...
- APUE fig 1.10示例代码的完善--对提示符及输入回车的优化
APUE 第3版第15页的shell2.c示例程序,运行效果如下: gcc ol.shell.c -o origin_shell ./origin_shell % date 2015年12月13日 星 ...
- 关于apue.3e中apue.h的使用
关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...
- APUE学习之多线程编程(三):线程属性、同步属性
一.线程属性 可以使用pthread_attr_t结构修改线程默认属性,并这些属性和创建的线程练习起来,可以使用pthread_att_init函数初始化pthread_attr_t结构,调 ...
- APUE学习之多线程编程(二):线程同步
为了保证临界资源的安全性和可靠性,线程不得不使用锁,同一时间只允许一个或几个线程访问变量.常用的锁有互斥量,读写锁,条件变量 一.互斥量 互斥量是用pthrea ...
- APUE学习之多线程编程(一):线程的创建和销毁
一.线程标识 和每个进程都有一个进程ID一样,每个线程也有一个线程ID,线程ID是以pthread_t数据类型来表示的,在Linux中,用无符号长整型表示pthread_t,Solaris ...
随机推荐
- 深入浅出MyBatis技术原理与实战
第1 章 MyBatis 简介..................................................................................... ...
- NOI4.6 1455:An Easy Problem
描述 As we known, data stored in the computers is in binary form. The problem we discuss now is about ...
- 网络io模型总结
操作系统基本概念 首先来来说下操作系统,嗯,操作系统是计算机硬件的管理软件,是对计算机硬件的抽象,操作系统将应用程序分为用户态和内核态,例如驱动程序就位于内核态,而我们写的一般程序都是用户态,包括we ...
- 为什么RChain区块链上一定要有REV?
RChain区块链网络上一定要有REV吗?它的作用是什么?在这篇文章里,RChain创始人Mr. Greg Meredith做了详细解读,便于业界和社区对RChain网络有更深入的认识. 作者:Gre ...
- 自定义BeanDefinitionRegistryPostProcessor注册bean
自定义BeanDefinitionRegistryPostProcessor 概述 BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProce ...
- RoBERTa模型总结
RoBERTa模型总结 前言 RoBERTa是在论文<RoBERTa: A Robustly Optimized BERT Pretraining Approach>中被提出的.此方法 ...
- 冬日曙光——回溯CNN的诞生
前言 卷积神经网络(CNN)作为深度学习的重要一支,在当前计算机视觉领域应用相当广泛.本文回顾了深度学习的发展历程,讲述CNN基本的理论概念和第一代卷积神经网络LeNet-5的建立.文章言有不当之处, ...
- 什么是 Trait
Trait 是从 PHP 5.4 加入的一种细粒度代码复用的语法.以下是官方手册对 Trait 的描述: Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.Trait 为了减少单继承 ...
- BFS(广度优先搜索华容道游戏)--11--BFS--蓝桥杯卡片换位
题目描述 你玩过华容道的游戏吗?这是个类似的,但更简单的游戏.看下面 3 x 2 的格子 +---+---+---+ | A | * | * | +---+---+---+ | B | | * | + ...
- 第一节——词向量与ELmo(转)
最近在家听贪心学院的NLP直播课.都是比较基础的内容.放到博客上作为NLP 课程的简单的梳理. 本节课程主要讲解的是词向量和Elmo.核心是Elmo,词向量是基础知识点. Elmo 是2018年提出的 ...