原创 Linux源代碼解析之——傳輸控制塊誕生

在Linux 2.6以前(不包括2.6,具體版本沒仔細調查),還沒有使用傳輸控制塊的概念,各種協議的狀態管理還出於比較混亂的狀態。 Linux 2.6以後,傳輸控制塊機制使代碼看起來比較規整了。 創建傳輸控制塊: /* * Cre

原创 軟中斷網卡處理&Linux高性能外部設備處理機制

Jack:Linux外部設備的性能如何才能高呢? 我:你爲什麼希望外部設備的性能好呢? Jack:典型的說,外部設備如磁盤、網卡都需要非常好的性能。磁盤設備處理性能好,才能承載數據庫系統。網卡性能好,才能承載高性能server(數據

原创 kmemleak_object的優化patch

lizefan童鞋在今天(2014/3/13)提交了一個關於mem leak的patch,比較有意思。 在kmemleak scan thread運行的情況下,無法釋放kmemleak objects。 OBJS ACTIV

原创 學習源代碼內核一定要獨立思考、勤於實踐

本文原創爲freas_1990,轉載請標明出處:http://blog.csdn.net/freas_1990/article/details/43772011 今天給兩位大二的學生講解了某開源數據庫源代碼改造的思路。 非常失望。以

原创 Redis的“表”怎麼設計的?

在《C語言描述能力之——結構體》我曾提到C語言的描述能力,數據庫裏的“表”這個概念是如何通過C語言來設計的呢? 我們來看一下Redis的實現吧。 robj *createListObject(void) { list *l =

原创 如何處理未使用的變量

有一些函數傳入了沒有任何作用的變量,但是,這些變量在以後可能會用上(可擴展性)。 而編譯器一般會發出警告,提示該變量沒有被使用。如何處理這種case呢? 業界有一行統一的代碼來解決這個問題。 handler_t stat_cache

原创 外企巨頭與互聯網巨頭的成功之道

引子: 在很久很久以前,很多IT行業的準程序員對微軟、IBM、Oracle等巨無霸外企心生嚮往。 在很久以前,很多IT行業的準程序員對百度、騰訊、阿里、360等巨無霸互聯網公司心生嚮往。 很多在外企的程序員覺得互聯網公司是青春、高

原创 大端字節(Big endian)與小端字節(Little endian)

常見的80x86 CPU是先存放小值,再存放大值。這是小端字節(Little endian)序列。 而數字在互聯網上傳輸的時候,是大端字節序列(Big endian)。所以,網絡編程裏有一個api是htons(),用來將主機字節順序轉

原创 陳碩-Linux C++ 服務器端這條線怎麼走?一年半能做出什麼?

您好,我現在大三了,請問我想往 Linux C++ 服務器方向發展該怎麼走,比如現在在看 Linux 程序設計,還應該在看哪些書,可以完成一些什麼項目?謝謝。有 C++、C 基礎,算法數據結構還不錯。 著作權歸作者所有。 商業轉載請

原创 源代碼VS業務的悟道——知行合一

24歲以後博文更新逐漸減少了,因爲守着“每篇文章都是思索所得”的原則,希望能對讀者有所啓發而堅持不發一篇垃圾文章。 24歲以前,一直信仰源代碼實現,覺得所有的核心技術,都在於源代碼實現(尤其是C源代碼)。 直到24歲,學習之餘,偶有

原创 一看就明白的爬蟲入門講解:基礎理論篇

allowtransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%

原创 Linux內核的信號機制——怪胎

信號機制是Unix的一大特色,因爲是特色,所以很多同學在編程時,有些不能理解(超出理解範圍?)。 本文對Linux信號機制做一個分析。 常見signal使用如下: void mysig(){ printf("got a sig!

原创 X86 32位的基本寄存器

下面的寄存器前綴名E代表32,也就是說每個寄存器,可以拆分成兩個16位寄存器。 1個指令指針寄存器(EIP) 4個數據寄存器(EAX、EBX、ECX和EDX) 2個棧指針寄存器(ESP和EBP) 2個變址寄存器(ESI和

原创 DMA爲什麼比輪詢、中斷方式性能要卓越很多?

如果是計算機專業出身的同學,都聽過一個概念,中斷比輪詢要好、DMA比中斷要好。 中斷比輪詢要好,是容易理解的: 在輪詢中,CPU是死循環執行對IO端口的檢測,這種模式,大量的浪費了CPU(因爲CPU除了處理外設之外,更多的時間應該用

原创 Linux內核網卡收包機制歷史變革

Linux內核對網卡收包處理機制大約經歷了4個階段。 1、網卡在同一時刻只能接收一個包,當網卡接收到包之後,馬上向中斷控制器發出中斷請求,中斷控制器向CPU發出中斷信號。 2、網卡在同一時刻能接收多個包,單CPU,網卡接收到多個包的