Time of Update: 2018-12-03
4.2 多角度保證測試效果 對於代碼品質要求很高的項目來說,僅有白盒覆蓋是遠遠不夠的。白盒覆蓋不能發現代碼缺失,白盒覆蓋基於現有代碼,如果代碼不存在,當然不能發現。為了檢測代碼缺失,需要人工對測試資料進行檢查。白盒覆蓋也不能發現用例未反映功能。如果設計用例時,測試員不瞭解代碼的功能,通過閱讀代碼來設計用例,這叫跟著代碼走,這樣測試的話,再高的覆蓋率也沒有意義。這也從另一個角度說明了自動用例的局限性,完全由工具自動產生的用例,效果顯然還比不上跟著代碼走。
Time of Update: 2018-12-03
附錄C:錯誤處理 Inventor的調試版本和發行版本都提供了基本的錯誤處理機制。C-1所示,有三個類是從基類SoError派生出來的。在讀Inventor格式檔案時有可能發生讀 錯誤。如果應用程式運行時缺少記憶體資源,就有可能發生記憶體訪問 錯誤。調試
Time of Update: 2018-12-03
Time of Update: 2018-12-03
數位影像的長條圖均衡化是常用的映像增強方法,因為均衡化是自動完成的,無需人工幹預,而且常常得到比較滿意的結果。下面的程式是利用OPENCV提供的函數,實現這個功能。需要OPENCV B4.0的支援,在VC6下編譯通過。//// perform histgram equalization for single channel image// AssureDigit Sample code//#include "cv.h"#include "highgui.h"#define HDIM 256
Time of Update: 2018-12-03
將生物識別特徵識別應用於人臉,實際上是包含兩個方面:第一,從映像或視訊框架中檢測人臉,即所謂的“臉部偵測”(face detection);第二,對檢測到的人臉進行識別,判斷這張臉是誰,即“Face Service”(face recognition)。就實際應用而言,採用人臉做生物識別特徵識別,其識別率、可靠性都無法與指紋、虹膜識別相提並論,但不失為模式識別中的一個典型應用,至少可以起到拋磚引玉的作用。下面的原始碼採用隱馬爾可夫模型(HMM)做Face Service,它是OPENCV 3.1
Time of Update: 2018-12-03
這是本人根據多年經驗提出的衡量C/C++單元測試工具能否勝任實際項目的技術指標,供需要評估單元測試工具的朋友們參考。1、 自動隔離測試目標 a. 可根據測試工作,設定指定的檔案為測試目標; b. 對於不測試,但可能大量依賴的檔案,可以設為調用實際代碼; c. 對於不屬於a和b的檔案,自動產生樁代碼。2、 自動產生測試代碼 a. 自動產生測試檔案,以及執行測試所需的代碼架構; b. 自動為每個類、每個函數產生測試類別、測試函數;
Time of Update: 2018-12-03
iPad2升級iOS5後未越獄,按威鋒論壇的方法(http://bbs.weiphone.com/read-htm-tid-3189870.html)嘗試iTunes授權。但在第一步修改C盤UUID為 2A1D0905 後,重啟電腦後選擇進入Windows系統,Ubuntu出現如下錯誤:Error: no such device 6C************5EError: no such disk其原因是C盤的UUID已經更改,而Ubuntu按照原來的C盤UUID(即錯誤資訊中出現的6CAC*
Time of Update: 2018-12-03
臉部偵測的C/C++原始碼,曾發表於 OPENCV 的 MAILING LIST,主要是對OPENCV 3.1 版本發布的代碼做了一些速度上的最佳化,並且解決了記憶體流失的問題。這個程式所使用的 Paul Viola 提出(該論文“Rapid Object Detection using a Boosted Cascade of Simple Features”發表在 CVPR'01)的 Ada Boosted Cascade 演算法可以說是目前最好最快的目標檢測演算法。關於OPENCV的介紹,
Time of Update: 2018-12-03
#include "stdafx.h"#include "Python.h"#include <iostream>#pragma comment( lib, "python22.lib" ) int _tmain(int argc, _TCHAR* argv[])...{ Py_Initialize(); PyObject * module; PyObject * dict; PyObject * obj; long lval; PyRun
Time of Update: 2018-12-03
科學計算相關的c++庫 Blitz++ 參考網站:http://www.oonumerics.org/blitz/Blitz++ 是一個高效率的數值計算函數庫,它的設計目的是希望建立一套既具像C++ 一樣方便,同時又比Fortran速度更快的數值計算環境。通常,用C++所寫出的數值程式,比
Time of Update: 2018-12-03
在OO中Base Class最多的應用有2種方式,第一種是interface,也就是基類是個abstract class, 最典型的例子是Factory Design Pattern. 第二種方式是Base Class 提供一種機制,然後提供幾個Virtual Function,允許使用者對這個類進行重載,從而達到“配置” (customization)的目的。 其典型的代表是 MFC,通過繼承提供訊息傳遞機制的CWin類的OnPaint等函數,實現更多更強大的功能。這次就主要講講這兩種類的設計
Time of Update: 2018-12-03
關於virtual 一般有3種用法: virtual function, pure virtual function, 和 virtual inheritance. 今天就分別來講講這幾種virtual.================ virtual function ================virtual函數是在類裡邊的一種特殊的函數,至於具體的含義,相信大家都知道,我就不多說了。而virtual最基本的思想,就是OO語言中多態的體現。把函數從編譯時間的棒定,轉移到運行時的動態綁定。
Time of Update: 2018-12-03
最近一直在忙實驗室的項目開發,很少上部落格了,現在總算有一定時間空出來做些總結,今天起陸續更新部落格,總結一下半年多來的學習心得。今天先分享一個簡易的程式日誌記錄類,參考自《一個簡單又高效的日誌系統》,針對項目本身做了一定的修改和補充,編程水平有限,僅供參考,呵呵 。標頭檔:#ifndef _INFO_LOGGER_H_#define _INFO_LOGGER_H_/*****************************************************************
Time of Update: 2018-12-03
http://blog.sina.com.cn/aear看了那麼多文章,感覺到大家學習遊戲程式設計的熱情.經常看到很多人提出關於openGL directX,和computer graphics的問題. 但是我個人人為, 遊戲程式設計,最最最重要的還是C C++語言的基本功. 如何編寫高效率,整潔,和儘可能少的Bug的代碼,是成為一個遊戲程式設計員的關鍵. 所以我開拉這個小系列,來幫C或C++語言基礎不牢靠的人補補基礎知識,希望能夠對大家有所協助.
Time of Update: 2018-12-03
檔案和Socket比較類似,都是在說IO訪問,不過在作業系統層級上的實現有很大不同。 IO訪問無論從什麼角度講,都是電腦系統裡最慢的操作。特別是在遊戲製作中,動不動就幾百兆的動態或者待用資料,貼圖紋理,和各種音響音樂等。要一次性把這些所有的資料讀到記憶體中是不大可能的,所以在遊戲進行過程中要不短的從硬碟或者光碟機裡讀檔案。 如何能夠最小化這個瓶頸, 是值得注意的問題。先從檔案說起吧。===================檔案==================C語言裡,正常的檔案操作一般是3步。
Time of Update: 2018-12-03
Chapter 3 Creating Main WindowsSection 1 Subclassing QMainWindow 應用程式的主視窗是通過建立QMainWindow的衍生類別來完成的。QMainWindow和QDialog一樣,都是派生自QWidget。 closeEvent()是由QWidget提供的一個虛函數,在使用者關閉視窗時會被自動調用。 setCentralWidget()將某個Widget設定為主視窗的central widget, 而central
Time of Update: 2018-12-03
if語句很簡單,相信大家都會,但是確有很多值得注意的。 首先來說一下code style的問題。=========不好的風格===========if( (x +4-y * 25) > 10 || y > 1023 || GetSomething()){ ....}=========好的風格============if( (x +4-y * 25) > 10 || y > 1023 || GetSomething() ){ ....}相信大家能看出
Time of Update: 2018-12-03
一般而言,比起C程式來說,C++遊戲程式是可重用和可維護的。可這真的有價值嗎?複雜的C++可以在速度上與傳統的C程式相提並論嗎? 如果有一個好的編譯器,再加上對語言的瞭解,真的有可能用C++寫出一些有效率的遊戲程式來。本文描述了典型的幾種你可以用來加速遊戲的技術。它假設你已經非常肯定使用C++的好處,並且你也對最佳化的基本概念相當熟悉。 第一個經常讓人獲益的基本概念顯然是剖析(profiling)的重要性。缺乏剖析的話,程式員將犯兩種錯誤,其一是最佳化了錯誤的代碼:如果一個程式的主要指標不是
Time of Update: 2018-12-03
許多學過C的朋友一定還記得C語言中的類型轉換,例如:float FloatNum = 1.234;int IntNum = (int)FloatNum;// IntNum = 1這是比較正常的類型轉換,稍微危險一點的轉換如下:float FloatNum = 1.234;float * pFloatPointer = &FloatNum;int * pIntPointer = (int *)pFloatPointer;// *pIntPointer 裡邊就是亂七八糟的東西了C
Time of Update: 2018-12-03
函數哪裡都有,小的程式一兩個函數,大的程式成百上千個函數。即使在遊戲的關鍵迴圈中,調用幾十個函數也是很常見的。所以函數調用代碼的品質,在很大程度上影響著遊戲的品質。還是先說最基本的代碼風格問題。首先,對於函數的參數(特別是指標),如果函數內部不會修改其指標的內容,一定要用const來定義參數類型=========不好的風格==========void function(char * ServerName){ // 內部不允許對ServerName的內容進行修改}=========好的風格==