原创 騰訊模擬面試題一

1. 野指針是什麼?會引發什麼問題?該如何避免? 野指針是指向一個“垃圾內存”的指針,它的指向是隨機的。而且它並不是空指針。引發的最大問題就是**內存泄漏。**內存泄漏不是物理上的內存的消失不見,而是由於操作失誤對該段內存失去了控

原创 C++之初階模板

初階模板 1. 泛型編程 引入:如何實現一個通用的交換函數呢? void Swap(int& left, int& right) { int temp = left; left = right; right = temp;

原创 C++之進階模板

模板進階 1. 非類型模板參數 模板參數分爲:類型形參 與 非類型形參。 類型形參:出現在模板參數列表中,跟在class或者typename之後的參數類型名稱。 非類型形參:就是用一個常量作爲類(函數)模板的一個參數,在類(函數)

原创 C++之關聯式容器

注: 以下使用的接口均爲部分接口。 1. 序列式容器 回顧:vector,list,dequeue,等都被稱爲序列式容器,因爲其底層都是線性序列的數據結構,裏面存儲的是元素本身。 2.關聯式容器 關聯式容器也是用來存儲數據的,它與

原创 Linux之進程信號

1. 信號概述 在Linux這個多用戶多進程的系統中,信號的存在是必然的。信號可以理解爲一個軟中斷,在某個條件下,系統會發出某個信號給正在運行的進程,通知進程需要執行某一特定的事件。 1.1 在終端中查看常見的信號 在終端輸入命令

原创 C++ 實現二叉搜索樹—BSTree

二叉搜索樹的概念以及特性想必大家都有所瞭解,在這裏主要討論它的實現。 具體算法思路見代碼註釋。 //測試環境爲VS2013 #include <iostream> #include <stdlib.h> using namesp

原创 Linux之線程小議

1.線程與進程的關係 說到線程概念,必須先說明進程。進程是一個運行中的程序,在操作系統中,一個程序運行起來後就會被加載到內存中。操作系統創建了一個進程描述符(PCB)對程序的運行進行描述控制。因此進程就是PCB,在Linux下用tas

原创 C語言——文件

1.文件概述 “文件”是指一組相關數據的有序集合。這個數據集有一個名稱,叫做文件名。通常情況下,使用計算機也就是在使用文件。在之前我們學習了輸入和輸出,即從標準輸入設備(鍵盤)輸入,由標準輸出設備(顯示器或打印機)輸出。不僅如此,我們

原创 文件的輸入/輸出操作

1.文件I/O操作概述 在Linux下,文件I/O操作可分爲兩類,一類是基於文件描述符的I/O操作,另一類是基於數據流的I/O操作。我們可以先來了解文件描述符和數據流這些基本概念。 1.1 文件描述符簡介 所謂的文件描述符,就是進程與

原创 Linux進程間通信——消息隊列

1.概述 消息隊列是一種通過鏈表結構組織的一組消息。與其他兩種進程間通信(共享內存、信號量)相同,都存放在內核中。多個進程通過消息隊列的標識符對消息數據進行傳送,實現進程間通信。 2.消息隊列的相關操作 使用消息隊列實現進程間通信,需

原创 Linux進程間通信——管道通信

1. 進程間通信概述 進程間通信(Inter-Process Communication, IPC)是指在兩個或者多個不同得勁進程間傳遞或者交換信息,通過信息的傳遞建立幾個進程間的聯繫,協調一個系統中的多個進程之間的行爲。 1.1 進

原创 Linux下MiniShell的實現

Shell到底是什麼? 1.shell的含義: shell這個單詞的英文含義爲“殼”。顧名思義,Shell就像是一個外殼一樣。就我理解而言,Shell本身是一段程序,它運行起來後,可以和內核來打交道。它是相對於內核來說的,建立在內核的

原创 Linux之進程

1.進程的定義 在討論進程定義之前,我們可以先來了解一下計算機操作系統爲什麼要引入進程這個概念。 1.1 進程的引入 當計算機系統只有一個程序運行時,稱之爲單道程序,此時這個程序獨佔系統中的所有資源,在執行的過程中不受外界的影響;而多

原创 運算符重載(C++)

我在一開始學習C++編程時,對“運算符重載”這裏一直很迷惑。例如對於輸出運算符的重載,我剛開始是這樣想的:C++明明提供了<<來進行輸出,爲什麼還要重載一個呢?最後我通過查資料,結合我的理解,通俗地說:重載可以理解爲“自己重寫寫”,因

原创 模擬實現String類(C++)

以下就是String類的模擬實現: 測試環境爲VS2013 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stdlib.h> #include<assert