#
摘要: 如何使用BHO定制你的Internet Explorer瀏覽器 ,當(dāng)時(shí)覺得這個(gè)是一個(gè)很好的資料。。
閱讀全文
摘要: doxygen 使用簡(jiǎn)介(C,C++為代碼作注釋)
閱讀全文
最近看朋友玩QQ找茬( QQ找茬主要是比較2張圖片的不同之處,然后雙擊即可 ) 我也去玩了把,結(jié)果高手如云,淪為近視眼(等級(jí))打算寫個(gè)程序讓程序自動(dòng)去識(shí)別,自動(dòng)去點(diǎn)擊鼠標(biāo)。
實(shí)現(xiàn)方法很簡(jiǎn)單,先得到2張需要比較的圖片(可以通過QQ找茬窗口句柄,得到當(dāng)前HITMAP,然后得到其像素點(diǎn)),建立一個(gè)一張表的數(shù)組,然后比較其對(duì)應(yīng)像素點(diǎn)的值是否相同,不同為1,相同為0.
這樣就可以在內(nèi)存中得到不同的區(qū)域,但這個(gè)區(qū)域是離心的,也就是不完全對(duì),必須對(duì)其進(jìn)行處理,可以通過對(duì)這些數(shù)組值為1的點(diǎn)進(jìn)行腐蝕(關(guān)于腐蝕算法主要讓一些區(qū)域膨脹一圈)
其中腐蝕算法:
對(duì)Z中的集合A和B,B對(duì)A進(jìn)行腐蝕的整個(gè)過程如下: 是以得到B的相對(duì)與它自身原點(diǎn)的映像并且由z對(duì)映像進(jìn)行移位為基礎(chǔ)的。A被B膨脹是所有位移z的集合,這樣, 和A至少有一個(gè)元素是重疊的。我們可以把上式改寫為: 結(jié)構(gòu)元素B可以看作一個(gè)卷積模板,區(qū)別在于膨脹是以集合運(yùn)算為基礎(chǔ)的,卷積是以算術(shù)運(yùn)算為基礎(chǔ)的,但兩者的處理過程是相似的。
⑴ 用結(jié)構(gòu)元素B,掃描圖像A的每一個(gè)像素
⑵ 用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作
⑶ 如果都為0,結(jié)果圖像的該像素為0。否則為1
通過腐蝕過后可以基本上得到我們需要找的區(qū)域,然后利用BFS得到其Rect,說明如果用DFS的話可能會(huì)出現(xiàn)棧溢出,因?yàn)橛行﹨^(qū)域太大。
得到Rect后可以SetCursorPos設(shè)置鼠標(biāo)位置(注意 : Rect是相對(duì)于窗口句柄, SetCursorPos是設(shè)置的位置是相對(duì)桌面的坐標(biāo)),最后可以
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
相應(yīng)事件。
后記:就是在做這個(gè)的時(shí)候有時(shí)候會(huì)出現(xiàn)本來是一個(gè)區(qū)域,程序會(huì)統(tǒng)計(jì)出2個(gè)區(qū)域,其實(shí)就是在腐蝕算法的時(shí)候未處理好,還有一個(gè)就是可以通過網(wǎng)絡(luò)抓包獲取原始圖片。
因?yàn)樵陬A(yù)處理的時(shí)候,復(fù)雜度還是較高,所以在找完一張完整的圖片需要5秒左右的時(shí)間。
摘要: 一個(gè)關(guān)鍵字過濾算法
閱讀全文
最近學(xué)校的事情挺多,同時(shí)也換了新的住處。
上周畢業(yè)答辯順利結(jié)束,宣告我的大學(xué)生活即將結(jié)束。四年,彈指一揮,四年,磨一劍,記得剛進(jìn)大學(xué)的時(shí)候有過不少憧憬,對(duì)一切都充滿著幻想,可是四年后的今天,很多憧憬都被現(xiàn)實(shí)粉碎,把我的性格磨平了,把我磨得稍微平靜了,但是變得更加的倔強(qiáng),變得比較宅男,有些東西拿得起,放卻不下。
6月是一個(gè)離別的季節(jié),在這離別之際,不得不給自己的同窗好友說再見,祝福每一個(gè)人都有美好的明天,這里充滿著我們大學(xué)的回憶,有歡笑,有淚水,有無(wú)助等等,所有的這一切我都會(huì)喜歡,同時(shí)也因?yàn)榕眩乙蚕矚g懷舊,喜歡把以前的東西翻出來看看,品味得與失。離別是為了下一次重逢,我們會(huì)再次相遇。
我不后悔我大學(xué)生活,這里我認(rèn)識(shí)了不少朋友和老師,學(xué)到的不僅是知識(shí),而更多的是做人,更是思想上進(jìn)步,這才是想要的。我不浪漫,也不浪漫,我更喜歡獨(dú)自一個(gè)人在哪兒凝思,一個(gè)人在哪兒玩游戲,品味這一切自己可能才可能感覺的快樂。
我說話一般不經(jīng)過大腦,平時(shí)可能有些語(yǔ)言過于刺激,但是跟多的是成為笑話,夜深人靜的時(shí)候我喜歡在哪兒聽最近一直聽的哪首歌,對(duì)著電腦發(fā)呆不知道做什么。想著那里來,就那里去吧,去我該去的地方,去我該尋覓的角落,去我小小的世界,去我追尋的港灣,去我……
我口才不怎么好,交流上也不是很主動(dòng),但是信念一直支撐著我,堅(jiān)持,努力,為了那當(dāng)初的承諾和夢(mèng)想。
在工作上我真的學(xué)到不少,最近也沒在堅(jiān)持每天都在哪兒敲鍵盤,忙畢業(yè)答辯的事情,可惜我制作的PPT,對(duì)于我長(zhǎng)篇大論的說算法,老師卻沒多大興趣。在公司學(xué)會(huì)了代碼重用性,可擴(kuò)展性的重要行。在后期維護(hù)以及代碼重用都是很重要,一個(gè)好的設(shè)計(jì)模式可能直接影響整個(gè)系統(tǒng)的性能或者穩(wěn)定性。最近也比較閑,沒事看到內(nèi)存池,腳本系統(tǒng)的設(shè)計(jì)。自己的興趣一直在網(wǎng)絡(luò),雖然學(xué)得較淺,但是還是堅(jiān)持學(xué)習(xí),感謝公司的fox,kevinlynx,pozen,還有女友一切幫助。中午休息時(shí)玩war對(duì)戰(zhàn),一直被fox虐,一是打得撇,二是很久不打,對(duì)其沒多大興趣。
努力吧,為了自己,也為了關(guān)心自己的所有人。
很久沒來更新blog了,一是忙畢業(yè)設(shè)計(jì),二是最近看的都是哪些所謂的C++巨著,他們都提供了很多不錯(cuò)的建議;他們能提高你的c++編程能力,也能提高你設(shè)計(jì)出穩(wěn)定的c++程序的能力,但是它們的內(nèi)容主要集中在c++的通用知識(shí),雖然也有一些講述游戲編程的書籍,但是都不是很深入。
游戲軟件開發(fā)與一般的程序開發(fā)在要求更應(yīng)該嚴(yán)格。對(duì)于游戲應(yīng)該首先保證穩(wěn)定,然后效率,性能都很重要。
最近看的主要是模塊代碼,對(duì)于代碼分格問題有一定提高。
通過培訓(xùn)對(duì)于一個(gè)模塊開發(fā)流程有一定的了解,切記多溝通!
摘要: 穩(wěn)住心態(tài),繼續(xù)前進(jìn)。。
閱讀全文
A.特化類的友元模板函數(shù)的操作符重載
最近寫一測(cè)試代碼關(guān)于特化類的友元模板函數(shù)的操作符重載遇到一問題。
先貼一個(gè)錯(cuò)誤代碼:
1
#pragma region 類DTest信息
2
3
// 聲明一個(gè)類
4
template<class Type , int dim>
5
class DTest
6

{
7
public:
8
// 構(gòu)造函數(shù)
9
DTest()
10
{
11
memset(_cords,0,sizeof(_cords));
12
}
13
DTest(Type cord[dim])
14
{
15
memcpy(_cords,cord,sizeof(cord));
16
}
17
18
// 友元模板
19
friend ostream & operator << (ostream & out , const DTest<Type,dim> & data);
20
21
private:
22
Type _cords[dim];
23
};
24
// 友元模板的實(shí)現(xiàn)
25
template<class Type, int dim>
26
ostream & operator << (ostream & out , const DTest<Type,dim> & data)
27

{
28
for(int i = 0 ; i < dim-1 ; i++)
29
out << data._cords[i] <<" ";
30
31
out <<endl;
32
return out;
33
}
34
35
#pragma endregion
用devc++,Vs2005,vc2008都不能編譯通過,報(bào)連接錯(cuò)誤,或者報(bào)模板函數(shù)是一個(gè)普通非模板類,或者非模板函數(shù)。
于是翻開C++ Primer,在16.4節(jié)有詳細(xì)的說明,
1.對(duì)于一個(gè)特化的類,聲明一個(gè)友元模板必須對(duì)友元模板授予類的一個(gè)實(shí)例。
2.對(duì)特定實(shí)例化的友元關(guān)系時(shí),必須在可以用于友元聲明之前聲明類或函數(shù)。
所以下面是修改后的代碼
1
template<class Type , int dim>
2
class DTest;
3
template<class Type , int dim>
4
ostream & operator << (ostream &out ,const DTest<Type,dim> &sess);
5
6
7
#pragma region 類DTest信息
8
template<class Type , int dim>
9
class DTest
10

{
11
public:
12
// 構(gòu)造函數(shù)
13
DTest()
14
{
15
memset(_cords,0,sizeof(_cords));
16
}
17
DTest(Type cord[dim])
18
{
19
memcpy(_cords,cord,sizeof(cord));
20
}
21
22
// 特化時(shí),<Type,dim> 省略為<>
23
friend ostream & operator << <>(ostream & out , const DTest<Type,dim> & data);
24
25
private:
26
Type _cords[dim];
27
};
28
29
// 友元模板的實(shí)現(xiàn)
30
template<class Type, int dim>
31
ostream & operator << (ostream & out , const DTest<Type,dim> & data)
32

{
33
for(int i = 0 ; i < dim-1 ; i++)
34
out << data._cords[i] <<" ";
35
36
out <<endl;
37
return out;
38
}
39
#pragma endregion
B. 常見的幾種內(nèi)存泄漏
1.分配空間未釋放
2.嵌套對(duì)象指針未釋放,
比如,一個(gè)類中包含另一個(gè)類的指針,在初始化的時(shí)候分配空間,缺沒有在析構(gòu)函數(shù)釋放他。
3.釋放一個(gè)對(duì)象數(shù)組的時(shí)候沒有使用[] ,
delete m_pObj; 只是釋放第一個(gè)&m_pObj[0] 對(duì)象,應(yīng)該使用delete [] m_pObj;
4.出現(xiàn)淺拷貝現(xiàn)象
5.返回一個(gè)動(dòng)態(tài)分配的對(duì)象,其實(shí)可以看【effective c++】 的條款23: 必須返回一個(gè)對(duì)象時(shí)不要試圖返回一個(gè)引用
先總結(jié)這些,以后慢慢記錄我的學(xué)習(xí)筆記。