原创 第一章讀書筆記

1.c++對數據和操作加上封裝後的佈局成本是否增大? 沒有虛函數和虛基類,封裝後的class並沒有增加成本.成員函數歲在class的聲明中,卻不出現在對象中,一個類共享一份代碼.每一個非inline的函數只有一份實例.每一個inline函

原创 c++封裝線程

線程 (1)Linux線程庫有兩個流行的線程庫,分別是LinuxThreads和NPTL,由於LinuxThreads的某些缺點,已經被NPTL取代,它們都是基於1:1模式實現,即1個用戶線程被映射爲1個內核線程;故每一個用

原创 nginx進程間的通信機制源碼分析(一)----共享內存

</pre><span style="font-size:18px"></span><p></p><p>      <span style="white-space:pre"></span>共享內存是linux下提供的最基本的進程間通信

原创 華爲2012機試第三題

3、操作系統任務調度問題。操作系統任務分爲系統任務和用戶任務兩種。其中,系統任務的優先級 < 50,用戶任務的優先級 >= 50且 <= 255。優先級大於255的爲非法任務,應予以剔除。現有一任務隊列task[],長度爲n,task中的

原创 判斷一個自然數是否時某個數的平方

思路一: 遍歷1到n,將每個數的平方與n比較,若小於,則遞增,若等於則返回,若大於,則失敗 思路二: 二分查找1到n中某個數的平方爲n,時間複雜度爲logn. #include<stdio.h> int findValue(int

原创 劍指offer面試題36數組中的逆序對數

題目描述:在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數。輸入: 每個測試案例包括兩行: 第一行包含一個整數n,表示數組中的元素個數。其中1 <= n <= 10

原创 Nginx高級數據結構源碼分析(五)-----紅黑樹

紅黑樹是一種二叉平衡樹,在每一個結點增加了一個存儲位表示結點的顏色,以維持它的平衡。 紅黑樹性質 (1)紅黑樹結點有如下域:color,key,left,right,p;我們把這些NIL結點是爲指向外結點的指針,可以自己定義;

原创 無題!!!

bool withoutU = true; const int doISaveTheEarth = 0; while(withoutU) { ++day.length; if

原创 Nginx高級數據結構源碼分析(四)-----內存池

內存池的使用給Nginx帶來了很多好處,比如內存使用的便利,邏輯代碼的簡化以及程序性能的提升。 幾個關鍵知識點羅列如下: (1)函數ngx_palloc()嘗試從內存中分配size大小的內存時,分兩種情況,一種是size大小小於pool-

原创 字符串類的實現:構造函數、析構函數、複製構造函數和賦值操作符

強調一下幾個重點: (1)new 操作符申請內存失敗,是拋出異常,並不是返回NULL,若想申請失敗返回NULL,需要加 (std::nothrow); (2)使用std::nothrow 需要加頭文件 #include<new> (3)使

原创 排序方法總結和實現

由於很多大神已經總結過各種排序算法的性能及適合壞境,這裏便不再總結,只是強調幾個重點。 (1)快排的空間複雜度不是o(1),是o(logn)~o(n); (2)四種不穩定的排序算法:簡單選擇,快排,希爾和堆排序 (3)冒泡排序最有情況下時

原创 二叉樹各種遍歷的實現(遞歸、非遞歸、層次、高度和節點數目)

以下代碼將實現下列函數: (1)建樹 (2)遞歸前序遍歷 (3)遞歸中序遍歷 (4)遞歸後序遍歷 (5)非遞歸前序遍歷 (6)非遞歸中序遍歷 (7)非遞歸後序遍歷 (8)層次遍歷 (9)樹的高度 (10)節點數目 #include<std

原创 C++ Primer 第(4-5)章一句話知識點總結

注意制定每個規則背後的原因。 (1)沒有所有的元素都是引用的數組。 (2)數組的維數必須是大於等於1的常量表達式定義。非const變量以及要到運行時才知道其值的const變量都不能用於定義數組的維數。 (3)數組不允許直接賦值。char

原创 Nginx高級數據結構源碼分析(三)-----鏈表

ngx_list_t是Nginx封裝的鏈表容器,使用的很頻繁。它有兩個結構體,ngx_list_t描述的是整個鏈表,而ngx_list_part_t只描述鏈表的一個元素。爲了方便理解,我們可以將它稱爲數組的鏈表。也就是是說,ngx_lis

原创 字符串操作的實現:strstr、strcat、strcmp和stcpy

幾個重點強調一下: (1)注意使用assert; (2)strcat 和 strcpy最後注意賦值'\0'; (3)strcpy注意內存覆蓋的情況; (4)strcmp中:while(!(ret = *(unsigned char *)s