原创 【劍指offer】2.2 編程語言

面試題1:賦值運算符函數 題目:如下爲類型CMyString的聲明,請爲該類型添加賦值運算符函數。 class CMyString { public: CMyString(char* pData = NULL); CMy

原创 【Linux】fork()、vfork()、clone()的區別

    Linux的用戶進程不能直接被創建出來,因爲不存在這樣的API。它只能從某個進程中複製出來,再通過exec這樣的API來切換到實際想要運行的程序文件。     複製的API包括三種:fork、clone、vfork。這三個API的

原创 【MySql】MySql中的存儲引擎、索引、事務

   一、 存儲引擎     MySql的存儲引擎是MySql底層對於文件的一種存取機制。存儲引擎的建立是基於表的。     1.MyISAM     一、存儲引擎     MyISAM 是 MySQL 的默認存儲引擎。MyISAM 不支

原创 Linux源碼剖析--fork()

    fork()的功能是複製進程,首先我們要清楚進程是什麼。進程是一個正在運行的進程,是資源分配的最小單位。系統對進程的管理是通過對進程控制塊(PCB)的管理實現的。每個進程的產生分爲兩步:1.分配PCB;2.準備進程實體,如分配內存

原创 【C語言】指針和引用的區別

指針和引用的區別     1.指針是一個實體,而引用是一個別名;在彙編上,引用的底層是以指針的方式實現的,定義一個引用變量,相當於就是定義了一個指針,然後把引用內存的地址寫到這個指針裏面,當通過引用變量修改它所引用的內存時,它先訪問了指針

原创 【Linux系統編程】線程基礎

     線程的概念      線程是進程內部的一條執行序列,或者執行流。每個進程至少有一條線程,稱之爲主線程。從代碼的角度看,就是main函數的函數體。在主線程中可以通過線程庫創建其他函數線程。在同一個進程中的線程都是併發運行的,並且線

原创 【劍指offer】4.3 具體讓抽象問題具體化

面試題21:包含min函數的棧 題目:定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的min函數。在該棧中,調用min、push及pop的時間複雜度都是O(1)。 解答:代碼如下: stack<int> ValSta; st

原创 【劍指offer】3.3 代碼的完整性

面試題12:數值的整數次方 題目:實現函數double Power(double base,int exponent),求base的exponent次方。不得使用庫函數,同時不需要考慮大數問題。 解答:代碼如下: //判斷兩個浮點數是否

原创 【劍指offer】3.4 代碼的魯棒性

面試題15:鏈表中倒數第k個結點 題目:輸入一個鏈表,輸出該鏈表中倒數第k個結點。爲了符合大多數人的習慣,本題從1開始計數,即鏈表的尾節點是倒數第1個結點。例如一個鏈表有6個結點,從頭結點開始它們的值依次是1、2、3、4、5、6。這個鏈表

原创 【劍指offer】4.2 畫圖讓抽象問題形象化

面試題19:二叉樹的鏡像 題目:請完成一個函數,輸入一個二叉樹,該函數輸出它的鏡像。二叉樹結點的定義如下: struct BinaryTreeNode { int m_nValue; BinaryTreeNo

原创 【劍值offer】2.4.3 位運算

面試題12:二進制中1的個數 題目:請實現一個函數,輸入一個整數,輸出該數二進制表示中1的個數。例如把9表示成二進制是1001,有2位是1。因此如果輸入9,該函數輸出2。 解答:代碼如下: int NumberOf1(int n) {

原创 【C語言】volatile關鍵字

    舉例說明:     volatile int i=10;     int j = i;     ...     int k = i;     volatile 告訴編譯器i是隨時可能發生變化的,每次使用它的時候必須從i的地址中讀取

原创 【Linux系統編程】守護進程

    守護進程又稱精靈進程,常常在系統啓動時自啓,僅在系統關閉時才終止,生存期比較長!一般都是在後臺運行,不需要和用戶交互。     可通過ps -axj命令查看常用系統守護進程,其中最爲常見的init進程,負責各運行層次間的系統服務。

原创 【C++】寫時拷貝技術(copy-on-write)

    寫時拷貝的思想是在複製原來的內容時,如果複製後不會對原來的內容做出改變(即只讀),就不會直接複製過去,而是建立一個指針指向原來的內存,也就是淺拷貝。如果要修改原來內存上的內容,就需要重新分配內存並將原來內存上的內容拷貝到新內存上,

原创 【C++】struct和class的區別

struct和class的區別     1.C語言中無法使用struct定義空結構體,而C++中可以使用class定義空類,其大小爲1     2.struct默認的成員訪問權限是public,而class默認的成員訪問權限是privat