原创 Linux多線程之互斥鎖

互斥鎖指代相互排斥,它是最基本的同步形式。互斥鎖用於保護臨界區,以保證任何時刻只有一個線程在執行其中的代碼(假設互斥鎖由多個線程共享),或任何時刻只有一個進程在執行其中的代碼(假設互斥鎖由多個進程共享)。既然任何時刻只有線程能夠鎖住一個給

原创 設計模式之享元模式

享元模式運用共享技術有效地支持大量細粒度的對象。 如果一個應用程序使用了大量的對象,而大量的這些對象造成了很大的存儲開銷時應該考慮使用。對象的大多數狀態可以是外部狀態,如果刪除對象的外部狀態,那麼可以用相對較少的共享對象取代很多組對象,

原创 c++新特性之std::atomic

std::atomic爲C++11封裝的原子數據類型, 支持多種類型數據的原子操作,以下是atomic支持的數據類型,摘自http://www.cplusplus.com/reference/atomic/。 #include <at

原创 c++11新特性之auto

在早期版本中,auto關鍵字用來聲明具有自動存儲器的局部變量,auto關鍵字很少被使用,除了靜態變量之外,其它的變量默認是auto的。因此,在c++11中,刪除了原有的功能,並對其重新設計,增加了auto的類型推導功能。 template

原创 C++11新特性之智能指針

本文章參考https://www.cnblogs.com/feng-sc/p/5710724.html#title33。因爲其對智能指針介紹的比較詳細,在自己的工作中,智能指針用的少,都是new delete用的多,實際開發中,不少情況下

原创 設計模式之職責鏈模式

職責鏈模式使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這個對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。 UML圖如下所示: demo代碼如下。 class Request { p

原创 設計模式之橋接模式

橋接模式其實是合成/聚合規則的一種體現,儘量使用合成/聚合規則,不要使用類繼承。聚合表示一種弱的擁有關係,體現的是A對象可以包含B對象,但B對象不是A對象的一部分,合成則是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週

原创 設計模式之單例模式

單例模式保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。 單例模式非常簡單,在開發中經常遇到,比如讀寫配置文件的類等。 代碼如下: //單例類 class Singleton { private: static Si

原创 設計模式之組合模式

組合模式將對象組合成樹形結構以表示“部分-整體”的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性。 下面是組合模式的UML圖: 代碼如下: class Company { protected: std::s