原创 tcp的三次握手四次揮手

在這個例子中,首先客戶端主動發起連接、發送請求,然後服務器端響應請求,然後客戶端主動 關 閉連接。兩條豎線表示通訊的兩端,從上到下表示時間的先後順序,注意,數據從一端傳到 網絡的 另一端也需要時間,所以圖中的箭頭都是斜的。雙方發送的段按時間

原创 linux下的五種IO模型

   首先我們來看一下這五種I/O分別是什麼:阻塞I/O,非阻塞I/O,I/O複用,信號驅動I/O,異步I/O   在來看下它們的執行過程(除異步I/O):都是分爲兩步,首先是等待數據準備(除信號驅動IO外,其它幾種都是自己在等待),當數據

原创 用C++ 實現複雜鏈表的複製

    首先我們先來看一下複雜鏈表的結構:    這個鏈表不能直接進行復制,如果我們對其進行直接複製將會發現複製後的鏈表的random依舊指向之前鏈表的位置,並沒有指向自身的某個節點。因此,我們需要好好分析一下。方案一:    我們可以一個

原创 IP切片及重組

分片:就是當一個skb包長度大於傳輸設備或者鏈路上物理設備的mtu時,會根據一定的方式進行切割,從而使報文得以發送出去。但是這裏需要說明,分片又分爲IP和TCP分片兩種,由於tcp報文有自己的機制去分片,不需要依賴IP層分片;而對於udp或

原创 tcp的三次握手四次揮手

在這個例子中,首先客戶端主動發起連接、發送請求,然後服務器端響應請求,然後客戶端主動 關 閉連接。兩條豎線表示通訊的兩端,從上到下表示時間的先後順序,注意,數據從一端傳到 網絡的 另一端也需要時間,所以圖中的箭頭都是斜的。雙方發送的段按時間

原创 可重入函數與線程安全的區別及聯繫

可重入函數 main函數調用insert函數向一個鏈表head中插入節點node1,插入操作分爲兩步,剛做完 第一步的 時候,因爲硬件中斷使進程切換到內核,再次回用戶態之前檢查到有信號待處理,於 是切換 到sighandler函數,sigh

原创 centos6.5 Linuxe vim gdb g++ ctags的簡單配置

首相我們需要安裝vim,gdb,g++,ctags可以使用命令行安裝:    (1) su 切換到root下,輸入密碼。    (2)yum install vim-enhanced     (3) yum -y install gcc-c

原创 linuxe的基礎指令

Shell 外殼(操作系統的外殼)介紹:Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令並且把它們送到內核。不僅如此,Sh

原创 路由表基礎知識

使用 route 命令可以查看 Linux 內核路由表各個輸出項的說明:3 種路由類型主機路由主機路由是路由選擇表中指向單個IP地址或主機名的路由記錄。主機路由的Flags字段爲H。例如,在下面的示例中,本地主機通過IP地址192.168.

原创 棧實現一個小迷宮

概括:實現迷宮的算法主要在於查找和回溯。從入口開始之後我們所查找的每一個位置都要去判斷它的另外三個方向(不包括剛剛走過的路徑)的路徑能不能通,如果能通則到下個位置,並將上個位置進行標註。在將此位置作爲當前位置繼續走。如果一個位置的另外三個方