原创 利用tcpdump抓包工具監控TCP連接的三次握手和斷開連接的四次揮手

TCP傳輸控制協議是面向連接的可靠的傳輸層協議,在進行數據傳輸之前,需要在傳輸數據的兩端(客戶端和服務器端)創建一個連接,這個連接由一對插口地址唯一標識,即是在IP報文首部的源IP地址、目的IP地址,以及TCP數據報首部的源端口地址和目

原创 經典排序算法之直接插入排序

插入排序的過程與我們平時抓牌的過程非常類似。每次抓一張排,然後與手上已有的牌逐個進行比較,找到其合適的插入位置。 一、直觀的直接插入排序代碼 完全按照直接插入排序算法來編寫代碼,需要另外開闢一個與原數據相同的存儲空間。 將這個過

原创 STL之map操作的幾點疑惑

一、map下標操作所導致的初始化(副作用) 當在程序中使用下標操作時,會發生什麼呢?下標代表的是鍵,當這個鍵在map中已經存在的話,則下標操作可以獲得該鍵所關聯的值;當這個鍵在map中不存在的話,將執行下面的操作: 1、調用值類型m

原创 7月份複習總結&8月份複習計劃

時間過得很快,轉眼間7月份就要過去了。這個7月對於我來說還蠻平靜的,身邊沒有想象中那樣充斥着關於秋招的各種信息,大家好像都蠻安靜的。我基本上每天都在看書,但是每天的基調心情還是擔心憂慮,總感覺自己不行,感覺有看不完的書,做不完的題,特別是

原创 Linux環境中程序的始終

在Linux中,程序的執行從開始到結束的過程如下圖所示: 首先由內核使程序執行。內核首先創建一個啓動例程,然後調用exec函數使得該啓動例程執行。然後啓動例程從內核中取得命令行參數和環境變量值,用來調用main函數。於是開始執行ma

原创 Linux中C程序的存儲空間佈局 & C++的五大存儲空間

Linux中C程序的存儲空間佈局 可以從《APUE》上面摘得下圖所示,即爲Linux中C程序的存儲空間佈局情況。 從低地址到高地址依次分爲五大部分 1.正文段。即爲代碼段,它存儲的是CPU執行的機器指令,這部分是共享的,即存儲其中只

原创 Qt同步線程的幾種方法

一、QMutex類 QMutex類就像一把鎖,在互斥量之前上鎖(QMutex::lock()),然後在使用完互斥量之後解鎖(QMutex::unlock())。比如下面的代碼: void someMethod() { mute

原创 Unix中的殭屍進程

現實中的殭屍是一種似死非死的狀態——一直在人間四處遊走,但是卻不能做一些活人能做的事情。 而對於殭屍進程,與這個有些類似,它不能像一般進程那樣來執行程序、被調度而佔用CPU,但是它卻不能消失,因爲它還沒將它的“死訊”告訴它的父進程和系統

原创 重溫《大話數據結構》筆記一 單鏈錶鏈式存儲結構的操作代碼

#include <iostream> #include <string> using namespace std; typedef int ElemType; //單鏈表的鏈式存儲結構 typedef struct Node{ E

原创 重溫《C++ Primer》筆記九 const形參小結

首先,形參大致可以分爲三種:非引用形參、引用形參和指針類型形參。 一、非引用形參 在傳遞參數的時候,不論是所謂的傳值還是傳址,實際上都是實參值到形參值的複製,其中的區別只是複製的是普通對象還是引用對象而已。對於非引用形參,通過參數傳遞之

原创 C/C++在線筆試題總結(持續更新)

下午在牛客網上試做了一下2015校招研發崗位的筆試題,錯了蠻多的,這裏總結一些題目吧。 1、不算main這個進程,到底創建了多少個進程? int main(int argc, char* argv[]) { fork();

原创 套接字&套接字地址結構和bind()函數

我們都知道在網絡編程中,可以調用socket()函數來獲取一個套接字描述符。但是,socket()函數的作用只是返回一個很小的非負整數值嗎?並非如此,socket()函數的作用是創建套接字的。 創建套接字的流程如下 socket(

原创 TCP套接字編程—具體流程梳理

一個上午都在調試一個服務器端監聽程序,測試的客戶端怎麼都連不上,然後瘋狂在網上搜尋答案無果,最後無意中發現竟是系統沒有聯網。唉,頓時就像是在debug過程中發現某處少了一個逗號是一個樣的鬱悶!不過這個糾結的過程卻讓我把TCP套接字編程的整

原创 在子進程中調用exit()函數對標準I/O流的影響

我們知道exit()函數是用來終止程序用的,它將調用exit系統調用,將程序狀態作爲參數返回給內核。但是之於_exit()和_Exit(),exit()的不同之處在於,exit()在調用exit系統調用之前,它將做一些最後的處理,包括兩個

原创 經典排序算法之堆排序

首先介紹堆的定義:堆是具有下列性質的完全二叉樹:每個結點的值都大於或等於其左右孩子結點的值,稱爲大頂堆;或者每個結點的值都小於或等於其左右孩子結點的值,稱爲小頂堆。由於堆的表象結構是一棵完全二叉樹,我們稱之爲二叉堆。下面分別就是兩個大頂堆