Time of Update: 2018-12-03
原來的代碼http://blog.csdn.net/zy498420/archive/2010/11/10/5998864.aspx裡面有一個小bug,我一直都沒有注意到,今天不經意間發現:有一個函數的參數少寫了個const修飾,你注意到在哪裡了嗎? 結果發現這個bug其實幫我遮蓋了很多問題,讓我今天又花了大約1小時來解決這些新問題。貼代碼 #include <string>#include <time.h>#include <stdio.h>using
Time of Update: 2018-12-03
http://yunli.blog.51cto.com/831344/169937記得剛參加工作時(那是97年),中國的IT剛剛興起, 那時,作為一個IT人士是一件很光榮的事,而那時的我正在做電氣和電子相關的工作。99年第一次跳槽,進入了IT行業做軟體開發。至今,中國的IT已經走 過了十多年。但昔日的“光榮一員”卻成為了現在的“IT農民工”,這究竟是怎麼了?是中國的IT發展已經很好了所造成的嗎?不是!在我看來中國的IT還比
Time of Update: 2018-12-03
ubuntu系統辦公讓我很受傷很受傷啊,word文檔都不會整了1、sudo apt-get update操作時,出現GPG error [...] NO_PUBKEY [...]: 解決:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8BAF9A6F2、"tracker is not in the sudoers file. This incident will be
Time of Update: 2018-12-03
引言:我希望看我的文章的朋友都能夠去把My
Time of Update: 2018-12-03
這裡提到的用vc6編譯是指連結vc6的運行庫,用什麼編譯器任我行。主要就是因為別的項目用的是vc6的運行庫,不可能給這個webkit搞特殊,開小灶。 1.請使用icc編譯器。和vc6完美配合。2.把os-win32裡面的東西拷貝到包含路徑檔案夾中,並在cstddef.h中添加ptrdiff_t的std引用。2.解決掉std::min和std::max的問題。放心,這個項目不依賴mfc。不會的自己去查。3.在crt源碼中,找到xmath.h並拷貝到包含路徑檔案夾中。那些安裝綠色版的就自己去找了,吼
Time of Update: 2018-12-03
現在可以直接安裝的rpm軟體包有這麼幾種:*.386.rpm,*.486.rpm,*.586.rpm,*.686.rpm,一般而言,所有X86的處理器都能執行386的指令集。80486處理器那當然需要486的最佳化;Pentium就是586;PentiumPro(P6)之後的統稱為686,它包含了PentiumPro、PentiumⅡ、PentiumⅢ、P4。這裡的i386、i586、i686指的是適用於Intel
Time of Update: 2018-12-03
計算A * B = C, 其中矩陣A, B均為方陣,採用主從式程式設計模式,使用者從鍵盤輸入矩陣規模N,然後隨機數給矩陣賦值。我的並行化方法很簡單,將矩陣A按行劃分,由主進程將矩陣A散發給各個子進程,各子進程把計算結果發送給主進程匯總。其中的矩陣都是用一維數組來類比的,代碼附上,歡迎拍磚~畢業了,才發現很喜歡並行計算啊~ #include "mpi.h"#include <stdio.h>#include <stdlib.h>#include
Time of Update: 2018-12-03
在代碼量較多時,調試比較困難。常用方法是在源碼中插入大量的printf語句。但是當發生segmentation fault時,定位就比較複雜了。 core dump又叫核心轉儲, 當程式運行過程中發生異常, 程式異常退出時, 由作業系統把程式當前的記憶體狀況儲存在一個core檔案中, 叫core dump, 它可以做為偵錯工具的參考. 有時候程式down了, 但是core檔案卻沒有產生,可以用下面的語句設定一下, 然後再運行程式便成產生core檔案, 或在~/.bashrc
Time of Update: 2018-12-03
我已經不止一次聽到關於volatile int的安全讀寫方面的謬論了。最常見的是所謂的volatile int的變數的單寫多讀操作是多安全執行緒的。這個結論很搞笑,因為每當支援這個節論的人給我講一大堆諸如鎖匯流排,原子指令方面的東西時,(權且當他們都說的全對)我幾乎都可以反問他:根據你說的東西可以得到一個結論,volatile int是也多線程寫安全的(串列的),volatile int就是原生的訊號量。那些搞並發編程的人難道都是吃飽了撐的,搞什麼鎖來玩的? 好了,談些基本點,基於c語言標準:1
Time of Update: 2018-12-03
八皇后問題:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。八皇后問題的串列 為實現八皇后問題,既每行每列放置一個皇后,而且每一條對角線和每一條反對角線上最多隻能有一個皇后,主要需要解決放置衝突的問題。衝突主要包括行、列、兩條對角線,具體情況如下: (1)列:規定每一列放一個皇后,不會造成列上的衝突;
Time of Update: 2018-12-03
其實我還有很多話想說: 測試顯示:測試次數越多,效率提升越小。這應該是因為記憶體的重複分配成為了時間主要開銷的緣故。 由於公用伺服器太快的緣故,伺服器上面的測試次數都是我pc上的10倍或者100倍(不然已耗用時間都小於1秒!)。綜合上面所說的,這也許是有種版本在gcc上的效率提升有限的緣故。 vs2008的效率提升比我原來說的要多,我當時弄成調試版了。有種版本使用的時間是沒種版本的1/3左右!! vc6有種版本大約比vs2008有種版本慢20%,但是雙方都老實使用沒種版本,vs2008所花的時間
Time of Update: 2018-12-03
我挑"不能"的 說:input iterator:*操作返回常引用,常量操作.總之不可附值,不可修改,不可附值.可以被拷貝,可以比較。 output iterator:*操作是非常量操作,返回引用,總之*操作是改變狀態的.可附值,可修改. 不可比較,不可被拷貝(因為不能實現不修改他就擷取資料,和auto_ptr類似)。有意思的是difference_type被強制禁用,因為不可比較(比較一次值都變了)。 所以forward_iterator和output _terator不是“isa”的關係。
Time of Update: 2018-12-03
static_assert是我認為boost庫中依賴性最小的一個組件。當然對於很多人來說,assert的習慣都還未必能養成,更莫說static_assert,我就還是講解一下。 static_assert:如果傳入一個false或者0,
Time of Update: 2018-12-03
Jacobi迭代是一種常見的迭代方法,迭代得到的新值是原來舊值點相鄰資料點的平均。串列程式片段如下: 並行化方法之一,可以考慮按列劃分,邊界點新值的計算需要相鄰邊界其它塊的資料,所以在劃分後,每一個資料區塊的兩邊各增加一列,用於存放通訊得到的資料。如:program mainimplicit noneinclude 'mpif.h'! define the size of array, 100 x 100integer, parameter::totalsize = 100,
Time of Update: 2018-12-03
你還在為string s = str1 + "123" + str2 + str3;這樣的鏈式運算代碼產生的臨時對象,和二次級複雜度(最少的複雜度為str1 長度乘以"+"的個數)而苦惱嗎? 從今天開始起,徹底遠離這些問題吧。 這招我原本以為是自己發明的,還給他取了個名字叫做"操作符代理"(英文翻譯出來居然有關鍵字,歉),結果世間達人早有類似的思想,
Time of Update: 2018-12-03
http://blog.csdn.net/zhuliting/article/details/6302767去年4月份修改的代碼,現在貼出來分享一下。畢業了,工作上可能會很忙,不能更新部落格了。 #include "mpi.h"#include <stdio.h>#include <string.h>#include <sys/time.h>#include <math.h>#include <iostream>using
Time of Update: 2018-12-03
從boost的share_ptr取的經. 建構函式不可以是虛函數,但是建構函式可以是成員模板!!!!!很好,我們可以多態建立對象了.(對象不加虛函數但是可以加有虛函數的資料成員,一般最好是函數對象或者函數指標,這樣我們可以在建立時就加鉤子,行為用虛函數封裝,是否太瘋狂?) #include <iostream>using namespace std;class D{private:class adapter{public:virtual op(D*
Time of Update: 2018-12-03
Dear Dr Bjarne: I'm a student from China. And I have some new ideas about some usual problems, which I want to share with you. I have to apologize for my poor English and some grammar errors which
Time of Update: 2018-12-03
原來的方法由於要支援播種不得不保留了幾個空函數,這其實是沒有必要的。不過話要說回來,少了他們,筆者我又不得不多重載不少的函數,鬱悶阿。算了吧,支援使用者,提供一個只能掛種子皮但是效率趨向完美的版本(不管你編譯器會不會對空函數inline)。代價是多寫了不少模板函數,和對葉子節點進行了封裝(原來沒有葉子類,現在有了葉子unary_tree_ref,但是葉子不會出現在樹上,效率是沒有損失的,注意觀察哦)。#include <string>#include
Time of Update: 2018-12-03
上文http://blog.csdn.net/zy498420/archive/2010/11/09/5998427.aspx提到的“播種”之法需要你手動指定目標類型,稍微還是有點羅嗦(et_seed<std::string>,字母還是挺多的),然而為什麼需要指定呢?原因:如果不指定,最終產生的樹可能根本不知道應該轉換為何種類型,dest_type 未知。 那麼把 inline operator binary_op::dest_type () const;改為