原创 面試題—宏、函數、宏函數、inline函數的區別與聯繫

--宏和函數:       。宏其實主要是進行字符串的替換(只是進行字符串的替換,不涉及類型參數),而函數是通過參數的傳遞,參數是有數據類型的。       。編譯器在預處理階段就會進行宏的替換,不會進行參數的檢查,而函數調用是將值傳遞給形

原创 數據結構—各類‘排序算法’實現(下)

       在上一篇博客中,主要是實現各種的排序算法,並針對一些算法進行了優化的處理,下面主要討論一下非比較排序的算法(計數排序、基數排序),同時並對各種排序算法的性能、時間複雜度、空間複雜度、優缺點、以及適用場景做總結分析。1.計數排序

原创 平衡搜索樹—AVLTree

       AVL是平衡搜索二叉樹,它的主要特點在於:(1)左子樹和右子樹的高度差絕對值<1,(2)樹中的每個子樹都是AVL樹,(3)每個節點都有一個平衡因子(-1、0、1),平衡因子的大小等於右子樹的高度減左子樹的高度      下面就

原创 Centos中‘vim配置’有多強大?

       在linux的系統上安裝vim編輯器後,發現vim的頁面設置還是不太習慣,沒有顯示的行號,也沒有自動的縮進,頁面的背景也不是很好看,但是vim編輯器是可以進行配置的,我們可以打造屬於自己的vim風格。下面主要討論一下簡單的vi

原创 ‘信號’基本概念總結

      生活中有許許多多的信號,能夠反映給人類,人類能夠產生相應的行爲。當我們使用鍵盤給計算機一個信號,計算機也會相應的產生一系列的行爲。在linux系統中,使用kill -l命令能夠查看系統中所有的信號如下:      其中:系統中總

原创 ‘生產者-消費者’模型與‘讀-寫者’模型

★生產者-消費者模型      首先,我們先分析一下生產者與消費者模型:生產者與消費者是模型中不可缺少的2種角色,當然模型中肯定需要一個保存數據的場所,能夠將生產者生產的數據進行存儲。同時,模型必須要滿足生產者產生出數據後,消費者才能夠進行

原创 《將博客搬至CSDN》

《將博客搬至CSDN》http://blog.csdn.net/ttyue_123

原创 論‘進程’相關操作

★進程相關概念        (1)進程:是一個能夠分配處理器並由處理器執行的,能夠攜帶資源的活動實體。        (2)進程控制塊(PCB):每一個進程中都有唯一的一個進程控制塊來保存進程的相關信息,實際PCB就是一個task_str

原创 圖—並查集(解決朋友圈問題)

      圖也是一種 非線性結構,是由多個頂點組成的關係集合組成的一種數據結構。圖可以分爲兩種,無向圖和有向圖。★圖的定義:★典型問題:      利用圖能夠解決很多問題,這裏有一個較爲典型的問題,假如已知有n個人和m對好友關係(存於數字

原创 再談‘進程’

★進程標識符           每個進程都有非負的整形表示唯一的進程ID。下面是一些標識符:               pid:調用進程的ID(獲取方式getpid)                 ppid:調用進程的父進程ID(獲取

原创 進程間通信—‘匿名管道’

      進程間通信:每個進程都有各自的地址空間,所以進程之間交換數據就需要通過內核,將數據拷貝到內核中,然後另一個進程進行讀取,這種方式成爲進程間通信。★創建管道         include <unistd.h>         i

原创 C++‘異常’處理機制

        在C++的發展過程中,爲了實際的需要,引入了異常處理機制。程序中常見的錯誤:語法錯誤和運行錯誤,語法錯誤一般都是在編譯時候發現的,編譯器基本上都會報出錯誤的具體位置,因此這類錯誤一般都是比較好修改,運行錯誤一般不容易進行調試

原创 面試題—鏈表的‘部分’翻轉

問題:         給出一個單鏈表(不帶頭節點)和一個數K,請翻轉此單鏈表?例如:1->2->3->4->5       k = 0;   翻轉過後:1->2->3->4->5          1->2->3->4->5       

原创 linux中的‘make’和‘makefile’

       在提及‘make’和‘makefile’之前有必要先理清楚程序編譯的過程,在windows操作系統下,我們一般使用的編寫程序的軟件有vs、vc等,這些都是集成軟件,當編寫完程序之後,直接點擊進行編譯和鏈接,那麼編譯器是怎樣將程

原创 系統調度—‘線程’

    在前面的博文中討論了進程的相關概念,這裏重新引入一下‘線程’的概念。進程有各自獨立的地址空間,所以進程間的通信是比較麻煩的,只能藉助管道等才能夠實現進程間通信。而linux系統中,多個線程共享進程的地址空間(也可以說是進程是一個獨佔