裝飾者模式:1,裝飾者可以在被裝飾的行為前面或者後面添加新的行為,甚至於完全替換掉。2,裝飾者會導致很多小對象的產生,不可過度使用。3,通過組合和委託,可以在運行時候動態添加新的行為。4,裝飾者模式遵循面向擴充開放,面向修改關閉的原則。5,裝飾者模式通過組合方式封裝被裝飾者,從而擴充被裝飾者。真實世界的裝飾者:java.io類。通過層層封裝實現增加功能基本架構:一個抽象類別下有一些基本的單元(具體類),有一些基本的裝飾因子。通過將基本單元和裝飾因子組合起來,就可以形成複雜的單元。同時複雜的單元又
命令模式:1,將命令的要求者和命令的執行者進行解耦。2,通過將命令封裝成對象,命令對象封裝了接收者和要執行的動作3,將命令封裝成對象,命令可以傳遞,通過在命令對象中添加undo方法,支援撤銷。4,調用者通過調用命令對象的execute方法,執行接收者的具體動作5,通過使用宏命令,宏命令也是一個命令對象,只是它是一種組合模式的體現。它擁有一個命令對象列表,代表著一堆要執行的命令,也可以支援撤銷。6,實際操作的時候,可以會有聰明的命令對象,他們不把工作委託給接收者(Receiver.action()
簡單原廠模式:建立多種不同類型的產品,根據傳入參數的類型進行建立。只有一個Creator方法,負責多種不同的產品的建立,傳入參數的類型來決定具體建立哪種產品,實現簡單,但是如果需要擴充產品的話,就需要修改Creator方法的實現。有一個Pizza店,可以生產不同種類的Pizza,對於此代碼簡單如下://這是一個抽象的pizza,有很多不同種類的pizza,繼承於它。class AbstractPizza{public:AbstractPizza(void);virtual
上次跟大家分享的時候,就已經說明了如何對待技術的投資,今天在這裡要談一談如何在思維程度上投資,而不是僅僅局限在我會一門語言這裡,我在幫部門招聘程式員的時候常有一些感想,我判斷一名程式員是不是適合這份工作,首要因素是他對這行的興趣。如果我知道你是為了自身發展,或者更理想的是:你單純為興趣而學習新的東西,我會在心裡給這名面試者打上高分,因為他會投入時間給他的興趣,他的熱情是他今後工作的動力。當我提到一些生僻的詞彙或者非主流的技術的時候,我最不願意聽到的答案就是:"抱歉我覺得沒有機會使用,
作為一個初學者,我記錄下今天遇到的一個小問題。1.class captureDg : public CDialog{ DECLARE_DYNAMIC(captureDg)public: captureDg(CWnd* pParent = NULL); // 標準建構函式 virtual ~captureDg();// 對話方塊資料 enum { IDD = IDD_DIALOG1 };protected: virtual void
我的ClistCtrl控制項風格為report,report風格不同於其他風格。在insertIterm之前應該先設定列資訊。我的如下:mylistCtrl.InsertColumn(0,L"編號",LVCFMT_LEFT,200); mylistCtrl.InsertColumn(1,L"類型",LVCFMT_LEFT,200);int nColumnCount =mylistCtrl.GetHeaderCtrl()->GetItemCount();/ strText.Format(
今天在看iphone開發秘籍的時候,遇到這個問題,就仔細的深入了一下,通過測試,擷取了一些自認為還不錯的結論,希望對大家在cell複用方面遇到的一些問題會有所協助。本篇文章只講原理,對於如果對cell做介面,不深入講述。鑒於我的表達能力有限,可能會有我自己清楚,但是卻說不清楚的地方,如有問題,留言給我。UITableView在介面的編程用的甚多,iphone開發也三月有餘了,每次用到cellForRowAtIndexPath的委託方法的時候,都是直接copy代碼,自己略加一些介面的修改,對於ce
如何使用鎖很簡單,但是如何用好鎖就很困難了,當線程很多的時候總是由於自己忘記了初始化,忘記了調用解鎖,或者由於程式異常而出現沒有正常解鎖的情況,導致龐大的程式出現各種問題,最常見的就是死了,而不是崩潰了。下面根據我看到的webrtc代碼,將webrtc的思想抽出來分享給大家,原來我曾在c++程式設計語言看到過這種思想,但是一直沒當回事,感覺太小case了,大的項目誰會這樣用,多寫了多少代碼呀。主要有兩個東西:1,scopted_ptr,這個我前面介紹過2,局部對象管理資源,實際上也介紹過。仍然類
下面很多程式的安裝之後都會要加入到環境變數中,先解釋 一下什麼叫環境變數。當我們在cmd下輸入命令的時候,例如cp,dir等命令,可以直接運行,而想執行一個開啟chrome瀏覽器的chrome.exe命令時候,就會提示chrome.exe找不到等類似的錯誤,那是因為chrome.exe並沒有被加入到環境變數中。你必須形如這樣的方式"C:\Program Files\Google\Chrome\Application\chrome.exe",在cmd下才可以將chrome瀏覽器開啟。對於cmd下,
From: http://oasku.com/?q-104.html 首 先,從copy開始說,簡而言之,copy的目的就是產生一個新的執行個體,然後把其成員都按原執行個體賦值。對於非指標型的成員,比如BOOL, int, float,這樣的賦值可以直接進行。但是對於指標型的資料,比如Objc中用到的對象,就有Deep Copy和Shallow Copy的區別——這個和在C++中的基本上是一樣的:是產生新的成員對象,或是指向同一成員對象。了
class CsniffDoc : public CDocument{ public: void CapturePachet();}class majorView : public CFormView {public: CsniffDoc* GetDocument() const;}CDocument*
hook研究結果:最近一周時間仔細研究了一下hook,也許不能稱之為研究吧。頂多是讓別人的思想拿過來抄襲一遍而已,寫點結果也算對得起自己的這幾天的苦心了。1,首先從同事旁邊聽到了hook,然後看的第一篇文章來自於http://hi.baidu.com/supko/item/9ae475f2eef2bdd042c36a6d鉤子與DLL注入技術簡單瞭解了hook2,我起步開始想直接hook其他的進程,於是又關注了如何將自己的dll注入到其他的進程中。注入方法:通過remotetest.exe將dll
初學多線程遇到一個很大的問題:開始My Code如下:void CsniffDlg::OnBnClickedButton1(){int count =1;while(XXXX){if(count==1){count=0;CreateThread(NULL,0,build,this,0,&threadID);//將this傳給建立線程函數}XXXX}} DWORD WINAPI build(LPVOID lpParameter){ //此函數為CsniffDlg友元
非轉載,只為了別誤導了大家,讀的人少一點。產生dll: 此主要是原來研究hook機制的時候需要寫dll測試而去看了一下如何產生dll,原來一直沒怎麼關注過。 我在windows下使用vs2008編譯器,它可以通過項目配置類型來配置是產生dll還是exe,還是lib檔案。 簡單如下: dllhello.h: #ifdef HELLO_EXPORTS#define HELLO_API __declspec(dllexport)#else#define HELLO_API
webrtc對criticalsection進行了封裝,可以實現在windows和支援posix平台使用鎖。基本結構如下:在Factory 方法中去負責具體類的對象的建立,可以稱之為簡單原廠模式,一個工廠負責所有產品的建立,通過向工廠傳入必要的參數來進行不同產品的建立,一般建立的產品是有關係的,它們共同繼承自一個抽象類別。針對CriticalSectionWrapper,可以把它看做是一個工廠,它擁有一個Factory
在使用CListCtrl控制項Report顯示風格時,需要設定欄位標題資訊,否則不能向控制項中添加資料資訊,編輯欄位標題需要使用InsertColumn方法。 m_ListCtrl.InsertColumn(0, "姓名", LVCFMT_LEFT, 150, 0); m_ListCtrl.InsertColumn(1, "聯絡電話", LVCFMT_LEFT, 150, 1);為CListCtrl控制項添加行:
灰階的線性變換Db = f(Da) = k*Da +b k為斜率,b為y軸交點截距,Da為輸入映像的灰階,Db為輸出映像的灰階三個有趣的結論,相信會對灰階變換的理解更加深刻:1,k>
文章目錄 1,數值型比較:2,bool值比較4,案例失敗時候能夠精確定位問題所在
contentSize是scrollview可以滾動的地區,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滾動,捲動區域為frame大小的兩倍。contentOffset是scrollview當前顯示地區頂點相對於frame頂點的位移量,比如上個例子你拉到最下面,contentoffset就是(0
iphone api中提供了調用系統照相機的介面,我們只需調用相應的介面,即刻在自己的程式中擷取相機圖片.下面是一個非常簡單的調用系統照相機的例子.相應的介面如下: 最後可以編輯圖片和使用相應的圖片. 下面是主要代碼:- (void) addPicEvent { //先設定sourceType為相機,然後判斷相機是否可用(ipod)沒相機,不可用將sourceType設定為相片庫 UIImagePickerControllerSourceType sourceType =