原创 Linux服務器多進程模型

Linux多進程服務器真的很給力,贊一個! Linux多進程一般是master負責偵聽,worker接受和伺服client。 一個使用了以下技術的多進程模型: 1. sigset:安全信號,信號屏蔽和接受。 2. ep

原创 epoll詳解

什麼是epoll epoll是什麼?按照man手冊的說法:是爲處理大批量句柄而作了改進的poll。當然,這不是2.6內核纔有的,它是在2.5.44內核中被引進的(epoll(4) is a new API introduce

原创 Linux下5種動態庫運行時搜索路徑的方法

衆所周知,Linux動態庫的默認搜索路徑是/lib和/usr/lib。動態庫被創建後,一般都複製到這兩個目錄中。當程序執行時需要某動態庫,並且該動態庫還未加載到內存中,則系統會自動到這兩個默認搜索路徑中去查找相應的動態庫文件,然後加載該

原创 無符號和棧破壞情況下coredump的分析方法

原文:http://zhangzhibiao02005.blog.163.com/blog/static/37367820201482044137298/無符號和棧破壞情況下coredump的分析方法昨天在上線的時候,出現了一個無符號和棧

原创 C++對象模型

何爲C++對象模型? C++對象模型可以概括爲以下2部分: 1.        語言中直接支持面向對象程序設計的部分 2.        對於各種支持的底層實現機制 語言中直接支持面向對象程序設計的部分,如構造函數、析構函數、虛函

原创 C++ 寫法do{...}while(0)的意義和用法

linux內核和其他一些開源的代碼中,經常會遇到這樣的代碼: [cpp] view plaincopy do{    ...   }while(0)   這樣的代碼一看就不是一個循環,do..while表面上在這

原创 Linux C開發--頭文件查找、動態庫搜索

一、Linux C語言頭文件搜索路徑 本文介紹在linux中頭文件的搜索路徑,也就是說你通過include指定的頭文件,linux下的gcc編譯器它是怎麼找到它的呢。在此之前,先了解一個基本概念。 頭文件是一種文本文件,使用文本編輯器將

原创 C++ 虛函數表解析

C++ 虛函數表解析 C++中的虛函數的作用主要是實現了多態的機制。關於多態,簡而言之就是用父類型別的指針指向其子類的實例,然後通過父類的指針調用實際子類的成員函數。這種技術可以讓父類的指針有“多種形態”,這是一種泛型技術。所謂泛型技術,

原创 C++拷貝構造函數詳解

一. 什麼是拷貝構造函數 首先對於普通類型的對象來說,它們之間的複製是很簡單的,例如: [c-sharp] view plaincopy int a = 100;   int b = a;    而類對象與

原创 應用Valgrind Linux程序的內存問題

如何定位應用程序開發中的內存問題,一直是 inux應用程序開發中的瓶頸所在。有一款非常優秀的 linux下開源的內存問題檢測工具:valgrind,能夠極大的幫助你解決上述問題。掌握 valgrind的使用以及工作原理,能夠有效地定位進

原创 Linux C++開發環境搭建

一、先安裝VMware Worksation9 二、在VMware Workstation9 上安裝centos 三、配置centos網絡    1、vm->settings->Network Adapter 選擇Bridged模式(橋接

原创 變長結構體

在一些 C 語言編寫的代碼中,有時可以看到如下定義的結構: typedef struct user_def{     char * name;     int length;     char bytes[0]; } user_de

原创 ASCII、Unicode、GBK和UTF-8字符編碼的區別聯繫

很久很久以前,有一羣人,他們決定用8個可以開合的晶體管來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,於是他們把這稱爲”字節“。再後來,他們又做了一些可以處理這些字節的機器,機器開動了,可以

原创 零字節WSASend,WSARecv

以下是Windows平臺下兩個函數的聲明: int WSASend(   __in          SOCKET s,   __in          LPWSABUF lpBuffers,   __in          D

原创 delete this--對象請求自殺

  《C++ FAQ》裏提到所謂“小心”至少包括以下幾個方面: this對象是必須是用 new操作符分配的(而不是用new[],也不是用placement new,也不是局部對象,也不是global對象); delete t