• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            桃源谷

            心靈的旅行

            人生就是一場旅行,不在乎旅行的目的地,在乎的是沿途的風(fēng)景和看風(fēng)景的心情 !
            posts - 32, comments - 42, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            C++

            posted @ 2010-08-01 13:19 lymons 閱讀(7373) | 評論 (3)  編輯 |

                 摘要: 在C++下編寫synchronized method比較難 (1)CommentsAdd star

            在Java中有叫做synchronized這樣一個(gè)方便的關(guān)鍵字。使用這個(gè)關(guān)鍵字的話,就可以像下面那樣能夠簡單的進(jìn)行"同步"method. 然而,被同步的method并不表示它就能在多線程中同時(shí)被執(zhí)行.   閱讀全文

            posted @ 2010-07-17 12:17 lymons 閱讀(3347) | 評論 (0)  編輯 |

                 摘要: 1. 添加右鍵彈出菜單
            我們在這里,將會在插件中加入右鍵彈出菜單功能。也就是如下圖那樣,在文檔區(qū)內(nèi),點(diǎn)擊鼠標(biāo)右鍵時(shí)會彈出的菜單。我們將在這個(gè)菜單中加入屬于我們插件的菜單項(xiàng)目”testplug”。

            加入菜單項(xiàng)目的效果如下圖:


            讓我們看看,咱們創(chuàng)建的插件工程中,給我們提供了什么樣的入口代碼了吧。
            1. 在函數(shù)BuildModuleMenu中添加菜單項(xiàng)。
            在文檔的視圖里才加入菜單項(xiàng)的入口函數(shù)是BuildModuleMenu,它的初始代碼是下面那樣:
            void testplug::BuildModuleMenu(const ModuleType type, wxMenu* menu, const FileTreeData* data)
            {
            //Some library module is ready to display a pop-up menu.
            //Check the parameter \"type\" and see which module it is
              閱讀全文

            posted @ 2010-04-29 20:58 lymons 閱讀(2290) | 評論 (0)  編輯 |

                 摘要: 1. 創(chuàng)建Plugin工程

            ① 從File主菜單中,選擇new -> Projects… , 打開工程創(chuàng)建向?qū)υ捒颉?
            ② 在Projects的列表框中,選擇 Code::Blocks plugin ,然后點(diǎn)擊 Go 按鈕,進(jìn)入插件創(chuàng)建向?qū)υ捒颉?
            ③ 創(chuàng)建向?qū)У牡谝粋€(gè)畫面中有重要信息說明。請注意的是里面提到了必須設(shè)置#cb, #wx這兩個(gè)全局變量。不過,還好咱們在《CodeBlock插件開發(fā)指南 一》中已經(jīng)對這兩個(gè)變量進(jìn)行了設(shè)置。咱們在這里,直接點(diǎn)擊Next進(jìn)入到下一個(gè)畫面即可。

              閱讀全文

            posted @ 2010-04-20 22:21 lymons 閱讀(5121) | 評論 (0)  編輯 |

                 摘要: CodeBlocks插件開發(fā)指南(一)
            By Lymons(lymons@gmail.com) 2010/4/14

            CodeBlocks是一個(gè)優(yōu)秀的C/C++ IDE開發(fā)環(huán)境,另外它也是開源的,也是跨平臺的.你能夠利用它的源代碼進(jìn)行二次開發(fā),也能為它制作自己的插件. 它的GUI是利用了跨平臺的wxWidgets庫來做成的,所以它才能夠?qū)崿F(xiàn)跨平臺.

            下面將介紹CodeBlock的插件制作方法,當(dāng)然它必須得通過編寫自己的程序才能實(shí)現(xiàn),所以懂得一些C++的編程知識能夠幫你更容易去理解它的內(nèi)容.

            1. 準(zhǔn)備CodeBlocks的開發(fā)環(huán)境  閱讀全文

            posted @ 2010-04-17 16:22 lymons 閱讀(9603) | 評論 (3)  編輯 |

                 摘要: W2K信號(Signals)的設(shè)備驅(qū)動

            Unix下的信號提供了一個(gè)簡單的IPC機(jī)制,也就是當(dāng)進(jìn)程收到一個(gè)信號后會異步(asynchronous) 地調(diào)用你的信號處理函數(shù)(也叫做句柄),不管你的代碼是否已經(jīng)處在執(zhí)行的過程之中。 而在Windows 2000(譯者注:版本高于W2k的Windows平臺)下就需要用到一個(gè)設(shè)備驅(qū)動,以便你能使用異步過程調(diào)用(asynchronous procedure calls , 簡稱APCs或者APC) 來達(dá)成同樣的效果.

            By Panagiotis E.
            August 01, 2001
            URL:http://www.ddj.com/windows/184416344

            翻譯:Lymons (lymons@gmail.com)
              閱讀全文

            posted @ 2010-04-13 10:29 lymons 閱讀(2294) | 評論 (0)  編輯 |

                 摘要: 簡介
            我拿到了一個(gè)任務(wù),就是寫一篇關(guān)于游戲引擎設(shè)計(jì)的報(bào)告。為此,我開始用C++來實(shí)現(xiàn)一個(gè)框架,它包含了一些設(shè)計(jì)模式(Design Patterns)的基本實(shí)現(xiàn)以及類似于基于原則設(shè)計(jì)(Policy based design)的一些C++概念。而本文就是談?wù)撐业脑O(shè)計(jì),并且里面也包括一些可編譯的代碼片斷。
            背景
            在本文描述的框架中使用了一些著名的設(shè)計(jì)范式(design paradigms),如:基于原則的設(shè)計(jì)(Policy based design),裝飾者(Decorator)和策略(Strategy)模式,以及相應(yīng)的C++的代碼實(shí)現(xiàn)。
            代碼的功能說明
            基于原則的設(shè)計(jì)是用于游戲的設(shè)置
            在進(jìn)入到足球游戲引擎設(shè)計(jì)的細(xì)節(jié)之前,先討論一下游戲中的設(shè)置。在任何游戲中都允許用戶在游戲開始期間來選擇游戲的難度。我假設(shè)這里有三種難度級別,即:低級,中級,高級。因?yàn)檫@些級別允許在開始的時(shí)候被選擇,這就給了我們一個(gè)機(jī)會可以利用模板類來使用基于原則的設(shè)計(jì)(基于Andrei Alexandrescu的書《Modern C++ Design》)。  閱讀全文

            posted @ 2009-12-22 14:57 lymons 閱讀(1962) | 評論 (1)  編輯 |

                 摘要: 在本文中,使用Visual Studio2003作為例子來描述宏的做成步驟。(我想在Visual Studio2005、2008中也應(yīng)該是一樣的)  
                 
            在編寫ASP代碼時(shí),可以使用單引號來注釋掉不要的代碼。在Visual Studio的IDE環(huán)境中也支持使用塊注釋的方式把一整段的代碼注釋掉。  
            不過有的時(shí)候,也有要求用<%' ~ %>這種注釋格式來注釋掉HTML中的代碼,但是包括Visual Studio在內(nèi)的一些流行的編輯器都不支持這種格式的注釋方式。不過還好,Visual Studio的IDE支持宏的功能,因此我們可以使用VBScript宏來定制任意格式的代碼注釋  閱讀全文

            posted @ 2009-12-21 21:13 lymons 閱讀(2295) | 評論 (0)  編輯 |

                 摘要: 函數(shù)指針提供了一些極其有趣,有效和絕妙的編程技術(shù)。你能用它代替switch/if語句來實(shí)現(xiàn)你自己的晚綁定(late-binding)或者作為回調(diào)(callback)來使用。不幸的是–可能由于它的語法比較復(fù)雜–幾乎所有的電腦書籍和文檔上都講解的不多。即便如此,它們也只是做了相當(dāng)簡單和膚淺的說明。而對于函數(shù)指針你只需要明白它是什么以及它的語法,因?yàn)樗鸵话愕闹羔槺绕饋韽膩聿挥藐P(guān)心內(nèi)存的分配和釋放,所以它被使用的時(shí)候是不易產(chǎn)生錯誤的。但你要注意的是: 要時(shí)常問自己是否真的需要函數(shù)指針。因?yàn)殡m然用它來實(shí)現(xiàn)晚綁定也很漂亮,但用既存的C++數(shù)據(jù)結(jié)構(gòu)的話會使代碼更可讀和更簡潔。另外,晚綁定的一方面實(shí)際上就是運(yùn)行期(runtime): 如果你調(diào)用了一個(gè)虛擬函數(shù),你的程序會根據(jù)一個(gè)存儲所有函數(shù)的虛擬表(V-Table)自己來確定到底真正調(diào)用的是哪一個(gè)。這就要花費(fèi)一些時(shí)間而用函數(shù)指針代替虛擬函數(shù)的話有可能會節(jié)省一些時(shí)間。BTW: 現(xiàn)代的編譯器在這方面都做得非常好!就那我的Borland編譯器來說這個(gè)時(shí)間就比調(diào)用一次虛擬函數(shù)能節(jié)省2%。

            注:晚捆綁(late binding)可能來自c++  閱讀全文

            posted @ 2009-02-12 16:08 lymons 閱讀(2810) | 評論 (5)  編輯 |

            posted @ 2009-02-02 13:08 lymons 閱讀(2054) | 評論 (0)  編輯 |

                 摘要: bstract factory:為創(chuàng)建相互關(guān)聯(lián)(風(fēng)格類似)的一系列的對象提供了一個(gè)通用接口,而不需要指定具體的類(產(chǎn)品)名。
            factory method:定義一個(gè)用來創(chuàng)建對象的接口,并讓子類來決定實(shí)例化哪一個(gè)具體的類(產(chǎn)品),從而讓具體類的實(shí)例化延遲到子類。
            他們的主要區(qū)別在于,abstract factory強(qiáng)調(diào)的是把諾干個(gè)產(chǎn)品按照風(fēng)格進(jìn)行分類, 為相同風(fēng)格的一系列對象(產(chǎn)品)提供一個(gè)工廠類,因此,只要改變工廠類的實(shí)例,就能到達(dá)改變這一組產(chǎn)品的風(fēng)格和外觀。而這一風(fēng)格的產(chǎn)品的生產(chǎn)可以利用工廠方法來實(shí)現(xiàn). 這其中, factory method強(qiáng)調(diào)的則是先在父類實(shí)現(xiàn)創(chuàng)建對象的行為,具體的行為或者具體對象(產(chǎn)品)的實(shí)例化則延遲到子類實(shí)現(xiàn)。  閱讀全文

            posted @ 2009-02-02 12:58 lymons 閱讀(657) | 評論 (0)  編輯 |

            posted @ 2009-02-02 12:52 lymons 閱讀(421) | 評論 (0)  編輯 |

            posted @ 2009-02-02 11:28 lymons 閱讀(524) | 評論 (0)  編輯 |

            posted @ 2009-02-01 15:41 lymons 閱讀(1469) | 評論 (1)  編輯 |

            posted @ 2008-12-29 17:11 lymons 閱讀(2700) | 評論 (0)  編輯 |

            posted @ 2008-12-25 14:08 lymons 閱讀(1322) | 評論 (0)  編輯 |

            posted @ 2008-12-19 11:01 lymons 閱讀(1270) | 評論 (0)  編輯 |

                 摘要: 在高級語言例如C++中有效的使用共享內(nèi)存并不是一件淺顯易懂的事情,但是它也能克服這些內(nèi)在的困難。這篇文章描述了在Linux上使用共享內(nèi)存的兩個(gè)C++設(shè)計(jì)模式并包含了樣例代碼,以及給讀者打開了更有效的進(jìn)程間通信的一扇門。

            在面向?qū)ο笙到y(tǒng)中,當(dāng)一個(gè)對象接收到一個(gè)消息時(shí)它能夠發(fā)送一套事件。這些事件主要在同步模式下被處理。這個(gè)調(diào)用進(jìn)程或者線程在發(fā)送消息調(diào)用完成之前,發(fā)送給對象一個(gè)消息和處理事件。然而,如果這個(gè)對象送出這些被更多的進(jìn)程共享以及駐留在內(nèi)存里的事件,情況就稍微的發(fā)生了一些變化。

            這篇文章用兩個(gè)C++的設(shè)計(jì)模式詳細(xì)的描述了上述的情況,并且用一些例子程序闡明了解決方案。
              閱讀全文

            posted @ 2008-06-01 21:41 lymons 閱讀(874) | 評論 (0)  編輯 |

                 摘要: Unix跟Windows等那些”對于開發(fā)者易于使用”的OS比起來,在信號和線程的利用方面有諸多的限制。但是即使不知道這些知識就做構(gòu)架設(shè)計(jì)和實(shí)現(xiàn)的情況也隨處可見。這個(gè)就是那些經(jīng)常不能再現(xiàn)的bug的溫床吧。

            因此,我想分成幾回來寫一些準(zhǔn)則來防止陷入到這些圈套里。

            準(zhǔn)則1:不依賴于信號收發(fā)的設(shè)計(jì)

            ·給其他進(jìn)程以及自己發(fā)送異步信號并改變處理流程的設(shè)計(jì)不要做

            異步信號是值用kill系統(tǒng)調(diào)用來創(chuàng)建?發(fā)送的信號、例如SIGUSR1,SIGUSR2,SIGINT,SIGTERM 等
            簡單的使用忽略信號(SIG_IGN)則沒有問題
            ·不要把線程和信號一起使用
              閱讀全文

            posted @ 2008-06-01 20:27 lymons 閱讀(1376) | 評論 (0)  編輯 |

                 摘要: 準(zhǔn)則2: 要知道信號處理函數(shù)中可以做那些處理
            · 在用sigaction函數(shù)登記的信號處理函數(shù)中可以做的處理是被嚴(yán)格限定的
            · 僅僅允許做下面的三種處理
            1. 局部變量的相關(guān)處理
            2. “volatile sig_atomic_t”類型的全局變量的相關(guān)操作
            3. 調(diào)用異步信號安全的相關(guān)函數(shù)
            · 以外的其他處理不要做!  閱讀全文

            posted @ 2008-06-01 20:22 lymons 閱讀(2261) | 評論 (0)  編輯 |

                 摘要: 在多線程程序里,在”自身以外的線程存在的狀態(tài)”下一使用fork的話,就可能引起各種各樣的問題.比較典型的例子就是,fork出來的子進(jìn)程可能會死鎖.請不要,在不能把握問題的原委的情況下就在多線程程序里fork子進(jìn)程.  閱讀全文

            posted @ 2008-06-01 20:16 lymons 閱讀(13056) | 評論 (0)  編輯 |

                 摘要: 隱鋒同學(xué)的blog上有關(guān)于libxml2的一篇文章,正好最近要使用這個(gè)庫來處理xml文件。
            不過在測試時(shí)我們發(fā)現(xiàn)用文章里F. 添加屬性例程代碼 時(shí),添加的keyword結(jié)點(diǎn)后面沒有回車,
            跟后面的結(jié)點(diǎn)擠在一行了,不是很好看。
            例如,以下的xml例子文件  閱讀全文

            posted @ 2007-11-30 13:44 lymons 閱讀(10133) | 評論 (8)  編輯 |

            posted @ 2007-11-28 11:56 lymons 閱讀(19086) | 評論 (20)  編輯 |

            posted @ 2007-11-26 21:57 lymons| 編輯 |

            我的個(gè)人簡歷第一頁 我的個(gè)人簡歷第二頁
            亚洲va久久久久| 国产99久久久国产精品小说| 色诱久久av| 国产精品亚洲综合久久| 欧美精品福利视频一区二区三区久久久精品 | 77777亚洲午夜久久多喷| 2021国内久久精品| 无码国内精品久久综合88| 久久人人爽人人爽人人爽| 狠狠88综合久久久久综合网| 久久狠狠色狠狠色综合| 日本加勒比久久精品| 深夜久久AAAAA级毛片免费看| 久久精品亚洲欧美日韩久久| 久久久久亚洲av无码专区导航| 国产成人综合久久久久久 | 国产精品VIDEOSSEX久久发布| 午夜不卡888久久| 午夜精品久久久久久中宇| 久久se精品一区精品二区国产| 无码人妻少妇久久中文字幕蜜桃| 久久精品国产2020| 国产精品久久久久影院色| 日本五月天婷久久网站| 久久精品青青草原伊人| 久久人爽人人爽人人片AV| 午夜福利91久久福利| 狠狠综合久久综合88亚洲| 久久精品国产亚洲AV嫖农村妇女| 亚洲国产精品一区二区久久| 99久久免费国产精品特黄| 久久国产精品99精品国产987| 久久久精品视频免费观看| 亚洲国产精品一区二区久久hs| 亚洲天堂久久精品| 国产精品久久久久a影院| 91精品国产91久久久久久| 久久久久久久精品妇女99| 激情五月综合综合久久69| 久久亚洲欧美国产精品| 亚洲欧洲久久av|