Time of Update: 2018-12-03
Head First 設計模式學習筆記(2) 定義1:觀察者模式:觀察者模式定義了對象之間的一對多依賴,這樣以來,當一個對象改變狀態時,它的所有依賴者都會收到通知並自動更新。 設計原則1:為了互動對象之間的松耦合設計而努力吧~ 問題1:為什麼觀察者模式具有松耦合的特點?回答1:對於觀察者的一切,主題只需要知道觀察者實現了某個介面,而不需要知道觀察者的具體類是什麼。主題唯一依賴的東西是一個實現observer介面的對象列表,所以我們可以隨時增加、刪除觀察者。改變主題或者觀察者其中一方,並不會影
Time of Update: 2018-12-03
工作一年以來,在CSDN上幾乎沒寫過部落格,對此感到十分羞愧,除了懶,我不想用任何借口來解釋。 工作中寫過一些遊戲伺服器的文檔,不過都是內部文檔,不便於發表在CSDN上,現在想在CSDN上寫點東西,也算是對工作以來的一個總結,也希望後面的部落格能夠對其他同學有些啟發和協助。
Time of Update: 2018-12-03
這篇繼前面接著講dll匯出類。 在講之前,還是看下MSDN http://msdn.microsoft.com/zh-cn/library/d91k01sh(VS.80).aspx中關於.def檔案的說明,其中有這樣一句話:如果不使用 __declspec(dllexport) 關鍵字匯出 DLL 的函數,則 DLL 需要 .def 檔案。 回想一下前面《DLL入門到深入(1)》 中我包含了一個.def檔案,事實上並不需要這個檔案,可是編譯不通過,我也不知道為什麼。這個問題等等再說,先看代碼:
Time of Update: 2018-12-03
1: 在發生下面幾種事件之一時,視窗訊息處理常式會接收到一個WM_PAINT訊息: ---在使用者移動視窗或顯示視窗時,視窗中先前被隱藏的地區重新可見 ---使用者改變視窗的大小(如果視窗類別別樣式有著CS_HREDRAW和CS_VREDRAW位旗標的設定) ---程式使用ScrollWindow或ScrollDC函數滾動顯示地區的一部分 ---程式使用InvalidateRect或InvalidateRgn函數刻意產生WM_PAINT訊息2:
Time of Update: 2018-12-03
最簡單的例子,過程如下: 1:建立一個控制台空工程 2:添加3個檔案:dll_01.h,dll_01.cpp,dll_01.def; 3:在dll_01.h中如是寫: #ifndef DLL_01_H_ //這2句不用說了吧#define DLL_01_H_#if defined DLL_EXPORT //在dll_01.cpp中會define DLL_EXPORT#define DECLDIR _declspec(dllexport)#else#define DECLDIR
Time of Update: 2018-12-03
/** CCPointObject用於記錄CCParallaxNode孩子節點的ratio和offset屬性 **/class CCPointObject : CCObject{ //視差速率 CC_SYNTHESIZE(CCPoint, m_tRatio, Ratio) //在CCParallaxNode中的位移量 CC_SYNTHESIZE(CCPoint, m_tOffset, Offset) CC_SYNTHESIZE(CCNode *,m_pChild,
Time of Update: 2018-12-03
windows程式設計-----視窗與訊息學習記錄。1: 一個視窗就是螢幕上的一個矩形地區,它接收使用者的輸入並以文字或圖形的格式顯示輸出內容2: 訊息視窗有一個帶關閉按鈕的標題列、一個選項表徵圖、一行或多行文字,以及最多四個按鈕。必須選擇Windows提供給的表徵圖與按鈕。3: 不能在訊息框中顯示圖形,而且也不能在訊息框中添加菜單4:
Time of Update: 2018-12-03
由(1)http://blog.csdn.net/xiadasong007/archive/2009/10/13/4665932.aspx,庫還可以動態載入,只修改Test.cpp的內容,代碼如下: #include <Windows.h>#include <iostream>using namespace std; typedef int (*AddFunc)(int,int); int main(){ AddFunc Add; HINSTANCE
Time of Update: 2018-12-03
問題描述:遊戲中暫停後,調用AVAudioPlayer的pause方法,發現返回遊戲後音樂還在播放。問題解決:參考http://stackoverflow.com/questions/6403261/avaudioplayer-keeps-playing-after-multitasking附:I have spent hours today with precisely the same problem. I finally have a workaround.The #stop
Time of Update: 2018-12-03
前面講了DLL和CreateRemoteThread函數的基本用法,然而如果你想做個實用點的東西,還必須注意許多細節,這篇算是前面的小綜合。 我們的目的是要在QQ.exe進程中插入一個新線程,這個線程會調用LoadLibrary()來載入我們自己寫的DLL。 說下思路 1:DLL中的DllMain函數 首先需要說明的是,DLL檔案不只是用來做儲存的庫,它也可以像exe檔案那樣運行程式,而前面我們講的DLL都是單純的用它來匯出函數和類,可能會誤導某些和我一樣的初學者,不過不要緊,要像exe那樣運行
Time of Update: 2018-12-03
MFC中Console調試輸出類1:本類來源於CodeProject,本人稍加修改,使其使用更加方便。2:使用步驟 1:將該源檔案加入到工程 2:在代碼任意處調用CConsole::Output("...")調用來輸出調試資訊。 3:請記得在程式的某處關閉控制台以釋放資源3:使用單例模式,_DEBUG選擇編譯。 附代碼:1 標頭檔:#if !defined(__CONSOLE_H_)#define __CONSOLE_H_#ifdef _DEBUGclass
Time of Update: 2018-12-03
程式在debug模式下正常運行,而在release模式下卻發生莫名的異常,異常非常詭異,弄的我甚至懷疑cocos2d-x的原始碼。晚上在公司比較閑,正好可以慢慢進行排查,最後發現在我自訂的action中出現問題。這個action負責GLSL特效部分,部分代碼如下:void JEffectAction::startWithTarget(CCNode *pTarget){ CCSprite * spr = dynamic_cast<CCSprite*>(pTarget);
Time of Update: 2018-12-03
1-2-2.串聯式開關電源輸出電壓濾波電路 大多數開關電源輸出都是直流電壓,因此,一般開關電源的輸出電路都帶有整流濾波電路。圖1-2是帶有整流濾波功能的串聯式開關電源工作原理圖。
Time of Update: 2018-12-03
Head First設計模式學習筆記(1)——Duck與策略模式 設計原則1:找出應用中可能需要變化之處,把他們獨立出來,不要和那些不需要變化的代碼混合在一起設計原則2:針對借口編程,而不是針對實現編程設計原則3:多用組合,少用繼承 問題1:為什麼不使用繼承來提供Duck的行為,而是使用介面?回答1:如果使用繼承來實現,則代碼在多個子類中重複,運行時的行為不容易改變,很難知道所有鴨子的全部行為,改變會牽一髮而動全身,造成其他鴨子不想要的改變。使用介面像是在做選擇題,而繼承則是填空題,相較之下
Time of Update: 2018-12-03
目前正在寫一個網路音視訊交談及檔案傳輸系統,主要完成在區域網路內的音視訊交談,檔案傳輸,群組視訊會議等。系統的視頻編碼採用H263編碼格式,並採用RTP/RTCP協議,以保證視頻的傳輸品質。 這個項目剛剛啟動,需要學習的東西有許多,如音視頻的捕獲、視頻的編解碼、RTP/RTCP協議等。 這兩天一直在查DirectShow方面的資料,收穫很多,這裡將DirectShow的配置簡要在這裡提一下。 首先需要下載DX(SDK),我沒有下載最新的DX,而是在網上找了個DX9.0,
Time of Update: 2018-12-03
Regex作為一種通用的算式,大量用於文本處理邏輯中,其主要好處是速度能夠達到極致,而且代碼量通常會非常少,本篇主要介紹lua中的正則使用,由於這樣的文章網上隨處都可以搜到,而且不乏整理的不錯的,這裡就不想再重新做這件事情。Regex主要處理匹配問題,即通過給定語義萬用字元串,返回匹配成功的字串列表。 在匹配的基礎上,正則引擎往往提供了字串的尋找、替換、分割等功能,lua支援尋找與替換,但不支援分割,分割函數可以在已有介面上進行擴充,附錄中引用了lua社區的實現代碼。 本篇單純的簡要介紹lua的
Time of Update: 2018-12-03
glut鍵盤輸入一 當你按下一個鍵後,GLUT提供了兩個函數為這個鍵盤訊息註冊回調①glutKeyboardFunc普通按鍵的按鍵訊息。 這個函數是告訴視窗系統,哪一個函數將會被調用來處理普通按鍵訊息。 普通鍵是指字母,數字,和其他可以用ASCII代碼錶示的鍵。函數原型如下: void glutKeyboardFunc(void(*func)(unsigned char key,int x,int y)); 參數: func:
Time of Update: 2018-12-03
簡介: 本文檔主要闡述遊戲中接入Facebook平台的相關內容,使得接入過程儘可能詳盡而簡單。 第一步:認證(Authenticate)Facebook SDK中較為核心的一個類是FBSession,該類主要用於使用者驗證、系統管理使用者登陸流程。 在寫代碼之前,首先需要加入Facebook SDK,在官網下載SDK後,將FacebookSDK.framework加入到工程中,這樣我們就可以使用facebook的介面了。
Time of Update: 2018-12-03
SIGPIPE異常會觸發中斷,通常註冊中斷函數即可,代碼如下:struct sigaction sa;struct sigaction osa;sa.sa_handler = custom_handle;sigaction(SIGPIPE, &sa, &osa);但是這隻解決了一部分問題,還有一個一個比較煩人的問題是xcode會在SIGPIPE觸發時產生一個DEBUG中斷,解決辦法是添加一個斷點處理action,如下如果是gdb編譯器,則執行如下actionhandle
Time of Update: 2018-12-03
Head First設計模式學習筆記(8)---適配器模式 適配器模式:適配器模式將一個類的介面轉換成客戶期望的另一個介面。適配器讓原本介面不可相容的類可以合作無間。 面板模式:面板模式提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。 設計原則1:最少知識原則:只和你的密友談話。 圖(1)對象適配器 圖(2)類適配器 總結1:裝飾器模式的意圖是將一個介面轉成另一個介面;適配器模式的意圖是不改變介面,但加入責任;而面板模式是為了讓介面更簡單。