原创 C++中運算符重載

下面代碼實現+、()、=的運算符重載,僅供參考。 #include <iostream> class Body{ public: Body(int a = 0):m_a(a) {} ~Body() {} #in

原创 實現Linux免密鑰登陸

我們在一臺Linux機器上利用SSH登陸其他Linux機器時,需要我們輸入PassWord,以及搭建集羣時,節點之間相互通信,都需要輸入PassWord。第一,長時間SSH登陸需要反覆輸入密碼;第二,集羣之間通信需要自動化。這時,

原创 TBB之parallel_reduce

循環做的是reduce(最終輸出的是單一的數),例如求和: float SerialSumFoo( float a[], size_t n ) { float sum = 0; for( size_t i=0; i

原创 TBB之concurrent_vector

concurrent_vector是一個動態可增長的數字,當其他線程對其中的元素操作時,可安全push元素到concurrent_vector,對於安全並行增加元素,concurrent_vector有3個方法支持動態數組的使用:

原创 TBB之pipeline

Pipelining是一個通用並行模型,模仿一個傳統的製造集成生成線,數據流向一系列的管道濾波,每個濾波以某種方式處理數據,給定一個輸入流數據,一些濾波能並行操作,另外一些不能。例如,視頻處理,對幀的處理不依賴其他幀,那麼能同時處

原创 TBB之parallel_do

對於一些循環,迭代空間的結束是未知的,或者循環體在循環結束之前可能增加更多的迭代,你能使用模板類tbb::parallel_do處理這2種情況。 鏈表是迭代空間未知的例子,在並行編程中,通常使用動態數組代替鏈表是更好的,因爲訪問鏈

原创 C++中關於拷貝構造函數

拷貝構造函數 假設我們有一個類Body,其形式如下: class Body{ Body(int a):m_a(a) {}; // 構造函數 ~Body() {}; // 析構函數

原创 Excel之數理統計

數據來源商務與經濟統計(原書第11版)中的StockPrices.xls。 計算Share字段的LN(B2/B3)到index中 統計index字段的統計量 均值 標準差 最小值 最大值 點贊 收

原创 TBB之parallel_for

下面是串行代碼: void SerialApplyFoo( float a[], size_t n ) { for( size_t i=0; i!=n; ++i ) Foo(a[i]); } tbb::parall

原创 TBB之Exceptions and Cancellation

Intel TBB支持exceptions和cacellation。當Intel TBB算法裏的代碼拋出exception時,會發生下面的事情: exception被捕獲,在算法裏更遠的exceptions被忽略。 算法被取消,

原创 什麼是自然語言處理

前幾年曾經馬少平老師的引薦,爲某科普圖書寫過一篇短文介紹自然語言處理,介紹了NLP的基本概念、任務和挑戰,可做入門參考。 一、什麼是自然語言處理 簡單地說,自然語言處理(Natural Language Processing,簡稱

原创 TBB介紹

介紹 這篇教程教你怎樣使用Intel的Threading Building Blocks(Intel TBB),它是一個庫幫助你利用多核提高性能,你不需要是個線程專家,這個項目可能首先看似使人畏懼,但是通常你只需要知道一些關鍵點就

原创 Vim編輯器之刪除單詞

首先,Vim的效率真的很高!雖然Vim學習曲線很陡峭,但學會了就非常好用。比如,當你想刪除一個單詞的時候,在記事本里,要麼用鼠標整體選中刪除,要麼就按住退格鍵回刪。 但是在Vim的普通模式裏(鍵入Esc按鈕進入普通模式),把焦點放

原创 利用GDB調試多線程core文件

在linux下程序崩潰時,一般會在指定目錄下生成一個core文件。core文件僅僅是一個內存映象(同時加上調試信息),主要是用來調試的,接下來我們通過一個案例觀察怎麼利用GDB調試core文件。 在命令行中鍵入 gdb <可執行文

原创 C++優化:把頻繁操作的成員變量局部化

當我們在類成員函數中頻繁操作類成員變量時(例如,在for循環中反覆調用成員變量),我們可以把該成員變量複製到成員函數中,成爲局部變量,幫助編譯器更好的優化循環體,因爲成員變量對編譯器來說更容易追蹤。 例如下面程序,在operato