原创 RAII和模擬實現智能指針

什麼叫RAII(Resource Acquisition Is Initialization)?RAII指的就是資源分配即初始化,它的作用就是定義一個類來封裝資源的分配和釋放,在構造函數完成資源的分配和初始化,在析構函數完成資源的清理,可以

原创 常用的簡單排序之插入排序,冒泡排序,選擇排序,希爾排序

1、插入排序   插入排序的工作原理是建立有序序列,對於未排序數據,在已排序的數據從後先前掃描,找到對應的位置後插入。   ①從第一個元素開始,該元素被默認爲有序序列。   ②從下一個未排序數據開始,在已經排序的序列中從後往前掃描     

原创 linux之find命令

Linux下find命令在目錄結構中搜索文件,並執行指定的操作。find命令提供了相當多的查找條件,功能很強大。在運行一個非常消耗資源的find命令時,很多人都傾向於把它放在後臺執行,因爲遍歷一個大的文件系統可能會花費很長的時間。語法:#

原创 常見的進程調度算法

一、進程和作業的區別  區別:進程是一個程序在一個數據集上的一次執行,而作業是用戶提交給系統的一個任務。  關係:一個作業通常包括幾個進程,幾個進程共同完成一個任務,即作業。  作業調度是宏觀調度,它決定了哪一個作業能進入主存。進程調度是微

原创 犧牲空間換時間的非比較排序之計數排序和基數排序

非比較排序試用於元素比較集中的序列。1、計數排序找出待排序的數組中最大和最小的元素統計數組中每個值爲i的元素出現的次數,存入數組C的第i項對所有的計數累加(從C中的第一個元素開始,每一項和前一項相加)反向填充目標數組:將每個元素i放在新數組

原创 關於atexit函數

  按照規定,一個進程可以登記多至32個函數,這些函數將有exit自動調用。我們稱這些函數爲終止處理程序,並調用atexit函數來登記這些函數。頭文件和參數:#include <stdlib.h> int atexit(void (*fun

原创 在vfork下,對於return和exit的理解

fork是創建一個子進程,並把父進程的內存數據拷貝一份給子進程。而vfork中內存數據所共享的,vfork保證子進程先運行,當子進程調用exit()或exec()後,父進程纔會執行。#include <stdio.h> #include <

原创 linux之find命令

Linux下find命令在目錄結構中搜索文件,並執行指定的操作。find命令提供了相當多的查找條件,功能很強大。在運行一個非常消耗資源的find命令時,很多人都傾向於把它放在後臺執行,因爲遍歷一個大的文件系統可能會花費很長的時間。語法:#

原创 利用fork循環創建進程

我們知道,fork可以創建子進程,那麼如果循環調用fork,進程之間會有什麼關係呢?得到結果:從結果上分析,一共有4個進程,6132,6133,6134,6135,它們的關係是怎樣的呢?按道理來講,剛開始i=0,只有一個進程6132,for

原创 linux環境下使用make實現進度條

  make是一個指令,而makefile是一個文件。執行命令make時,需要一個 Makefile 文件,以告訴make命令需要怎麼樣的去編譯和鏈接程序。一個大點的工程中有許多文件需要編譯,使用Makefile 可以“自動化編譯”,一旦寫

原创 簡單實現string類

簡單實現string類,正確管理資源。1、首先定義它的成員變量:private:     char* _data;//定義一個字符指針2、實現它的構造函數:String(const char* str="") //如果定義對象時沒有傳參數,

原创 常用的較優排序之快速排序,堆排序,歸併排序

1、快速排序  通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序。可以用遞歸和非遞歸的方法分別實現。  平均狀況下,排序n個項目要Ο(n log 

原创 常見的進程調度算法

一、進程和作業的區別  區別:進程是一個程序在一個數據集上的一次執行,而作業是用戶提交給系統的一個任務。  關係:一個作業通常包括幾個進程,幾個進程共同完成一個任務,即作業。  作業調度是宏觀調度,它決定了哪一個作業能進入主存。進程調度是微

原创 二分查找的遞歸及非遞歸實現

二分查找的思想:  假設數據是按升序排序的,對於給定值key,從序列的中間位置開始比較,如果當前位置值等於key,則查找成功;若key小於當前位置值,則在數列的前半段中查找;若key大於當前位置值則在數列的後半段中繼續查找,直到找到爲止。二