原创 C++類和對象

類 class/struct 通常由一個或多個成員函數組成,這些成員哈數操作屬於該類的某個特定對象的屬性。在類的定義中屬性表示爲變量。這樣的變量稱爲數據成員,聲明在類的定義之內,但是在所有類的成員函數的定義體之外。 可以說類是數據(成員變

原创 內核線程、輕量級進程、用戶線程的對比

線程與進程的概念 在現代操作系統中,進程支持多線程。 進程是資源管理的最小單元; 線程是程序執行的最小單元。 即線程作爲調度和分配的基本單位,進程作爲資源分配的基本單位。 一個進程的組成實體可以分爲兩大部分:線程集和資源集。進程中的線

原创 進程的同步與互斥概念原理

進程同步是一個操作系統級別的概念,是在多道程序的環境下,存在着不同的制約關係,爲了協調這種互相制約的關係,實現資源共享和進程協作,從而避免進程之間的衝突,引入了進程同步。 臨界資源 在操作系統中,進程是佔有資源的最小單位(線程可以訪問其

原创 時間複雜度和空間複雜度

時間複雜度 概念:算法的最壞運行情況。(執行基本操作的次數) 即:任意輸入規模N,算法的最長運行時間。 選最壞運行情況的理由: 一個算法的最壞情況的運行時間是在任意輸入下的運行時間上界 對於某些算法,最壞的情況出現較頻繁 大體

原创 對比順序表和鏈表

順序表和鏈表都屬於線性表。 順序表:用一段地址連續的存儲空間依次存儲數據的線性結構。 優點:查找速度高,可以通過下標直接訪問。 在內存中更集中,統一申請/釋放,不會造成太多的內存碎片。 對CPU cache更友好。 缺點:插入和

原创 ##Linux## 編寫簡單add/sub/mul/div函數封裝爲靜/動態庫

庫是什麼 本質上來說,庫是一種可執行代碼的二進制形式,可以被操作系統直接載入內存執行。 Linux下的庫 Linux下分爲靜態庫和動態庫,這兩種庫都是可以通過.o文件生成的,也是可以直接使用的。 靜態庫 靜態庫文件名的命名方式是“li

原创 文件操作的庫函數

// 讀文件--從文件中讀count個size大的字段 返回實際讀取的字節 size_t fread(void *buffer, size_t size, size_t count, FILE *stream); // 寫文件--向文件中

原创 C++入門

現代C++語言可以看做是三部分組成的: 低級語言,大部分繼承自C語言 現代高級語言特性,允許我們定義自己的類型以及組織大規模程序和系統 標準庫,它利用高級特性來提供有用的數據結構和算法。 關於C++的發展史在網上可以找到很多,這裏就不

原创 Linux裏ipcs -q/m/s於ipcrm -q/m/s的使用

進程間通信概述 進程間通信有如下的目的:1、數據傳輸,一個進程需要將它的數據發送給另一個進程,發送的數據量在一個字節到幾M之間;2、共享數據,多個進程想要操作共享數據,一個進程對數據的修改,其他進程應該立刻看到;3、通知事件,一個進程需

原创 open/read/write/close等文件相關的系統接口

一、open/read/write/close open 函數原型: int open(const char* pathname, int flags); //open int open(const char* pathn

原创 反轉字符串

第一次看到這個題目,想到最簡單、最直覺的解法就是:遍歷字符串,將第一個字符和最後一個交換,第二個和倒數第二個交換,依次循環,即可,代碼如下: char* reverseString(char* s) { int sz = str

原创 進程間通信--pipe/msgqueue/sems/shm

IPC inter-process communication 進程間通信是指在不同進程之間傳播或交換信息 進程間通信可分爲以下幾類 管道(匿名管道和命名管道) system IPC 消息隊列(用於數據傳輸) 共享內存(用於數據共享

原创 用C語言模擬實現C++的繼承和多態特性

一、我們知道,C語言是一種面向過程的編程語言,而C++是一款在它的語法基礎上改進的面向對象的編程語言 (1)面向過程與面向對象的區別: ①從設計方法角度看: ▶面向過程程序設計方法是用函數(即算法過程)對數據進行操作,但又將函數與其操作

原创 進程和程序的區別

進程的定義:“進程”是操作系統的最基本、最重要的概念之一。但迄今爲止對這一概念還沒有一個確切的統一的描述。下面給出幾種對進程的定義描述。進程是程序的一次執行。進程是可以並行執行的計算。進程是一個程序與其使用的數據在處理機上順序執行時發生

原创 二進制文件和文本文件的區別

二進制文件和文本文件的區別 從文件編碼的方式區別,文件可分爲ASCII碼文件和二進制碼文件兩種。 ASCII碼文件就是文本文件,這種文件在磁盤中存放時每個字符對應一個字節,用來存放對應的ASCII碼。如5432就是5432,佔4個字節。