原创 Linux下的黏滯位(Sticky bit)

1、什麼是黏滯位?爲什麼需要黏滯位?         一般的,在Linux系統中用戶只要對某個目錄具備w寫入權限,便可以刪除該目錄中的任何文件,而不論這個文件的權限是什麼。 比如我們進行一下操作: 1>創建/test目錄,並賦予777權

原创 二維數組中查找數據(該數組每行從左至右遞增,每列從上至下遞增)

/*二維數組中查找(該數組每行從左至右遞增,每列從上至下遞增)*/ #pragma once #include <iostream> using namespace std; const int ROW = 4; const int C

原创 Linux環境搭建(vim,makefile,gdb...)

1、vim(編輯器)的使用 vim是vi的升級版本,二者都是多模式編輯器,vim兼容了vi的所有指令,同時還增加了一些新的特性在裏面。 vi的三種基本模式:(vi有很多種模式,目前僅需掌握這三種) 1》命令模式:控制屏幕光標

原创 死鎖概述與總結

一、死鎖的引入 顧名思義,死鎖死鎖肯定與鎖有關,我們知道引入鎖又是爲了解決多進程或多線程之間的同步與互斥問題,那麼到底怎樣的情形纔會產生死鎖呢? 典型的兩種死鎖情形: (一)線程自己將自己鎖住 一般情況下,如果同一個線程先後

原创 Linux下的信號(三)----捕捉信號與sleep模擬

Linux下的信號(一):信號的基本概念與產生 Linux下的信號(二):阻塞信號 一,什麼是捕捉信號? 1,捕捉信號:信號處理方式三種方式中的一種,意思是既不忽略該信號,又不執行信號默認的動作,而是讓信號執行自定義動作。捕捉信

原创 數據結構之用兩個隊列實現一個棧

一、瞭解棧和隊列的基本結構 1、棧 定義:棧是一種只能在一端進行插入或刪除操作的線性表。允許插入和刪除的一端被稱爲棧頂(動態變化),另一端被稱爲棧底(固定不變),棧的插入和刪除被分別稱作入棧和出棧。 特點:先進後出(FILO)。 存儲結構

原创 Linux下的信號(二)----阻塞信號

一,信號在內核中的表示 1,在此之前,必須先了解幾個概念: 信號遞達(Delivery):實際執行信號處理的動作。 信號未決(Pending):信號從產生到遞達之間的狀態。 信號阻塞(Block):被阻塞的信號產生時將保持

原创 Linux下的信號(一)----信號的基本概念與產生

一,信號的基本概念 1,什麼是信號? 日常生活中,當我們走到馬路上時,看到的綠燈是一種信號,它能提示我們怎樣安全的過馬路。又比如,新學期開始學校給每個班發的課表也是一種信號,它能提示同學們在適當的時間地點去上相應的

原创 大數運算(加減乘除)

大數運算的實現方法主要有以下幾種: 1) 用字符串表示大數。將大數用十進制字符數組表示,然後按照“豎式計算”的思想進行計算。這種方法比較容易理解,但是計算效率比較低。 2) 將大數看成二進制流進行處

原创 linux常見指令以及權限理解

1、計算機的五大單元: 輸入單元:包括鍵盤,鼠標,掃描儀,手寫板等。 中央處理器(CPU):含有算術邏輯,控制,記憶等單元。 輸出單元:顯示器,打印機。 注意:存儲器☞內存,CPU只能與內存打交道 2、環境變量的概念

原创 簡易內存池

【內存池的引入】 一般的,我們要動態申請內存時,都會調用malloc或new,由於需要申請的內存大小可能預先不知道,所以有時文門會頻繁的調用malloc或new,這就大大降低了程序的運行速率,同時還有可能引進內碎

原创 Linux下的進程描述

進程: OS:程序的一個執行實例。 正在執重點內容行的程序。 能分配處理器並由處理器執行的實體。 內核觀點:擔當分配系統資源(CPU時間,內存)的實體。 進程的兩個基本元素是程序代碼(可能

原创 C語言模擬實現C++的繼承與多態

一、面向過程編程與面向對象編程的區別 衆所周知,C語言是一種典型的面向過程編程語言,而C++確實在它的基礎上改進的一款面向對象編程語言,那麼,面向過程與面向對象到底有什麼樣的區別呢? 【從設計方法角度看】 面向過

原创 二叉樹的經典面試題總結

1、二叉樹的構造 #include <iostream> #include <cassert> #include <queue> #include <stack> using namespace std; template <c

原创 棧和隊列的常見面試題

1、兩個隊列實現一個棧 兩個隊列實現一個棧 2、兩個棧實現一個隊列 【算法思想】 1>設計類 成員變量:給兩個棧s1和s2來模擬實現一個隊列 成員函數:入隊Push()和出隊Pop() 2>給兩個指向棧對象s1、s2的