原创 堆排排序

堆排序的時間複雜度爲O(nlogn) 構建堆的過程的時間複雜度爲n,調堆的時間複雜度爲logn #include<stdio.h> //大堆:根節點大於左右節點 void Swap(int *a,int *b) { in

原创 樹的深度和廣度遍歷

#include <stdio.h> #include <stdlib.h> #include <assert.h> #define MAX_SIZE 100 //隊列的最大容量 /* 樹:樹是一種自定義結構.由n(n>0)個節

原创 系統大小端模式的判定及轉換

系統的存儲模式有兩種:大端模式,和小端模式 大端模式:(Big_endian):字數據的高字節存儲在低地址,低字節存儲在高地址 小端模式:(Little_endian):字數據高字節存儲在高地址,低字節存儲在低地址 舉例子說明

原创 線程池的實現(Linux系統)

一、線程池 一開始就創建多個線程,讓它們一直存活。一旦有任務就直接交給線程去執行。線程執行完任務後回到線程池也不銷燬。 二、實現 藉助第三者來傳遞任務。發佈任務的人不要知道由誰來執行。執行任務的人不要知道誰發佈的,第三者就是一個

原创 自己實現auto_ptr智能指針

智能指針能夠自動釋放動態內存的指針。主要的機制就是用一個類來將指針包裹起來,然後在類的實例析構的時候自動釋放內存。 今天自己實現C++標準庫的傳統的auto_ptr智能指針。如果不是自己編寫的智能指針,運行時要加 -std=c++

原创 有向圖鄰接矩陣

圖:是一種線性結構,由n個點和m條邊組成,任意兩個點之間可以用連線連接. #include <stdio.h> #include <stdlib.h> #define MAX_VALUE 8888 //初始化數組的默認值,相當

原创 哈希表(解決循環衝突鏈表問題)

哈希表 哈希表是基於數組的順序結構,每一個存儲目標都會存在一個key值,哈希表也稱爲散列表。爲解決衝突問題(多個目標用hash函數計算出相同的位置),本代碼用了拉鍊法,另外本代碼還解決了字符串插入哈希表循環衝突拉鍊的問題。

原创 內存映射實現文件拷貝

文件描述符 文件描述符用來識別一個打開的文件,文件的修改讀寫關閉等等都以文件描述符爲依據。 它是一個非負整數。在用open函數打開文件後,返回一個文件描述符。 open如果失敗,則返回-1。因此通常用fd==-1來判斷是否打

原创 《checklist編程規範》筆記

簡單的總結一下C編碼風格: 第一章 排版 1.1 縮進 整個項目中要麼4個空格縮進,要麼一個TAB鍵縮進,不允許混用。TAB鍵要保證寬度是4個空格 縮進要求:if el

原创 異步任務線程封裝筆記

Task.h namespace ASYN_WORK { class CTask { public: CTask(void); virtual ~CTask(void); virt

原创 任務線程池的封裝

Semaphore.h #pragma once #include <mutex> #include <condition_variable> #include <atomic> namespace ASYN_WORK_NVR

原创 Linux和Windows遍歷磁盤所有文件

在公司寫的遍歷磁盤獲取磁盤下所有錄像文件信息的兩個函數。 #ifdef WIN32 #include <io.h> //獲取特定格式的文件名 void GetPlaybackFile::getAllFiles(std::st

原创 《Effective C++》筆記

條款1:視C++爲一個語言聯邦:C、Object-Oriented C++、Template C++、STL。 條款2:儘量以const,enum,inline替換#define。 對於單純的常量,最好以const對象或enums替

原创 《UNIX網絡編程 卷2:進程間通信》筆記

第一部分 簡介 IPC是進程間通信(interprocess communication)的簡稱。 1.IPC三種類型的持續性 隨進程持續: IPC對象一直存在到打開着該對象的最後一個進程關閉該對象爲止。例如管道和FIFO。 隨內

原创 《Linux命令行與shell腳本編程大全》筆記二

第十五章 呈現數據 1.Linux的三個標準文件描述符 標準輸入(0)STDIN ,標準輸出(1)STDOUT ,標準錯誤(2)STDERR 2.重定向輸出 重定向到文件描述符時,必須在文件描述符數字前加一個 & 臨時重定向: 例: $