




已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀
(產(chǎn)業(yè)經(jīng)濟(jì)學(xué)專業(yè)論文)基于JBOSS平臺的J2EE應(yīng)用優(yōu)化研究與實(shí)踐.pdf.pdf 免費(fèi)下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 摘要 本論文的研究目的是希望通過對j 2 e e 技術(shù)體系的深入研究,總結(jié)出在開發(fā) j 2 e e 應(yīng)用的時(shí)候容易出現(xiàn)的性能問題,并結(jié)合實(shí)例提出相應(yīng)的解決方案。這些 問題和解決方案都具有普遍的適應(yīng)性,因此可供開發(fā)一般的j 2 e e 項(xiàng)目所借鑒。 j 2 e e 是由s u n 公司推出的一種全新概念的模型,目前已成為企業(yè)級應(yīng)用, 電子商務(wù)交易的主要開發(fā)平臺。j 2 e e 已經(jīng)被證明是個(gè)穩(wěn)定的、可擴(kuò)展的、成 熟的平臺,它具有平臺獨(dú)立的特性。但是做為j 2 e e 技術(shù)的核心之一的e j b ,其 性能問題一直受到廣泛的質(zhì)疑,普遍被認(rèn)為執(zhí)行效率低下。正是由于j 2 e e 在性 能上的缺陷,因此我們在開發(fā)j 2 e e 應(yīng)用時(shí),必須重視應(yīng)用的優(yōu)化工作,努力做 到即可以充分利用j 2 e e 的種種優(yōu)勢,又可以使項(xiàng)目高效的運(yùn)行。 論文首先從j a v a 語言的內(nèi)存管理出發(fā),深入研究了j a v a 語言內(nèi)存分配及 回收的機(jī)制,重點(diǎn)研究了j a v a 開發(fā)中可能會(huì)出現(xiàn)的內(nèi)存泄露問題。并提出了避 免內(nèi)存泄露和如何檢測內(nèi)存泄露的方法。其次,本文深入研究了e j b 技術(shù)的原理, 并結(jié)合j b o s s 平臺研究如何提高e j b 性能的問題。第三,本文對j 2 e e 集群技術(shù) 做了深入的分析,并對流行的各種集群方式的性能加以比較,提出了一種比較理 想的集群方式第四,本文對現(xiàn)有的多種w e b 層負(fù)載均衡方式加以研究,發(fā)現(xiàn)它 們都不能真實(shí)的按照各服務(wù)器結(jié)點(diǎn)的負(fù)載均衡情況均勻的分配請求。為此,筆者 提出基于負(fù)載檢測的負(fù)載均衡方案,其核心是給決定負(fù)載大小的各因素分配一定 的權(quán)重,在每次請求轉(zhuǎn)發(fā)時(shí),各服務(wù)器結(jié)點(diǎn)按照事先分配的權(quán)重對其實(shí)際負(fù)載的 大小予以量化,并將量化后的結(jié)果反饋到負(fù)載均衡器,由負(fù)載均衡器挑選其中負(fù) 載最輕的服務(wù)器轉(zhuǎn)發(fā)請求第五,本文最后將前面所研究的種種優(yōu)化技術(shù)綜合運(yùn) 用到筆者目前所開發(fā)的項(xiàng)目中去,并取得了一定的效果。 關(guān)鍵詞;j 2 e ej b o s s優(yōu)化 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 t h eo b j e c t so ft h i sp a p e ri st oc o n c l u d es o m em e t h o d st oi n c r e a s et h ep e f o l m a n c co f j 2 e e a p p l i c a t i o na tt h eb a s i so f r e s e a r c h i n gt h e a r c h i t e c h e ro f j 2 e e p l a t f o r m j 2 e e s p e c i f i c a t i o nm a k e st h en t i e re n t e r p r i s ea p p l i c a t i o nd e v e l o p m e n tm u c h m o l ee a s i e r , a n dt h es e r v e r sb a s e do ni to f f e rt h er u n n i n ge n v i r o n m e n ta n ds y s t e ms e r - s e r v i c e ss u c ha st r a n s a c t i o n , d a t a b a s ea c c e s s i n g , j m sa n ds e c u r i t ys e r v i c e t h em a j o r a d v a n t a g eo f j 2 e e i si t s “w r i t eo n c e ,r u na n y w h e r e ”j a v ac o m p o n e n t s ,w h i c hm e a n s t h a ti ti si n d e p e n d e n to ft h eo p e r a t i o ns y s t e m ,a n dt h ej 2 e ep r o d u c t i o n se a rb ed e p l o - y e dt oa n yj 2 e es e r v e r si n c l u d i n gt h es e r v e ri nn ts y s t e me n v i r o n m e n t b e c a u s et h e j 2 e et e c h n o l o g yh a ss om a n ym e r i t s s ot h et e c h n o l o g yo fj 2 e ep l a t f o r mg r a d u a l l y b e c o m et h ef a c ts t a n d a r do fe n t e r p r i s ec o m p o n e n td e p l o y m e n t b u t , a st h ec o r eo fj 2 e e p l a f f o r m , f j bt e c h n o l o g yi st h i n k e da s al o we f f i c i e n tt e c h n o l o g y b e c a n s ec j bt e c h n - o l o g ya r ed e v e l o p e da tt h eb a s i so fs e r i a l i z a t i o nt e c h n o l o g ya n dr e m o t em e t h o di n v o - c a t i o nt e c h n o l o g y s e r i a l i z a t i o ni su s e dt ot r a n s f o r mo b j e c t sb e t w e e np r o c e s s e s b u tt h e i m p l e m e n t i o no fs e r i a l i z a t i o ni sn o td 鎬i g n e dp e f e r c t l yi nj a v ap l a t f o r m , s ot h ee f f i c i e n c yo fs e r i a l i z a t i o ni sn o ts og o o d t h es a l n ea ss e r i a l i z a t i o nt e c h n o l o g y ,t h er e m o t em e t h o di n v o c a t i o nt e c h n o l o g ya l s of a c e dt h ec r i t i c i s mo fb a dp e r f o m a n c e b e c a u s eo f t h et h e s ed i s a d v a n t a g e d e v e l o p e r so f j 2 e ea p p l i c a t i o nm u s tc a r e f u l l yd e v e l o pt h e i r w o r kt oi m p r o v et h ep e f f e r m e n c eo fj 2 e ea p p l i c a t i o n i nm yp a p e r ,f i r s t l y , ir e s e a r c h e dt h em e c h a n i s mo fj a v am e m o r ya l l o c a t i o na n d m e m o r yr e c o v e r i n g 1e m p h a s e do nt h ep r o b l e mo fm e m o r yl e a k ia n a l y s e dt h er e a s o n o fm e m o r yl e a ka n dh o wt oc h e c kt h em e m o r yl e a ka n dh o wt oa v o i dt h em e m o r y l e a k s e c o n d l y ,ir e a s e a r c h e dh o wt oi m p r o v et h ep e r f o r m a n c eo ft h ee j bc o m p o n e n t s i nj b o s s p l a t f o r m t h i r d l y ,i r e a s e a r c h e dt h e t h e o r y o fj 2 e ec l u s t e ra n dt h e h n p l e m e n t i o n s o fa l lk i n d so fc l u s t e ri nt h ej 2 e ea r c m t e c t u r ei n j b o s s p l a t f o r m f i n a l l y , ip r o p o s eal o a db a l a n c i n g f o rh t t p s e r v l e tl e v e lp o l i c ya n dm a k ei t i m p l e m e n t e d k e y w o r d s :j 2 e e ,j b o s s ,p e r f o r m a n c e r u n n 礬g 2 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 第一章緒論 1 1 課題的研究背景與意義 本課題主要是作者在參與了j 2 e e 平臺應(yīng)用項(xiàng)目后的分析工作的一部分。本 課題主要研究對j 2 e e 應(yīng)用進(jìn)行優(yōu)化的若干技術(shù)問題。 j 2 e e 是由s u n 公司推出的_ 二種全新概念的模型,是在分布式環(huán)境中的一種 體系結(jié)構(gòu),它提供了一種基于組件的設(shè)計(jì)、開發(fā)、集成部署企業(yè)應(yīng)用系統(tǒng)的方法。 j 2 e e 平臺提供了多層分布式的應(yīng)用系統(tǒng)模型,可重用的組件、統(tǒng)一的安全性模 型和靈活的事務(wù)控制,基于組件的j 2 e e 企業(yè)應(yīng)用具有平臺獨(dú)立性,所以不受任 何軟件產(chǎn)品和任何軟件廠家a p i 的限制回j 2 e e 應(yīng)用已經(jīng)成為企業(yè)級應(yīng)用,電子 商務(wù)交易的主要開發(fā)平臺符合j 2 e e 應(yīng)用標(biāo)準(zhǔn)的產(chǎn)品主要有b 隊(duì)公司的 i g e b l o g i c 、i b m 的w e b s p h e r e 以及開源的j b o s s 等,還有包括著名數(shù)據(jù)庫廠商 o r a c l e 、s y b a s e 在內(nèi)的上百種產(chǎn)品。它們基本上都是應(yīng)用服務(wù)器系統(tǒng),因此j 2 e e 通常指的是應(yīng)用服務(wù)器平臺。j 2 e e 已經(jīng)被證明是一個(gè)穩(wěn)定的、可擴(kuò)展的、成熟 的平臺,它具有平臺獨(dú)立的特性。 j 2 e e 平臺獨(dú)立性包括兩個(gè)方面,一是j a v a 語言的平臺獨(dú)立性,二是j 2 e e 標(biāo)準(zhǔn)的平臺獨(dú)立性j a v a 是一種跨平臺的語言,在任何平臺上,只要有j a v a v i r t u a lm a c h i n e ( j v m ) ,就能在不同平臺上執(zhí)行同一個(gè)j a v a 程序。另外,j 2 e e 標(biāo)準(zhǔn)的平臺獨(dú)立性使得任何符合j 2 e e 標(biāo)準(zhǔn)的應(yīng)用服務(wù)器之間可以共用標(biāo)準(zhǔn)的組 件開發(fā)也就是說,在w e b l 0 ( ;i c 下開發(fā)的應(yīng)用,也可以移植到j(luò) b o s s 平臺下, 這樣在電子商務(wù)應(yīng)用的開發(fā)中,可以任意的選擇和購買通用的組件,從而加速開 發(fā)的進(jìn)程最后,j 2 e e 的平臺獨(dú)立性是應(yīng)用的移植變得輕松起來。在一個(gè)j 2 e e 應(yīng)用中,你可以把w e b l o g i c + o r a c l e 的應(yīng)用移植到j(luò) b o s s + s y b a s e 上,不需要 改動(dòng)任何源代碼。只需要進(jìn)行一些不算太復(fù)雜的配置即可這也是j 2 e e 為何如 此流行的一個(gè)重要原因。 j 2 e e 技術(shù)雖然受到了廣泛的歡迎,但是做為j 2 e e 技術(shù)的核心之一的e j b , 其性能問題一直受到廣泛的質(zhì)疑,主要的質(zhì)疑集中在兩個(gè)方面。一是對象序列化 技術(shù),對象序列化技術(shù)是e j b 跨平臺通迅的基礎(chǔ),所有的e j b 通訊都依賴于對象 序列化技術(shù),通過對序列化技術(shù)實(shí)現(xiàn)了對象在多個(gè)進(jìn)程之間的復(fù)制傳遞。這本是 一個(gè)很清晰的設(shè)計(jì),但是由于j a v a 平臺對于對象序列化的實(shí)現(xiàn)并不盡如人意, 序列化與反序列化的效率太低,導(dǎo)致對象傳輸?shù)乃俣葮O慢。二是r m i ( 遠(yuǎn)程方 法調(diào)用) ,e j b 限定必須遵守c o r b a 規(guī)范的r m i i i o p 技術(shù),這種技術(shù)的原理是 通過本地的一個(gè)遠(yuǎn)程對象代理,通過網(wǎng)絡(luò)上的多次通訊實(shí)現(xiàn)對遠(yuǎn)程對象的方法調(diào) 謝小樂,( j 2 e e 經(jīng)典實(shí)例詳解 ,人民郵電出版社,2 0 0 2 ,2 3 5 2 3 9 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 用,這種設(shè)計(jì)架構(gòu)的初衷是隱藏對象的具體位置,可以讓對象使用者不用關(guān)心對 象的實(shí)際位置。但是這種方法的實(shí)現(xiàn)性能極差。由于j 2 e e 技術(shù)先天上存在這些 性能上缺陷,因此我們在開發(fā)j 2 e e 應(yīng)用時(shí),必須重視應(yīng)用的優(yōu)化工作,努力做 到即可以充分利用j 2 e e 的種種優(yōu)勢,又可以使項(xiàng)目高效的運(yùn)行。 1 2 企業(yè)計(jì)算平臺的發(fā)展概況 1 2 1 傳統(tǒng)的應(yīng)用體系結(jié)構(gòu) 傳統(tǒng)的應(yīng)用體系結(jié)構(gòu)主要有兩種c s ( c l i e n t s e r v e r ) 模式和b s 模式。 ( 1 ) c s 模式( 客戶機(jī)服務(wù)器) 模式 圖1 1c s 模式 資料來源:本研究整理 目前絕大多數(shù)網(wǎng)絡(luò)應(yīng)用都采用這種模式,它將訪問數(shù)據(jù)庫的操作放在客戶端 執(zhí)行,即客戶應(yīng)用程序直接對數(shù)據(jù)庫進(jìn)行操作。一般企業(yè)的m i s 系統(tǒng)都采用這種 方式。 ( 2 ) b s 模式( 瀏覽器服務(wù)器) 模式: 一妒 客戶端瀏覽器 w c b m 務(wù)器 圖1 2a s 模式 資料來源:本研究整理 a s 模式訪問數(shù)據(jù)庫的工作交由客戶端的瀏覽器來完成。不必安裝特定的程 序。隨著i n t e r n e t i n t r a n e t 技術(shù)的發(fā)展,網(wǎng)絡(luò)應(yīng)用中的客戶端零管理成了眾多 企業(yè)的需要,所以這種體系結(jié)構(gòu)正迅速的發(fā)展起來。 1 2 2 多層應(yīng)用體系結(jié)構(gòu) 多層應(yīng)用體系結(jié)構(gòu)就是傳統(tǒng)的兩層結(jié)構(gòu)的客戶端與服務(wù)器之間加入一層中 間層,我們稱之為應(yīng)用層。應(yīng)用程序服務(wù)器就放在該層。應(yīng)用程序服務(wù)器是駐留 2 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 在服務(wù)器上的程序,為各種應(yīng)用提供了商業(yè)邏輯。服務(wù)器可以是網(wǎng)絡(luò)的一個(gè)組成 部分,尤其是分布式的網(wǎng)絡(luò)。服務(wù)器程序?yàn)榭蛻魴C(jī)上的程序提供服務(wù)。 應(yīng)用程序服務(wù)器最常用的場合是基于w e b 的三層體系結(jié)構(gòu)。 第一層( 前端) :b r o w s e r 瀏覽器( t h 玳c l i e n t 瘦客戶機(jī)) ,為用戶提供 g u i 圖形接口 第二層( 中間層) ;a p p l i c a t i o ns e r v e r :應(yīng)用服務(wù)器。 第三層( 后端) :d a t a b a s es e r v e r ,數(shù)據(jù)庫服務(wù)器。 應(yīng)用服務(wù)器位于三層結(jié)構(gòu)中的第二層,它是三層體系的集成部分,和w e b s e r v e r 聯(lián)合在一起處理客戶的請求。 應(yīng)用服務(wù)器的基本功能包括: ( 1 ) 組件管理 提供管理工具來處理所有組件和運(yùn)行時(shí)服務(wù)( r u nt i m es e r v i c ) 如 s e s s i o n 管理,同步異步客戶端通知,以及執(zhí)行服務(wù)器上的商業(yè)邏輯。 ( 2 ) 容錯(cuò) 提供沒有任何單點(diǎn)錯(cuò)誤的性能,定義出錯(cuò)恢復(fù)的策略以防止某個(gè)對象或?qū)ο?組出現(xiàn)錯(cuò)誤。 ( 3 ) 負(fù)載均衡 根據(jù)服務(wù)器當(dāng)前負(fù)載及可用性,將請求提交給不同的服務(wù)器。 ( 4 ) 事務(wù)處理 ( 5 ) 管理控制臺m a n a g e m e n tc o n s o l e 單點(diǎn)圖形管理界面,用于監(jiān)控遠(yuǎn)端客戶及服務(wù)器集群管理。 ( 6 ) 安全性 提供應(yīng)用的安全性。 1 3 j 2 e e 平臺的發(fā)展情況 1 3 1 j 2 e e 的內(nèi)容 j 2 e e 是s u n 公司提供的旨在為支持j a v a 語言服務(wù)器端部署而提供平臺無 關(guān)、可移植的、多用戶的、安全和標(biāo)準(zhǔn)的企業(yè)級應(yīng)用平臺。j 2 e e 做為2 個(gè)規(guī)范, 包括如下幾個(gè)部分: ( 1 ) 企業(yè)級j a v a b e a n 圓( e j be n t e r p r i s ej a v a b e a n s ) :e j b 定義了如何編寫 服務(wù)器端組件。并且為服務(wù)器端組件和管理這些組件的應(yīng)用服務(wù)器之間提供了標(biāo) 準(zhǔn)的協(xié)議。e j b 是j 2 e e 中的重要組成部分,并且使用了其它的j 2 e e 技術(shù) ( 2 ) j a v a 的遠(yuǎn)程方法調(diào)用( 跏i :r e m o t em e t h o di n v o c a t i o n ) 和r m i i i o p ( r e m o t em e t h o di n v o c a t i o no v e rt h ei n t e r n e ti n t e r - o r bp r o t o c 0 1 ) r m i ( 蛩( 美) 斯瑞格奈斯。( ( 精通e j b 。電子工業(yè)出版社,2 0 0 6 。5 6 - 5 9 3 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 是j a v a 語言自身提供的用來在分布式對象之間通信的機(jī)制,例如運(yùn)行在兩個(gè)不 同的機(jī)器上的不同的對象之間 ( 3 ) j a v a 命名和目錄接口( j n d i ,j a v an a m i n ga n dd i r e c t o r y i n t e r f a c e ) :j n d i 用來訪問命名和目錄系統(tǒng)。 ( 4 ) j a v a 數(shù)據(jù)庫連接( j d b c ,j a v ad a t a b a s ec o n n e c t i v i t y ) :j d b c 是j a v a 訪問關(guān)系型數(shù)據(jù)庫的a p i ( 5 ) j a v a 事務(wù)處理a p i ( j t a ,j a v at r a n s c a t i o na p i ) 和j a v a 事務(wù)處理服務(wù) ( j t s ,j a v at r a n s c a t i o ns e r v i c e ) :j t a 和j t s 規(guī)范為組件提供了可靠的事 務(wù)處理支持。 ( 6 ) j a v a 消息服務(wù)( j m s ,j a v am e s s a g es e r v i c e ) :j m s 允許j 2 e e 應(yīng)用通過 消息進(jìn)行通信。 ( 7 ) j a v as e r v l e t :s e r v l e t 是一些用來擴(kuò)展w e b 服務(wù)器功能的網(wǎng)絡(luò)組件,它 基于請求響應(yīng)機(jī)制。 ( 8 ) j a v as e r v e rp a g e ( j s p ) 等。 i 3 2 j 2 e e 應(yīng)用服務(wù)器 目前流行的應(yīng)用服務(wù)器如w e b l o g i c ,w e b s p h e r ea p p s e r v e r ,j b o s s ,o r a c l e 9 i a s 等等,都是符合j 2 e e 標(biāo)準(zhǔn)的應(yīng)用服務(wù)器,很好地支持了e j b 、i n d i 等j 2 e e 核心技術(shù)。 l第一層第二層第三層l 竺竺竺) 7 、 p 一i | i 曦 之曲容器 l 麓i 汐 毒 客戶端 r 、竺竺竺夕 ( 一- - - - - :二: w e b 容器 = 二) 圖1 3j 2 e e 組件模型 資料來源:本研究整理 j 2 e e 定義了下列組件; ( 1 ) 客戶層:a p p l i c a t i o n ( 2 ) w e b 層:j a v as e r v l e t 和j s p 組件 4 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 ( 3 ) 業(yè)務(wù)處理層:e j b 其結(jié)構(gòu)如圖1 3 所示,下面簡要介紹各元素的主要功能: ( 1 ) e j b 容器 e n t e r p r i s ej a v ab e a n 實(shí)例運(yùn)行于一個(gè)e j b 容器 當(dāng)中。該容器是控制e j b 并為其提供重要的系統(tǒng)級服務(wù)的環(huán)境。即你可以不用自己開發(fā)這些服務(wù),而完全 集中在e j b 的業(yè)務(wù)邏輯中。該容器為e j b 提供了以下一些服務(wù): a ) 事務(wù)管理( t r a n s c a t i o nm a n a g e m e n t ) 事務(wù)是企業(yè)級計(jì)算中的關(guān)鍵部分,j a v at r a n s c a t i o na p i ( j t a ) 給開發(fā)人員 提供了一組簡單的面向事務(wù)命令,在j a v a 代碼中可以輕松可靠地控制事務(wù)這 些事務(wù)包括e j b 方法調(diào)用,j d b c 數(shù)據(jù)庫操作、j j i s 消息服務(wù)系統(tǒng)以及對任何其它 提供事務(wù)支持的計(jì)算源操作。 b ) 安全( s e c u r i t y ) 容器允許只有被授權(quán)的用戶才能激活e j b 的方法。每一個(gè)客戶屬于一個(gè)特別 的角色,而每個(gè)角色只允許激活特定的方法,你應(yīng)該在e j b 的部署描述中聲明角 色和可激活的方法。由于這種聲明的方法,你可以不必編寫加強(qiáng)安全性的規(guī)則。 c ) 遠(yuǎn)程客戶連接( r e m o t ec 1 l e n tc o n n e c t i v i t y ) 容器負(fù)責(zé)管理在客戶端及e j b 之間的底層交流。e j b 被創(chuàng)建后,客戶端可以 像在一個(gè)j v m 中一樣對e j b 激活其方法。 d ) 生存周期管理 一個(gè)e j b 在其生存周期中會(huì)經(jīng)歷幾個(gè)階段。容器創(chuàng)建e j b ,并在可用實(shí)例池 與活動(dòng)狀態(tài)中移動(dòng)它,而最終將其中容器中移去即使可以用e j b 的c r e a t e 和 r e m o v e 方法,容器也會(huì)在后臺自動(dòng)執(zhí)行。 e ) 數(shù)據(jù)庫連接池 數(shù)據(jù)庫連接池是一個(gè)有價(jià)值的資源。獲取數(shù)據(jù)庫連接是一項(xiàng)費(fèi)時(shí)的工作i 而 且連接數(shù)據(jù)非常有限容器通過管理連接池來緩和這些問題e j b 可從池中獲取 連接,在b e a n 釋放連接后供其它連接使用。 ( 2 ) w e b 容器 w e b 容器是j s p 和s e r v l e t 的運(yùn)行環(huán)境,來自客戶端的請求,首先要被w e b 容器所接收,通過j s p 或s e r v l e t 來調(diào)用e j b 完成業(yè)務(wù)功能。 1 3 3 j 印s s 應(yīng)用服務(wù)器 j b o s s 是一個(gè)j a v a 開源、集成和開發(fā)基于j 2 e e 的完整服務(wù)實(shí)現(xiàn)。j b o s s 提 供j b o s s s e r v e r 、基本的e j b 容器及j m 】( 框架。它也為j m ) 【系統(tǒng)提供j b o s s 岫。 為j t a 事務(wù)提供j b o s s t x ,為c 髓持久化提供j b o s s c m p ,為基于j 從s 的安全性 暢紹方, ,科學(xué)出版社,2 0 0 2 1 9 2 - 1 9 8 5 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 提供j b o s s s x ,為j c a 提供j b o s s c x 。為支持w e b 組件,比如s e r v l e t 和j s p , j b o s s 提供了抽象集成層。而這些抽象層的集成服務(wù)實(shí)現(xiàn)可以由第三方s e r v l e t 引掣提供,比如t o m c a t 和j e t t l r 。j b o s s 使得開發(fā)者能夠通過j 掀混合應(yīng)用這些 組件,即借助于替換j u x 兼容的組件實(shí)現(xiàn)完成這些任務(wù)。同時(shí),這些j b o s s 組件 之問甚至不會(huì)產(chǎn)生任何影響。因此,j a o s s 現(xiàn)在全部都是模塊化的 1 4 本文研究內(nèi)容 本文主要從以下幾個(gè)方面對j 2 e e 應(yīng)用的優(yōu)化進(jìn)行研究: ( 1 ) j a v a 應(yīng)用的內(nèi)存管理,提出了如何防止和檢查內(nèi)存泄漏問題 ( 2 ) 對e j b 的原理進(jìn)行分析,對如何通過配置j b o s s 服務(wù)器提高j 2 e e 應(yīng)用的 效率進(jìn)行了研究。 ( 3 ) 深入研究了j 2 e e 應(yīng)用的各種集群技術(shù)。 ( 4 ) 提出了基于負(fù)載檢測的負(fù)載均衡算法,并予以實(shí)現(xiàn)。 ( 5 ) 將多種優(yōu)化技術(shù)應(yīng)用到筆者所開發(fā)的廢1 日家電回收信息管理系統(tǒng)當(dāng)中 去,對優(yōu)化效果予以檢驗(yàn)。 6 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 第二章j a v a 內(nèi)存管理 內(nèi)存管理話題在c 或c + + 程序設(shè)計(jì)中討論得相對較多,因?yàn)樵赾 與c + + 程序 中,需要開發(fā)人員自己申請并管理內(nèi)存,開發(fā)人員可以申請借用系統(tǒng)內(nèi)存并且 負(fù)責(zé)釋放歸還系統(tǒng)內(nèi)存,如果“只借不還”的話,就會(huì)造成系統(tǒng)內(nèi)存泄漏的問 題,在j a v a 程序中,這些工作由j a v a 虛擬機(jī)( s v m ) 負(fù)責(zé)處理。所有內(nèi)存的申 請、分配、釋放都有由j 1 i ,l i 負(fù)責(zé)完成。因此,開發(fā)人員就省去了這部分的工作, 不過這并不意味著開發(fā)人員可以完全依賴子j 的內(nèi)存管理功能,如果開發(fā)人員 在開發(fā)過程中完全不理會(huì)內(nèi)存的闖題,那么你所開發(fā)的應(yīng)用的性能,很可能不是 最優(yōu)的。因?yàn)闊o論配置多么優(yōu)良的硬件環(huán)境其自身的資源都是有限的,而內(nèi)存又 是硬件環(huán)境資源中重要的一部分,因此如果說如果開發(fā)人員開發(fā)的j a v a 應(yīng)用沒 能有效,合理地使用系統(tǒng)內(nèi)存,那么就不可能具備較高的性能。下面對在j a v a 應(yīng)用開發(fā)中的內(nèi)存管理相關(guān)的技術(shù)做一些探討。 2 。1 垃圾回收 j a v a 的內(nèi)存管理就是對象的分配和釋放問題。在j a v a 中,程序員需要通過 關(guān)鍵字n e w 為每個(gè)對象申請內(nèi)存空間( 基本類型除外) ,所有的對象都在堆 ( h e a p ) 中分配空間。另外,對象的釋放是由垃圾回收( g a r b a g ec o l l e c t i o ng c ) 決定和執(zhí)行的在j a v a 中,內(nèi)存的分配是由程序完成的,而內(nèi)存的釋放是由g c 完成的,這種收支兩條線的方法確實(shí)簡化了程序員的工作。但同時(shí),它也加重了 j v u 的工作。這也是j a v a 程序運(yùn)行速度較慢的原因之一因?yàn)椋琯 c 為了能夠正 確釋放對象,g c 必須監(jiān)控每一個(gè)對象的運(yùn)行狀態(tài),包括對象的申請、引用、被 引用、賦值等,g c 都需要進(jìn)行監(jiān)控。監(jiān)視對象狀態(tài)是為了更加準(zhǔn)確地、及時(shí)地 釋放對象,而釋放對象的根本原則就是該對象不再被引用。 垃圾回收( g a r b a g ec o l l e c t i o ng c ) 回是j a v a 程序設(shè)計(jì)中內(nèi)存管理的核心 概念,j a v a 虛擬機(jī)( j v m ) 的內(nèi)存管理機(jī)制被稱為垃圾回收機(jī)制。因此,掌握如 何在開發(fā)j a v a 應(yīng)用時(shí)合理地管理內(nèi)存,首先應(yīng)該了解j a v a 虛擬機(jī)的內(nèi)存管理機(jī) 制:垃圾回收機(jī)制,不了解垃圾回收具體實(shí)現(xiàn)機(jī)制,j a v a 程序設(shè)計(jì)中的內(nèi)存管 理就無從談起。 那么在j v m 運(yùn)行環(huán)境中什么樣的對象才是垃圾呢? 下面我們給出了在j v m 環(huán)境中垃圾對象的定義: 一個(gè)對象創(chuàng)建后放置在j v m 的堆內(nèi)存中( h e a p ) ,當(dāng)永遠(yuǎn)不再引用這個(gè)對象 時(shí),它將被j 在堆內(nèi)存( h e a p ) 中回收。被創(chuàng)建的對象不能再生,同時(shí)也沒有辦 法通過程序語句釋放他們。 王森, ) ,麥格羅希爾國際出舨社2 0 0 1 1 0 2 - 1 0 4 7 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 我們也可以這樣給j v m 中的垃圾對象下定義: 當(dāng)對象在3 v m 運(yùn)行空間中無法通過根集合( r o o ts e t ) 到達(dá)時(shí),這個(gè)對象就 被稱為垃圾對象。根集合是由類中的靜態(tài)引用域與本地引用域組成的。 為了更好理解g c 的工作原理,我們可以將對象考慮為有向圖的頂點(diǎn),將引 用關(guān)系考慮為圖的有向邊,有向邊從引用者指向被引對象。另外,每個(gè)線程對象 可以作為一個(gè)圖的起始頂點(diǎn),例如大多程序從m a i n 進(jìn)程開始執(zhí)行,那么該圖就 是以m a i n 進(jìn)程頂點(diǎn)開始的一棵根樹。在這個(gè)有向圖中,根頂點(diǎn)可達(dá)的對象都是 有效對象,g c 將不回收這些對象。如果某個(gè)對象( 連通予圖) 與這個(gè)根頂點(diǎn)不可 達(dá)( 注意,該圖為有向圖) ,那么我們認(rèn)為這個(gè)( 這些) 對象不再被引用,可以被 g c 回收。 以下,我們舉一個(gè)例子說明如何用有向圖表示內(nèi)存管理。對于程序的每一個(gè) 時(shí)刻,我們都有一個(gè)有向圖表示j v m 的內(nèi)存分配情況。圖2 1 的右圖,就是左邊 程序運(yùn)行到第6 行的示意圖。 d a s s t e ,h p u b l i cs t a t i cv o i dm 扭牮t l i n g a d o b j e c to l = n e w o b j d ; o t l j e c t0 2 _ w o 埒喲: 0 2 = e l ; 此行為筇6 行 該圖描述了第6 行的內(nèi)存管理的有向圖 o 巧2 是第二次申請的對象,此時(shí)為可回收對象 圖2 1 垃圾對象的產(chǎn)生 資料來源;h t t p :榔,z h u j i a n g r o a d c o m h t m l s o f t s 2 9 5 7 h t m l 在這個(gè)例子中m a i n o 函數(shù)中的o l 與0 2 是對象的引用( 指向?qū)ο蟮闹羔? , 構(gòu)成了根集合,它們存在于給m a i n 函數(shù)的堆棧中,o b j l 。o b j 2 是對象的實(shí)例, 它們創(chuàng)建于堆中。變量0 2 最初指向堆中的o h j 2 對象,當(dāng)執(zhí)行0 2 = 0 1 后,0 2 就 指向了o l ,這時(shí),從根集合出發(fā),沒有路徑可以到達(dá)o h j 2 ,這時(shí),o h j 2 就成了 垃圾對象,可以被回收這里有一個(gè)問題,即然o h j 2 對象已經(jīng)是垃圾對象,那 么j v m 何時(shí)會(huì)對它進(jìn)行回收昵? 要弄清楚這個(gè)問題,必須進(jìn)一步詳細(xì)了解垃圾回 收的具體機(jī)制。 2 1 1 垃圾回收機(jī)制 首先,必須先了解一下堆內(nèi)存的概念堆內(nèi)存是j 管理的一種內(nèi)存類型, j v m 管理的內(nèi)存類型有兩種:堆內(nèi)存與棧內(nèi)存。堆內(nèi)存是用來存放對象的實(shí)例的, 也就是說任何由n e w 方法產(chǎn)生的對象實(shí)例和數(shù)組,都將被放入堆中一個(gè)j v m 實(shí)例唯一對應(yīng)一個(gè)堆,堆是被所有線程所共享的。棧內(nèi)存是用來存儲(chǔ)程序代碼中 8 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 聲明為靜態(tài)或非靜態(tài)的方法。棧內(nèi)存是屬于線程私有的,j v m 會(huì)為每個(gè)正在運(yùn)行 的線程一個(gè)棧,而j 硼對棧的操作是以楨為單位進(jìn)行的,楨中保存的私有變量, 操作數(shù)等 堆內(nèi)存在j v m 啟動(dòng)的時(shí)候被創(chuàng)建,堆內(nèi)存中所存儲(chǔ)的對象可以被j 1 m 自動(dòng)回 收,不能通過其他外部手段回收,也就是說開發(fā)人員無法通過添加相關(guān)代碼的手 段回收位于堆內(nèi)存中的對象。只能由j v m 通過特定的垃圾回收機(jī)制來進(jìn)行回收。 常用的垃圾回收機(jī)制有以下幾種; ( 1 ) 標(biāo)記一清除收集器 這種收集器首先遍歷對象圖并標(biāo)記可到達(dá)的對象,然后掃描堆棧以尋找未標(biāo) 記對象并釋放它們的內(nèi)存。這種收集器一般使用單線程工作并停止其他操作 ( 2 ) 標(biāo)記一壓縮收集器 有時(shí)也叫標(biāo)記一清除一壓縮收集器,與標(biāo)記一清除收集器有相同的標(biāo)記階 段在第二階段,則把標(biāo)記對象復(fù)制到堆棧的新域中以便壓縮堆棧。這種收集器 也停止其他操作。 c 3 ) 復(fù)制收集器 這種收集器將堆棧分為兩個(gè)域,常稱為半空間。每次僅使用一半的空間,j v n l 生成的新對象則放在另一半空間中g(shù) c 運(yùn)行時(shí),它把可到達(dá)對象復(fù)制到另一半 空間,從而壓縮了堆棧。這種方法適用于短生存期的對象,持續(xù)復(fù)制長生存期的 對象則導(dǎo)致效率降低 ( 4 ) 增量收集器 增量收集器把堆棧分為多個(gè)域,每次僅從一個(gè)域收集垃圾。這會(huì)造成較小的 應(yīng)用程序中斷。 ( 5 ) 分代收集器 這種收集器把堆棧分為兩個(gè)或多個(gè)域,用以存放不同壽命的對象。j v m 生成 的新對象一般放在其中的某個(gè)域中過一段時(shí)聞。繼續(xù)存在的對象將獲得使用期 并轉(zhuǎn)入更長壽命的域中。分代收集器對不同的域使用不同的算法以優(yōu)化性能。 ( 6 ) 并發(fā)收集器 并發(fā)收集器與應(yīng)用程序同時(shí)運(yùn)行這些收集器在某點(diǎn)上( 比如壓縮時(shí)) 一般 都不得不停止其他操作以完成特定的任務(wù),但是因?yàn)槠渌麘?yīng)用程序可進(jìn)行其他的 后臺操作,所以中斷其他處理的實(shí)際時(shí)問大大降低。 ( 7 ) 并行收集器 并行收集器使用某種傳統(tǒng)的算法并使用多線程并行的執(zhí)行它們的工作。在多 c p u 機(jī)器上使用多線程技術(shù)可以顯著的提高j a v a 應(yīng)用程序的可擴(kuò)展性。 9 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 2 1 2 j w 調(diào)優(yōu) 下面介紹s u nh o t s p o t l 4 1 使用分代收集器,它把堆分為三個(gè)主要區(qū)域睜; 新域,舊域以及永久域。j 生成的所有新對象放在新域中一旦對象經(jīng)歷了一 定數(shù)量的垃圾收集循環(huán)后,便獲得使用期并進(jìn)入舊域。在永久域中j v m 則存儲(chǔ) c l a s s 和m e t h o d 對象。就配置而言,永久域是一個(gè)獨(dú)立域并且不認(rèn)為是堆的一 部分 下面介紹如何控制這些域的大小??墒褂靡粁 m s 和- x m x 控制整個(gè)堆的原始大 小或最大值。 下面的命令是把初始大小設(shè)置為1 2 8 m : j a v a - x m s l2 8 m - x m x 2 5 6 m 為控制新域的大小,可使用- x x :n e w r a t i o 設(shè)置新域在堆中所占 的比例。 下面的命令把整個(gè)堆設(shè)置成1 2 8 m 。新域比率設(shè)置成3 ,即新域與舊域比例 為1 :3 ,新域?yàn)槎训? 4 或3 2 m ; j a v a - x m s l2 8 m - x m x l2 8 m 锨:n e w r a t i o = 3 可使用- x x :n e w s i z e 和一x x :m a x n e w s i z e 設(shè)置新域的初 始值和最大值 下面的命令把新域的初始值和最大值設(shè)置成6 4 m : j a v a - x m s 2 5 6 m - x m x 2 5 6 m - x m n 6 4 m 永久域默認(rèn)大小為4 m 。運(yùn)行程序時(shí),j v m 會(huì)調(diào)整永久域的大小以滿足需要。 每次調(diào)整時(shí),j v m 會(huì)對堆進(jìn)行次完全的垃圾收集。 默認(rèn)狀態(tài)下,h o t s p o t 在新域中使用復(fù)制收集器。該域一般分為三個(gè)部分。 第一部分為e d e n ,用于生成新的對象。另兩部分稱為救助空間,所有新鉍建的 對象都在e d e n 區(qū)中分配空間,當(dāng)e d e n 充滿時(shí),j - v m 就要做可達(dá)性測試,主要 任務(wù)是檢測有哪象對象由根集合出發(fā)是不可到達(dá)的,這些對象就可以被j - v a 回 收,并把所有可到達(dá)對象復(fù)制到當(dāng)前的f r o m 救助空間。一旦當(dāng)前的f r o m 救助空 問充滿,j v m 則會(huì)再次做可達(dá)性測試,并把可到達(dá)對象復(fù)制到當(dāng)前的t o 救助空 間。f r o m 和t o 救助空間互換角色維持活動(dòng)的對象將在救助空間不斷復(fù)制,直 到它們獲得使用期并轉(zhuǎn)入舊域。使用x x :s u r v i v o r r a t i o 可控制新域子空間的大 小 聯(lián)同n e w r a t i o n 一樣,s u r v i v o r r a t i o n 規(guī)定某救助域與e d e n 空間的比值。 比如,以下命令把新域設(shè)置成6 4 m ,e d e n 占3 2 m ,每個(gè)救助域各占1 6 m : j a v a - x m s 2 5 6 m - x m x 2 5 6 m - x m n 6 4 m - x x :s u r v i v o r r a t i o n = 2 默認(rèn)狀態(tài)下h o t s p o t 對新域使用復(fù)制收集器,對舊域使用標(biāo)記一清除一壓縮 林勝利,王坤茹,盂海利,j v 優(yōu)化編程 電子工業(yè)出版社。2 0 0 2 ,1 0 1 1 0 7 l o 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 收集器。在新域中使用復(fù)制收集器有很多意義,因?yàn)閼?yīng)用程序生成的大部分對象 是短壽命的。理想狀態(tài)下,所有過渡對象在移出e d e n 空間時(shí)將被收集。如果能 夠這樣的話,并且移出e d e n 空間的對象是長壽命的,那么理論上可以立即把它 們移進(jìn)舊域,避免在救助空間反復(fù)復(fù)制。但是,應(yīng)用程序不能適合這種理想狀態(tài), 因?yàn)樗鼈冇幸恍〔糠种虚L壽命的對象。最好是保持這些中長壽命的對象并放在新 域中,因?yàn)閺?fù)制小部分的對象總比壓縮舊域廉價(jià)。為控制新域中對象的復(fù)制,可 用x x :t a r g e t s u r v i v o r r a t i o 控制救助空間的比例( 該值是設(shè)置救助空間的使用比 例。如救助空間為1m ,該值5 0 表示可用5 0 0 k ) 。該值是一個(gè)百分比,默認(rèn)值 是5 0 。當(dāng)較大的堆棧使用較低的s r u v i v o r r a t i o 時(shí),應(yīng)增加該值到8 0 至9 0 ,以 更好利用救助空間。用- x x :m a x t e n u d n gt h r e s h o l d 可控制上限。 為防止所有的復(fù)制全部發(fā)生以及希望對象從e d e n 擴(kuò)展到舊域,可以把 m a x t e n u d n gt h r e s h o l d 設(shè)置成0 。設(shè)置完成后,實(shí)際上就不再使用救助空間了, 因此應(yīng)把s u r v i v o r r a t i o 設(shè)成最大值以最大化e d e n 空間,設(shè)置如下: j a v a - x x :m a x t e n u r i n g t h r e s h o l d = 0 - x x :s u r v i v o r r a t i o = 5 0 0 0 0 2 2 j a v a 中的內(nèi)存泄漏 從上面對j a v a 垃圾回收機(jī)制的分析中可以看出,j a v a 對內(nèi)存的管理完全是 由虛擬機(jī)自動(dòng)管理的,不需要開發(fā)人員的人工干預(yù),但是并不意味著垃圾回收機(jī) 制是萬能的,因?yàn)樵诙阎蟹峙涞膶ο笾灰€被引用,那么垃圾回收機(jī)制就不會(huì)對 它進(jìn)行回收實(shí)際上,如果開發(fā)人員稍有不慎,會(huì)造成一些對象雖然不再需要, 但是對它的引用并沒有釋放,這些仍然被引用但是實(shí)際上已經(jīng)不再使用的對象就 會(huì)造成內(nèi)存的泄漏。下面,我們就可以描述什么是內(nèi)存泄漏。在j 8 v a 中,內(nèi)存 泄漏就是存在一些被分配的對象,這些對象有下面兩個(gè)特點(diǎn),首先,這些對象是 可達(dá)的,即在有向圖中,存在通路可以與其相連;其次,這些對象是無用的,即 程序以后不會(huì)再使用這些對象。如果對象滿足這兩個(gè)條件,這些對象就可以判定 為j a v a 中的內(nèi)存泄漏,這些對象不會(huì)被g c 所回收,然而它卻占用內(nèi)存。 在c + + 中,內(nèi)存泄漏的范圍更大一些有些對象被分配了內(nèi)存空間,然后卻不可 達(dá),由于c + + 中沒有g(shù) c ,這些內(nèi)存將永遠(yuǎn)收不回來在j a v a 中,這些不可達(dá)的 對象都由g c 負(fù)責(zé)回收,因此程序員不需要考慮這部分的內(nèi)存泄露。 通過分析。我們得知,對于c 什,程序員需要自己管理邊和頂點(diǎn),而對于j a v a 程序員只需要管理邊就可以了( 不需要管理頂點(diǎn)的釋放) 通過這種方式,j a v a 提高了編程的效率。 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 c + + 中內(nèi) 存泄漏 j a v a 中內(nèi) 存泄漏 圖2 2 垃圾對象示意圖 資科來源:h t t p :f a v o d b k 2 0 0 8 c o m a b s t r a c t 1 0 0 0 0 0 1 5 7 0 p h p h t m l 因此,通過以上分析,我們知道在j a v a 中也有內(nèi)存泄漏,但范圍比c + + 要 小一些。因?yàn)閖 a v a 從語言上保證,任何對象都是可達(dá)的,所有的不可達(dá)對象都 由g c 管理 對于程序員來說,g c 基本是透明的,不可見的。雖然,我們只有幾個(gè)函數(shù) 可以訪問g c ,例如運(yùn)行g(shù) c 的函數(shù)s y s t e m g c0 ,但是根據(jù)j a v a 語言規(guī)范定義, 該函數(shù)不保證j v s 的垃圾收集器一定會(huì)執(zhí)行。因?yàn)?,不同的j v m 實(shí)現(xiàn)者可能使用 不同的算法管理g c 通常,g c 的線程的優(yōu)先級別較低。j v u 調(diào)用g c 的策略也有 很多種,有的是內(nèi)存使用到達(dá)一定程度時(shí),g c 才開始工作,也有定時(shí)執(zhí)行的, 有的是平緩執(zhí)行g(shù) c ,有的是中斷式執(zhí)行g(shù) c 。但通常來說,我們不需要關(guān)心這些 除非在一些特定的場合,g c 的執(zhí)行影響應(yīng)用程序的性能,例如對于基于w e b 的 實(shí)時(shí)系統(tǒng),如網(wǎng)絡(luò)游戲等,用戶不希望g c 突然中斷應(yīng)用程序執(zhí)行而進(jìn)行垃圾回 收,那么我們需要調(diào)整g c 的參數(shù),讓g c 能夠通過平緩的方式釋放內(nèi)存,例如將 垃圾回收分解為一系列的小步驟執(zhí)行,s u n 提供的h o t s p o tj v m 就支持這一特性。 下面給出了一個(gè)簡單的內(nèi)存泄露的倒子。在這個(gè)例子中,我們循環(huán)申請o b j e c t 對象,并將所申請的對象放入一個(gè)v e c t o r 中,如果我們僅僅釋放引用本身,那 么v e c t o r 仍然引用該對象,所以這個(gè)對象對g c 來說是不可回收的。因此,如果 對象加入到v e c t o r 后,還必須從v e c t o r 中刪除,最簡單的方法就是將v e c t o r 對象設(shè)置為n u l l 。 v e c t o rv = n e wv e c t o r ( 1 0 0 ) : f o r ( i n ti = l :i 1 0 0 ;i + + ) o b j e c to = n e 霄o b j e c t0 : v a d d ( o ) : o = n u l l : 對外經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文 j 此時(shí),所有的o b j e c t 對象都沒有被釋放,因?yàn)樽兞縱 引用這些對象。 2 2 - 1 如何預(yù)防內(nèi)存泄漏 為了提高垃圾回收的效率,在實(shí)際應(yīng)用中發(fā)現(xiàn),以下幾種方法可以減少或避 免j a v a 中的內(nèi)存泄漏 ( 1 ) 慎用s y s t e m g c 0 在程序中顯示的調(diào)用s y s t e m g c ( ) ,這種方法并不一定保證執(zhí)行g(shù) c ,因?yàn)椴?同的j w 實(shí)現(xiàn)者可能使用不同的算法管理g c ,有的是內(nèi)存積累到一定程序的時(shí) 候執(zhí)行,有的定時(shí)執(zhí)行,有的平緩執(zhí)行,有的中斷執(zhí)行,有的可能因?yàn)楫?dāng)前系統(tǒng) 內(nèi)存能夠滿足需要而不會(huì)執(zhí)行。另外,雖然g c 的優(yōu)先級較低,但其本身也是線 程,也消耗系統(tǒng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3706-2024 石化行業(yè)用不銹鋼閥門鑄件
- T-ZJCX 0047-2024 浙江省法人數(shù)字證書應(yīng)用接口規(guī)范
- 二零二五年度宅基地占用權(quán)轉(zhuǎn)讓協(xié)議
- 獨(dú)立董事聘用合同(二零二五年度)-能源行業(yè)節(jié)能減排
- 2025年度門面買賣合同(含廣告位租賃)
- 二零二五年度音樂作品著作權(quán)許可與網(wǎng)絡(luò)播放協(xié)議
- 2025年度校外住宿生安全管理及意外傷害賠償協(xié)議
- 2025年度相鄰宅基地邊界爭議解決與宅基地置換協(xié)議
- 二零二五年度拆除工程合同糾紛解決機(jī)制合同
- 二零二五年度自然人個(gè)人醫(yī)療設(shè)備貸款合同生效與還款規(guī)定
- 產(chǎn)房分娩安全核查表及使用說明
- oppor11t刷全網(wǎng)通改全教程
- 內(nèi)部控制-倉儲(chǔ)與存貨循環(huán)調(diào)查問卷
- 高二英語期末考試試卷質(zhì)量分析報(bào)告
- 第一講酒吧的類型及特征
- JJF 1071-2010國家計(jì)量校準(zhǔn)規(guī)范編寫規(guī)則
- GB/T 28906-2012冷鐓鋼熱軋盤條
- GB/T 24803.4-2013電梯安全要求第4部分:評價(jià)要求
- GB/T 1348-1988球墨鑄鐵件
- 獻(xiàn)給媽媽的愛doc資料
- Unit 4 History and Traditions Reading and thinking 課件- 高中英語人教版(2019)必修第二冊
評論
0/150
提交評論