




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
線 JVM內(nèi)存區(qū) 程序計數(shù)器(線程私有 虛擬機棧(線程私有 本地方法區(qū)(線程私有 堆(Heap-線程共享)-運行時數(shù)據(jù) 方法區(qū)/永久代(線程共享 JVM運行時內(nèi) Eden 2:清空eden、 老年 永久 JAVA8與元數(shù) 回收與算 如何確 標(biāo)記清除算法(Mark- 算法 標(biāo)記整理算法 分代收集算 JAVA四 類 GC分代收集算法VS分區(qū)收集算 分代收集算 分區(qū)收集算 GC收集 收集器(單線程、算法 收集器(Serial+多線程 ParallelScavenge收集器(多線程算法、高效 SerialOld收集器(單線程標(biāo)記整理算法 ParallelOld收集器(多線程標(biāo)記整理算法 收集器(多線程標(biāo)記清除算法 G1收集 JAVA 阻塞IO模 非阻塞IO模 多路復(fù)用IO模 信號驅(qū)動IO模 異步IO模 JAVAIO JAVA NIO的緩沖 NIO的非阻 JVM類加載機 加 驗 準(zhǔn) 解 符號直接 類加載 啟動類加載器(Bootstrap 雙親委 OSGI(動態(tài)模型系統(tǒng) JAVA集 接口繼承關(guān)系 ArrayList(數(shù)組 Vector(數(shù)組實現(xiàn)、線程同步 LinkList(鏈表 HashMap(數(shù)組+鏈表+樹 JAVA7實 JAVA8實 線程安全(Segment繼承ReentrantLock加鎖 并行度(默認 Java8實現(xiàn)(引入了樹 HashTable(線程安全 TreeMap(可排序 LinkHashMap(記錄插入順序 JAVA多線程并 JAVA并發(fā)知識 JAVA線程實現(xiàn)/創(chuàng)建方 繼承Thread 4種線程 線程生命周期(狀態(tài) 線程 調(diào)用 終止線程4種方 sleep與wait區(qū) start與run區(qū) JAVA線 JAVA ReentrantLock與 ReentrantLock實 Condition類和Object類鎖方法區(qū)別區(qū) tryLock和lock和lockInterruptibly的區(qū) Semaphore與 讀 寫 重量級鎖(Mutex 線程基本方 線程上下文切 進 同步鎖與死 死 線程池原 策 JAVA阻塞隊列原 CyclicBarrier、CountDownLatch、Semaphore的用 關(guān)鍵字的作用(變量可見性 重排序 如何在兩個線程之間共享數(shù) Runnable對象作為一個類的內(nèi)部 ThreadLocal作用(線程本地 synchronized和ReentrantLock的區(qū) ConcurrentHashMap并 ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組 Java中用到的線程調(diào) 線程讓出cpu的情況 進程調(diào)度算 什么是CAS(比較并交換-樂觀鎖機制-鎖自旋 原子包java.util.concurrent.atomic(鎖自旋 ABA問 什么是AQS(抽象的隊列同步器 Share共享資源- 同步器的實現(xiàn)是ABS(state資源狀態(tài)計數(shù) JAVA基 JAVA異常分類及處 概 trycatch捕獲異常針對性處理方 Throw和throws的區(qū)別 JAVA反 Java反射 反射使用步驟(獲取Class對象、調(diào)用對象方法 獲取Class對象的3種方 調(diào)用某個對象的getClass()方 Class對象的 JAVA注 概 ed描述- JAVA內(nèi)部 內(nèi)部類(要繼承一個父類或者實現(xiàn)一個接口、直接使用new來生成一個對象的 JAVA泛 泛型類 類型擦 JAVA序列化(創(chuàng)建可復(fù)用的Java對象 序列化用戶對象傳 序列化 Transient關(guān)鍵字該變量被序列化到文件 JAVA直接賦值淺(但不的對象 深(對象和其應(yīng)用對象 序列化(深clone一中實現(xiàn) Spring特 容 Spring組 Spring常用模 Spring主要 Spring常用注 Spring第結(jié) SpringIOC原 概 Spring容器視 IOC容器實 .1.1.1BeanDefinitionRegistry .1.1.2BeanFactory頂層接 .1.1.3 .1.1.4HierarchicalBeanFactory父子級 .1.1.5 .1.1.6AutowireCapableBeanFactory自動裝 .1.1.7SingletonBeanRegistry運行期間單例 .1.1.8依賴日志框 ApplicationContext面向開發(fā)應(yīng) SpringBean作用 Request:一次request一個實 global SpringBean生命周 IOC依賴注 setBeanName實 ApplicationContextAware實 Destroy過期自動清理階 Spring依賴注入四種方 SpringAPO原 概 JDK動態(tài)接 CGLib動 實現(xiàn)原 SpringMVC原 MVC流 Http請求到 HandlerMap尋找處理 Controller調(diào)用業(yè)務(wù)邏輯處理后,返回 ModelAndView反饋瀏覽器 MVC常用注 SpringBoot原 嵌入的Tomcat,無需部署WAR文 自動配置 JPA原 事 Mybatis緩 Tomcat架 微服 服 發(fā) 第(獨立的服務(wù) API網(wǎng) 請求轉(zhuǎn) 響應(yīng)合 協(xié)議轉(zhuǎn) 數(shù)據(jù)轉(zhuǎn) 安全認 配置中 事件調(diào)度 服務(wù)(starter- 服務(wù)熔斷 Hystrix斷路器機 API管 NETTY與 Netty原 Netty高性 異步通訊 Reactor單線程模 Reactor多線程模 NettyRPC實 概 關(guān)鍵技 流 消息編 通訊過 存放回調(diào)對象callback到全局 RMI實現(xiàn)方 實現(xiàn)步 特 網(wǎng) 網(wǎng)絡(luò)7層架 TCP/IP原 網(wǎng)絡(luò)層(NetworkAccess 網(wǎng)絡(luò)層(Internet TCP三次握手/四次揮 三次握 四次揮 HTTP原 傳輸流 3:封裝成TCP包并建立連 6:服務(wù)器關(guān)閉TCP連 HTTP狀 建立連接獲取驗 CDN原 日 Zookeeper概 Zookeeper角 ZAB協(xié) 事務(wù)編號Zxid(事務(wù)請求計數(shù)器+ ZAB協(xié)議4階 Leaderelection(階段-選出準(zhǔn) Discovery(發(fā)現(xiàn)階段-接受提議、生成epoch、接受 Zookeeper工作原理(原子廣播 Znode有四種形式 節(jié) Kafka概 Kafka數(shù)據(jù)設(shè) 數(shù)據(jù)文件分段segment(順序讀寫、分段命令、二分查找 生產(chǎn)者設(shè) 負載均衡(partition會均衡分布到不同broker上 壓縮(GZIP或 消費者設(shè) Consumer 概 RabbitMQ架 Exchange(將消息路由給隊列 Virtual Exchange類 topic交換器(模式匹配 概 列 概 ColumnFamily列 Region分 Hbase架 Region尋址方式(通過zookeeper Hbase的寫邏 獲取 請求寫 請求寫 MemStore達到上 RegionServer的Hlog數(shù)量達到上 Region使用HLOG恢復(fù)完數(shù)據(jù)后觸 HBasevs 概 特 概 數(shù)據(jù)模 KeySpace(對應(yīng)SQL數(shù)據(jù)庫中的 StandardColumnFamily(相對應(yīng)SQL數(shù)據(jù)庫中的 Cassandra一致Hash和虛擬節(jié) 一致性Hash(多米諾down機 Gossip協(xié) 數(shù)據(jù)Partitioners(計算primarykeytoken的hash函數(shù) 兩種可用的策略 將第一個replica放在由partitioner確定的節(jié)點中,其余的replicas放在上述節(jié)點順時針方向的后續(xù)節(jié) 可以指定在每個數(shù)據(jù)中心分別多少份replicas 數(shù)據(jù)寫請求和協(xié)調(diào) 數(shù)據(jù)讀請求和修 數(shù)據(jù)(CommitLog、MemTable、 二級索引(對要索引的value,生成 數(shù)據(jù)讀 數(shù)據(jù)刪除(column的 回收 數(shù)據(jù) BloomFilter(查找數(shù)據(jù)可能對應(yīng)的 PartitionKeyCache(查找數(shù)據(jù)可能對應(yīng)的Partition Compressionoffsetmap(磁盤中 設(shè)計模 設(shè)計原 工廠方法模 抽象工廠模 單例模 建造者模 原型模 適配器模 裝飾器模 模 外觀模 橋接模 組合模 享元模 策略模 模板方法模 觀察者模 迭代子模 責(zé)任鏈模 命令模 備忘錄模 狀態(tài)模 者模 中介者模 解釋器模 負載均 四層負載均衡vs七層負載均 四層負載均衡(目標(biāo)地址和端換 nginx:只在http協(xié)議和mail協(xié)議上功能比較好,性能與haproxy差不多 Mysqlproxy:功能尚可 負載均衡算法/策 輪循均衡(Round 最少連接數(shù)均衡(Least DNS響應(yīng)均衡(Flash URL散 LVSNAT模 LVSDR模式(局域網(wǎng)改寫mac地址 LVSTUN模式(IP封裝、跨網(wǎng)段 LVSFULLNAT模 Nginx反向負載均 數(shù)據(jù) 引 概 索 .盡量選擇區(qū)分度高的列作為索 數(shù)據(jù)庫三范 第一范式(1stNF-列都是不可再分 數(shù)據(jù)庫是事 性 過程(特定功能的SQL語句集 觸發(fā)器(一段能自動執(zhí)行的程序 數(shù)據(jù)庫并發(fā)策 數(shù)據(jù)庫 基于Redis分布式 分區(qū)分 水平切分(按照規(guī)則劃分 兩階段提交協(xié) 缺 三階段提交協(xié) mit階 柔性事 分區(qū)性 一致性算 恢復(fù):主要就是Leader過 角 Leader(者-日志管理 raft協(xié)議和zab協(xié)議區(qū) R:代表一次成功的讀數(shù)據(jù)操作要求至少有R份數(shù)據(jù)成功 一致性 建構(gòu)環(huán)形hash空間 把服務(wù)器(節(jié)點)映射到hash空 cache的變動 JAVA算 二分查 冒泡排序算 插入排序算 快速排序算 排序算 歸并排序算 桶排序算 基數(shù)排序算 剪枝算 回溯算 最短路徑算 最大子數(shù)組算 最長公共子序算 最小生成樹算 數(shù)據(jù)結(jié) 棧 隊列 鏈表 散列表(Hash 排序二叉 左 右 添 刪 B- 位 加密算 分布式緩 緩存雪 緩存緩存預(yù) 緩存更 緩存降 概 Secondary ReduceTask執(zhí)行過 HadoopMapReduce作業(yè)的生命周 任務(wù)調(diào)度與 概 架 Spark Spark Spark 組 ClusterManager-制整個集群, Executor:執(zhí)行器,是為某個Application運行在workernode上的一個進 SPARK編程模 SPARK計算模 SPARK運行流 構(gòu)建SparkApplication的運行環(huán)境,啟動 SparkContext向資源管理器(可以是Standalone,Mesos,Yarn)申請運行Executor資源,并啟動 Executor向SparkContext申請 SparkContext將應(yīng)用程序分發(fā)給 SparkContext構(gòu)建成DAG圖,將DAG圖分解成Stage、將Taskset發(fā)送給TaskScheduler,最后由TaskScheduler將Task發(fā)送給Executor運 SPARKRDD流 SPARK RDD的創(chuàng)建方 概 集群架 編程模型(spout->tuple- Topology運 Worker(進程)(2).Executor(線程)(3). Worker(1個worker進程執(zhí)行的是1個topology的子集 Executor(executor是1個被worker進程啟動的單獨線程 StormStreamingGrouhuffle Fields All Global None Direct 概 YARN運行流 機器學(xué) 決策 隨機森林算 邏輯回 樸素K最近鄰算 K均值算 Adaboost算 神經(jīng)網(wǎng) 馬爾可 云計 概 Libnetwork與網(wǎng)絡(luò)資源與 鏡像與 驅(qū) JVM是可運行Java代碼的假想計算機,包括一套字節(jié)碼指令集、一組寄存器、一個棧、一個回收,堆和一個方法域。JVM是運行在操作系統(tǒng)之上的,它與硬件沒有直接JavaClass而字節(jié)碼文件又通過Java虛擬機中的解釋器,編譯成特定機器上的機器碼。①每一種平臺的解釋器是不同的,但是實現(xiàn)的虛擬機是相同的,這也就是Java為什么能夠線這里所說的線程指程序執(zhí)行過程中的一個線程實體。JVMHotspotJVM中的Java線程與原生操作系統(tǒng)線程有直接的映射關(guān)系。當(dāng)線程本地、緩沖區(qū)分配、同步對象、棧、程序計數(shù)器等準(zhǔn)備好以后,就會創(chuàng)建一個操作系統(tǒng)原生線程。Java用的CPU上。當(dāng)原生線程初始化完畢,就會調(diào)用Java線程的run()方法。當(dāng)線程結(jié)束時,Java(VM堆修改無法進行時,線需要JVM位于安全點。這些操作的類型有:stop-the-world回收、線程棧dump、線程暫停、線程偏向鎖(biasedlocking)解除。GCJVM內(nèi)存區(qū)域JVM內(nèi)存區(qū)域主要分為線程私有區(qū)域【程序計數(shù)器、虛擬機棧、本地方法區(qū)】、線程共享區(qū)域【JAVA堆、方法區(qū)】、直接內(nèi)存。線程私有數(shù)據(jù)區(qū)域生命周期與線程相同,依賴用戶線程的啟動/結(jié)束而創(chuàng)建/銷毀(在HotspotVM內(nèi),每個線與操作系統(tǒng)的本地線程直接映射,因此這部分內(nèi)存區(qū)域的存/否跟隨本地線程的直接內(nèi)存并不是JVMJDK1.4NIO供了基于Channel與Buffer的IO方式,它可以使用Native函數(shù)庫直接分配堆外內(nèi)存,然后使用DirectByteBuffer對象作為這塊內(nèi)存的進行操作(詳見:JavaI/O擴展),這樣就避免了在Java堆和Native堆中來回數(shù)據(jù),因此在一些場景中可以顯著提高性能。程序計數(shù)器(線程私有一塊較小的內(nèi)存空間,是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器,每條線要有一個獨立的正在執(zhí)行java(當(dāng)前指令的地址)。如果還是Native方法,則為空。情況的區(qū)域。虛擬機棧(線程私有是描述jva(kre)用于局部變量表、操作數(shù)棧、動態(tài)、方出口等信息。每一個方法從調(diào)用直至執(zhí)行完成棧幀(Frame)是用來數(shù)據(jù)和部分過程結(jié)果的數(shù)據(jù)結(jié)構(gòu),同時也被用來處理動態(tài)本地方法區(qū)(線程私有本地方法區(qū)和JavaStackJavaNative方法服務(wù),如果一個VM實現(xiàn)使用C-linkage模型來支持Native調(diào)用,那么該棧將會是一個C棧,但HotSpotVM直接就把本地方法棧和虛擬機棧合二為一。堆(Heap-線程共享)-運行時數(shù)據(jù)區(qū)是被線程共享的一塊內(nèi)存區(qū)域,創(chuàng)建的對象和數(shù)組都保存在Java堆內(nèi)存中,也是收集器進行VM分代收集算法Java堆從GC細分為:(Eden區(qū)、FromSurvivor區(qū)和ToSurvivor區(qū))和老年代。方法區(qū)/永久代(線程共享即常的Pnnteio,于被JM、量靜、ootVM把GC使用a,這樣ot收集理va一,而不必為方法區(qū)開發(fā)專門的內(nèi)存管理器(永久帶的內(nèi)存回收的主要目標(biāo)是針對常量池的回收和類型的卸載,運行時常量池(RuntimeConstantPool)是方法區(qū)的一部分。ClassJavaClass()JVM運行時內(nèi)存Java堆從GC的角度還可以細分為: (Eden區(qū)、FromSurvivor區(qū)和ToSurvivor區(qū))和老年MinorGC進行回收。又分為Eden區(qū)、ServivorFrom、ServivorTo三個區(qū)EdenJava(如果新創(chuàng)建的對象占用內(nèi)存很大,則直接分配到老年代)。當(dāng)Eden區(qū)內(nèi)存不夠的時候就會觸發(fā)MinorGC,對區(qū)進行1:eden、 到ServicorTo,首先,把Eden和ServivorFrom區(qū)域中存活的對象到ServicorTo區(qū)域(如果有對象的年齡以及達到了老年的標(biāo)準(zhǔn),則賦值到老年代區(qū)),同時把這些對象的+1(如果ServicorTo不2:清空eden、3:ServicorTo和ServicorFrom互換老年老年代的對象比較穩(wěn)定,所以MajorGC不會頻繁執(zhí)行。在進行MajorGC前一般都先進行了一次MinorGC,使得有的對象晉身入老年代,導(dǎo)致空間不夠用時才觸發(fā)。當(dāng)無法找到足夠大的連續(xù)空間分配給新創(chuàng)建的較大對象時也會提前觸發(fā)一次MajorGC進行回收騰出空間。jorCjorCjorC時候,就會拋出OOOtfer永久指內(nèi)存的永久保存區(qū)域,主要存放Class和Meta(元數(shù)據(jù))的信息,Class在被加載的時候被放入永久區(qū)域,它和和存放實例的區(qū)域不同,GC也導(dǎo)致了永久代的區(qū)域會隨著加載的Class的增多而脹滿,最終拋出OOM異常。在v8”()的本質(zhì)和永久代類似,元空間與永久代之間最大的區(qū)別在于:元空間并不在虛擬機中,而是使用本地內(nèi)存。因此,默認情況下,元空間的大小僅受本地內(nèi)存限制。類的元數(shù)據(jù)放入iveor,字符串池和類的靜態(tài)變量放入jva堆中,這樣可以加載多少類的元數(shù)據(jù)就不再由Perize控制,2.4.回收與算如何確定在a,關(guān)對此單的辦法是通過計數(shù)來判斷一對象是否可以收。簡單說,即一個對象如果沒有任何與之關(guān)聯(lián)的,他們數(shù)都為0,則明對不太可再用到那么個對就可回可達性分析為了解決的循環(huán)問題,Java使用了可達性分析的方法。通過一系列的“GCroots”對象作為起點搜索。如果在“GCroots標(biāo)記清除算法(Mark-算法本的一半。且存活對象增多的話,Copying算法的效率會大大降低。標(biāo)記整理算法 分代收集算法分代收集法是目前大部分JVM所采用的方法,其思想是根據(jù)對象存活的不同生命周期將內(nèi)存劃分為不同的域,一般情況下將GC堆劃分為老生代(Tenured/OldGeneration)和(Young 目前大部分JVM的GC對于都采取Copying算法,因為中每次回收都要回收大部分對象,即要的操作比較少,但通常并不是按照1:1來劃分。一般將劃分為一塊較大的Eden空間和兩個較小的Survivor空間(FromSpace,ToSpace),每次使用Eden空間和其中的一塊Survivor空間,當(dāng)進行回收時,將該兩塊空間中還存活的對象到另一塊Survivor空間中。 對象的內(nèi)存分配主要在的EdenSpace和SurvivorSpace的FromSpace(Survivor目當(dāng)?shù)腅denSpace和FromSpace空間不足時就會發(fā)生一次GC,進行GC后,EdenSpace和FromSpace區(qū)的存活對象會被挪到ToSpace,然后將EdenSpace和FromSpace進行清理。JAVA四中類強在a見一一量用。當(dāng)一個對象被強變量時,它處于可達狀態(tài),它是不可能被回收機制回收的,即使該對象以后都不會被用到VM也不會回收因此強是造成a內(nèi)漏主之軟軟需要用SoftReference類來實現(xiàn),對于只有軟的對象來說,當(dāng)系統(tǒng)內(nèi)存足夠時它弱弱需要用WeakReference類來實現(xiàn),它比軟的生存期更短,對于只有弱的對象來說,只要回收機制一運行,不管JVM的內(nèi)存空間是否足夠,總會回收該對象占用的內(nèi)存。虛虛需要PhantomReference類來實現(xiàn),它不能單獨使用,必須和隊列聯(lián)合使用。虛GC分代收集算法VS分區(qū)收集算分代收集算法當(dāng)前主流VM收集都采用”分代收集”(GenerationalCollection)算法,這種算根據(jù)對象存活周期的不同將內(nèi)存劃分為幾塊,如JVM中的、老年代、永久代,這樣就可以根據(jù)各年代特點分別采用最適當(dāng)?shù)腉C算法記—整理”算法來進行回收,不必進行內(nèi)存,且直接騰出空閑內(nèi)存.分區(qū)收集算法分區(qū)算法則將整個堆空間劃分為連續(xù)的不同小區(qū)間,每個小區(qū)間獨立使用,獨立回收.這樣做的好處是可以控制一次回收多少個小區(qū)間,根據(jù)目標(biāo)停頓時間,每次合理地回收若干個小區(qū)間(而不是整個堆),從而減少一次GC所產(chǎn)生的停頓。GC收集Java堆內(nèi)存被劃分為和年老代兩部分,主要使用和標(biāo)記-清除回收算法;年老代主要使用標(biāo)記-整理回收算法,因此java虛擬中針對和年老代分別提供了多種不同的收集器,JDK1.6中SunHotSpot虛擬機的收集器如下: 收集器(單線程、算法收集器。Serial是一個單線程的收集器,它不但只會使用一個CPU或一條線程去完成收集工Serial收集器雖然在收集過程中需要暫停所有其他的工作線程,但是它簡單高效,對于限定單個CPU環(huán)境來說,沒有線程交互的開銷,可以獲得最高的單線程收集效率,因此Serial收集器依然是java虛擬機運行在Client模式下默認的收
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三亞市鋁板幕墻施工方案
- 金屬夾芯巖棉板施工方案
- 鐵藝大風(fēng)車雕塑施工方案
- 海上抓斗船清淤泥施工方案
- 洛杉磯搗蛋計劃2
- 公開招聘編外聘用人員報名表
- 軋花廠技改檢修計劃
- 人教版高中物理選擇性必修第二冊第一章1磁場對通電導(dǎo)線的作用力課件
- 2025至2030年中國對講機主機殼數(shù)據(jù)監(jiān)測研究報告
- 人教版高中物理選擇性必修第二冊第二章1楞次定律課件
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級下冊+
- 人教鄂教版六年級下冊科學(xué)全冊知識點
- 鄭州市地圖含區(qū)縣可編輯可填充動畫演示矢量分層地圖課件模板
- 2024年湖南生物機電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計規(guī)范
- 《中華民族共同體概論》考試復(fù)習(xí)題庫(含答案)
- 2023年青島遠洋船員職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- HG20592-2009法蘭(PL)法蘭蓋(BL)精加工尺寸
- 風(fēng)管、水管支架估算表
- 如何從事完美事業(yè)
- 促進能力提高的計劃表
評論
0/150
提交評論