• <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>

            [轉]

            posted @ 2008-07-20 10:31 RichardHe 閱讀(1104) | 評論 (0)  編輯 |

            posted @ 2008-07-20 09:45 RichardHe 閱讀(926) | 評論 (0)  編輯 |

            posted @ 2008-07-16 18:10 RichardHe 閱讀(442) | 評論 (0)  編輯 |

            posted @ 2008-07-10 17:27 RichardHe 閱讀(467) | 評論 (0)  編輯 |

            posted @ 2008-07-09 15:11 RichardHe 閱讀(692) | 評論 (0)  編輯 |

            posted @ 2008-07-08 11:49 RichardHe 閱讀(2188) | 評論 (1)  編輯 |

            posted @ 2008-07-05 13:39 RichardHe 閱讀(454) | 評論 (0)  編輯 |

            posted @ 2008-07-05 13:39 RichardHe 閱讀(1016) | 評論 (0)  編輯 |

            posted @ 2008-07-04 13:23 RichardHe 閱讀(930) | 評論 (0)  編輯 |

            posted @ 2008-07-04 13:18 RichardHe 閱讀(595) | 評論 (0)  編輯 |

            posted @ 2008-06-25 17:12 RichardHe 閱讀(261) | 評論 (0)  編輯 |

                 摘要: 一.引言言

            有限狀態機是一種用來進行對象行為建模的工具,其作用主要是描述對象在它的生命周期內所經歷的狀態序列,以及如何響應來自外界的各種事件。在面向對象的軟件系統中,一個對象無論多么簡單或者多么復雜,都必然會經歷一個從開始創建到最終消亡的完整過程,這通常被稱為對象的生命周期。一般說來,對象在其生命期內是不可能完全孤立的,它必須通過發送消息來影響其它對象,或者通過接受消息來改變自身。在大多數情況下,這些消息都只不過是些簡單的、同步的方法調用而已。例如,在銀行客戶管理系統中,客戶類(Customer)的實例在需要的時候,可能會調用帳戶(Account)類中定義的getBalance()方法。在這種簡單的情況下,類Customer并不需要一個有限狀態機來描述自己的行為,主要原因在于它當前的行為并不依賴于過去的某個狀態。[1]

            遺憾的是并不是所有情況都會如此簡單,事實上許多實用的軟件系統都必須維護一兩個非常關鍵的對象,它們通常具有非常復雜的狀態轉換關系,而且需要對來自外部的各種異步事件進行響應。例如,在VoIP電話系統中,電話類(Telephone)的實例必  閱讀全文

            posted @ 2008-06-13 15:01 RichardHe 閱讀(1821) | 評論 (0)  編輯 |

                 摘要: 有限狀態機(Finite State Machine或者Finite State Automata)是軟件領域中一種重要的工具,很多東西的模型實際上就是有限狀態機。

            最近看了一些游戲編程AI的材料,感覺游戲中的AI,第一要說的就是有限狀態機來實現精靈的AI,然后才是A*尋路,其他學術界討論比較多的神經網絡、模糊控制等問題還不是很熱。

            FSM的實現方式:
            1) switch/case或者if/else
            這無意是最直觀的方式,使用一堆條件判斷,會編程的人都可以做到,對簡單小巧的狀態機來說最合適,但是毫無疑問,這樣的方式比較原始,對龐大的狀態機難以維護。

            2) 狀態表
            維護一個二維狀態表,橫坐標表示當前狀態,縱坐標表示輸入,表中一個元素存儲下一個狀態和對應的操作。這一招易于維護,但是運行時間和存儲空間的代價較大。

            3) 使用State Pattern
            使用State Pattern使得代碼的維護比switch/case方式稍好,性能上也不會有很多的影響,但是也不是100%完美。不過Robe  閱讀全文

            posted @ 2008-06-13 14:48 RichardHe 閱讀(2147) | 評論 (0)  編輯 |

            posted @ 2008-06-05 14:17 RichardHe 閱讀(724) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:39 RichardHe 閱讀(216) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:23 RichardHe 閱讀(1126) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:22 RichardHe 閱讀(497) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:21 RichardHe 閱讀(318) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:21 RichardHe 閱讀(523) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:20 RichardHe 閱讀(316) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:19 RichardHe 閱讀(737) | 評論 (0)  編輯 |

            posted @ 2008-06-04 15:01 RichardHe 閱讀(438) | 評論 (0)  編輯 |

            posted @ 2008-06-04 14:50 RichardHe 閱讀(367) | 評論 (0)  編輯 |

            posted @ 2008-06-04 14:45 RichardHe 閱讀(338) | 評論 (0)  編輯 |

            posted @ 2008-06-03 11:39 RichardHe 閱讀(443) | 評論 (0)  編輯 |

                 摘要: 轉自http://www.shnenglu.com/alantop/archive/2008/05/15/49989.html
            char test[] = "0xf";
            long lResult = strtol(test, '\0', 16);  閱讀全文

            posted @ 2008-05-16 17:44 RichardHe 閱讀(934) | 評論 (0)  編輯 |

                 摘要: 聲明函數指針

            回調函數是一個程序員不能顯式調用的函數;通過將回調函數的地址傳給調用者從而實現調用。要實現回調,必須首先定義函數指針。盡管定義的語法有點不可思議,但如果你熟悉函數聲明的一般方法,便會發現函數指針的聲明與函數聲明非常類似。請看下面的例子:

            void f();// 函數原型

            上面的語句聲明了一個函數,沒有輸入參數并返回void。那么函數指針的聲明方法如下:

            void (*) ();

            讓我們來分析一下,左邊圓括弧中的星號是函數指針聲明的關鍵。另外兩個元素是函數的返回類型(void)和由邊圓括弧中的入口參數(本例中參數是空)。注意本例中還沒有創建指針變量-只是聲明了變量類型。目前可以用這個變量類型來創建類型定義名及用sizeof表達式獲得函數指針的大小:

            // 獲得函數指針的大小
            unsigned psize = sizeof (void (*) ());

            // 為函數指針聲明類型定義
            typedef void (*pfv  閱讀全文

            posted @ 2008-05-15 14:54 RichardHe 閱讀(204) | 評論 (0)  編輯 |

            posted @ 2008-05-14 17:53 RichardHe 閱讀(365) | 評論 (0)  編輯 |

            posted @ 2008-05-14 13:21 RichardHe 閱讀(484) | 評論 (0)  編輯 |

                 摘要: 記得2004年剛接觸設計模式,買了經典的<<設計模式>>一書,細細地閱讀,然后在開發中模仿。一兩年時間過去,對23種設計模式弄得還算比較熟悉,也在軟件設計中能用則用,比如Singleton, template method, proxy, facade等等。但總感覺用的不爽,當時也說不出原因;就是感覺在使用的過程中,是一種為了使用設計模式而使用上他們,有時候是生搬硬套。總之,自己當時是搞不清楚為什么要使用設計模式,停留在別人說它牛,我就學著用而不落人之后。
            我不是一個天質聰穎的人,對軟件設計的理解,基本上無法評自己能力單獨領悟出來。只有常常督促自己多買國內外軟件專家寫的好書,來學習他們在這些方面的發現和總結。靠后天學習來彌補先天不足,也是沒有辦法中的辦法。
            終于在2007年看到了<>,書中對設計模式的討論,并沒有特別吸引我的地方,不過是用java語言來詳細講解23種模式而已,最多增加一些變體。深深吸引我的是"第二部分面向對象的設計原則",這一部分雖然篇幅不多,但清晰地說明了我們為什么要用設計模式,使用設計模式是來解決什么問題的,使用之后  閱讀全文

            posted @ 2008-05-14 10:37 RichardHe 閱讀(245) | 評論 (0)  編輯 |

            posted @ 2008-05-09 15:57 RichardHe 閱讀(128) | 評論 (0)  編輯 |

                 摘要: d:\test\test\test\test.cpp(27): error C2668: “sqrt” : 對重載函數的調用不明確


            如果
            int IsSquareNum(int num)
            {
            if((int)sqrt(num)==(int)sqrt(num))
            return 1;
            else
            return 0;
            }
            則提示上面的錯誤

            改為:
            int IsSquareNum(int num)
            {
            if((int)sqrt((double)num)==(int)sqrt((double)num))
            return 1;
            else
            return 0;
            }  閱讀全文

            posted @ 2008-05-08 17:12 RichardHe 閱讀(872) | 評論 (1)  編輯 |

                 摘要: 副本貌似最早出現在魔獸世界
            就是人物或者團隊進入一個單獨的地圖(其他人進的和自己不是一個 必須是隊伍才能進一個)
            里面都是精英怪 難殺 但是出的東西多 可以打到一些套裝等
            副本任務是 任務必須在進入副本后殺死某些老大或通過殺里面的某些小怪 或得到某些東西的任務  閱讀全文

            posted @ 2008-05-07 10:37 RichardHe 閱讀(301) | 評論 (0)  編輯 |

            posted @ 2008-05-06 09:58 RichardHe 閱讀(181) | 評論 (0)  編輯 |

            posted @ 2008-05-06 09:57 RichardHe 閱讀(760) | 評論 (0)  編輯 |

            posted @ 2008-05-06 09:56 RichardHe 閱讀(132) | 評論 (0)  編輯 |

            posted @ 2008-05-05 13:54 RichardHe 閱讀(392) | 評論 (1)  編輯 |

                 摘要: rac配置過權限之后,基本已經滿足日常的應用了,但裝上剛運行的時候,我在興奮之余總感覺那里有點不對勁.回頭細看別人搭配的Trac,怎么好像少了幾個功能呢?例如可愛的論壇功能,還有實用的標簽功能都芳蹤難尋,甚是使我納悶.后來細看文檔才發現,這些原來都是Trac的 Plugins.Let's go,讓我們去玩玩Trac的插件吧^_^.
            首先我們要拜訪一個網站Trac-Hacks(http://www.trac-hacks.org),里面包含了許多Trac插件的開源項目,當然管理這些項目的就是Trac o(∩_∩)o
            一開始,我對這些插件各自的作用也不太了解,先弄下來幾個別人有應用例子的插件玩玩了,首當其沖當然是方便我們權限管理的WebAdmin(據Trac的官方介紹,WebAdmin從Trac0.11版本后就不再捆綁到Trac的主項目中,獨立出來一個子項目),廢話少說,先看看安裝插件,我們要干點什么.
            1.安裝WebAdmin
            我沿著Trac文檔的教導,先要去安裝一個setuptools,滿以為照這文檔的鏈接絕對沒有錯誤,下了一個ez_setup.py腳本,  閱讀全文

            posted @ 2008-04-08 16:54 RichardHe 閱讀(1483) | 評論 (0)  編輯 |

                 摘要: 遨游一番Trac之后,真是愛他愛得欲罷不能。在這里我們談談Trac的權限配置管理,[由于Trac是用python開發的,而python我一點都不懂,只能站在一個使用者很低的角度談了o(∩_∩)o,高手們見笑了]  閱讀全文

            posted @ 2008-04-08 16:16 RichardHe 閱讀(890) | 評論 (0)  編輯 |

                 摘要: 一、Ticket系統簡介

            Ticket系統是Trac中關于項目管理的一個重要單元,它是一個簡單有效的版本差異和Bug跟蹤系統。

            在項目開發過程中出現的任何問題,都可以用一個Ticket來標識,例如Bug,項目計劃,功能改進,項目建議,Todo等等,都可以寫成一個Ticket,開發人員通過訪問查看Ticket系統,可以及時的了解到項目進度,有待解決的地方等等

            每個Ticket都可以被修改和說明(Description屬性),并說明這個Ticket是Bug還是項目建議還是其他什么(Type屬性),指派由哪個人對這個Ticket負責(Assigned to/Owner屬性),設定Ticket的優先級(Priority屬性),設定Ticket的最終完成時間(Milestone屬性),設定這個 Ticket屬于哪個模塊(Component屬性)。
              閱讀全文

            posted @ 2008-04-08 15:50 RichardHe 閱讀(778) | 評論 (0)  編輯 |

            posts - 94, comments - 138, trackbacks - 0, articles - 94

            Copyright © RichardHe

            国产精品久久久久久久app| 国产精品无码久久综合网| 久久婷婷五月综合国产尤物app| 天堂无码久久综合东京热| 久久久久久综合网天天| 狠狠综合久久AV一区二区三区| 午夜人妻久久久久久久久| 久久99国产精品久久99果冻传媒| 久久综合久久美利坚合众国| 无码日韩人妻精品久久蜜桃 | 亚洲а∨天堂久久精品9966| 久久亚洲中文字幕精品一区| 99久久99这里只有免费费精品 | 久久久久亚洲AV片无码下载蜜桃| 国产精品久久久久久搜索| 开心久久婷婷综合中文字幕| 99精品久久精品一区二区| 一本色道久久综合狠狠躁篇| 国产精品九九久久免费视频| 久久婷婷国产综合精品| 日本久久中文字幕| 久久久精品一区二区三区| 亚洲国产精品无码久久久蜜芽| 久久国产成人| 中文字幕久久欲求不满| 97久久精品国产精品青草| 77777亚洲午夜久久多人| 日本欧美国产精品第一页久久| 一本久久a久久精品综合夜夜| 久久夜色精品国产噜噜麻豆| 久久人人爽人人爽人人av东京热| 青青草原综合久久大伊人导航| 久久精品国产色蜜蜜麻豆| 91精品婷婷国产综合久久| 久久国产亚洲精品麻豆| www.久久99| 久久精品国产精品青草app| 久久99精品综合国产首页| 久久99国产精品久久久 | 久久精品国产99久久丝袜| 香蕉久久一区二区不卡无毒影院|