原创 Linux系統中軟硬鏈接文件

Linux中將文件分爲兩部分:用戶數據(user data)和元數據(metadata); 用戶數據即文件數據塊(data blocks),數據塊是記錄文件實際內容的地方; 元數據則是文件的附加屬性,(如文件大小,創建時間,所

原创 在瀏覽器中輸入url後,發生的一系列事情

首先分享一個網友對這個的總結,超級牛:http://fex.baidu.com/blog/2014/05/what-happen/ 具體流程如下 1.首先在瀏覽器中輸入需要的網址 用戶輸入url,例如:https://b

原创 Top_K問題,堆排序

Top_K問題 簡述:在大量數據中選出K個最大的或最小的。 以取K個最大數爲例: 具體思路: 1. 將給定的數據的前K個元素壓入到vector空間,對這K個數進行向下調整建小堆; 2. 再將堆頂元素和數組的其他元素進行比

原创 Linux---信號

信號對於我們來說已經很熟悉了,走在路上紅燈亮起,這時我們就停下腳步,綠燈亮起,又繼續前行;當水壺哨聲響起的時候,這時我們就過去關掉電源…… 那麼我們爲什麼會對那種現象進行識別,並做出一系列的反應呢? 這是因爲大腦能記

原创 重構二叉樹(前序遍歷和中序遍歷)

二叉樹的前序遍歷是先遍歷根節點,接着是左子樹節點,最後是右子樹節點,所以可以通過前序遍歷確定樹的根節點。 二叉樹的中序遍歷實現遍歷二叉樹的左子樹節點,接着是根節點,最後是右子樹節點,所以可以通過中序遍歷找到根節點後,根節點

原创 Linux — 管道

引入管道: 每個進程各自有不同的PCB(task_struct),各自擁有不同的用戶地址空間,所以進程的運行是具有獨立性的,當操作系統需要完成某項功能時需要進程間進行交互,這時內核協助各進程完成相互訪問。 管道的本質: 1.管道是

原创 Linux---消息隊列

消息隊列: !一種基於systemV,從一個進程向另一個進程發送有類型數據塊,支持雙向通信的方法; !消息隊列的生命週期隨內核; !消息隊列的實質是存放消息的鏈表,存放在內核中並由消息隊列標識符標識; !對消息

原创 AVL樹(平衡搜索二叉樹)

二叉搜索樹具有很高的靈活性,,對其進行優化可以生成平衡搜索二叉樹。 AVL樹爲高度平衡的二叉搜索樹,能保持二叉樹的高度平衡,儘量降低二叉樹的高度,減少樹的平均搜索長度。 AVL樹增刪查改的效率都是O(lgN)。 AVL樹的特性

原创 如何限制一個類對象只在堆上或棧上建立

類對象的創建在棧上: 靜態分配類對象:編譯器直接調用類的構造函數,挪動棧頂指針爲對象分配適當的內存空間。 所以要使類對象建立在棧上就必須採用靜態分配類對象的方法(直接調用類的構造函數),禁用new運算符 (new首先要調用oper

原创 線索化二叉樹(前序線索化,中序線索化)

爲什麼要對二叉樹進行線索化? 對二叉樹進行遍歷是以一定的規則將二叉樹的節點排列成一個線性序列,這些線性序列有且僅有一個直接前驅和直接後繼,但是以二叉鏈表進行存儲的時候,只能找到節點的左右孩子信息,不能直接得到節點在任一序列的前驅

原创 Linux----線程基礎

線程: 線程是執行粒度比進程小的執行流;線程是在進程的地址空間內運行的一個控制序列。 在Linux中線程有獨立的PCB,爲了實現在內核中進行切換有獨立的上下文,調用函數時開闢棧幀有私有棧,線程有自己的調度優先級,自己的信號屏蔽

原创 C++ dynamic_cast

dynamic_cast是一個運算符: dynamic_cast<type-id>(expression) :將expression轉換成type-id類型的對象;type-id可以是指針也可以是引用,expression的類型

原创 哈夫曼樹原理和實現

哈夫曼樹: n個帶權值節點構造的二叉樹中帶權路徑長度最短的二叉樹,並且n個節點都是葉子節點,只有葉子節點纔是有效的節點,又稱爲最優二叉樹; 帶權路徑長度(WPL): 樹中所有葉子節點到根節點的路徑長度和該葉子節點權值乘積

原创 專題:二叉搜索樹節點的刪除

二叉搜索樹節點的刪除較節點的插入和查找難以理解,涉及到以下情況: 節點爲空時直接返回false; if (_root == NULL) { return false;

原创 輸入一個鏈表,從尾到頭打印鏈表每個節點的值

輸入一個鏈表,從尾到頭打印鏈表每個節點值 從頭開始打印鏈表很簡單,新建一個節點讓其指向鏈表的頭節點,打印節點的數值,再去指向下一個節點,再打印節點值,直到節點爲NULL。 那麼要是從尾到頭打印鏈表節點值,遵循“先進後出”的原則,所