原创 Triangle (go語言)

題目:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the ro

原创 std::shared_ptr的對象是否是線程安全的

在MSDN的描述爲:Multiple threads can simultaneously read and write different shared_ptr objects, even when the objects are co

原创 C++中,爲任意一個可調用對象實現一個包裝器,以實現爲這個可調用對象附加新的功能(本例中:輸出可調用對象的執行時間)

包裝器這種編程方法是內建到python的語言裏的。C++也能很容易實現這個功能。 本文的包裝器能爲任意一個可調用對象附加一個輸出執行時間的功能。我們把這個包裝器實現成函數TimeMonitorFunc。下面先進行概述,然後介紹一下具體實現

原创 Ubuntu 各版本代號簡介

摘要:Ubuntu中,每個版本都有一個更爲特色的名字,這個名字由一個形容詞和一個動物名稱組成,並且,形容詞和名詞的首字母都是一致的。從D版本開始又增加了一個規則,首字母要順延上個版本,如果當前版本是D,下個版本就要以E來起頭。Ubuntu

原创 觀察者模式的實現

測試環境:visual studio 2017。 測試參數:標準符合:C++ 14 和 C++ 17 理論上也符合C++ 11。 EventWrap實現的是主題類(發佈者) Observer的派生類是觀察者。 這個實現新穎的部分是: 1、

原创 log4cplus的使用方法

我們需要1至N個記錄器——即log4cplus::Logger對象。寫日誌時,需要把指定Logger對象作爲參數傳入。我寫了一個類,用來創建和配置一些log4cplus::Logger對象。有一個配置文件,可以在運行時修改日誌的配置。如果

原创 C++ 11實現的線程池

我在工作中經常使用一個線程安全的隊列在兩個線程間通信。一個線程發佈任務,一個線程處理任務,這麼做一般爲了保證發佈任務的線程及時響應網絡或其他事件。也有遇到一個線程發佈任務,多個線程處理任務的情況,一般這麼做是爲了利用多個CPU。 今天介紹

原创 C#和C++的互操作——C++ dll 通過回調向C#傳送報文(字節流)

C++的DLL通過一個回調函數每隔1秒向C#的程序傳送一個報文(字節流),回調函數的簽名爲 int fun(char* data,int len) 這個字節流中包含的是下面這個結構體中的數據: typedef struct Msg {  

原创 C++獲得時間戳 C++11的chrono庫

steady_clock::duration d = steady_clock::now().time_since_epoch(); minutes min = duration_cast<minutes>(d); seconds

原创 C++的命名規範

C++的實踐中存在多種多樣的命名方法。選擇一種邏輯自洽的方案並實施到自己的開發中是一件令人愉快的事。 一、匈牙利命名法 這是一套完整的命名體系,包含一系列規則,VC++採用這種命名規則。windows API、MFC等,在Windows中

原创 std::shared_ptr<T>的對象是否是線程安全的

在MSDN的描述爲:Multiple threads can simultaneously read and write different shared_ptr objects, even when the objects are co

原创 C++11 創建一個線程

#include <thread> class SomeTask { public: void Start() { if (taskThread_.get_id() == std::thread::id()) { t

原创 C++的線程安全的隊列

(1)在衆多實現方法中這個實現兼顧了易讀性、性能和功能。 (2)這個實現要求構建工具支持C++11的atomic mutex condition_veriable功能。這是C++11的基礎特性,一般2011年以後的C++編譯器都能支持。

原创 使用select 實現網絡讀寫事件的監聽

https://github.com/mathes006/SelectDemo 這個demo相當於一個TCP服務器的網絡IO監聽模塊。 監聽每個連接的讀寫事件。默認只監聽讀,只有在顯式請求時才監聽寫,寫完後顯式請求恢復到只監聽讀。  

原创 如何寫一個函數的包裝器(C++實現)(比如,可以計算函數執行的時間)

python中大量使用函數包裝器。用C++也能用簡潔的方式實現這個功能。可以把這個包裝器實現成一個函數。 我們把實現包裝器功能的這個函數命名爲TimeMonitorFunc。下面先進行概述,然後介紹一下具體實現,最後介紹把這個包裝器修改成