<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-46  評(píng)論-64  文章-2  trackbacks-0
     

    ???????? 最近準(zhǔn)備畢業(yè)設(shè)計(jì)的開(kāi)題報(bào)告,原來(lái)設(shè)想手機(jī)控制端使用J2ME,但是mentor給我思路說(shuō)可以考慮使用OSGI,一番開(kāi)導(dǎo),完全打亂了我原來(lái)的想法,思路當(dāng)然也開(kāi)闊不少,我決定研究一下OSGI的可行性。

    ???????? 先介紹一下OSGI,如很多人一樣,對(duì)OSGI這個(gè)名詞的了解關(guān)注適于Eclipse,常見(jiàn)的解釋“OSGi 聯(lián)盟建立于 1999 年,是一個(gè)非贏利機(jī)構(gòu),旨在建立一個(gè)開(kāi)放的服務(wù)規(guī)范。OSGi 規(guī)范為網(wǎng)絡(luò)服務(wù)定義了一個(gè)標(biāo)準(zhǔn)的、面向組件的計(jì)算環(huán)境,它最初的目的就是為各種嵌入式設(shè)備提供通用的軟件運(yùn)行平臺(tái),屏蔽設(shè)備操作系統(tǒng)與硬件區(qū)別的中間件平臺(tái),通過(guò)這個(gè)平臺(tái),可以對(duì)不同軟件商提供的應(yīng)用(OSGi 中稱(chēng)為 Bundle)進(jìn)行組件的生命周期管理的能力,如應(yīng)用組件可以從運(yùn)行中被安裝、升級(jí)或者移除而不需要中斷設(shè)備的操作,應(yīng)用組件可以動(dòng)態(tài)的發(fā)現(xiàn)和使用其他庫(kù)或者應(yīng)用程序。由于 OSGi 技術(shù)具有服務(wù)組件模塊化、動(dòng)態(tài)加載應(yīng)用等優(yōu)點(diǎn),正被越來(lái)越多的領(lǐng)域關(guān)注,如嵌入設(shè)備制造業(yè)、汽車(chē)制造業(yè)、企業(yè)應(yīng)用等。目前,OSGi 聯(lián)盟發(fā)布的最新的 OSGi 服務(wù)規(guī)范為 4.0。

    ?????????? 看了OSGI的WhitePaper說(shuō)OSGI應(yīng)用于多種領(lǐng)域,見(jiàn)下圖osgi areas.PNG
    ??????? 我就想在我的Nokia6670手機(jī)里使用OSGI,照理來(lái)講肯定是可以搞定的,因?yàn)閃hitePaper說(shuō)了不少嘛,但是目前對(duì)OSGI的了解僅限于使用Eclipse開(kāi)發(fā)幾個(gè)Bundle的簡(jiǎn)單協(xié)作,自己想想直接把這個(gè)部署到手機(jī)里貌似不太可能,然后又Google的N多資料,終于發(fā)現(xiàn)一個(gè)CLDC設(shè)備上OSGI的實(shí)現(xiàn),來(lái)自ProSystmBedded Server CLDC Edition,貌似有個(gè)評(píng)估版可以下載,我發(fā)現(xiàn)可以在我的Nokia機(jī)器上使用OSGI framework的希望了。還有Google到的信息是Knopflerfish的一個(gè)OSGI platform實(shí)現(xiàn)貌似是可以在SonyEricsson P900機(jī)器上跑起來(lái)了的。
    ??????? 郁悶的臺(tái)灣南海的地震把什么海底光纜搞掛了,這幾天國(guó)外網(wǎng)站都上不了,osgi,Knopflerfish,ProSyst都上不去,所以不能獲取進(jìn)一步深入學(xué)習(xí)資料,網(wǎng)頁(yè)都打不開(kāi)非常郁悶啊!

    ????????不知道有沒(méi)有人部署過(guò)這樣的OSGI在手機(jī)里的應(yīng)用,總覺(jué)得這個(gè)OSGI的WhitePaper說(shuō)的都是抽象層面上的,我想學(xué)習(xí)的是怎么樣把這個(gè)用起來(lái)。說(shuō)OSGI規(guī)范化***,但是不知道如何用起來(lái)啊。。。希望有研究OSGI的人和我交流交流。

    ?????? osgi architecture.PNG


    ???????? J2ME + WebService是個(gè)簡(jiǎn)單的架構(gòu),J2ME開(kāi)發(fā)手機(jī)上的Application,WebService提供手機(jī)和Server的信息交互。考慮過(guò)用.NET實(shí)現(xiàn)WebService,J2ME調(diào)用。這個(gè)系統(tǒng)結(jié)構(gòu)相對(duì)容易被更多人了解且容易實(shí)現(xiàn)。

    ???????? 兩種實(shí)現(xiàn),相對(duì)來(lái)說(shuō)更想嘗試OSGI,但是OSGI卻相對(duì)來(lái)說(shuō)陌生一點(diǎn),現(xiàn)在很多關(guān)于OSGI的資料也訪(fǎng)問(wèn)不了,矛盾啊。。。

    posted @ 2006-12-29 22:47 jht 閱讀(1041) | 評(píng)論 (3)編輯 收藏

    ?????????到公司實(shí)習(xí)近五個(gè)月了,主要從事C++開(kāi)發(fā),困擾于復(fù)雜的專(zhuān)家系統(tǒng)的陳舊代碼,不能說(shuō)代碼寫(xiě)的不好,肯定比我寫(xiě)出來(lái)的C++代碼好,但是卻很難讓人讀懂,邏輯復(fù)雜,而且又缺乏Code的維護(hù),文檔也沒(méi)有,所有系統(tǒng)特性完全由前人口傳聲授,搞得很頭大。。。
    ?????????
    ?????????當(dāng)然也學(xué)習(xí)到不少東西,比如如何分析復(fù)雜的代碼,經(jīng)歷種種挫敗打擊之后,我總結(jié)出如下規(guī)律,面對(duì)一個(gè)復(fù)雜的系統(tǒng),你完全不知道它是干什么的,首先從大的角度把握系統(tǒng)的業(yè)務(wù)特性,主要完成后哪些操作,企業(yè)級(jí)別應(yīng)用不外乎數(shù)據(jù)庫(kù)的CRUD,非要區(qū)分出不同之處個(gè)人認(rèn)為就是各種應(yīng)用如何把著簡(jiǎn)單的四種操作弄得更復(fù)雜啦!具體方法無(wú)非轉(zhuǎn)圈再轉(zhuǎn)圈!

    ?????????然后拆解出系統(tǒng)層次架構(gòu)的模型,在紙上畫(huà)出層次實(shí)現(xiàn)框圖有助于快速把握系統(tǒng)的層次模型。

    ?????????分解出層次模型之后的下一步就是關(guān)注BusinessLogic層?xùn)|西,如何系統(tǒng)層析模型不好,例如BL和DAO混雜,首先要做的是想辦法如何重構(gòu)這樣的模型,因?yàn)椴恢貥?gòu)這樣的系統(tǒng)很快你就會(huì)感覺(jué)這個(gè)項(xiàng)目沒(méi)有盡頭了,在痛苦中煎熬啊。在寫(xiě)Code之前,一定要理解BL的東西,Code誰(shuí)都會(huì)寫(xiě),但是要高效完成Coding工作,理解你要寫(xiě)什么是前提,我自己在這個(gè)方面吃虧不少,寫(xiě)出來(lái)Code,自己也不知道是干什么的,項(xiàng)目結(jié)束了,現(xiàn)在強(qiáng)烈鄙視自己了

    ?????????
    ?????????重新開(kāi)始BLOG生涯了,原因:鞏固自己學(xué)習(xí)到的知識(shí),并且將自己學(xué)習(xí)的體會(huì)于大家分享,也許我的些許經(jīng)驗(yàn)?zāi)芙o迷茫當(dāng)中的人帶來(lái)幫助,不吝嗇自己的只言片語(yǔ),哪怕是不夠成熟的。另一方面,表達(dá)出自己的理解和思想,或許會(huì)獲得大家不同的評(píng)價(jià),你有一個(gè)思想我有一個(gè)思想,交換,我們就有兩個(gè)思想了!當(dāng)然,自己錯(cuò)誤的理解馬上能得到大家的糾正,這對(duì)自己知識(shí)的構(gòu)建是非常好有幫助的!

    ?????????下一階段學(xué)習(xí)計(jì)劃 Spring,Hibernate,有空也玩玩AJAX

    ?????????

    posted @ 2006-12-16 20:34 jht 閱讀(270) | 評(píng)論 (0)編輯 收藏
          這篇文章在網(wǎng)上已經(jīng)被轉(zhuǎn)了無(wú)數(shù)次了,轉(zhuǎn)貼負(fù)責(zé)的有圖,不負(fù)責(zé)的圖也丟了……  
          再轉(zhuǎn)一次吧,我想也不為多,全當(dāng)成自己的學(xué)習(xí)資料收集了
         
          以下內(nèi)容轉(zhuǎn)貼,因?yàn)檗D(zhuǎn)爛了,所以作者已經(jīng)不詳了……

    最近我作了數(shù)據(jù)庫(kù)JSP的頻繁連接,在此給出數(shù)據(jù)庫(kù)連接池的必要性,對(duì)于JSP來(lái)說(shuō)一個(gè)很好的J2EE服務(wù)器是很必要的,JBOOS,WebLogic都是很好的解決方案。


    一般情況下,在使用開(kāi)發(fā)基于數(shù)據(jù)庫(kù)的WEB程序時(shí),傳統(tǒng)的模式基本是按以下步驟:
      1. 在主程序(如Servlet、Beans)中建立數(shù)據(jù)庫(kù)連接。
      2. 進(jìn)行SQL操作,取出數(shù)據(jù)。
      3. 斷開(kāi)數(shù)據(jù)庫(kù)連接。
      使用這種模式開(kāi)發(fā),存在很多問(wèn)題。首先,我們要為每一次WEB請(qǐng)求(例如察看某一篇文章的內(nèi)容)建立一次數(shù)據(jù)庫(kù)連接,對(duì)于一次或幾次操作來(lái)講,或許你覺(jué)察不到系統(tǒng)的開(kāi)銷(xiāo),但是,對(duì)于WEB程序來(lái)講,即使在某一較短的時(shí)間段內(nèi),其操作請(qǐng)求數(shù)也遠(yuǎn)遠(yuǎn)不是一兩次,而是數(shù)十上百次(想想全世界的網(wǎng)友都有可能在您的網(wǎng)頁(yè)上查找資料),在這種情況下,系統(tǒng)開(kāi)銷(xiāo)是相當(dāng)大的。事實(shí)上,在一個(gè)基于數(shù)據(jù)庫(kù)的WEB系統(tǒng)中,建立數(shù)據(jù)庫(kù)連接的操作將是系統(tǒng)中代價(jià)最大的操作之一。很多時(shí)候,可能您的網(wǎng)站速度瓶頸就在于此。
      其次,使用傳統(tǒng)的模式,你必須去管理每一個(gè)連接,確保他們能被正確關(guān)閉,如果出現(xiàn)程序異常而導(dǎo)致某些連接未能關(guān)閉,將導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)中的內(nèi)存泄露,最終我們將不得不重啟數(shù)據(jù)庫(kù)。
      針對(duì)以上問(wèn)題,我們首先想到可以采用一個(gè)全局的Connection對(duì)象,創(chuàng)建后就不關(guān)閉,以后程序一直使用它,這樣就不存在每次創(chuàng)建、關(guān)閉連接的問(wèn)題了。但是,同一個(gè)連接使用次數(shù)過(guò)多,將會(huì)導(dǎo)致連接的不穩(wěn)定,進(jìn)而會(huì)導(dǎo)致WEB SERVER的頻頻重啟。故而,這種方法也不可取。實(shí)際上,我們可以使用連接池技術(shù)來(lái)解決上述問(wèn)題。首先,介紹一下連接池技術(shù)的基本原理。顧名思義,連接池最基本的思想就是預(yù)先建立一些連接放置于內(nèi)存對(duì)象中以備使用:
        
    如圖所示,當(dāng)程序中需要建立數(shù)據(jù)庫(kù)連接時(shí),只須從內(nèi)存中取一個(gè)來(lái)用而不用新建。同樣,使用完畢后,只需放回內(nèi)存即可。而連接的建立、斷開(kāi)都有連接池自身來(lái)管理。同時(shí),我們還可以通過(guò)設(shè)置連接池的參數(shù)來(lái)控制連接池中的連接數(shù)、每個(gè)連接的最大使用次數(shù)等等。通過(guò)使用連接池,將大大提高程序效率,同時(shí),我們可以通過(guò)其自身的管理機(jī)制來(lái)監(jiān)視數(shù)據(jù)庫(kù)連接的數(shù)量、使用情況等。下面我們以一個(gè)名為ConnectionPool的連接池為例來(lái)看看連接池的實(shí)現(xiàn)。先看看ConnectionPool的基本屬性:
      m_ConnectionPoolSize:連接池中連接數(shù)量下限
      m_ConnectionPoolMax:連接池中連接數(shù)量上限
      m_ConnectionUseCount:一個(gè)連接的最大使用次數(shù)
      m_ConnectionTimeout:一個(gè)連接的最長(zhǎng)空閑時(shí)間
      m_MaxConnections = -1:同一時(shí)間的最大連接數(shù)
      m_timer:定時(shí)器
      這些屬性定義了連接池與其中的每個(gè)連接的有效狀態(tài)值。連接池的自我管理,實(shí)際上就是通過(guò)定時(shí)的對(duì)每個(gè)連接的狀態(tài)、連接的數(shù)量進(jìn)行判斷而進(jìn)行相應(yīng)操作。其管理流程如下:

    通過(guò)上圖,我們可以定義出ConnectionPool要完成管理所需要的基本接口:
    public class ConnectionPool implements TimerListener{
      public boolean initialize() //連接池初始化
      public void destroy() //連接池的銷(xiāo)毀
      public synchronized java.sql.Connection getConnection() //取一個(gè)連接
      public synchronized void close() //關(guān)閉一個(gè)連接
      private synchronized void removeFromPool() //把一個(gè)連接從連接池中刪除
      private synchronized void fillPool() //維護(hù)連接池大小
      public synchronized void TimerEvent() //定時(shí)器事件處理函數(shù)
    }
      通過(guò)這幾個(gè)接口,已經(jīng)可以完成連接池的基本管理。在TimeEvent()函數(shù)中完成連接池的狀態(tài)檢驗(yàn)工作,fillPool()時(shí)連接池至少保持最小連接數(shù)。因?yàn)槲覀円4婷恳粋€(gè)連接的狀態(tài),所以還需要一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象:
    class ConnectionObject{
      public java.sql.Connection con; public boolean inUse; //是否被使用標(biāo)志
      public long lastAccess; //最近一次開(kāi)始使用時(shí)間
      public int useCount; //被使用次數(shù)
    }
    加入了ConnectionObject對(duì)象后,在ConnectionPool中操作的應(yīng)該只是ConnectionObject,而其他進(jìn)程需要的只是ConnectionObject的con屬性,因此我們?cè)偌尤胍粋€(gè)類(lèi),作為其他進(jìn)程獲得與返回連接的接口: CLASS Conn{
      GetConnection(); //從連接池中取出一個(gè)有效連接
      CloseConnection(); //返回連接,此時(shí)并沒(méi)有關(guān)閉連接,只是放回了連接池
      DestroyPool(); //銷(xiāo)毀連接池
    }
      最后我們的整個(gè)系統(tǒng)總的架構(gòu)如下:
         
    通過(guò)上面的介紹,我們可以看出,連接池技術(shù)的關(guān)鍵就是其自身的管理機(jī)制,以上的管理流程只是本人一點(diǎn)見(jiàn)解,關(guān)鍵是想向大家介紹一種思路,在此基礎(chǔ)上,您可以進(jìn)一步完善連接池技術(shù)為您所用。


    posted @ 2006-03-14 14:36 jht 閱讀(295) | 評(píng)論 (0)編輯 收藏
    Adapter模式
    使用Adapter模式的目的:把一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶(hù)端需要的接口。
    適用場(chǎng)合:
       當(dāng)你想使用一個(gè)現(xiàn)有類(lèi)的功能,但是它的接口不能滿(mǎn)足你的需要
       當(dāng)你想創(chuàng)建一個(gè)循環(huán)使用的類(lèi),用于使一些沒(méi)有相互聯(lián)系的類(lèi),或者是未知的將來(lái)會(huì)引進(jìn)的類(lèi)之間協(xié)調(diào)合作完成某些功能。也就是說(shuō),這些類(lèi)不必要具備一致的接口
       當(dāng)你要使用數(shù)個(gè)現(xiàn)有的的子類(lèi),但是要對(duì)每一個(gè)子類(lèi)進(jìn)行接口的改寫(xiě)變得很不切實(shí)際。
     
    具體的例子
       變壓器(Adapter),變壓器把一種電壓變換成另一種電壓。美國(guó)的生活用電電壓是110V,而中國(guó)的電壓是220V。如果要在中國(guó)使用美國(guó)電器,就必須有一個(gè)能把220V電壓轉(zhuǎn)換成110V電壓的變壓器。這個(gè)變壓器就是一個(gè)Adapter。
     
    客戶(hù)買(mǎi)回了美國(guó)的電器Machine,工作電壓110V,電器插頭為3相(陰、陽(yáng)、地級(jí)),所以需要一個(gè)電壓和相級(jí)的轉(zhuǎn)換器或者說(shuō)是適配器來(lái)使這個(gè)Machine能在中國(guó)使用。
    一、類(lèi)的Adapter模式
    package Adapter;

    interface 電器需要使用
    {
        
    public void 兩相插口();
        
    public void 電壓_110V();
    }


    class 中國(guó)_供電
    {
        
    protected int v;
        
    public 中國(guó)_供電()
        
    {
            v
    =220;
            System.out.println(
    "中國(guó)供電提供的電壓是:" +v+"V");
        }

        
    //返回中國(guó)電壓的值
        public int voltage()
        
    {
            
    return v;
        }

    }

    class 變壓器_相位轉(zhuǎn)換器 extends 中國(guó)_供電 implements 電器需要使用 
    {

        
    public void 兩相插口() {
            System.out.println(
    "變壓器_相位轉(zhuǎn)換器——提供三相到兩相轉(zhuǎn)換操作,返回兩相插口");
            
        }


        
    public void 電壓_110V() {
            v 
    = this.voltage()/2;
            System.out.println(
    "變壓器_相位轉(zhuǎn)換器——轉(zhuǎn)換后提供電壓為:"+v+"V");
        }

        
    }


    public class ClassAdapter {

        
    public static void main(String[] args) {
            變壓器_相位轉(zhuǎn)換器 device 
    = new 變壓器_相位轉(zhuǎn)換器();
            
            device.電壓_110V();
            device.兩相插口();
            
            System.out.println(
    "經(jīng)過(guò)變壓器_相位轉(zhuǎn)換器的包裝(Warpper),在美國(guó)買(mǎi)來(lái)的電器能夠使用啦!^0^");

        }


    }


    二、對(duì)象的Adapter模式
    package Adapter;

    interface 電器需要使用_a
    {
        
    public void 兩相插口();
        
    public void 電壓_110V();
    }


    class 中國(guó)_供電_a
    {
        
    protected int v;
        
    public 中國(guó)_供電_a()
        
    {
            v
    =220;
            System.out.println(
    "中國(guó)供電提供的電壓是:" +v+"V");
        }

        
    //返回中國(guó)電壓的值
        public int voltage()
        
    {
            
    return v;
        }

    }

    class 變壓器_相位轉(zhuǎn)換器_a implements 電器需要使用_a 
    {
        中國(guó)_供電_a supply 
    = new 中國(guó)_供電_a();

        
    public void 兩相插口() {
            System.out.println(
    "變壓器_相位轉(zhuǎn)換器——提供三相到兩相轉(zhuǎn)換操作,返回兩相插口");
            
        }


        
    public void 電壓_110V() {
            supply.v 
    = supply.voltage()/2;
            System.out.println(
    "變壓器_相位轉(zhuǎn)換器——轉(zhuǎn)換后提供電壓為:"+supply.v+"V");
        }

        
    }


    public class ObjectAdapter {

        
        
    public static void main(String[] args) {
            變壓器_相位轉(zhuǎn)換器_a device 
    = new 變壓器_相位轉(zhuǎn)換器_a();
            
            device.電壓_110V();
            device.兩相插口();
            
            System.out.println(
    "經(jīng)過(guò)變壓器_相位轉(zhuǎn)換器的包裝(Warpper),在美國(guó)買(mǎi)來(lái)的電器能夠使用啦!^0^");

        }


    }


    posted @ 2006-02-24 21:13 jht 閱讀(1008) | 評(píng)論 (0)編輯 收藏

    設(shè)計(jì)模式學(xué)習(xí)(一) 工廠(chǎng)模式之簡(jiǎn)單工廠(chǎng)

    Creational Pattern:

    *creates objects for you rather than having you instantiate objects directly

    *gives your program more flexibility in deciding which objects need to be created for a given case

     

    工廠(chǎng)模式有以下三種形態(tài):

    簡(jiǎn)單工廠(chǎng)(Simple Factory)模式:又稱(chēng)靜態(tài)工廠(chǎng)方法(Static Factory Method)模式

    工廠(chǎng)方法(Factory Method)模式:又稱(chēng)多態(tài)性工廠(chǎng)(Polymorphic Factory)模式

    抽象工廠(chǎng)(Abstract Factory)模式:又稱(chēng)工具箱(Kit Toolkit)模式

     

    簡(jiǎn)單工廠(chǎng)模式其實(shí)是普通工廠(chǎng)模式的一個(gè)特例,今天就從這里開(kāi)始吧。

    其結(jié)構(gòu)可以簡(jiǎn)單地表示如下:


    SimpleFactory.jpg沒(méi)用
    Visio畫(huà),大家見(jiàn)諒呀


        我們從一個(gè)實(shí)際的例子來(lái)看這個(gè)簡(jiǎn)單工廠(chǎng)模式

    假設(shè)一個(gè)農(nóng)場(chǎng),專(zhuān)門(mén)向市場(chǎng)銷(xiāo)售各種水果,假設(shè)只提供良種的水果,蘋(píng)果和葡萄,我們?yōu)樗O(shè)計(jì)一個(gè)抽象類(lèi)Fruit,所有水果都必須實(shí)現(xiàn)這個(gè)接口

    package simple_Factory;
    //水果抽象出來(lái)的接口
    public interface Fruit {
        
    void grow();
        
    void harvest();
    }


    public class Apple implements Fruit {

        
    private int treeAge;

        
    public void grow() {
            log(
    "Apple is glowing");
            
        }


        
    private void log(String string) {
            System.out.println(string);        
        }


        
    public void harvest() {
            log(
    "Apple has been harvested.");
        }

        
        
    public int getTreeAge() {
            
    return treeAge;
        }


        
    public void setTreeAge(int treeAge) {
            
    this.treeAge = treeAge;
        }


    }


    public class Grape implements Fruit {

        
    private boolean seedless;
        
    public void grow() {
            log(
    "Grape is growing------");
        }


        
        
    public void harvest() {
            log(
    "Grape has been harvested.");
        }

        
    private void log(String string) {
            System.out.println(string);        
        }


        
    public boolean isSeedless() {
            
    return seedless;
        }


        
    public void setSeedless(boolean seedless) {
            
    this.seedless = seedless;
        }


    }


    public class OtherFruits implements Fruit {

        
    public void grow() {        
        }


        
    public void harvest() {        
        }


    }

     

    FruitFactory類(lèi),水果加工廠(chǎng),根據(jù)需要(不同參數(shù)代表不同的水果需求)給市場(chǎng)供給水果。

     

    package simple_Factory;

    //水果加工廠(chǎng),根據(jù)需要給市場(chǎng)供給水果
    public class FruitFactory {
        
    public static Fruit supplyFruit(String need)
        
    {
            
    if(need.equalsIgnoreCase("apple"))
                
    return new Apple();
            
    else if(need.equalsIgnoreCase("grape"))
                
    return new Grape();
            
    else
                
    return new OtherFruits();        
        }

    }

    測(cè)試方法:
    package simple_Factory;

    public class Test {

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args) {
            Fruit a 
    = FruitFactory.supplyFruit("apple");
            Fruit b 
    = FruitFactory.supplyFruit("Grape");
            Fruit c 
    = FruitFactory.supplyFruit("others");
            
            a.grow();a.harvest();
            b.grow();b.harvest();
            c.grow();c.harvest();
        }

    }


        自己弄懂和講給別人懂還是有很大差距的,第一篇文章雖然寫(xiě)好了,但是感覺(jué)不夠好,不知道能不能給初學(xué)者一點(diǎn)點(diǎn)幫助呢……

        自強(qiáng)不息,繼續(xù)努力!
    posted @ 2006-02-21 22:03 jht 閱讀(2186) | 評(píng)論 (7)編輯 收藏
    僅列出標(biāo)題
    共5頁(yè): 上一頁(yè) 1 2 3 4 5 
    主站蜘蛛池模板: 亚洲精品A在线观看| 巨胸喷奶水视频www免费视频 | 国产精品久久久亚洲| 亚洲一区视频在线播放| 亚洲色欲久久久综合网东京热| 亚洲欧洲校园自拍都市| 牛牛在线精品免费视频观看| 色屁屁在线观看视频免费| 久久久久国色av免费看| 无码区日韩特区永久免费系列| 91黑丝国产线观看免费| 亚洲国产精品无码久久久久久曰| 91亚洲国产在人线播放午夜| 亚洲国产系列一区二区三区| 成人精品国产亚洲欧洲| 在线免费中文字幕| 三年片在线观看免费观看高清电影 | 久久亚洲高清综合| 亚洲一区二区三区首页| 亚洲人成高清在线播放| eeuss草民免费| 午夜免费福利在线| 中文字幕亚洲综合久久| h片在线播放免费高清| 成人性生交大片免费看午夜a| 亚洲AV乱码一区二区三区林ゆな| 亚洲jjzzjjzz在线观看| 校园亚洲春色另类小说合集| 91青青国产在线观看免费| 亚洲高清无码专区视频| 亚洲精品一二三区| 久久精品成人免费观看| 亚洲国产成人久久综合区| 国产成人亚洲综合网站不卡| 无码囯产精品一区二区免费| 亚洲成A人片在线观看无码3D| 亚洲熟妇无码八V在线播放| 两个人日本WWW免费版| 四虎永久在线精品免费影视 | 亚洲精品理论电影在线观看| 91香蕉在线观看免费高清|