原创 Linux下常用的監測服務器命令

本篇用於記錄一些Linux下命令或者工具的使用 一、tcpdump     tcpdump是一個網絡抓包工具,可以根據主機、接口、協議等選項過濾出想要從網絡上抓取的數據包,也可以根據選項指明數據包表達的格式。 tcpdump的選項:

原创 高性能服務器程序框架

    我們按照服務器的一般原理,可將服務器解析爲三個主要的模塊:IO處理單元(主要用於處理客戶連接,讀寫網絡數據),邏輯單元(業務進程或者線程,用於分析客戶數據並將結果傳遞給IO處理單元或者而直接發給客戶端,具體是哪種方式取決於事件處理

原创 網絡編程筆記——select、poll、epoll

五種IO模型簡介     阻塞式IO,非阻塞式IO,IO複用,信號驅動式IO,異步IO爲五種UNIX\LINUX下的IO模型。 阻塞式IO。默認情況下所有套接字都爲阻塞,當進程調用IO系統調用時(如read,recvfrom),會從用戶態

原创 Linux系統編程——內存映射與寫時複製

基本概述     內存映射就是將虛擬內存中的一塊區域與磁盤上的對象建立關聯以初始化虛擬內存區域的內容。有兩種映射 文件映射:講一個文件的一部分直接映射到調用進程的虛擬內存中 匿名映射:一個映射沒有對應的文件(也可以理解成一個內容總是被初始

原创 Linux系統編程——POSIX消息隊列

簡介     POSIX消息隊列就是進程之間通訊的方式之一,其特點是以消息的形式交換數據(數據的交換單位是整個消息),POSIX消息隊列和System V消息隊列相比,有以下優點: 消息通知特性允許一個進程能在一條消息進入之前爲空的消息隊

原创 虛擬內存管理知識點回顧

概述     首先需要知道虛擬內存是一個抽象的概念。概念上而言,虛擬內存是一個存放在磁盤上N個連續字節大小的單元組成的數組。每個進程都擁有一個虛擬內存空間,在此空間上進程可以對虛擬內存進行管理和應用(例如內存映射和malloc、free等

原创 鏈接與共享庫

鏈接簡述     由下圖編譯的過程可以看出,源程序經過預處理,編譯,彙編等步驟形成可重定位目標文件,再由多個可重定位目標文件形成可執行目標文件。     鏈接是將各種代碼和數據片段收集並組合成一個單一文件的過程,這個文件可被加載到內存中

原创 C++——vector和list簡述

vector vector概述     vector是STL中序列式容器的一種,可以理解爲“可變長的數組”。與array的區別:array是靜態空間,大小一旦固定就不能改變,vector是動態空間,隨着元素的加入,他會有自己的機制來擴充空

原创 C++——迭代器Iterator

Iterator簡介     迭代器是一個抽象的概念,其可以說是算法與容器之間的橋樑,迭代器提供一種方法,使之能夠依存巡防某個聚合物(容器)所含的所有元素,而有無需暴露該聚合物的內部表達方式。     迭代器也可以看成一個行爲類似指針的對

原创 Linux系統編程之守護進程

守護進程簡介及特點     守護進程又稱精靈進程(DAEMON),是一類具有如下特點的進程。 其生命週期很長,通常在系統啓動的時候會創建並一直運行,當系統關閉時才終止,不隨着用戶登錄、註銷等改變其狀態。 他是在後臺運行且不擁有控制終端的進

原创 C++——分配器allocator

allocator簡介     分配器(配置器,allocator)是STL中六大組件(容器、算法、迭代器、仿函數、適配器、分配器)之一,用於分配管理內存空間。其主要適用於在使用容器時,對空間的動態分配,如果是我們平常要申請一塊動態內存時

原创 Git簡介與使用

Git簡介     Git是一個開源的分佈式版本控制系統。SVN是一個集中式版本控制系統,程序的版本都是集中放在中央服務器,用戶可以從上push和pull,最大的問題就是需要聯網才能使用,速度較慢,效率較低,而且中央服務器一旦出現問題,將

原创 Effective C++讀書筆記

本篇記錄一下首次研讀Effective C++的知識點和自己的理解,會分條款逐一闡述。 條款01:視C++爲一個語言聯邦     C++有四個次語言,次語言之間相互協調,當你在編寫程序的時候,最有可能運用到的就是次語言之間的相互轉換,所以

原创 Linux系統編程之線程

線程概述     線程是允許應用程序併發執行多個任務的一種機制,一個進程中可包含多個線程。同一程序中的所有線程都會執行相同的程序,共享一份全局內存區域,其中包括初始化數據段、未初始化數據段、以及堆內存段。     多線程可以彌補多進程的缺

原创 劍指offer——刪除鏈表中的節點

題目1:在O(1)內刪除鏈表節點。給定單向鏈表的頭指針和一個節點的指針,在規定時間複雜度內刪除該節點 解題思路:首先在時間複雜度O(1)就不可能從頭遍歷鏈表查找節點。我們把下一個要刪除節點的下一個節點的值賦值給指定的節點,然後刪除下一個節