原创 圖解TCP-IP協議

本文通過兩個圖來梳理TCP-IP協議相關知識。TCP通信過程包括三個步驟:建立TCP連接通道,傳輸數據,斷開TCP連接通道。如圖1所示,給出了TCP通信過程的示意圖。 圖1 TCP 三次握手四次揮手 圖1主要包括三部分:建立連接

原创 swap的使用和調整

linux支持虛擬內存,用作虛擬內存的硬盤部分被稱爲交互空間(swap space),虛擬內存是指使用磁盤當作內存的擴展,這樣可用內存的大小就相應的增大了。內核會將暫時不用的內存塊的內容寫到硬盤上,從而空閒的內存就可用於其他目的。當需要用

原创 如何實現一個malloc

原文出處: 張洋的博客    任何一個用過或學過C的人對malloc都不會陌生。大家都知道malloc可以分配一段連續的內存空間,並且在不再使用時可以通過free釋放掉。但是,許多程序員對malloc背後的事情並不熟悉,許多人甚至

原创 select、poll、epoll之間的區別總結[整理]

select,poll,epoll都是IO多路複用的機制。I/O多路複用就通過一種機制,可以監視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒),能夠通知程序進行相應的讀寫操作。但select,poll,epoll本質上都是同步

原创 STL的流處理類學習

概述 之前一直用STL提供的流處理類寫一些代碼,但也沒有認真總結過,對於很多東西還是不理解,這兩天看了一下做一些總結,總體的類圖關係如下: 下面是借鑑網上的一張圖,哪些類包含在哪裏也寫清楚了 這些流處理類大致可以分爲三類: 1. io

原创 effective c++筆記

爲什麼儘量使用const,enum,而不使用define? 除了我們所知的類型檢查問題之外,define是全局的,沒有私有的概念,不能控制作用範圍 多個編譯單元(一般就是多個源文件)non-local static變量的初始化順序無

原创 linux內存管理

本文以32位機器爲準,串講一些內存管理的知識點。   1. 虛擬地址、物理地址、邏輯地址、線性地址  虛擬地址又叫線性地址。linux沒有采用分段機制,所以邏輯地址和虛擬地址(線性地址)(在用戶態,內核態邏輯地址專指下文說的線性偏

原创 Protocol Buffer 學習筆記

今天準備用Protobuf做一些序列化,在這個過程中發現了一些問題 下載的版本是 3.2.0 https://github.com/google/protobuf/releases/download/v3.2.0/protobuf-cpp

原创 c++memset一個類

在c裏面我們經常memset一個結構對象,c++裏面得類對象也可以這麼做,但需要注意: 1)如果類成員包含了其他類對象,memset會導致這個成員不可用 2)如果類包含虛函數,memset會把虛函數表指針清空,導致訪問虛函數的時候cras

原创 Memory Debuggers

http://elinux.org/Memory_Debuggers Memory Debuggers Several tools exist for finding memory leaks or for reporti

原创 Linux內存管理之mmap詳解

轉自 http://blog.chinaunix.net/uid-26669729-id-3077015.html 一. mmap系統調用 1. mmap系統調用         mmap將一個文件或者其它對象映射進內存。文

原创 ZooKepper學習入門

相關網站 官網 https://zookeeper.apache.org/ 官網的中文翻譯(不完整) http://zookeeper.majunwei.com/ 應用場景 http://nileader.blog.51cto.com/

原创 libevent

libevent的基本使用   http://www.cnblogs.com/cnspace/archive/2011/07/19/2110891.html http://yifangyou.blog.51cto.com/900206/

原创 gcc編譯鏈接的一些總結

編譯鏈接的順序 -l library            Search the library named library when linking.  (The second alter-            native with

原创 /proc/pid

attr: 進程的屬性   cmdline: 啓動進程時執行的命令 cat cmdline /home/user/test   cwd: 指向進程當前工作目錄的軟鏈   environ: 進程執行時使用的環境變