• <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>
            隨筆 - 8, 文章 - 0, 評(píng)論 - 17, 引用 - 0
            數(shù)據(jù)加載中……

            2009年4月2日

            iPhone手機(jī)開(kāi)發(fā)平臺(tái)入門介紹和教程

            1. iPhone手機(jī)介紹
            首先需要了解和破解iPhone手機(jī),下面一個(gè)帖子介紹很詳細(xì):
            iPhone最權(quán)威 [入門] [破解] [掃盲] [資源] [修磚] 總匯帖
            http://www.weiphone.com/thread-41690-1-1.html

            iPhone手機(jī)手冊(cè)的中文翻譯
            http://down.tgbus.com/soft/16820.shtml


            2. Unix常見(jiàn)命令
            iPhone手機(jī)的操作系統(tǒng)是Mac OS X,內(nèi)核是unix,所以可以iPhone手機(jī)上運(yùn)行unix命令。
            http://www.weiphone.com/thread-15894-1-1.html

            3. Windows平臺(tái)上iPhone開(kāi)發(fā)環(huán)境搭建
            見(jiàn)筆者的文章《Windows平臺(tái)上iPhone基于cygwin開(kāi)發(fā)環(huán)境的搭建方法》,文件鏈接:
            http://canco.javaeye.com/admin/blogs/199106

            4. Toolchain和iPhone SDK
            Toolchain與官方iPhone SDK的比較請(qǐng)見(jiàn)文章:
            《比較官方iPhone SDK和開(kāi)源工具鏈》,文章鏈接:http://www.cocoachina.com/index.php/archives/cocoachina_149.html
            iPhone SDK介紹和分析
            見(jiàn)西西河的AllenKids先生的2篇文章:
            iPhoneSDK觀察 - 舞姿飄忽,蘋果的探戈
            http://www.20ju.com/content/V19377.htm
            iPhone SDK 觀察二:舞臺(tái)寬廣,才能跳得歡暢
            http://www.cnbeta.com/articles/55055.htm

            iPhone SDK, Toolchain, Windows Mobile, SymbianOS S60的比較
            http://www.rsslite.com/post/1889.html



            iPhone用戶界面指導(dǎo)原則
            http://www.20ju.com/content/V22381.htm

            5. iPhone開(kāi)發(fā)語(yǔ)言:Objective-C
            iPhone原生程序開(kāi)發(fā)語(yǔ)言主要是用Objective-C語(yǔ)言,如果你熟悉C/C++語(yǔ)言,則能很快掌握Objective-C。Objective-C語(yǔ)言主要要理解可變參數(shù),Categories, Posing, Protocols等特性。
            Objective-C初學(xué)者指南(繁體)
            http://www.otierney.net/objective-c.html.zh-tw.big5Objective-C語(yǔ)法快速參考
            http://www.cocoachina.com/index.php/archives/cocoachina_122.html
            Learn Objective-C
            http://cocoadevcentral.com/d/learn_objectivec/

            The Objective-C 2.0 Programming Language
            http://developer.apple.com/iphone/(注:需要注冊(cè)為apple會(huì)員才可以下載)

            6. iPhone開(kāi)發(fā)書(shū)籍、文章和源代碼
            由iPhone開(kāi)發(fā)和破解領(lǐng)路人Jonathan Zdziarski著作,最最重要、最值得推薦和唯一的開(kāi)發(fā)書(shū)籍《iPhone Open Application Development》,可通過(guò)google下載電子版。


            Creating an iPhone Application
            iPhone OS Overview
            iPhone OS Programming Guide
            iPhone Human Interface Guidelines
            Cocoa Fundamentals Guide
            http://developer.apple.com/iphone/(注:需要注冊(cè)為apple會(huì)員才可以下載)


            Lucas Newman 的18頁(yè)iPhone開(kāi)發(fā)PDF教學(xué)
            http://lucasnewman.com/phonedev.pdf

            學(xué)習(xí)怎樣在 iPhone/iPod Touch 上開(kāi)發(fā)自制遊戲全記錄
            http://www.weiphone.com/thread-81192-1-2.html

            CocoaChina整理的開(kāi)源iPhone程序不完全列表
            http://www.cocoachina.com/index.php/archives/cocoachina_143.html

            幾個(gè)源碼例子
            http://lucasnewman.com/phonedemos.zip



            7. iPhone論壇和網(wǎng)站
            平果開(kāi)發(fā)中文站-最好的中文iPhone開(kāi)發(fā)網(wǎng)站!
            http://www.cocoachina.com/

            蘋果官方的開(kāi)發(fā)網(wǎng)站:
            http://developer.apple.com/iphone/

            Weiphone
            http://www.weiphone.com/index.php

            蘋果fans成立的網(wǎng)站:
            http://apple4.us/

            posted @ 2009-04-02 22:55 YG 閱讀(928) | 評(píng)論 (1)編輯 收藏

            2008年12月31日

            The Standard C Library

                 摘要: The Standard C Library --------------經(jīng)典的基礎(chǔ) C的標(biāo)志庫(kù)函數(shù)是學(xué)習(xí)和使用C語(yǔ)言的基礎(chǔ),是編寫經(jīng)典C程序的基礎(chǔ),是學(xué)習(xí)其他計(jì)算機(jī)知識(shí)的基礎(chǔ).C標(biāo)志庫(kù)中一共包含了15個(gè)頭文件: <assert.h> <ctype.h> <stdio.h> <stdlib.h> <string.h> <li...  閱讀全文

            posted @ 2008-12-31 13:38 YG 閱讀(737) | 評(píng)論 (0)編輯 收藏

            ACE在linux下的安裝

            本文詳細(xì)描述了在Linux操作系統(tǒng)上安裝和配置“自適應(yīng)通信環(huán)境(ACE)”的過(guò)程和注意事項(xiàng)。zCkLinux聯(lián)盟

            文中的描述基于RedHat Linux 9操作系統(tǒng)和ACE 5.4版zCkLinux聯(lián)盟

            準(zhǔn)備工作:zCkLinux聯(lián)盟

            1.確保你的Linux操作系統(tǒng)的開(kāi)發(fā)環(huán)境(gcc、make……)是完整且可用的。zCkLinux聯(lián)盟

            2.在安裝ACE的過(guò)程中,可能需要root權(quán)限,因此確保你擁有root帳戶的密碼。zCkLinux聯(lián)盟

            3.對(duì)于典型的Redhat9系統(tǒng),autoconf程序的版本可能過(guò)低,你需要首先升級(jí)它。zCkLinux聯(lián)盟

               升級(jí)的步驟如下:zCkLinux聯(lián)盟

            1. 在控制臺(tái)中輸入 autoconf -V,查看你的autoconf程序的版本
            2. 如果低于2.57g,你需要到http://www.gnu.org/software/autoconf/去下載最新版本的autoconf程序,目前autoconf程序的版本是2.59
            3. 根據(jù)tarball中的安裝說(shuō)明,編譯并安裝升級(jí)autoconf程序

             

            開(kāi)始安裝:zCkLinux聯(lián)盟

            經(jīng)過(guò)上面的準(zhǔn)備工作,現(xiàn)在你已經(jīng)具備了安裝ACE的條件。下面開(kāi)始正式的安裝工作。zCkLinux聯(lián)盟

            1. 首先確定ACE的安裝路徑,并建立相應(yīng)的目錄。zCkLinux聯(lián)盟

               

              這里,我們把ACE安裝在/home/zhc/ace/的目錄下,先執(zhí)行zCkLinux聯(lián)盟

              mkdir /home/zhc/ace

            2. 然后將獲得的ACE源代碼包解至該目錄下。zCkLinux聯(lián)盟

               

              tar zxvf ACE-5.4.tar.gz /home/zhc/ace

            3. 這時(shí),在ace的目錄下會(huì)建立一個(gè)名為ACE_wrappers的子目錄,ACE所有的源代碼、工具、和例子都在這個(gè)目錄中。zCkLinux聯(lián)盟

               

              先進(jìn)入該目錄,執(zhí)行zCkLinux聯(lián)盟

              cd /home/zhc/ace/ACE_wrapperszCkLinux聯(lián)盟

              然后建立一個(gè)子目錄,用于存放ACE編譯后的目標(biāo)文件zCkLinux聯(lián)盟

              mkdir buildzCkLinux聯(lián)盟

              cd build

            4. 接著,執(zhí)行configure腳本,檢查你的系統(tǒng)環(huán)境,配置并生成適合你的系統(tǒng)的Makefile文件。zCkLinux聯(lián)盟

               

              在執(zhí)行configure腳本時(shí),可以加入許多配置選項(xiàng),其詳細(xì)說(shuō)明可以參看ACE_wrappers目錄下的ACE-INSTALL.html文件,zCkLinux聯(lián)盟

              對(duì)于Redhat9系統(tǒng)來(lái)說(shuō),不必加任何參數(shù),ACE就可以很好的工作了。zCkLinux聯(lián)盟

              ../configure

            5. 在漫長(zhǎng)的檢查和配置之后,如果沒(méi)有什么問(wèn)題,你就可以開(kāi)始編譯了。zCkLinux聯(lián)盟

               

              這一步很簡(jiǎn)單,執(zhí)行zCkLinux聯(lián)盟

              makezCkLinux聯(lián)盟

              然后,泡一杯茶,靜靜的等待就行了。

            6. 如果編譯順利的通過(guò)(通常都會(huì)是這樣的),那么恭喜你,你已經(jīng)成功了一大半了,下面要做的僅僅是以些配置工作而已。zCkLinux聯(lián)盟

               

              接下來(lái)的工作是安裝,這一步是可選的,目的是把編譯生成的ACE的庫(kù)文件、頭文件和手冊(cè)頁(yè)等安裝到/usr/local的相應(yīng)目錄中去,為了今后使用的方便,我建議你還是進(jìn)行這一步,執(zhí)行zCkLinux聯(lián)盟

              suzCkLinux聯(lián)盟

              root's passwordzCkLinux聯(lián)盟

              make install

            7. 安裝之后,我們就可以進(jìn)行最后的配置工作了。zCkLinux聯(lián)盟

               

              首先設(shè)置環(huán)境變量ACE_ROOT,執(zhí)行zCkLinux聯(lián)盟

              setenv ACE_ROOT /home/zhc/ace/ACE_wrapperszCkLinux聯(lián)盟

              注意其中的路徑要根據(jù)你的實(shí)際情況而定zCkLinux聯(lián)盟

              如果你不想每次都手工設(shè)定路徑,可以編輯你的bash的配置文件,執(zhí)行zCkLinux聯(lián)盟

              cdzCkLinux聯(lián)盟

              vi .bash_profilezCkLinux聯(lián)盟

              在其中填加如下兩行zCkLinux聯(lián)盟

              ACE_ROOT=/home/work/research/ace/ACE_wrapperszCkLinux聯(lián)盟

              export ACE_ROOT

            8. 然后,在$ACE_ROOT/ace目錄中創(chuàng)建一個(gè)名為config.h的文件,在其中包含如下一行zCkLinux聯(lián)盟

               

              #include "ace/config-linux.h"zCkLinux聯(lián)盟

              或者,簡(jiǎn)單起見(jiàn),你也可以直接建立一個(gè)指向config-linux.h的符號(hào)鏈接,執(zhí)行zCkLinux聯(lián)盟

              ln -s config-linux.h config.h

            9. 同樣,在$ACE_ROOT/include/makeinclude目錄中創(chuàng)建一個(gè)名為platform_macros.GNU的文件,在其中包含如下一行zCkLinux聯(lián)盟

               

              include $(ACE_ROOT)/include/makeinclude/platform_linux.GNUzCkLinux聯(lián)盟

              或者,簡(jiǎn)單起見(jiàn),你也可以直接建立一個(gè)指向platform_linux.GNU的符號(hào)鏈接,執(zhí)行zCkLinux聯(lián)盟

              ln -s platform_linux.GNU platform_macros.GNU

            10. 最后一步,設(shè)置環(huán)境變量LD_LIBRARY_PATH,執(zhí)行zCkLinux聯(lián)盟

               

              setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:zCkLinux聯(lián)盟

              /usr/local/lib:$LD_LIBRARY_PATHzCkLinux聯(lián)盟

              或者在~/.bash_profile文件中添加如下兩行zCkLinux聯(lián)盟

              LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:zCkLinux聯(lián)盟

              /usr/local/lib:$LD_LIBRARY_PATHzCkLinux聯(lián)盟

              export LD_LIBRARY_PATH

             

            安裝完成:zCkLinux聯(lián)盟

            經(jīng)過(guò)上面的步驟,ACE已經(jīng)安裝到了您的系統(tǒng)上了,下面我們將編譯并執(zhí)行ACE的例程以驗(yàn)證我們的工作。zCkLinux聯(lián)盟

            這里我們以《C++網(wǎng)絡(luò)編程,卷一》所帶的例子為例。zCkLinux聯(lián)盟

            1. 進(jìn)入例程目錄,執(zhí)行zCkLinux聯(lián)盟

               

              cd $(ACE_ROOT)/examples/C++NPv1

            2. 編譯例子程序,執(zhí)行zCkLinux聯(lián)盟

               

              makezCkLinux聯(lián)盟

              如果前面的安裝和配置正確,很快就能夠得到編譯后的例子程序。

            3. 分別執(zhí)行一個(gè)服務(wù)器程序(隨便哪一個(gè)都行)和一個(gè)客戶端程序(Logging_Client),如果程序運(yùn)行正確,說(shuō)明前面的安裝和配置成功,下面你就可以開(kāi)始你的ACE學(xué)習(xí)之旅了

             

            補(bǔ)充

             

            下載ace 5.6
            在根目錄下建立一個(gè)文件夾
            mkdir /ace
            把下載的ace包移過(guò)去,解壓得到一個(gè)文件夾ACE_wrappers
            然后進(jìn)入這個(gè)文件夾,看看里面的readme就可以曉得,linux下如何編譯和安裝
            網(wǎng)上很多人說(shuō)要建立一個(gè)config.h的文件,那是好多年前的老皇歷了,readme里面沒(méi)有說(shuō)要建立這么個(gè)玩意,那就不建立。
            直接進(jìn)入主題,編譯:
            cd  /ace/ACE_wrappers
            mkdir build
            cd build
            ../configure 我們使用默認(rèn)的option
            make
            make install
            過(guò)程很快,然后我們進(jìn)入到/usr/local目錄下,可以看到include里面有ace要用的頭文件,lib里面有ace要用的庫(kù)文件
            linux的庫(kù)文件 的搜索路徑如下:
            /usr/include
            /usr/local/include
            /usr/lib/gcc-lib/i386-linux/2.95.2/include
            /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g -3
            /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
            因此,我們不用設(shè)置ace的頭文件了。
            但是ace庫(kù)文件不是linux的自帶的默認(rèn)的庫(kù)文件,因此我們使用的時(shí)候要帶上,而ace現(xiàn)在的庫(kù)文件并不是系統(tǒng)的,先看一下默認(rèn)的:
             默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑/lib和/usr/lib
            我們把a(bǔ)ce所在的庫(kù)文件路徑添加進(jìn)去:
            一:
            在/etc/bashrc中加入:
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
            重啟
            二:
            打開(kāi)/etc/ld.so.conf
            本來(lái)內(nèi)容是如下:
            include ld.so.conf.d/*.conf
            我們添加ace路徑后變成如下
            include ld.so.conf.d/*.conf
            /usr/local/lib
            保存退出!
            然后執(zhí)行    ldconfig
            就可以了。
            下面我們弄一個(gè)簡(jiǎn)單的ace程序:
            /////////////////////////hello.cpp
            #include "ace/OS.h"
            #include "ace/Log_Msg.h"
             
            int main (int argc, char *argv[])
            {
                      ACE_DEBUG((LM_DEBUG,"Hello, ACE!\n"));
                      ACE_OS::exit(1);
                      return 0;
            }

            這么就不寫makefile了,直接用g++編譯就是了。
            編譯
            g++ hello.cpp -o hello -lACE
            運(yùn)行:
            ./hello
            結(jié)果:
            [root@BTazuo ~]# ./hello
            Hello, ACE!

             

            posted @ 2008-12-31 13:37 YG 閱讀(892) | 評(píng)論 (0)編輯 收藏

            2008年12月30日

            'TryEnterCriticalSection' 錯(cuò)誤

              隔了一段時(shí)間后來(lái)重新編譯原本還可以編譯運(yùn)行的程序,在DEBUG下還是正常,但是換成release后就出現(xiàn)了下載問(wèn)題
            'TryEnterCriticalSection' : is not a member of '`global namespace''


            解決方法:
            處理辦法:在stdafx.h或程序開(kāi)始處中增加如下宏定義,即可。
            用于指明WINDOWS系統(tǒng)版本。

            //for use TryEnterCriticalSection
            #ifndef _WIN32_WINNT
            # define _WIN32_WINNT 0x500
            #endif

            posted @ 2008-12-30 12:49 YG 閱讀(1479) | 評(píng)論 (0)編輯 收藏

            linux配置問(wèn)題匯總

            》 掛載新區(qū)步驟
                  加了新硬盤后,用Mount掛載上去總是失敗,原來(lái)要先格式化才能再掛載上去,方法如下:

            1、mkfs.ext3 -b 1024 -i 1024 /dev/ram5  //用內(nèi)存虛擬硬盤進(jìn)行格式化,定義inode號(hào)與block size號(hào)一致,對(duì)小文件來(lái)說(shuō)更優(yōu)。整個(gè)系統(tǒng)所能存儲(chǔ)的文件數(shù)較少。

            2、mkfs.ext3 -b 1024 -i 4096 /dev/ram5  //改變block size,使4個(gè)block與1個(gè)inode相對(duì)應(yīng),這種好處是對(duì)大文件來(lái)說(shuō)節(jié)省空間,節(jié)省inode數(shù)量,整個(gè)系統(tǒng)所能存儲(chǔ)的文件數(shù)較多。

            3、mkdir /mnt/mem5   //創(chuàng)建掛裝目錄

            4、mount /dev/ram5 /mnt/mem5   將虛擬的分區(qū)掛載到mem5目錄中

            5、tune2fs -l /dev/ram5  //驗(yàn)證當(dāng)前磁盤格式


            Others
            1、mkfs.ext2 -b 1024 -i 1024 /dev/ram6  //創(chuàng)建ext2格式分區(qū)

            2、tune2fs -j /dev/ram5  //改變分區(qū)

            3、tune2fs -l /dev/ram5 //驗(yàn)證

            》刪除無(wú)效硬盤懸掛區(qū)

            vi /ect/fstab

            》 顯示亂碼
            修改/etc/sysconfig/i18n  文件
            把里面的LANG="en_US"改成 GB2312就可以了

            》網(wǎng)絡(luò)配置
            1)臨時(shí)修改
            #IP配置,包括子網(wǎng)掩碼,看情況修改eth0和192.168.1.22

            ifconfig   eth0   192.168.1.22   netmask   255.255.255.0   up

            #網(wǎng)關(guān)修改   ,看情況修改192.168.1.2

            route   add   default   gw   192.168.1.2

            2)永久修改
             修改配置:/etc/sysconfig/network-scripts/ifcfg-eth0
              
              DEVICE=eth0
              NOBOOT=yes
              BOOTPROTO=static
              IPADDR=192.168.1.9
              NETMASK=255.255.255.0
              GATEWAY=192.168.1.1
            2: DNS   /etc/resolv.conf
               支持三個(gè)
            nameserver 192.168.1.1


            》環(huán)境變量
            1:當(dāng)前目錄
            export LD_LIBRARY_PATH=$(pwd)

            export PATH=/xxxxxx/:$PATH

            2:找不到so庫(kù)問(wèn)題
            error while loading shared libraries
            在/etc/ld.so.conf加入所在庫(kù)的路徑,存檔后執(zhí)行「/sbin/ldconfig –v」。

            "."代表當(dāng)前路徑

            posted @ 2008-12-30 11:48 YG 閱讀(228) | 評(píng)論 (0)編輯 收藏

            2008年9月9日

            [游戲開(kāi)發(fā)]工廠模式

            游戲編程是我業(yè)余的愛(ài)好,也可以提高對(duì)編程的興趣,每當(dāng)我有時(shí)間的時(shí)候就會(huì)編寫游戲,基于圖片的問(wèn)題所以首選小游戲。這是我畢業(yè)后第二款小游戲,相比上一款充分的運(yùn)用了面向?qū)ο蟮募夹g(shù),讓我享受與不斷做類的完善,特別提出的是使用遞歸技術(shù)使得算法更加簡(jiǎn)潔確實(shí)是個(gè)很不錯(cuò)的技術(shù),比如:游戲中的地圖整行消除判斷以及消除。

            目前的設(shè)計(jì)情況如下:
            (有寫沒(méi)必要的函數(shù)省略了,初次使用UML圖)

            此貼主要是想探討類的設(shè)計(jì),標(biāo)題上寫了工廠模式,這里只是簡(jiǎn)單的把UI創(chuàng)建放到另外一個(gè)地方罷了,嚴(yán)格來(lái)說(shuō)應(yīng)該不算是什么工廠,但是主要是代碼
            易讀維護(hù)性高就可以了.開(kāi)發(fā)環(huán)境:VS2005,WIN32、 C++、DX9


            如果要增加其他按鈕只要繼承ImageUI,和實(shí)現(xiàn)基類的存虛擬函數(shù)就可以。基類的事件觸發(fā)如下代碼。

            PUG_BTN_STAT CImageUI::OnEven(UINT msg, WPARAM wParam, LPARAM lParam)
            {
                POINTS xy;
                xy 
            = MAKEPOINTS(lParam);
                POINT xy2;
                xy2.x 
            = xy.x;
                xy2.y 
            = xy.y;

                
            switch(msg)
                {      
                
            case WM_MOUSEMOVE:
                       {
                        
            if(PtInRect(&_displaySize,xy2))
                        {
                            OnPass();
                            
            return PASS;
                        }
                       }
                       
            break;
                  
            case WM_LBUTTONDOWN:
                       {
                        
            if(PtInRect(&_displaySize,xy2))
                        {
                            OnClick();
                            
            return ONCLICK;
                        }
                       }
                       
            break;
                  
            case WM_LBUTTONUP:
                      {
                        
            if(PtInRect(&_displaySize,xy2))
                        {
                            OnClickOut();
                            
            return ONCLICKOUT;
                        }
                      }
                      
            break;
                }

                OnPassOut();
                
            return COMMAND;
            }


            游戲圖片如下:




            游戲下載:
            /Files/YGFaith/elsfkGame.rar

            posted @ 2008-09-09 23:37 YG 閱讀(1638) | 評(píng)論 (0)編輯 收藏

            2008年8月29日

            觀察者模式(Subject/Observer)

            定義:對(duì)象間的一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 

            功能:搜索數(shù)據(jù)庫(kù),當(dāng)有需要公布的數(shù)據(jù)將其用各種方式發(fā)送出去。
             
            觀察者模式無(wú)疑能很好的做到上面的要求,無(wú)論要多少種方式,只要增加多個(gè)繼承之ITransfer接口的派生類即可,有很好的維護(hù)性。

            以下是實(shí)際的應(yīng)用.



            //接口
            //ITransfer.h
            #pragma once

            class ITransfer
            {
            public:
                
            virtual bool DoTransfer(...= 0;
            }
            ;


            //FetionTransfer.h
            #pragma once
               #include "Transfer.h"
            class CFetionTransfer:public ITransfer
            {
            public:
                CFetionTransfer();
                
            ~CFetionTransfer();
                
            bool DoTransfer(...);
            private:
                ......
            }
            ;


            //MailTransfer.h
            #pragma once
               #include "Transfer.h"
            class CMailTransfer: public ITransfer
            {
            public:
                CMailTransfer();
                
             ~CMailTransfer();
                
            bool DoTransfer(...);
            private:
            ....
            }
            ;


            //TransferPool.h
            #pragma once

            #include 
            "Transfer.h"
            #include 
            <vector>
            using namespace std;

            class CTransferPool
            {
            private:
                vector
            <ITransfer*> vo;
            public:
                
            virtual ~CTransferPool();

                
            void Login(ITransfer* po);

                
            void Logout(ITransfer* po);
               
            //向各成員廣播消息
                void Notify(...);
            }
            ;

            //TransferPool.cpp
            #include "TransferPool.h"

            CTransferPool::
            ~CTransferPool()
            {
                vector
            <ITransfer*>::iterator vi = vo.begin();
                
            for (; vi != vo.end(); vi++)
                
            {
                             if(*vi)
                                {
                                    delete *vi;
                                     *vi = NULL;
                                }

                }

            }


            void CTransferPool::Login(ITransfer* po)
            {
                vo.push_back(po);
            }


            void CTransferPool::Logout(ITransfer* po)
            {
                vector
            <ITransfer*>::iterator vi = vo.begin();
                
            for (; vi != vo.end(); vi++)
                
            {
                    
            if (*vi == po)
                        vo.erase(vi);
                }

            }


            void CTransferPool::Notify(...)
            {
                vector
            <ITransfer*>::iterator vi = vo.begin();
                
            for (; vi != vo.end(); vi++)
                
            {
                    ITransfer 
            *= *vi;
                        
                    (
            *vi)->DoTransfer(...);
                }

            }


            void main
            {
                CTransferPool
            *m_pTranPool= new CTransferPool();
                
                CFetionTransfer 
            *m_pFetionTran = new CFetionTransfer(...);
                CMailTransfer 
            *m_pMailTran = new CMailTransfer(...);

                m_pTranPool
            ->Login(m_pFetionTran);
                m_pTranPool
            ->Login(m_pMailTran);
                   
                    
            while(需要發(fā)送消息)
                    
            {
                        m_pTranPool
            ->Notify();
                    }


                    
            //釋放
                      if(m_pTranPool)
                    
            {
                        delete m_pTranPool;
                        m_pTranPool 
            = NULL;
                    }


            }

            posted @ 2008-08-29 15:49 YG 閱讀(1791) | 評(píng)論 (5)編輯 收藏

            2008年8月21日

            求兩個(gè)數(shù)中最大值,不用判斷語(yǔ)句。

             

            #include "iostream.h" 
            #include 
            "math.h" 

            #define bits ( sizeof( int ) * 8 - 1 ) 
            static int CheckFlag( int x, int y )  
            {  
            int s1 = x >> bits;  
            int s2 = y >> bits;  
            s1
            =abs(s1); 
            s2
            =abs(s2); 
            return ( s1 * 2 + s2 );  
            }  
            static int SameSign( int Flag, int x, int y ) 
            {  
            int t[2= { x, y }; 
            long z = x - y; 
            int s = z >> (bits+32);  
            s
            =abs(s); 
            return t[s]; 
            }  
            static int DiffSign(int Flag,int x,int y) 比較 
            {  
            int t[2= { x, y };  
            return t[Flag - 1]; 

            static int (*FuncList[4])(int Flag,int x,int y)={SameSign, DiffSign, DiffSign, SameSign};  
            static int Max( int x, int y )  
            {  
            int Flag = CheckFlag( x, y );  

            return (*FuncList[Flag])(Flag,x,y);  

            void main()  

            int x,y,z; 
            cout
            <<"請(qǐng)輸入整型x的值(-32768~32767):"
            cin
            >>x; 
            cout
            <<"請(qǐng)輸入整型y的值(-32768~32767):"
            cin
            >>y; 
            z
            =Max(x,y); 
            cout
            <<"最大的數(shù):"<<z<<endl; 
            }  



            #define bits ( sizeof( int ) * 8 - 1 ) //移動(dòng)的位數(shù)
            static int SameSign( int Flag, int x, int y ) //函數(shù)功能:x,y同號(hào)時(shí)的比較
            static int DiffSign(int Flag,int x,int y) //函數(shù)功能:x,y異號(hào)時(shí)的比較
            static int (*FuncList[4])(int Flag,int x,int y)={SameSign, DiffSign, DiffSign, SameSign}; //定義函數(shù)指針數(shù)組
            static int Max( int x, int y ) //函數(shù)功能:求最大值

            static int CheckFlag( int x, int y ) //函數(shù)功能:檢測(cè)x,y的符號(hào)
            /*
            Flag 的值
            + +:0
            - +;1
            + 1:2
            - -:3
            */

            posted @ 2008-08-21 14:20 YG 閱讀(3183) | 評(píng)論 (11)編輯 收藏

            久久国产乱子伦精品免费午夜| 久久免费国产精品一区二区| 久久国产亚洲精品| 18岁日韩内射颜射午夜久久成人| 久久99国产精品99久久| 久久久91人妻无码精品蜜桃HD| 亚洲中文久久精品无码| 久久综合综合久久狠狠狠97色88| 久久天天躁狠狠躁夜夜2020 | 亚洲精品无码久久毛片| 久久久久人妻精品一区二区三区 | 久久国产精品久久国产精品| 久久人人爽人人爽人人片AV东京热| 新狼窝色AV性久久久久久| 久久www免费人成看国产片| 青青草原精品99久久精品66| 久久se精品一区二区影院| 久久99国产亚洲高清观看首页| 无码八A片人妻少妇久久| 久久国产精品免费一区| 久久国产精品-国产精品| 久久精品黄AA片一区二区三区| 欧美精品九九99久久在观看| 久久99精品久久久久子伦| 国产一区二区精品久久岳| 国产精品免费福利久久| 国产精品成人久久久| 国产香蕉97碰碰久久人人| 国产精品99久久99久久久| 亚洲色大成网站WWW久久九九| 久久综合视频网站| 久久精品国产精品亚洲人人| 欧美伊香蕉久久综合类网站| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲另类欧美综合久久图片区| 久久99精品久久久久久噜噜| 伊人久久大香线焦综合四虎| 久久青草国产手机看片福利盒子| 久久国产高清字幕中文| 中文字幕亚洲综合久久2| 伊人色综合久久|