《有關(guān)J2EE的流言》PPT課件.ppt_第1頁(yè)
《有關(guān)J2EE的流言》PPT課件.ppt_第2頁(yè)
《有關(guān)J2EE的流言》PPT課件.ppt_第3頁(yè)
《有關(guān)J2EE的流言》PPT課件.ppt_第4頁(yè)
《有關(guān)J2EE的流言》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、聲明,本課件僅用于北京航空航天大學(xué)計(jì)算機(jī)學(xué)院的教學(xué); 本課件修改采用了一些網(wǎng)絡(luò)資源(論文、研究報(bào)告、技術(shù)報(bào)告等),在采用的時(shí)候并沒(méi)有準(zhǔn)確標(biāo)注引用信息。,有關(guān)J2EE的流言,1.關(guān)系-對(duì)象映射 2.EJB的簡(jiǎn)化 3.輕量級(jí)框架和容器,1. 對(duì)象-關(guān)系映射,對(duì)象-關(guān)系映射 (Object/Relation Mapping,簡(jiǎn)稱ORM) 面向?qū)ο蟮拈_(kāi)發(fā)方法是當(dāng)今企業(yè)級(jí)應(yīng)用開(kāi)發(fā)環(huán)境中的主流開(kāi)發(fā)方法 關(guān)系數(shù)據(jù)庫(kù)是 企業(yè)級(jí)應(yīng)用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲(chǔ)系統(tǒng) 對(duì)象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實(shí)體的兩種表現(xiàn)形式 業(yè)務(wù)實(shí)體在內(nèi)存中表現(xiàn)為對(duì)象 在數(shù)據(jù)庫(kù)中表現(xiàn)為關(guān)系數(shù)據(jù),數(shù)據(jù)持久化(對(duì)象-關(guān)系映射)方法: Entity

2、Bean 會(huì)話 bean 和 JDBC JDO(Java Data Object) Hibernate iBatis , TopLink, ,Entity Bean,實(shí)體Bean作為企業(yè)數(shù)據(jù)持久性機(jī)制具有如下優(yōu)點(diǎn): 標(biāo)準(zhǔn)化 透明的持久性 事務(wù)支持 基于組件的設(shè)計(jì) 容器管理的服務(wù)。EJB 容器使開(kāi)發(fā)人員不必管理常見(jiàn)的企業(yè)功能,如安全性、事務(wù)處理、連接合用和外部資源管理。,實(shí)體 bean 的主要缺點(diǎn): 設(shè)計(jì)復(fù)雜性。容器管理的服務(wù)和自動(dòng)且透明的持久性為整個(gè)應(yīng)用程序設(shè)計(jì)引入了復(fù)雜性。實(shí)體 bean 通常也可以通過(guò)會(huì)話 bean 來(lái)訪問(wèn),這意味著每個(gè)事務(wù)至少包含兩個(gè)企業(yè) bean,而通常會(huì)更多。 構(gòu)建周

3、期很長(zhǎng)。一個(gè) EJB 周期(設(shè)計(jì)構(gòu)建測(cè)試集成測(cè)試部署)所花的時(shí)間比可比的 Java 持久性解決方案多兩到三倍。 響應(yīng)時(shí)間。實(shí)體 bean 與 bean 實(shí)例的粒度相關(guān)。因此,開(kāi)發(fā)人員始終面臨選擇:要么將 bean 按原樣裝入,而在別的方面解決響應(yīng)時(shí)間長(zhǎng)的問(wèn)題;要么將數(shù)據(jù)分解成較小的實(shí)體,從而創(chuàng)建更復(fù)雜的系統(tǒng)體系結(jié)構(gòu)。 資源使用情況。實(shí)體 bean 消耗了大量系統(tǒng)資源。,會(huì)話 bean 和 JDBC,會(huì)話 bean 和 JDBC 組合最受認(rèn)可的優(yōu)點(diǎn)如下: 設(shè)計(jì)簡(jiǎn)單。從體系結(jié)構(gòu)設(shè)計(jì)觀點(diǎn)來(lái)看,通過(guò)會(huì)話 bean 來(lái)直接處理數(shù)據(jù)管理比使用實(shí)體 bean 簡(jiǎn)單得多。 細(xì)粒度的控制。因?yàn)闀?huì)話 bean 是

4、通用的工作程序組件,所以它們?cè)试S開(kāi)發(fā)人員完全控制整個(gè)持久性過(guò)程,包括高速緩存、持久性、并發(fā)性、同步及其它。相反,CMP 實(shí)體 bean 不允許開(kāi)發(fā)人員控制持久性機(jī)制,而 BMP 實(shí)體 bean 僅使開(kāi)發(fā)人員能夠定義應(yīng)發(fā)生什么,而不能定義應(yīng)在何時(shí)或什么樣的情況下發(fā)生。 成熟。JDBC 存在了七年左右!而實(shí)體 bean 出現(xiàn)至今只有三年多的時(shí)間。JDBC 的可靠性和最佳實(shí)踐對(duì)于 J2EE 持久性機(jī)制的開(kāi)發(fā)來(lái)說(shuō)是一筆非常寶貴的資產(chǎn)。 速度。因?yàn)殚_(kāi)發(fā)人員完全控制在會(huì)話 bean 中使用的數(shù)據(jù)訪問(wèn)機(jī)制,所以可以針對(duì)某些任務(wù)優(yōu)化數(shù)據(jù)訪問(wèn)和持久性邏輯。由于直接和有目的的操作,這可以產(chǎn)生極快的響應(yīng)時(shí)間。,缺點(diǎn)

5、如下: 實(shí)現(xiàn)復(fù)雜。雖然這種系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)相當(dāng)簡(jiǎn)單,但實(shí)際的會(huì)話 bean 實(shí)現(xiàn)常常十分復(fù)雜。如果應(yīng)用程序的數(shù)據(jù)需求相當(dāng)復(fù)雜,那么可能就無(wú)法實(shí)現(xiàn)管理數(shù)據(jù)庫(kù)連接、確保數(shù)據(jù)完整性以及正確處理事務(wù)語(yǔ)義這些關(guān)鍵任務(wù)。開(kāi)發(fā)人員常常需要實(shí)現(xiàn)某種類型的高速緩存同時(shí)確保最優(yōu)性能。構(gòu)造這種高速緩存機(jī)制使該系統(tǒng)的開(kāi)發(fā)和維護(hù)進(jìn)一步復(fù)雜化。 非固有的事務(wù)性。實(shí)體 bean 本質(zhì)上是事務(wù)性組件,這些組件具有可配置的事務(wù)語(yǔ)義;而會(huì)話 bean 沒(méi)有。將事務(wù)語(yǔ)義直接編碼到應(yīng)用程序代碼中時(shí),開(kāi)發(fā)人員必須處處小心以確保每個(gè)功能的業(yè)務(wù)規(guī)則、流控制和事務(wù)完整性都得以保護(hù)并且可以容錯(cuò)。在實(shí)體 bean 開(kāi)發(fā)中,這些細(xì)節(jié)都由容器處理

6、。 持久性不是自動(dòng)的或者得不到保證。在實(shí)體 bean 操作中,容器處理 bean 狀態(tài)的持久性,并確保這種數(shù)據(jù)得到保護(hù),供以后使用。對(duì)于會(huì)話 bean,將數(shù)據(jù)保持在安全、長(zhǎng)期的數(shù)據(jù)存儲(chǔ)中是開(kāi)發(fā)人員的責(zé)任。,JDO(Java Data Object),JDO 提供了面向?qū)ο蟮某志脭?shù)據(jù)存儲(chǔ)。開(kāi)發(fā)人員使用 POJO(無(wú)格式普通 Java 對(duì)象,plain ordinary Java object)來(lái)裝入和存儲(chǔ)持久數(shù)據(jù)。 會(huì)話 bean 與 JDO 結(jié)合類似于將它們與 JDBC 結(jié)合,但 JDO 是以更面向?qū)ο笄腋?Java 為中心的觀點(diǎn)處理該問(wèn)題的。,會(huì)話 bean 和 JDO 提供了許多優(yōu)點(diǎn),其

7、中有些來(lái)自會(huì)話 bean,而其它的來(lái)自 JDO,使用會(huì)話 bean 而不使用實(shí)體 bean 進(jìn)行交付的主要優(yōu)點(diǎn)有兩個(gè): 設(shè)計(jì)簡(jiǎn)單。從體系結(jié)構(gòu)設(shè)計(jì)的觀點(diǎn)來(lái)看,直接通過(guò)會(huì)話 bean 來(lái)處理數(shù)據(jù)管理比使用實(shí)體 bean 簡(jiǎn)單得多。 細(xì)粒度控制。因?yàn)闀?huì)話 bean 是通用的工作程序組件,所以它們?cè)试S開(kāi)發(fā)人員對(duì)整個(gè)持久性進(jìn)程進(jìn)行完全控制,包括高速緩存、持久性、并發(fā)性和同步等。,這兩個(gè)優(yōu)點(diǎn)并不是會(huì)話 beanJDO 組合所特有的:會(huì)話 bean 與 JDBC 的結(jié)對(duì)也存在這兩個(gè)優(yōu)點(diǎn)。但是,JDO 確實(shí)提供了一些獨(dú)特的優(yōu)點(diǎn): 編碼簡(jiǎn)單。JDO 體系結(jié)構(gòu)向開(kāi)發(fā)人員隱藏了低級(jí)別的持久性細(xì)節(jié),從而使他們專注于從

8、業(yè)務(wù)過(guò)程的角度管理對(duì)象,不至于陷入數(shù)據(jù)持久性邏輯的瑣碎細(xì)節(jié)中。 提高的生產(chǎn)力。JDO 程序員能完全在面向?qū)ο蟮姆独齼?nèi)操作。這通常會(huì)使開(kāi)發(fā)更簡(jiǎn)潔、更平滑且更不易出錯(cuò),因?yàn)槌绦騿T不用在關(guān)系的思想體系和面向?qū)ο蟮乃枷塍w系之間頻繁地轉(zhuǎn)換。 面向?qū)ο蟮某志眯?。JDO 的面向?qū)ο蟊举|(zhì)不僅提高了開(kāi)發(fā)人員生產(chǎn)力,而且它還考慮到比關(guān)系持久性所提供的還要豐富的持久性機(jī)制。JDO 并不僅僅使 Java 對(duì)象持久;它還透明地處理整個(gè)相關(guān)對(duì)象圖的持久性。因此,當(dāng)實(shí)例被持久存儲(chǔ)時(shí),它所維護(hù)的對(duì)其它對(duì)象實(shí)例的任何內(nèi)部引用也都被持久存儲(chǔ)(除非它們已被聲明為瞬態(tài))。JDO 還存儲(chǔ)類型層次結(jié)構(gòu)的完整信息,并能根據(jù)類型(父類和接口

9、)實(shí)現(xiàn)請(qǐng)求,而不是只了解持久實(shí)例的特定局部類型。,缺點(diǎn): JDO 不成熟。JDO 還處于初期。到編寫(xiě)本文時(shí),JDO 1.0 規(guī)范的發(fā)布還不到一年。其結(jié)果是,JDO 社區(qū)還非常小,最大且最具威望的 JDO 門(mén)戶網(wǎng)站可以炫耀的也只是其會(huì)員有五千多一點(diǎn)。盡管這些數(shù)據(jù)并不表示 JDO 是一種差勁的技術(shù),但它們確實(shí)表明它還處于前沿。幾乎沒(méi)有幾家公司愿意嘗試在業(yè)務(wù)級(jí)實(shí)現(xiàn)中使用 JDO。 會(huì)話 bean 不是事務(wù)性的。J2EE 客戶機(jī)不能直接訪問(wèn) JDO 對(duì)象。必須由 servlet 或會(huì)話 bean 處理進(jìn)入請(qǐng)求。因此,盡管很容易將 JDO 對(duì)象聲明為事務(wù)性的,但仍必須使用非事務(wù)性組件來(lái)訪問(wèn)它們。在將事務(wù)

10、語(yǔ)義直接編碼到會(huì)話 bean 的應(yīng)用程序代碼中時(shí),開(kāi)發(fā)人員必須盡一切可能確保每個(gè)功能的業(yè)務(wù)規(guī)則、流程控制和事務(wù)完整性都得以保留并是容錯(cuò)的。盡管使用容器管理的事務(wù)可以極大地緩解這一問(wèn)題,但是這樣做限制了開(kāi)發(fā)人員對(duì)持久性進(jìn)程的控制,并除去了許多控制事務(wù)粒度所產(chǎn)生的體系結(jié)構(gòu)上的靈活性。,Hibernate,Persistent Object是簡(jiǎn)單的業(yè)務(wù)實(shí)體對(duì)象(要被持久化的對(duì)象)。通過(guò)hibernate被透明的持久化到數(shù)據(jù)庫(kù)中。,表person 開(kāi)發(fā)一個(gè)Person類:它和普通的類沒(méi)有什么不同,但它符合bean的規(guī)范,即為每個(gè)屬性提供get,set方法 用xml映射文件描述其映射數(shù)據(jù)庫(kù)的方式 編寫(xiě)P

11、erson.hbm.xml( 建議命名為:“類名”+“hbm.xml”),并且放置在Person類相同包目錄下 通過(guò)hibernate api對(duì)其持久化,為了運(yùn)行要配置數(shù)據(jù)庫(kù):以mysql數(shù)據(jù)庫(kù)為例子:(只用勞動(dòng)1次即可) perties 在hibernate源程序的根目錄可以找到此文件模板,copy到我們的類的根目錄。即:“.h” 該文件前兩項(xiàng)都填好了,只用填數(shù)據(jù)庫(kù)連接和username,password,hibernate.dialect net.sf.hibernate.dialect.MySQLDialect hibernate.connection.driv

12、er_class org.gjt.mm.mysql.Driver hibernate.connection.url jdbc:mysql:/localhost/test?useUnicode=true /* A stateless session bean requesting that a remote * business interface be generated for it.*/StatelessRemotepublic class HelloWorldBean public String sayHello() return Hello World;,3. 輕量級(jí)框架和容器,自從E

13、JB規(guī)范成型以來(lái),很多事情已經(jīng)變了樣 EJB規(guī)范中的一些部分已經(jīng)過(guò)時(shí)。 EJB和RMI之間那種傳統(tǒng)的緊密關(guān)系也開(kāi)始顯得有些不合時(shí)宜,這一方面是因?yàn)閣eb services的迅速發(fā)展,另一方面是因?yàn)槿藗儼l(fā)現(xiàn):很多時(shí)候EJB只需要本地接口。 EJB最善于實(shí)現(xiàn)業(yè)務(wù)對(duì)象分布的體系結(jié)構(gòu),然而這種體系結(jié)構(gòu)究竟有多大程度的普遍性,如今看來(lái)是相當(dāng)值得懷疑的。,expert one-on-one J2EETM Development without EJB 中文版,從人們使用EJB的情況也可以看出EJB的優(yōu)缺點(diǎn)。大多數(shù)開(kāi)發(fā)者和架構(gòu)師僅僅使用無(wú)狀態(tài)session bean(SLSB)和(如果需要異步調(diào)用的話)me

14、ssage-driven bean(MDB)。EJB容器為支持SLSB而提供的服務(wù)相當(dāng)簡(jiǎn)單,這也就是說(shuō),對(duì)于這些應(yīng)用程序來(lái)說(shuō),整個(gè)EJB容器的高昂成本很難說(shuō)是合理的。 盡管EJB已經(jīng)存在了五年之久、并且在很多J2EE項(xiàng)目中得到應(yīng)用,但是很顯然,由于它的復(fù)雜性,很多開(kāi)發(fā)者仍然沒(méi)有真正理解它。譬如說(shuō),我所面試過(guò)的很多開(kāi)發(fā)者都無(wú)法正確地說(shuō)出EJB容器如何處理異常,自然也就更不清楚容器異常處理與事務(wù)管理之間的關(guān)系了。 為了解決EJB存在的問(wèn)題,EJB規(guī)范也在變得日益復(fù)雜。如今,EJB規(guī)范是如此繁復(fù)冗長(zhǎng),幾乎沒(méi)有哪個(gè)開(kāi)發(fā)者或者架構(gòu)師有時(shí)間去通讀它,更不用說(shuō)是理解它了。就像應(yīng)用程序一樣,如果技術(shù)規(guī)范變得日

15、益復(fù)雜,并且需要不斷地加入一些權(quán)宜之計(jì),通常就說(shuō)明存在一些根本性的問(wèn)題。,EJB是如此復(fù)雜,這也就意味著使用EJB的開(kāi)發(fā)效率會(huì)相對(duì)較低。有不少工具力圖解決這個(gè)問(wèn)題,從“企業(yè)”IDE到XDoclet和其他代碼生成工具,不一而足。但這些工具只能把復(fù)雜性暫時(shí)掩蓋起來(lái),而且采用這些工具也會(huì)增加開(kāi)發(fā)成本。 嚴(yán)格的單元測(cè)試和測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test Driven Development,TDD)正在日益變得流行這也是情理之中的。人們清楚地看到:大量使用EJB的應(yīng)用程序很難測(cè)試。用測(cè)試先行(test first)的方法開(kāi)發(fā)EJB應(yīng)用需要做很多工作,因此,應(yīng)當(dāng)從根本上盡量減少應(yīng)用代碼對(duì)EJB容器的依賴。 對(duì)于E

16、JB致力解決的中間件問(wèn)題,面向方面的程序設(shè)計(jì)(Aspect Oriented Programming,AOP)的飛速發(fā)展為我們指出了一條更為強(qiáng)大并且很可能更為簡(jiǎn)單的解決之道。從某種意義上,AOP可以看作EJB核心概念的更為廣泛的應(yīng)用,然而AOP還遠(yuǎn)不止是EJB潛在的替代品,它還有更多的潛力可挖。,在大多數(shù)時(shí)候,源代碼級(jí)的元數(shù)據(jù)屬性(就像.NET中所使用的那樣)可以非常優(yōu)雅地取代基于XML的部署描述符從EJB 1.1起,我們就一直在跟這些冗長(zhǎng)的XML文件周旋。EJB 3.0似乎已經(jīng)開(kāi)始朝著這個(gè)方向努力了,但它背負(fù)著如此沉重的歷史包袱,需要走的路還很長(zhǎng)。 經(jīng)驗(yàn)還表明,EJB往往招致更高的開(kāi)發(fā)成本,

17、并且提供的利益也并不像它最初所鼓吹的那么豐富。,根據(jù)我們的經(jīng)驗(yàn),EJB的失敗之處主要有以下幾點(diǎn): EJB并非降低復(fù)雜度所必須的,它倒是引入了很多新的復(fù)雜度。 作為一種持久化機(jī)制,entity bean的嘗試是徹底失敗的。 與其他J2EE技術(shù)(例如servlet)相比,使用EJB的應(yīng)用程序更加缺乏不同應(yīng)用服務(wù)器之間的可移植性。 盡管EJB承諾提供高度可伸縮性,然而EJB系統(tǒng)的性能常常不夠理想,而且EJB也并不是獲得可伸縮性所必須的。盡管很難得到準(zhǔn)確的統(tǒng)計(jì)數(shù)據(jù),但實(shí)際經(jīng)驗(yàn)告訴我們:有相當(dāng)一部分項(xiàng)目正是因?yàn)檫^(guò)度使用EJB而不得不重新進(jìn)行架構(gòu)設(shè)計(jì),甚至是徹底失敗。 EJB可能讓簡(jiǎn)單的事情變得困難。譬如

18、說(shuō),Singleton設(shè)計(jì)模式(或者與之類似的創(chuàng)建型模式)就很難在EJB環(huán)境下實(shí)現(xiàn)。,只有在提供遠(yuǎn)程調(diào)用(remoting)這件事上,EJB是標(biāo)準(zhǔn)J2EE架構(gòu)中唯一的實(shí)現(xiàn)方式。不過(guò),正如我們將要看到的,只有在RMI/IIOP遠(yuǎn)程調(diào)用的領(lǐng)域里,EJB才算得上一種出色的實(shí)現(xiàn)技術(shù) 對(duì)于那些真正需要對(duì)象分布的應(yīng)用,EJB仍然是上佳之選尤其是當(dāng)它們完全用Java實(shí)現(xiàn)、或者用IIOP作為通信協(xié)議時(shí)。不過(guò),這種應(yīng)用比人們通常想象的要罕見(jiàn)得多。 EJB不是J2EE的全部。即便使用沒(méi)有EJB的J2EE,我們也無(wú)須重新發(fā)明輪子我們不必重新實(shí)現(xiàn)J2EE已經(jīng)提供的服務(wù),只是改變使用它們的方式而已。,輕量級(jí)框架,Spr

19、ing Pico HiveMind,Proposed Web App Layering,Presentation/Business/Persistence Struts+Spring+Hibernate Struts + Spring + EJB JavaServer Faces + Spring + iBATIS Spring + Spring + JDO Flex + Spring + Hibernate Struts + Spring + JDBC You decide,More Application Layering Combinations,Suns traditional sol

20、ution to middle tier business logic Specification that did not always work as projected in real applications. EJBs are less portable than POJO based architectures. Inconsistencies by vendors make EJBs break the “write once, run anywhere” rule. Fosters over-engineering in most cases Entity Beans very

21、 limiting compared to alternatives such as Hibernate. Performance with POJOs are much faster then EJBs. EJBs run in a heavy container Your code becomes coupled to EJB API. We need to redefine what J2EE means,EJB (=2.x) in the Service Layer,Spring - IOC,IOC,即控制反轉(zhuǎn)模式(也稱作依賴性介入),這是Spring的核心,也是精髓。 其基本概念是:

22、 不創(chuàng)建對(duì)象,但是描述創(chuàng)建它們的方式。 在代碼中不直接與對(duì)象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。 容器 (在 Spring 框架中是 IOC 容器) 負(fù)責(zé)將這些聯(lián)系在一起。,傳統(tǒng)的程序開(kāi)發(fā),在一個(gè)對(duì)象中,如果要使用另外的對(duì)象,就必須得到它(自己new一個(gè),或者從JNDI中查詢一個(gè)),使用完之后還要將對(duì)象銷(xiāo)毀(比如Connection等),對(duì)象始終會(huì)和其他的接口或類藕合起來(lái)。 IoC的一個(gè)重點(diǎn)是在系統(tǒng)運(yùn)行中,動(dòng)態(tài)的向某個(gè)對(duì)象提供它所需要的其他對(duì)象。 這一點(diǎn)是通過(guò)DI(Dependency Injection,依賴注入)來(lái)實(shí)現(xiàn)的。,在典型的 IOC 場(chǎng)景中,容器創(chuàng)建了所有對(duì)象,并設(shè)置必要的屬性將它們連接在一起,決定什么時(shí)間調(diào)用方法。 下表列出了 IOC 的一個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論