原创 開源項目(庫)之libcurl學習(二)

在上一篇博文中,我們曾實現了一個簡單的爬蟲程序,在那篇博文中,我們使用的是單線程的,感覺多少有些不好,所以在這篇博文中,我們就將其修改爲多線程的,廢話不多說了,直接上代碼,如下: #ifndef __HTTP_CURL__H #defin

原创 一個線程池與任務池相結合的案例

在上篇博文中,我們簡單地將每個線程的 執行函數進行了抽象化,這篇博文在此基礎上設計了一個簡單的任務池,廢話不說,直接上代碼: #ifndef __TASK__POOL__H #define __TASK__POOL__H #includ

原创 開源項目(庫)之libcurl學習(一)

最近抽了點時間,將之前開發中使用到的一些開源庫進行了下總結,主要是爲了回顧一下自己所使用的一些庫基礎知識,並且加深理解,在這些庫中,首先一個庫就是libcurl,這個庫很強大,當時在做openstack swift API時使用到了,這個

原创 Boost之內存管理學習(一)

說起內存管理,大多數人第一反應就是new,delete等操作,這一類操作所針對的對象就是堆對象,在使用這一類操作時,一個很突出的問題就是內存泄露,這也是每個C++程序猿的揮之不去的噩夢,曾幾何時因爲一個不起眼的指針釋放問題,而導致了服務器

原创 Boost庫之bind適配器學習

最近在學習boost庫裏的一些常用的庫,目前已經看到了boost庫的bind適配器這塊,個人感覺bind這玩意太好用了,整體來講bind要比STL裏的bind1st和bind2nd要好用很多,下面就從一些基本的用法來說起吧,bind組件在

原创 設計模式之單例模式

在上篇博文中,我們分析了適配器模式,適配器模式通俗地來講就是實現了接口之間的轉換,是之前不能夠使用的接口能夠在新的環境下使用,今天我們要學習的是另外一個設計模式——單例模式,說到單例模式想必大家都應該明白,通俗地說就是隻能產生一個對象的類

原创 一個自創的多線程池設計-升級版

在上篇博文中,我們自己設計實現了一個簡單的多線程池,功能實現很簡單,裏面有很多的不足,例如對於線程的回調函數,只是在以普通的函數來實現,在此我們想借以任務的形式來給線程池線程指定相應的任務,因而來實現一個任務池+線程池的設計理念,下面我們

原创 boost中g++ 鏈接undefined reference to `boost::system::generic_category()問題

在使用boost庫時,遇到了一個比較糾結的問題: Test.cpp:(.text+0x1bd): undefined reference to `boost::system::generic_category()' Test.cpp:(.

原创 開源項目(庫)之libevent學習(一)

最近花了點時間學習了下有關異步I/O方面的東西,其中主要的一些開源網絡庫主要有libeven、libev以及boost下的asio,至於ACE這樣的庫一般的工程項目不會採用,下面就來看看libevent上的一些東西吧,首先是按照libev

原创 設計模式之建造者模式

在上篇博文中,我們學習了原型模型,在原型模型中,我們是通過一個原型來複制構造新對象,使用方法較爲簡單,希望能夠在實際開發應用中能夠靈活運用,下面我們學習另外一個模式——建造者模式,這個模式最大的特點就是對象是分步驟構建出來的,換句話說,建

原创 基於Boost::Thread庫的多線程網絡爬蟲程序

在之前的幾篇博文中,曾經設計實現了單線程爬蟲和多線程爬蟲,但是自己私下想了想,其實在實現多線程爬蟲時,所有的線程都是自己通過調用底層的API來實現的,這樣的調用一般來說並不是很好,並且又鑑於自己最近學習了下boost::thread相關的

原创 設計模式之策略模式

上篇博文中,我們系統的學習了下工廠模式,下面我們就來學習下另一個設計模式——策略模式,策略模式的定義:定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。對於策略模式,用戶只需要關注所選擇的策略,不必關注具體的策略實現,從而實現

原创 Boost之內存管理學習(二)

在上篇博文中,我們系統地學習了Boost庫中智能指針的學習,在處理單個對象時,採用智能指針是一個很不錯的選擇,但是當需要管理的對象不止一個時,這時候智能指針就有點無能爲力了,今天我們就來看看Boost庫中pool庫的一些東西,Boost.

原创 設計模式之原型模式

在上篇博文中我們學習了有關單例模式,單例模式通俗點講就是隻有一個對象的類,這種設計模式最大的優點就是對象易於管理,這種設計模式是值得好好地學習下的,其他的我們就不多說了,接下來我們再來學習一下另外一個設計模式——原型模式,在列出代碼之前,

原创 開源項目(庫)之libevent學習(二)

在上一篇博文中,我們只是稍加對libevent進行了學習,自己私下感覺好像好的多東西都沒有涉及,於是在這篇中我們就來真正地學習下libevent的一些API用法,廢話不說,直接上代碼,這段代碼也是別人的代碼,但是它很有針對性,所以在此列舉