原创 二叉搜索樹的基本特徵和模擬實現

一、二叉搜索樹的定義 二叉搜索樹又稱二叉排序樹,它或者是一顆空樹,或者是一棵排序樹,它具有如下性質: 1、若它的左子樹不爲空,則它的左子樹的所有節點的值都小於根節點的值 2、若它的右子樹不爲空,則它的右子樹的所有節點的值都大於根節

原创 C++範圍for詳解

範圍for是遍歷方式中的一種,以前在遍歷的時候,經常會用到範圍for,但對它的使用原理並不是很清楚,下面將對其做詳細的介紹。 以一段代碼爲例: int main() { string strs[] = { "蘋果", "香蕉", "草

原创 set和multiset的用法詳解

一、set文檔介紹 1. set是按照一定次序存儲元素的容器 2. 在set中,元素的value也標識它(value就是key,類型爲T),並且每個value必須是唯一的。set中的元素 不能在容器中修改(元素總是const),但是可以

原创 牛客網:倒置字符串

題目描述: 將一句話的單詞進行倒置,標點不倒置。比如 I like beijing. 經過函數後變爲:beijing. like I 這道題我想到兩種方法: 1、從後往前遍歷字符串,以空格分割,找到每個單詞,然後再遍歷每個單詞,將

原创 進程終止 exit和_exit的區別

一、進程退出的三種場景 代碼運行完畢,結果正確 代碼運行完畢,結果錯 代碼異常終止(不需要再看退出碼) 二、進程常見退出方法(利用echo $?可以查看最近一個進程的退出碼) 正常退出: 從main函數返回 調用exit _

原创 C++異常基礎知識點

一、C語言傳統的處理錯誤的方式 1、終止程序:例如assert,但是這種處理異常的方式太粗暴,如果發生內存錯誤,除0錯誤時就會終止程序。 2、返回錯誤碼:這種錯誤需要程序員自己去查找對應的錯誤。例如系統很多庫的接口函數都是通過把錯誤碼放到

原创 【leetcode】n皇后(DFS+回溯)

題目描述: n 皇后問題研究的是如何將 n 個皇后放置在 n×n 的棋盤上,並且使皇后彼此之間不能相互攻擊。 給定一個整數 n,返回所有不同的 n 皇后問題的解決方案。 每一種解法包含一個明確的 n 皇后問題的棋子放置方案,該方案

原创 子進程退出,父進程爲什麼要等待?

在模擬實現之前,我們首先要理解什麼是阻塞狀態? 操作系統將不滿足某種條件的進程從運行隊列中拿出,將其狀態設置爲其他狀態並放入等待隊列中,在此等待隊列中的進程的都處於阻塞狀態。 一、父進程爲什麼要等待? 1、殭屍進程,造成內存泄漏

原创 NAT技術如何解決IP地址不足的問題

IP地址是4字節的,所以一共有2的32個次方個左右,即43億左右,而每個主機都需要一個IP地址,難道43億主機都能接入網絡嗎?並不是的! 實際上,由於一些特殊的IP地址的存在,數量遠不足43億,另外IP地址並非是按照主機臺數來配置

原创 AI語音助手

一、項目簡介 ai語音管家接入了圖靈機器人,利用百度的語音識別和語音合成以及各種第三方庫實現了和機器人的智能對話, 二、應用技術 C++STL,cmake,圖靈機器人,百度語音識別和語音合成,HTTP第三方庫,jsoncpp,li

原创 網頁版羣聊系統

項目簡介 應用技術

原创 理解Linux下的inode

在講inode之前,首先要明白爲什麼會有inode ?inode是用來幹啥的?帶着這兩個問題,我將開始講述我理解的inode 。 設想一個場景,在windows下,創建一個新的文件,這個文件都包含哪些信息?最基本的包含文件屬性和文

原创 進程間通信(管道)

此篇文章主要介紹利用管道進行進程間通信,下篇文章將介紹system V 在介紹進程間通信之前,我們首先要理解進程間通信是什麼?爲什麼需要進程間通信?這是兩個最基礎的概念,下面我將詳細介紹。 一、進程間通信是什麼? 簡單而言,就是讓

原创 進程間通信(system V共享內存)

一、共享內存的原理 首先在物理內存中開闢一段空間,然後利用內核級頁表和進程的地址空間建立映射關係,當把數據寫入共享內存時,即可完成進程間通信。 二、共享內存的特點 共享內存是system V進程間通信過程中速度最快的 共享內存沒

原创 進程的程序替換以及exec類的函數測試

在介紹進程的程序替換時,我們首先得明白爲什麼要進行程序替換??程序替換是創建一個新的進程嗎??替換了哪些東西??搞清楚這三點是至關重要的!!! 一、爲什麼要進行程序替換以及替換了哪些東西 調用用fork()函數創建子進程,子進程以