原创 解析二叉樹相關面試題

一、BTree.h #ifndef __BTree_h__ #define __BTree_h__ #include <stdio.h> #include <stdlib.h> #include <assert.h> #incl

原创 Linux工具之編輯器vim

一、介紹      vim是一個高度可配置的文本編輯器,可以實現高效的文本編輯,它是與大多數UNIX系統一起分發的vi編輯器的改進版本。 二、vim工作模式(常用3種) 1、正常/普通/命令模式(Command mode):  

原创 詳解:進程控制那些事兒

一、進程創建 1. fork 頭文件:#include <unistd.h> 函數原型:pid_t fork(void); 說明:通過複製調用進程創建新進程,調用進程稱爲父進程,創建出來的新進程稱爲子進程,父子進程共用同一個代

原创 Linux工具之調試器gdb

一、介紹      GDB是一個在UNIX/LINUX操作系統下基於命令行的且功能強大的程序調試工具,由GNU開源組織發佈。 二、基本用法 1.如何進入調試?      (1)要使用gdb調試,我們必須首先在源代碼生成二進制程序的

原创 迷宮問題(回溯法)

一、Maze.h #ifndef __Maze_h__ #define __Maze_h__ #include <stdio.h> #include <stdlib.h> #include <assert.h> #include

原创 遊戲:貪喫蛇

一、Game.h #ifndef __GAME_H__ #define __GAME_H__ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<wind

原创 入門:Makefile 基礎理解

一、基本介紹         在一些大型工程中,包含有許許多多的源文件,它們按照類型、功能、模塊等分別放在若干個目錄中,如果我們一個一個的手動去編譯執行它們,這將會耗費大量的精力,這樣的工作量我們是無法想象的。爲了解決這樣的問題,

原创 辨析:殭屍進程與孤兒進程

一、殭屍進程 1. 概念      處於殭屍狀態的進程就是一個殭屍進程 2. 產生原因      子進程先於父進程退出;      子進程退出爲了保存自己的退出狀態,因此退出後資源不會被完全釋放。正常情況下,當操作系統檢測到了

原创 Linux工具之編譯器gcc

一、介紹      GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。GCC原本作爲GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、M

原创 代碼實現:大頂堆

一、Heap.h #ifndef __HEAP_H__ #define __HEAP_H__ #include <stdio.h> #include <assert.h> #include <string.h> #include

原创 總結:八大排序算法(圖解+代碼)

一、直接插入排序 基本思想:      把n個待排序的元素看成爲一個有序表和一個無序表,開始時有序表中只包含1個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第一個元素,將它插入到有序表中的適當位置,使之成爲新的有

原创 進程間通信方式(四):System V 信號量

一、概念 二、特點 三、信號量數據結構         信號量具有自身特有的數據結構 semid_ds,該結構說明了信號量的一些狀態信息等等,詳細信息可參閱文件 /usr/include/linux/sem.h 。 struct

原创 進程間通信方式(三):System V 共享內存

一、概念         我們都知道,在 Linux 中,每個進程都有屬於自己的虛擬地址空間,並且還有一個與之對應的頁表,負責將進程的虛擬地址與物理地址進行映射。倘若現在有兩個不同的進程,它們各自的虛擬地址通過頁表映射到了同一塊物

原创 詳解:ipcs 和 ipcrm 命令

一、ipcs 1. 功能         顯示 Linux 中進程間通信設施的狀態,其中包括消息隊列、共享內存和信號量的信息。 2. 使用方法 【格式】 ipcs [resource...] [output-format] i

原创 進程間通信方式(二):System V 消息隊列

一、概念         消息隊列又叫做報文隊列,是一條由消息連接而成的鏈式隊列,它保存在內核中,並使用消息隊列標識符進行標識。         消息隊列提供了一種從一個進程向另一個進程發送一個數據塊的方法,並且每個數據塊都被認爲