apue 外传
先上目錄
chapter 3
[apue] dup2的正確打開方式
chapter 10
[apue] 等待子進程的那些事兒
chapter 14
[apue] 使用文件記錄鎖無法實現父子進程交互執行同步
chapter 15
[apue] 多進程管道讀寫的一些疑問
[apue] 測試管道容量的一些疑問
[apue] 管道原子寫入量的一個疑問
[apue] 使用 poll 檢測管道斷開
[apue] 使用 popen/pclose 的一點疑問
[apue] popen/pclose 疑點解惑
[apue] FIFO:不是文件的文件
chapter 16
[apue] syslog 導致 accept 出錯?
[apue] 如何處理 tcp 緊急數據(OOB)?
chapter 17
[apue] 神奇的 Solaris pipe
記一次傳遞文件句柄引發的血案
記一次傳遞文件句柄引發的血案 (續)
[apue] 作為 daemon 啟動, Unix Domain Socket 偵聽失敗?
chapter 18
[apue] 一個查看當前終端標志位設置的小工具
[apue] 使用 Ctrl+S停止輸出而不用掛起前臺進程
chapter 19
[apue] 書中關于偽終端的一個紕漏
chapter 20
[apue] apue_db:一個可以充當"注冊表"的 key-value 數據庫?
?
前言
開技術博客最好的時間是十年前(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 底層實現有一定興趣的人,否則讀起來會不知所云,徒徒浪費時間。
?
總結
- 上一篇: 微软雅黑Monaco字体——听说是最适合
- 下一篇: 通俗易懂的讲解二极管三极管工作原理