版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、Optimizeit Profiler 概覽本文通過介紹 Optimizeit Profiler 的 一些主要特征來使你對它有個簡要的了解。如果想要知道更多的信息,請查看 Optimizeit Profiler 用戶手冊。可以從 Optimizeit Profiler單擊 主菜單 info|help 來查看所有的使用文檔。使用中有何問題,請隨時與 Borland Technical Support 聯(lián)系。啟動應用程序Optimizeit Profiler 是 通過在一個獨立的虛擬機上運行應用程序來收集有用的信息。在運行一個 java 程序前,需要安裝一個 java 虛擬機。 Optimizei
2、t Profiler 默認配置是 JDK 1.4 or 1.4.1 。如果你想 使用的另外的 虛擬機,可以查看 Optimizeit Profiler用戶手冊中的如何增加額外的虛擬機部分。Optimizeit Profiler 可 用來測試任何類型的 java 程序:標準的應用程序、應用小程序、 servlets 、 jsp ,ejb 等。本文所使用的都是 演示程序,包含在 Optimizeit quichktour 目錄下。文中所有的演示均可以此來完成。1、打開 Optimizeit Profiler;2、如果你是第一次打開,將會自動彈出編輯設置窗口。如果已經(jīng)打開,可以從 file 菜單下選
3、擇 new setting ,調(diào)出編輯設置窗口。3、在程序類型框中選擇 Application 。4、單擊 "Program main class or Jar file"右面的“ Browse, ”按鈕。5、找到 docprofilerquicktourQuickTourApp.jar文件,然后單擊 open。6、Profiler 會返回到設置窗口,并且自動帶入程序的工作區(qū)和類路徑。在 Source Path 框中,單擊 change, 按鈕。7、在 Source path chooser 窗口中,選擇安裝路徑下的 docprofilerquicktour 目錄;選中 d
4、ocprofilerquicktourQuickTourApp.jar 文件后單擊窗口中的向下按鈕把它加入到 source path 部分。8、單擊 ok 增加到源文件中路徑中。設置好后的對話框 如下:2£jEdit settingsStartupI Filters Virtual Machines Program t/peApplication j Applet J Servlet/JSP > Remote Applicationeg怕m mmm clmsm or J町佗:ICAOptimizeitSuitetOptimizeitSiiiteEOldocprofileAqui
5、cktoiJrtQuickTourApp.ji Browse.Program working dirEctory:| C AOptimizertSuitetO ptimizeitSuiteSOldoclprofileAqulcktourBrowse OptionsPause after launch_ VM cannot exit _ Enable auditAPiDisable imemory profiler jOpen a consoleAula-start CPU profilerExtra Java parametersIExtra program parameters:Class
6、path| Source pathC AO ptim ize its uiteOptimize its uite 50tdi仝c:OptimizeitSuitelOptimi7eitSLiite50lcliC:beaplat7001 _36_COMP_win32.jar|CAj2sdk140VlEmmjfclSwinqSmt2曲小CAbealjdkl 31 _03WbUoolsjarCAbeaWeblogic700samplesserve rVsC:beawe bl OQic700samplesserve Ac&C:j2sdkl ,4.OWemoWSwingSet2Change.Cha
7、nge,.ResetS 恰 rt nowJOKCancel9、單擊Start now 按鈕。10、編輯窗口會自動關閉,并且 Optimized Profiler自動加載事例程序。使用 Memory Profiler當你是第一次使用該工具,Optimized自動打開到內(nèi)存監(jiān)視窗口:9r園Virtual machine runnin©File Edrt Program Tools Optimizeit Infoj 和日ang.String265 日|(+2656charfl2649+ 2640java.utii.HasiitableSEntry1 044+ 1044java, uti 1
8、. H as hMap® Entry327HM+ 327Object1 234+ 1234java lang.Class557+ 557sun java2d JocifisGraphicsPrimitiMEProxy311+ 311javautil.jarAttributesINanie149十149javax.swing UIDefaults$ProxyLazyValue81 |+ B1jaa.util.HashMap139+ 139jawa.util. jar. Attributes1116 + 116java9 門 g” 1+ 72sun awtimageBii1Teredlm
9、ageGraphics2D920+ 920java.util.HashMapJ3411+ 41java. util.TreeMapJEntry341+ 34java.util.Hashteble521+ 62java.lang.Float26 |+ 2Ejava.lang reflecl.Field0 1Nonej ava .util. StringTokeri Ize r0 1NoneHeapDiffClass name Instance countFitters:Disable garbage collector開,這樣能夠看到對象的創(chuàng)建和內(nèi)存監(jiān)視器列出了被測程序中所有的類并且實時統(tǒng)計每個
10、類的實例的數(shù)目。內(nèi)存監(jiān)視器默認是以堆模式打 撤銷。下面的步驟將演示將介紹如何控制內(nèi)存監(jiān)視器以便于分析被測程序的內(nèi)存使用情況:1、單擊內(nèi)存監(jiān)視器表頭的in sta nee cou nt 。這樣將按照已分配的實例數(shù)來進行降序排列。2、 在內(nèi)存監(jiān)視器窗口下方的Filters 窗口中,輸入你想觀察的某個類,在filters框中輸入Java.awt.*,并且按回車鍵;這樣將只顯示java.awt類的相關信息。3、 我們可以看到,許多類的實例數(shù)要么增加,要么減少。增加是因為有實例生成,而減少是因為垃圾回收在起作用。如果要查看臨時對象的創(chuàng)建,可以選中窗口右側(cè)底部的Disable garbage collec
11、tor 按鈕,這樣Optimized 將一直持續(xù)顯示所有實例的數(shù)目。File Edit Program Tools Optimizeit InfoClass wrriE 卜應伽帕 ujunt Diffjava.awt.Rectarigle50127+ 5cnTjava. awt.geomAffin eTransform11316+ 11318j ava awt. eve ritJnvo cation Eve nt2009+ 2608java.awt.Color2726+ 2726java awt eventActionEvent1 404|1 :+ 1404java.awt Eve ntQue
12、ue Item2642髓+ 2642java. awt.Dimens ion13301+ 1330jwa.awt.imase.Bufferedlmage2611+ 261java.awt font T extAttribute19|1+ 19java.awt Point254|1+ 254iava.awt.AlphaCom 卩 口百血31+ 8java. awt.image.DirectColorMo del31+ 3java.awtn百眶61+ 6java.awt.fontT ransfb rm Attribute61+ 6java.awt AWT Eve ntMulti caster31+
13、 3iava.awt Queua31+ 3java.awt Comp onentOrientation31+ 3java.awt Elord erLayout21十2java.awt.image.DataBufTerUShort11+ 1Filters: | java.awt*Z| Disabie g 自 rb 甘前 colledcr4、選中 java.awt.Color 類,然后單擊 Allocation Backtrace 按鈕進入 allocation backtrace 模式。你也可以在類名上雙擊進入。 Backtrace 信息顯示了類的每個實例中的方法被調(diào)用的信息。5、在 Alloc
14、ation Backtrace 視圖中,可以以兩種方式來查看信息:Hierarchical view 分層模式 默認顯示樹形圖。在樹形圖中,某個方法可能顯示在多個地方,在于誰調(diào) 用了這個方法。但是在圖 形視圖中,節(jié)點表示的方法僅顯示一次。它仍然可以有多個父路徑。In the Aggregated view 圖表模式 每個節(jié)點將使用線連接起 來,或者是到了邊界只有一邊有線。從有多個子節(jié)點開始,每條連線 對應一個調(diào)用這個方法的方法。與樹形不同的是,圖表中可能存在循環(huán)。圖表顯示有助于進行跟 蹤。如果你想找出一條語句是如何 被調(diào)用的,那么圖表將是一種快速而簡易的方法,通過圖表你可以迅速地找出有父子關系
15、的對象??梢允褂冒粹o 在兩種方式之間切換。6、選中 EventDispatchThread.run() 行,單擊左邊的加號展開。單擊比率最大的節(jié)點,直到展開 Graphics2d.fill3DRect() 行為止。File Edrt Program Tools Optimizeit InfoBacktraces of methods allocatin期 iava.awtColorSIVirtual machine runningMPm 09.92% IrwocationEventdi&patehO- 99.02% SystemEventQLieueUtilitiesSComponen
16、tWorkRequest.runO f 99,92% RepalrvtManager.palntDIirtyReglonsOh 99.92% JComponentpaintlrnrriediatelyOti 99.92% JCompanent _paintlmmediatelyOT 99 92% JCorripanent.paintWithBuffer0- 99.92% JCoiYiponent.paintQ三 99.92% JComponentpaintChildrenQ匕 93.S2% JComponent.paintO匕 99.92% QTShape paintComponentO-卜
17、49 96% Color brighterO 49.96% Color.darkerQAllocation locationsCountCount %Color.brighte vQColordarkerOColor class initializationSunGra|jhics2D elassjnrtializationWPanelPeer inrtializeO1023S10239131149.96%49.96%0 06%0 0% 0%Ei20478 instances (99.92%) allocated in method java.awt.3raphics2D.fill3DRect
18、O (starting in 6 rap hies 2D .java: 46 2)7、雙擊Graphics2d.fill3DRect()行,將顯示顏色實例分配的源代碼。源代碼將有助于你理解為什么繪制路徑類產(chǎn)生了如此多的實例fill3DRect方法分配了許多的顏色,是因為它調(diào)用了Color.brighter() 方法and Color.darker() 方法。注意:如果你是第一次使用者,你可能沒有圖中的源代碼路徑。使用內(nèi)存監(jiān)視器,可以幫助你創(chuàng)建更少的臨時對象。雖然臨時對象經(jīng)常很快便被析構(gòu),然而它會導致垃圾收 集更加頻繁。對于大多數(shù) java 虛擬機來說,當垃圾收集器比較忙時,運行任何的 java
19、 程序都會延遲幾百毫秒。如果使用了過多的臨時對象,由于這個原因會致使用戶感 覺到程序反應緩慢。內(nèi)存監(jiān)視器同時有助于理解為什么垃圾收集器沒有析構(gòu)這些對象。例如,它將幫助我們我們了解當一個對象 不再被使用時確實被垃圾收集 器析構(gòu)掉。下面的步驟描述了使用內(nèi)存監(jiān)視器來判斷一個實例的產(chǎn)生和如何被垃圾收集器收集。1、單擊 圖標返回到堆模式。2、為了 只顯示與 Image-related 相關的類,可以清除 fileters 框中的內(nèi)容,然后輸入 *image* , 然后按回車鍵。3、選中 javax.swing.ImageIcon 行,然后單擊圖標 (顯示實例和參考圖),顯示出了實例圖:窗口的上方顯示了實
20、例的字符描述。窗口中間部分顯示了所選實例對象參考和由對象所派生的實例。在這種情況下,因為Imagelcon對象 被引用了,所以垃圾收集器沒有收集。窗口最下方部分顯示了中間窗口所選實例的分配路徑。可以看出實例是構(gòu)造器QuickTourApp分配的。這個圖像就是作為背景顯示在程序中間的 Optimized 的 logo。內(nèi)存泄漏經(jīng)常是由于在程序運行中連續(xù)地引用對象,因此他們?nèi)匀徽加觅Y 源。正因為如此,如果你能夠定位到使用大量引用的對象,那1、 打開內(nèi)存泄漏檢測,單擊內(nèi)存泄漏監(jiān)2、 為了查找可能的內(nèi)存泄漏, Profiler3、 讓 quicktour 程序運 行 15 秒以上。4、 再次單擊保存堆
21、狀態(tài)按鈕記錄一個新么你就能夠定位至對象占用資源導致內(nèi)存泄漏的根源。為了能夠定位到使用大量引用的對象,并且跟蹤 這些引用: 測按鈕 。需要比 較一系列堆的狀態(tài)??梢詥螕舯4娑褷顟B(tài)按鈕的堆狀態(tài)記錄。你可以創(chuàng)建多個堆狀態(tài)記錄。來創(chuàng)建5、From heap state 表中為要作為比較的初始狀態(tài), To heap state 表中為要與 From heap state 作比較的狀態(tài)。每當選中 From heap state表中的記錄后, To heap state 表中只能選擇該記錄之后的記錄。6、窗口的中間部分顯示了被比較堆狀態(tài) 記錄之后新引用的資源。 Count 值是這個對象遞增引用的數(shù)量。 可以
22、單擊 count 表頭進行排序。 你可以選擇一個引用 來查看堆狀態(tài)中所有與這個對象引用有關的對象引用File Edit Program Tools Optimizeit InfoIHIM ME si El ElZoomr +;/jk.j /jirij.pU.FsrU I上irIJ/訂二cJi匚川r 3:中:$汕ay(+12) sun .a wt .i magi1S (+16) sunawtmagi+11'5 (+77) Native stack|Memory Leak DetectorVirtual machine runningFrom heap stateHeap usedHeap
23、 sizeTo heap statsHeap usedHeap sizeHeap state #1 - 5668 objects 13316.1637Kb4155KbI Heap State #1 - 5569 objects 13.1637Kb4155KbHeap state ff2- 566B objects 13316 .4163KbHeap state #2 - 5S68 objects 13.1626Kb41S3KbHeap state #3 - 5685 objects 13395.1638Kb4183KDI Heap state #3 - 5685 objects 13.1638
24、Kb4103KbIncreased object retention souirceCountNative stack of thread Th read-1+ 115sun. java2d.pipe.ShapeToPolyConvertersun.java2d.ipipe.ShapeToPolyConverterff1 6f826+ 17sun.awLimage.BufreredlmageGraphics2D BufferedlmageGraphics2DBufferedlmageBufferecllmageff126f3e:type= S DirectCo.+ 16sun.awt.imag
25、e.BufferedlmaQeGraphics2D 0ufferedlmageGraphics2DBiifferedlmaQe0ufferecllmagefn 26f3e: type = 8 DirectCo.+ 12zm. ; m m r nee出-r*niDetail Level7、圖中的對象將有連接線或者邊界。從 根節(jié)點開始,都有一個相應的引用。把鼠標移到節(jié)點上面,將會顯示新引用的數(shù)目和該節(jié)點調(diào)用 toStri ng()的。把鼠標移到末級節(jié)點上,將會顯示這個引用的實例變量名。8在圖的上方有兩個滾動條:使用詳細程度滾動條來調(diào)節(jié)圖表顯示的詳細程度。使用縮放滾動條來調(diào)節(jié)圖表顯示的大小。所有不同
26、的顏色代表不同的意思:藍色節(jié)點為間接引用句柄。表示不是直接引用,而是引用的引用。紅色節(jié)點為引用句柄。表示是直接引用。節(jié)點的引用越多,顏色越深。后續(xù)連接顯示為綠色線條。后續(xù)連接在引用中對于一個對象是更高層次的引用。所有的后續(xù)連接的邊框為藍 色。在引用層次中前 續(xù)連接是后續(xù)連接的一個引用。當選擇一個節(jié)點以后,與這個節(jié)點相關的引用將會閃爍顯示。 選中一個節(jié)點然后單擊鼠標右鍵,將會在一個新的實例中打開所選擇的節(jié)點。使用 CPU Profiler內(nèi)存監(jiān)視器有助于對對象的最小化使用。CPU監(jiān)視器將有助于你了解對象所使用的時 間。CPC監(jiān)視器在java虛擬機中可被看作是一個記錄設備。下面的步驟描述了如何給出
27、被測試程序的響應時間和CPU使用率。1、單擊CPC監(jiān)視按鈕切換到CPI監(jiān)視界面。2、單擊開始CPU監(jiān)視按鈕開始記錄程序的CPU使用率。3、讓程序運行一段時間(比如三秒以 上)。4、 單擊停止CPU監(jiān)視按鈕停止記 錄。CPU監(jiān)視器顯示出了已經(jīng)記錄的 CPU 使用信息。File Edit Program Tools Optimizeit InfoTime (ironier oirtiiirt - Sampler / MethodsVirtual machine running5、如果沒有選上,請選擇樹形格式,看到的信息是一樣的6、單擊窗口上方的下拉框可以顯示出虛 擬機當前運行所有的線程File E
28、dit Program Tools Optimizeit InfoHotspotsTime % Timejava 1 an Q.Obj ectwait44 6412151 msAsun.awt.windows.WGraphics. dispose6.051642 ms""""sun.javaSd.SunGra卩hi朋D 加帕3.891055 mssun.awt.windows.WGraphics.lock2.436S1 msjavax swing.RepaintMana ger paintDirtRegions2.39648 msjava.utii.Ha
29、slitable.getEnumeralion2.31627 msjavaang,tBf-Fiin 別 izer agister1.54419 rnsjava,utiiVector.«init>1.43388 msjava.awt.Rectangle.setBounds1.33362 msjeva.utii. Hashtat)le$Enumerator,<init>1.24338 ms5、如果沒有選上,請選擇樹形格式,看到的信息是一樣的6、單擊窗口上方的下拉框可以顯示出虛 擬機當前運行所有的線程7、 選擇AWT-EventQueue-0 thread線程,該線程被
30、AWT使用來處理時間,例如repaint事件。8、展開 Eve ntDispatchThread.pump On eEve nt()行。9、 單擊EventQueue.dispatchEvent()左方的加號展開所有的方法,直到展開到JComponent.paintWithBuffer()方法。行前面的圖標所表示的意思為:表示該方法直接被另外一個方法調(diào)用表示 執(zhí)行時間最長的方法。在這個例子中 AWT-EventQueue-C線程一直用處理repaint事件。10、選擇 JComponent.paintWithBuffer()行。如果鼠標移到 JComponent.paintWithBuffer
31、()所調(diào)用的方法上,將顯示在JCompo nen t.pai ntWithBuffer()中該方法所使用的時間比例。11、如果要分析那個線程是空閑的,CPU監(jiān)視器可以同時顯示 CPL使用率和使用時間。單擊inspector (tool菜單下)打開inspector 對話框。Profiler inpeciJnl xlProfilertype: SamplerDisplay precision method _/jOnly record CPU usageSampling period: pSdrn()ler options12、不選中Ony record CPU usage,然后關閉窗口。使用這
32、個特征來選擇緩沖策略,默認顯示的是CPL純使用信息。查看虛擬機信息Optimizert提供了實時顯示與數(shù)據(jù)有 關的高標準性能測試的信息。使用這個特點,你可以了解到性能問題是和CPUt關還是和內(nèi)存有關,或者與兩者都有關。,切換到虛擬機模式。單擊在這種模式下,顯示四類性能圖標,每類圖表描述了虛擬機不同的活動信息:File Edit Program Tools Optimizeit Info大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使用CPU類圖:右下角的圖顯示了虛擬機當前加載的類的數(shù)目。File Edit Program Tools Opti
33、mizeit InfoVirlual Machine InformationVirtual machine running大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使用CPU類圖:右下角的圖顯示了虛擬機當前加載的類的數(shù)目。File Edit Program Tools Optimizeit InfoJava Heap - Size:4183K - U$ed:2258KGC Activity -1 % - Last GO Time 11 ms大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使
34、用CPU類圖:右下角的圖顯示了虛擬機當前加載的類的數(shù)目。File Edit Program Tools Optimizeit Info大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使用CPU類圖:右下角的圖顯示了虛擬機當前加載的類的數(shù)目。File Edit Program Tools Optimizeit Info37:00,037:10 037:20 037:30.0 |300.037:10,037:2ai.O37:30.0大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使用CPU類圖:右下
35、角的圖顯示了虛擬機當前加載的類的數(shù)目。File Edit Program Tools Optimizeit Info大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使用CPU類圖:右下角的圖顯示了虛擬機當前加載的類的數(shù)目。File Edit Program Tools Optimizeit InfoThreads:8-Active :0Loaded classes:S47|八3爲 /廠:3以廠 37:30.0113337:00 037:1 0.037:20 037:30 0-U出織BAI AlBIM堆圖表:左上角的圖表中紅色線表示被測程序當前需
36、要的堆棧的大小,綠色表示被測程序?qū)嶋H使用的堆棧的 垃圾收集圖表:有上角的圖中顯示當前垃圾收集器的活動,顯示了垃圾收集時間占總時間的比例。有助于觀 間。大小。察垃圾收集器使用的頻率和時線程圖:左下角的圖中紅色線表示當前運行的線程,綠色表示大多數(shù)的線程使用CPU類圖:右下角的圖顯示了虛擬機當前加載的類的數(shù)目。查看測試結(jié)果Opti ni zeit 包含了許多方法來查看測 試結(jié)果,就象上面的實時監(jiān)控方法成功一樣,也可以把所有的信息保存在一個快照中或報告中,這樣 你就可以在以后分析結(jié)果或者和另外一個結(jié)果進行比較。例如,你可以把測試結(jié)果輸出為一個 html文件。1、當演示程序還在運行時,單擊 CPI監(jiān)視器
37、返回到CPI監(jiān)視界面。2、為了查看所有的信息,完全展開所有 的方法。確認你需要的信息都顯示在層次視圖中,因為輸出中不會包含圖表。3、單擊輸出圖標4、 填寫標題,檢查file name框中的 路徑是有效的,并且選擇輸出為.html格式5、 單擊ok,Optimizeit會把結(jié)果輸出到定義的.html文件中,然后會自動打開。Document: DoneWhat's RelatedFile Edit View Go Communicator Help剛 WebMail 刷 Radio 劇 People 印 Yellow Page$ 刷 Download 劇 CalendarChannel 劇 Java Bu$ine$sU 里RealPk Descrip
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)化消防工程安裝協(xié)議范本(2024年版)版
- 2025年度廠區(qū)新能源發(fā)電項目合作協(xié)議3篇
- 2025年度電商大數(shù)據(jù)安全保護合作協(xié)議4篇
- 旅游業(yè)績深度剖析
- 專業(yè)汽車起重機租賃協(xié)議2024版范本版B版
- 二零二五年度智能化家居系統(tǒng)安裝合同3篇 - 副本
- 二零二五年度大渡口區(qū)吸污車租賃與環(huán)保技術(shù)研發(fā)協(xié)議3篇
- 2025年度測井設備研發(fā)與技術(shù)服務合同4篇
- 二零二五年度船舶航行安全GPS監(jiān)控合同文本3篇
- 2025年度公共場所場地借用及安全保障協(xié)議書2篇
- 供電搶修述職報告
- 集成電路設計工藝節(jié)點演進趨勢
- 新型電力系統(tǒng)簡介演示
- 特種設備行業(yè)團隊建設工作方案
- 眼內(nèi)炎患者護理查房課件
- 肯德基經(jīng)營策略分析報告總結(jié)
- 買賣合同簽訂和履行風險控制
- 中央空調(diào)現(xiàn)場施工技術(shù)總結(jié)(附圖)
- 水質(zhì)-濁度的測定原始記錄
- 數(shù)字美的智慧工業(yè)白皮書-2023.09
- -安規(guī)知識培訓
評論
0/150
提交評論