原创 內存池的實現(一)

引言 C/C++下內存管理是讓幾乎每一個程序員頭疼的問題,分配足夠的內存、追蹤內存的分配、在不需要的時候釋放內存——這個任務相當複雜。而直接使用系統調用malloc/free、new/delete進行內存分配和釋放,有以下弊端: 調用

原创 EPOLL服務器端

EPOLL邏輯圖。 EPOLL的server端的流程圖如下。 參考資料: http://blog.csdn.net/chencheng126/article/details/45479241 http://blog.csdn.n

原创 C++中虛函數內存佈局

由sizeof()求帶有虛函數的類的大小引發的思考,在查看相關資料的過程中看到了陳皓先生的一篇文章《C++ 虛函數表解析》(詳情見http://blog.csdn.net/haoel)覺得講的十分的好,只是看完之後仍對爲什麼要又爲什麼可

原创 C++中的static關鍵字

面向過程: 靜態全局變量:在全局數據區分配內存;只是在當前的文件生效,在其它文件中不可見,這點和全局變量不一樣,全局變量在文件中共享。 靜態局部變量:在全局數據區分配內存;它在申明時初始化;它始終駐留在全局數據區,直到程序運行結束;但是

原创 Epoll模型詳解

 Linux 2.6內核中提高網絡I/O性能的新方法-epoll I/O多路複用技術在比較多的TCP網絡服務器中有使用,即比較多的用到select函數。 1、爲什麼select落後     首先,在Linux內核中,select所用到的F

原创 C++中四種類型轉換方式

類型轉換有c風格的,當然還有c++風格的。c風格的轉換的格式很簡單(TYPE)EXPRESSION,但是c風格的類型轉換有不少的缺點,有的時候用c風格的轉換是不合適的,因爲它可以在任意類型之間轉換,比如你可以把一個指向const對象的指

原创 一分鐘教你知道樂觀鎖和悲觀鎖的區別

悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數據的時候都認爲別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了很多這種鎖機制,比如行

原创 C++中的三種繼承public,protected,private

三種訪問權限 public:可以被任意實體訪問 protected:只允許子類及本類的成員函數訪問 private:只允許本類的成員函數訪問   三種繼承方式 public 繼承 protect 繼承 private 繼

原创 C++ 線程安全的單例模式

廢話不多說,常用的代碼積澱下來。 一、懶漢模式:即第一次調用該類實例的時候才產生一個新的該類實例,並在以後僅返回此實例。 需要用鎖,來保證其線程安全性:原因:多個線程可能進入判斷是否已經存在實例的if語句,從而non thread

原创 MySQL性能優化的最佳20+條經驗

今天,數據庫的操作越來越成爲整個應用的性能瓶頸了,這點對於Web應用尤其明顯。關於數據庫的性能,這並不只是DBA才需要擔心的事,而這更是我們程序員需要去關注的事情。當我們去設計數據庫表結構,對操作數據庫時(尤其是查表時的SQL語句),我

原创 內存池的實現

1.內存池要解決什麼問題? 直接用malloc/free進行內存的申請和釋放,有一些弊端,比如開銷比較大,在申請的時候會根據最優匹配算法找到一個空閒的內存,在釋放的時候可能需要合併空閒的內存塊,這些都設計到開銷;第二個會產生大量的內存碎

原创 數據庫鎖

1 前言 數據庫大併發操作要考慮死鎖和鎖的性能問題。看到網上大多語焉不詳(尤其更新鎖),所以這裏做個簡明解釋,爲下面描述方便,這裏用T1代表一個數據庫執行請求,T2代表另一個請求,也可以理解爲T1爲一個線程,T2 爲另一個線程。T3,

原创 Hadoop:你不得不瞭解的大數據工具

如今Apache Hadoop已成爲大數據行業發展背後的驅動力。Hive和Pig等技術也經常被提到,但是他們都有什麼功能,爲什麼會需要奇怪的名字(如Oozie,ZooKeeper、Flume)。   Hadoop帶來了廉價的處理大數據

原创 C語言中32位和64位的數據類型長度

char * long 字符指針和長整形有不同,在32位下是4個字節,在64位是8個字節。

原创 迭代器刪除元素

1.序列容器,比如vector 序列容器的erase返回的是被刪除元素後的有效迭代器。 vector<int> vec; vector<int>::iterator iter; for(iter = ve