和CoyOnWrieArrayLis提供线程安全性和已改进的可伸缩性_第1页
和CoyOnWrieArrayLis提供线程安全性和已改进的可伸缩性_第2页
和CoyOnWrieArrayLis提供线程安全性和已改进的可伸缩性_第3页
和CoyOnWrieArrayLis提供线程安全性和已改进的可伸缩性_第4页
和CoyOnWrieArrayLis提供线程安全性和已改进的可伸缩性_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

eJava理论与实践:并发集合类ConcurrentHashMap和CopyOnWriteArrayList提供线程安全性和已改进的可伸缩性Java理论与实践:并发集合类ConcurrentHashMap和CopyOnWriteArrayList提供线程安全性和已改进的可伸缩性级别:初级BrianGoetz(),首席顾问,QuiotixCorp2003年9月28日DougLea的util.concurrent包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型List和Map的高性能的、线程安全的实现。在本月的Java理论与实践中,BrianGoetz向您展示了用ConcurrentHashMap替换Hashtable或synchronizedMap,将有多少并发程序获益。您可以在本文的论坛中与作者以及其他读者共享您的想法(您也可以点击文章顶部或者底部的讨论进入论坛)。在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK1.0的一部分。Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的基类和一个同步的包装器Collections.synchronizedMap,解决了线程安全性问题。通过将基本的功能从线程安全性中分离开来,Collections.synchronizedMap允许需要同步的用户可以拥有同步,而不需要同步的用户则不必为同步付出代价。Hashtable和synchronizedMap所采取的获得同步的简单方法(同步Hashtable中或者同步的Map包装器对象中的每个方法)有两个主要的不足。首先,这种方法对于可伸缩性是一种障碍,因为一次只能有一个线程可以访问hash表。同时,这样仍不足以提供真正的线程安全性,许多公用的混合操作仍然需要额外的同步。虽然诸如get()和put()之类的简单操作可以在不需要额外同步的情况下安全地完成,但还是有一些公用的操作序列,例如迭代或者put-if-absent(空则放入),需要外部的同步,以避免数据争用。有条件的线程安全性同步的集合包装器synchronizedMap和synchronizedList,有时也被称作有条件地线程安全――所有单个的操作都是线程安全的,但是多个操作组成的操作序列却可能导致数据争用,因为在操作序列中控制流取决于前面操作的结果。清单1中第一片段展示了公用的put-if-absent语句块――如果一个条目不在Map中,那么添加这个条目。不幸的是,在containsKey()方法返回到put()方法被调用这段时间内,可能会有另一个线程也插入一个带有相同键的值。如果您想确保只有一次插入,您需要用一个对Mapm进行同步的同步块将这一对语句包装起来。清单1中其他的例子与迭代有关。在第一个例子中,List.size()的结果在循环的执行期间可能会变得无效,因为另一个线程可以从这个列表中删除条目。如果时机不得当,在刚好进入循环的最后一次迭代之后有一个条目被另一个线程删除了,则List.get()将返回null,而doSomething()则很可能会抛出一个NullPointerException异常。那么,采取什么措施才能避免这种情况呢?如果当您正在迭代一个List时另一个线程也可能正在访问这个List,那么在进行迭代时您必须使用一个synchronized块将这个List包装起来,在List1上同步,从而锁住整个List。这样做虽然解决了数据争用问题,但是在并发性方面付出了更多的代价,因为在迭代期间锁住整个List会阻塞其他线程,使它们在很长一段时间内不能访问这个列表。集合框架引入了迭代器,用于遍历一个列表或者其他集合,从而优化了对一个集合中的元素进行迭代的过程。然而,在java.util集合类中实现的迭代器极易崩溃,也就是说,如果在一个线程正在通过一个Iterator遍历集合时,另一个线程也来修改这个集合,那么接下来的Iterator.hasNext()或Iterator.next()调用将抛出ConcurrentModificationException异常。就拿刚才这个例子来讲,如果想要防止出现ConcurrentModificationException异常,那么当您正在进行迭代时,您必须使用一个在Listl上同步的synchronized块将该List包装起来,从而锁住整个List。(或者,您也可以调用List.toArray(),在不同步的情况下对数组进行迭代,但是如果列表比较大的话这样做代价很高)。清单1.同步的map中的公用竞争条件蔽蜻月Ma豪p夕m价=责Co叮ll栽ec翻ti悔on肝s.蛙sy肥nc抖hr量on姥iz丰ed捎Ma凡p(戒ne恳w兄Ha榴sh售Ma横p(喂))银;演效废Li掌st脉l午=近C揭ol呈le相ct法io参ns虏.s美yn昼ch歇ro闭ni燃ze身dL遣is漫t(奋ne馋w叠Ar龟ra话yL浙is侵t(掀))权;医聚催//栋p亭ut倘-i莫f-骨ab乘se城nt漠i索di猪om辜-苗-南co骆nt环ai差ns匠a刮r世ac招e且co敢nd份it碗io确n鸡哪挂//厨m意ay仪r群eq折ui乔re咽e说xt半er把na闪l勺sy帆nc泄hr污on勉iz界at碧io秩n凶却谜if焰(治!m许ap层.c阅on串ta进in荒sK区ey踩(k新ey嗽))银帖茂臣ma解p.晶pu帖t(爱ke揪y,妄v氏al佩ue黑);银秃望//疯a沃d-蓝ho鞭c育it烧er匠at摧io舞n相--绪c察on震ta休in险s桂ra蹈ce妨c宿on昨di包ti络on孤s爷勺步//甩m扮ay吼r砌eq否ui甚re且e熄xt白er族na均l染sy强nc扣hr煌on示iz处at结io堵n却印焰fo伸r钩(i哪nt姑i航=0长;抛i<呢li币st轨.s摆iz佳e(疑);骂i随++稠)玻{扯老狭匙do已So旁me改th冈in店g(窑li槽st载.g阴et街(i汤))否;讲宜努}凉裙闭//肚n附or圣ma析l买it袋er粒at汇io柿n值--辨c摧an绒t未hr员ow敲C棵on吐cu伴rr蝶en绸tM凝od剩if腊ic升at敏io猎nE梅xc叶ep描ti映on摊抚须//深m屿ay鄙r挨eq酸ui鉴re径e码xt免er宗na翠l芝sy剃nc咽hr代on适iz休at语io倍n房英杰fo剂r焰(I斤te娱ra摄to舍r归i=蹄li弹st握.i歼te阁ra健to发r(晋);累i叙.h距as堂Ne饶xt夕()瞒;赞)坊{询就颜帅do津So决me抵th绿in线g(杰i.贯ne吉xt细()津);萌晚毒}乞信任穿的错当觉队sy奖nc沉hr画on影iz圈ed磨Li雅st注和亮尼sy属nc幅hr习on辣iz角ed侵Ma劈p错提澡供的伏有条播件的堪线程准安全胜性也道带来蜻了一歼个隐贱患惨――病开确发者赌会假驼设,副因为关这些货集合焰都是藏同步跟的,唤所以谊它们肃都是侨线程类安全派的,铜这样搁一来守他们严对于脊正确猛地同蛾步混丛合操让作这随件事雪就会读疏忽危。其察结果配是尽桂管表威面上尊这些触程序脊在负彼载较弯轻的悲时候巩能够鬼正常迈工作辅,但隐是一卡旦负彻载较眯重,殃它们改就会堵开始援抛出狠番Nu撑ll框Po剃in陕te闯rE聪xc拜ep鸡ti蛾on薪或接席Co捧nc精ur耳re遍nt童Mo走di峡fi灿ca及ti壮on抛Ex佣ce陈pt状io户n邮。仗可伸完缩性陶问题评可伸咽缩性石指的殿是一爬个应忠用程赵序在胆工作壁负载份和可传用处辣理资复源增滨加时宝其吞沾吐量拒的表柄现情毕况。累一个狮可伸彻缩的损程序铜能够列通过纪使用鲜更多厅的处核理器咐、内宪存或墓者I上/O疲带宽勒来相月应地窃处理薪更大泼的工英作负仍载。径锁住返某个汗共享凡的资赛源以笨获得易独占疗式的端访问叠这种抗做法焦会形颗成可兆伸缩擦性瓶炮颈―借―它遣使其雅他线菌程不峡能访傻问那听个资顷源,会即使暗有空抚闲的伸处理梦器可雨以调吉用那绢些线嘱程也胶无济球于事吩。为汁了取其得可尸伸缩耀性,倦我们狱必须冒消除缺或者愈减少厅我们锡对独骗占式蕉资源淋锁的签依赖他。虚同步漏的集载合包海装器脉以及须早期态的港Ha广sh蜘ta洒bl撒e窝和暗迹Ve车ct明or溜类言带来航的更制大的红问题派是,薪它们毫在单否个的艳锁上献进行段同步珍。这洞意味叫着一转次只芝有一租个线粮程可墨以访女问集舒合,舍如果刺有一清个线炸程正霸在读趁一个研删Ma晋p钱,色那么鼻所有豆其他引想要仅读或卷者写武这个湾炼Ma恳p茂的简线程探就必哲须等宪待。蝇最常即见的泊边Ma柄p扬操巡作,弟列ge林t(冤)堤和迹和pu信t(炎)振,巷可能垦比表术面上磨要进枯行更念多的敢处理时――世当遍井历一向个h陆as嘱h表笼的b凡uc狡ke公t以秆期找妥到某碍一特裕定的比ke乔y时足,障ge菜t(挡)遗必畜须对乳大量搞的候械选b嘴uc忧ke晕t调副用另Ob翅je穷ct盏.e岛qu踩al钩s(序)茫。论如果善ke惹y类背所使怖用的滨芽ha迅sh征Co墓de勾()足函乒数不捕能将惜va橡lu巨e均奸匀地怠分布张在整倾个h复as硬h表秒范围思内,锹或者蕉存在毙大量厘的h园as虚h冲央突,单那么炕某些昨bu挠ck京et粪链就谢会比察其他伏的链驴长很临多,旧而遍令历一庄个长久的h恨as躲h链车以及疮对该悦ha捉sh堆链上搞一定课百分肝比的朵元素君调用私谢eq贫ua盆ls嫂()熔是同一件屈很慢会的事议情。症在上激述条屋件下鹊,调臣用藏ge映t(仿)丑和诸葛pu充t(掌)糕的劈代价斥高的疼问题杆不仅馋仅是盐指访桥问过归程的依缓慢径,而雀且,丙当有当线程厨正在留遍历灰那个婚ha暴sh论链时茄,所雹有其干他线秤程都译被锁赔在外勉面,姑不能岗访问轮这个诵继Ma墨p蔑。炸宁(哈津希表瓦根据绩一个另叫做毕ha悄sh简的数麦字关章键字帆(k集ey汗)将虽对象置存储唉在b挨uc掌ke得t中蛛。h棍as闲h腊va雹lu饲e是递从对妖象中踪的值芦计算已得来扒的一令个数视字。穷每个螺不同僻的h骆as凉h翻va栗lu闹e都胳会创柄建一探个新柱的b盗uc攻ke锁t。鹊要查搁找一叔个对碑象,阶您只陈需要馒计算他这个鬼对象较的h卷as旦h猜va队lu将e并请搜索屈相应铅的b姥uc卷ke汽t就族行了迫。通貌过快宽速地愿找到头相应笼的b佩uc拉ke面t,喷就可猪以减中少您卫需要渔搜索捧的对怎象数常量了颠。译梢者注卵)张ge斯t(柳)念执扬行起钟来可首能会它占用塑大量惩的时约间,吵而在掠某些戚情况瓣下,耻前面宿已经累作了亏讨论枝的有晕条件好的线送程安背全性优问题灶会让洁这个虑问题荡变得轧还要桶糟糕毁得多条。引清单片1少中睡演示绕的争昨用条倡件常辨常使雕得对允单个助集合蹲的锁倾在单慕个操团作执亦行完弟毕之滋后还皱必须耗继续似保持灵一段矿较长短的时茂间。缩如果晃您要让在整盆个迭兄代期踪间都刊保持奸对集碎合的鸭锁,屡那么旨其他楼的线配程就雨会在班锁外俘停留滔很长窃的一林段时跑间,汇等待筹解锁病。荷实例港:一绪个简精单的绣ca腿ch旱e钞Ma谊p剂在拘服务碰器应垮用中闷最常警见的胶应用孩之一辅就是加实现借一个骑购ca哲ch掩e。铜服平务器夺应用仰可能汉需要桥缓存狡文件塞内容伯、生泻成的犁页面坡、数挽据库选查询漂的结义果、屡与经收过解蜓析的名XM江L文倾件相尘关的揉DO土M树豆,以规及许何多其息他类诱型的筋数据翻。c启ac妈he子的主箱要用颜途是奖重用授前一省次处捎理得狮出的罚结果真以减巴少服耀务时碎间和零增加靠吞吐章量。血ca恐ch典e工零作负锯载的够一个水典型兰的特继征就殖是检订索大由大多学于更液新,覆因此搂(理拘想情挺况下鸣)c煌ac惕he勺能够揉提供伐非常斤好的节轰ge刘t(路)掩性艺能。使不过雨,使毛用会证妨碍锅性能塔的c倾ac阅he迫还不蓄如完敏全不送用c柿ac脏he笔。蹦如果挪使用做卫sy标nc转hr急on集iz留ed夹Ma酱p奏来絮实现饿一个球ca桥ch惑e,乌那么赵您就匀在您更的应遇用程傍序中稼引入使了一羞个潜先在的侮可伸街缩性震瓶颈京。因苦为一昌次只叹有一钳个线认程可忙以访丹问闯Ma选p倚,蔽这些边线程荷包括饲那些额要从线茄Ma撒p慢中医取出溪一个芳值的春线程贯以及晓那些须要将群一个功新的疼割(k西ey减,婆va偿lu汽e)浅对床插入毅到该舰ma美p中专的线醋程。剥煌减小旦锁粒斩度篮提高报王Ha堂sh疾Ma和p猾的爪并发爷性同城时还袋提供辟线程匹安全唤性的岁一种麻方法旋是废密除对胃整个棒表使速用一坑个锁巴的方娃式,闯而采揪用对拾ha秆sh振表的若每个龙bu解ck找et瞎都使痕用一走个锁齿的方代式(框或者蜡,更虑常见族的是属,使沃用一侄个锁年池,牺每个芝锁负笨责保据护几亮个b买uc新ke匙t)钟。这崭意味垮着多使个线敞程可抗以同穷时地居访问棋一个弓脱Ma仔p队的离不同馆部分感,而建不必乱争用踪单个佳的集罚合范东围的豪锁。促这种稳方法默能够覆直接商提高辉插入些、检欧索以喘及移擦除操犹作的顿可伸耍缩性叶。不援幸的态是,举这种证并发田性是筑以一葬定的棕代价层换来机的―哨―这赖使得胆对整升个集槐合进万行操置作的默一些田方法冰(例疫如吐si轨ze续()根或叙较is辉Em急pt忽y(兴)时)柴的实侄现更要加困式难,篇因为呜这些威方法伍要求讯一次习获得本许多发的锁宿,并势且还译存在趟返回夹不正青确的依结果咸的风惰险。书然而荣,对村于某砍些情追况,语例如客实现薪ca舅ch黑e,季这样县做是味一个守很好销的折霜衷―士―因拖为检利索和玻插入弊操作歼比较餐频繁质,而恩身si压ze欠()蚕和理拢is绳Em驶pt虑y(棕)次操挤作则寺少得间多。逃割Co堆nc态ur幼re江nt权Ha亏sh看Ma洒p弱ut仰il手.c逝on社cu岸rr农en测t领包荐中的耀镰Co义nc政ur小re售nt兰Ha阳sh猴Ma矛p虾类骨(也萝将出极现在砖JD睁K熟1.袖5中方的砌ja菠va芒.u保ti召l.狮co泄nc缩ur甩re膝nt吐包元中)陈是对姐顾Ma帝p僚的吃线程莫安全折的实炒现,黎比起无场sy纸nc陆hr闯on栽iz激ed谊Ma伶p食来贡,它愤提供舌了好反得多迹的并需发性份。多井个读扭操作圾几乎刊总可坟以并槽发地姐执行棋,同谈时进但行的贡读和在写操膝作通眨常也锤能并腰发地倾执行旋,而瓶同时视进行饭的写浇操作胸仍然扔可以伏不时州地并印发进茧行(另相关犯的类塌也提族供了以类似加的多六个读冬线程良的并恭发性续,但揪是,猎只允耽许有笨一个阴活动风的写善线程拼)哨。C祥on蝇cu岗rr煌en秃tH糖as迎hM平ap拥被房设计部用来燃优化得检索伍操作鸣;实贫际上查,成役功的箱泽ge轧t(退)筛操龄作完准成之溜后通刻常根昼本不钱会有醋锁着峡的资喂源。全要在焦不使氧用锁拼的情哈况下纹取得寸线程夫安全叛性需朴要一烘定的礼技巧荐性,郊并且弱需要过对J权av顶a内岂存模洽型(胶Ja秩va该M状em和or庸y运Mo但de才l)蛛的细买节有薯深入养的理斥解。爬享Co沟nc拜ur啄re铅nt喝Ha套sh支Ma段p装实并现,贼加上疏伤ut炒il肯.c剩on蜘cu个rr新en神t拒包煤的其歉他部安分,需已经铸被研透究正眉确性舰和线星程安宏全性户的并呆发专湿家所浊正视虽。在厌下个平月的语文章叛中,件我们皱将看多看努Co稳nc再ur末re倾nt虎Ha童sh挤Ma筝p屿的息实现苍的细惩节。慰鬼Co脚nc井ur寨re聋nt扔Ha案sh宋Ma华p誉通珍过稍肺微地佩松弛狱它对楼调用疼者的陆承诺蚕而获熔得了别更高烟的并涂发性脉。检已索操占作将渣可以粗返回络由最塞近完验成的爬插入刮操作钢所插养入的升值,狗也可怨以返袜回在病步调缎上是趟并发询的插永入操吼作所夕添加律的值凉(但补是决姜不会锄返回不一个攀没有弦意义蚕的结纸果)宣。由式活Co贿nc构ur榜re氧nt崭Ha狂sh迁Ma挪p.遥it也er锄at周or挣()苦返绘回的呢傍It稼er尽at颂or屋s堆将创每次烫最多肌返回笔一个横元素洽,并堡且决质不会室抛出粥棒Co嘱nc壤ur防re扶nt款Mo命di妙fi罪ca络ti汤on筐Ex醋ce梯pt隶io邀n炸异呈常,骡但是摸可能胀会也滥可能秒不会哨反映洲在该亚迭代侨器被斥构建壶之后贝发生勺的插旧入操羡作或婶者移叨除操碌作。鸡在对代集合唤进行绵迭代筛时,框不需逆要表币范围汪的锁距就能棉提供祝线程跃安全逆性。赶在任蛮何不药依赖佳于锁圆整个碗表来装防止阿更新沈的应筛用程总序中导,可催以使泊用啊Co显nc疫ur族re助nt再Ha须sh务Ma世p刻来扭替代镰趋sy坦nc辟hr猴on察iz慎ed没Ma耐p括或称陡Ha到sh贷ta取bl魔e等。宅野上述伤改进挠使得蝴盏Co踩nc滔ur章re题nt樱Ha锤sh旬Ma想p肉能森够提蹲供比灰百Ha屑sh满ta秧bl奖e昨高膏得多闪的可吸伸缩前性,首而且暖,对岩于很丙多类截型的梦公用喜案例枯(比清如共爆享的妹ca锐ch姻e)躺来说滨,还轮不用透损失忆其效且率。厨伟好了潜多少姿?橡表学1对忆介Ha殿sh虚ta分bl原e瞎和悠缸Co西nc跌ur窜re侦nt赴Ha宏sh爷Ma咱p弦的筑可伸筒缩性炊进行扣了粗探略的错比较副。在蛾每次甜运行伐过程学中,颗咸n额个辱线程费并发凑地执乏行一测个死炭循环岛,在既这个口死循喊环中楼这些村线程亮从一盾个景Ha派sh咏ta诱bl在e沟或堪者宫Co膛nc厨ur仔re持nt江Ha者sh师Ma箱p奖中尚检索岭随机表的k奇ey杂v镜al涉ue做,发秘现在圈执行耽昌pu刮t(缠)葱操押作时稠有8如0%搬的检考索失馒败率饭,在猾执行沙操作竭时有衔1%略的检袭索成呜功率鸟。测瞧试所朴在的罗平台舟是一搁个双丸处理愤器的股Xe嚼on昏系统哈,操蚁作系油统是奴Li凤nu趴x。职数据竿显示紫了1黄0,汪00驱0,肚00拉0次掉迭代共以毫货秒计先的运减行时众间,钓这个夸数据孙是在天将对猾胶Co渣nc尺ur炉re捎nt勺Ha伞sh胆Ma耳p的挖操秩作标卷准化妈为一垮个线祥程的触情况平下进湾行统按计的托。您税可以婚看到异,当声线程庄增加桐到多隙个时垒,须Co奖nc膀ur他re鹅nt环Ha选sh光Ma获p赶的爹性能死仍然油保持扛上升匹趋势音,而嫌陈Ha靠sh干ta宋bl娘e锦的击性能沉则随湖着争划用锁老的情篮况的疾出现蹄而立防即降吊了下挨来。颂贝比起胡通常俯情况代下的牛服务免器应监用,也这次想测试穗中线巧程的竞数量蹄看上爆去有道点少扣。然纤而,梯因为织每个取线程肌都在惜不停冲地对快表进谜行操罗作,工所以编这与章实际论环境京下使添用这扁个表座的更链多数磁量的循线程妈的争在用情抚况基装本等喷同。容表毯1.禾Ha聋sh嚼ta帮bl董e俩与舰Co观nc还ur替re沉nt突Ha袭sh阵Ma摇p在绿可伸势缩性淡方面核的比价较蛋线程严数问Co典nc扫ur谁re名nt对Ha赔sh捧Ma顷p充Ha陶sh勇ta吐bl亦e汪1布1.爷00曲1.速03散2颈2.许59均32逐.4模0煎4院5.出58板78医.2驶3贞8擦13荷.2合1现16痒3.竟48趟16丙27扯.5越8水34吓1.获21糖32宫57棚.2炉7丝77岭8.吩41谅Co袜py拦On猫Wr别it偿eA抬rr泄ay预Li粱st屈在那众些遍傍历操已作大池大地琴多于附插入费或移缺除操趴作的营并发宁应用亏程序伤中,轰一般丹用香Co凑py赏On剩Wr堪it伶eA械rr页ay含Li圈st誓类钟替代洋津Ar闹ra顷yL惹is创t村。驰如果猫是用址于存幸放一勒个侦机听器上(l胡is笋te办ne狭r)钢列表昆,例渗如在捉AW盒T或医Sw刚in幸g应调用程涨序中佩,或垦者在苏常见饶的J故av绍aB贺ea刊n中他,那窑么这笔种情卸况很哀常见甩(相息关的折懂Co缩py达On经Wr歌it古eA推rr侮ay却Se钓t裳使斥用一晌个种Co主py饰On宽Wr惭it局eA尚rr细ay社Li桨st彻来城实现使掠Se淋t个接银口)假。环如果姜您正剖在使奶用一玉个普狂通的秒明Ar星ra乳yL食is猪t飘来弃存放检一个值侦听气器列究表,其那么恨只要匠该列怜表是击可变煮的,搂而且饶可能次要被廉多个秃线程忍访问兴,您蹄就必脱须要属么在流对其泪进行圾迭代逗操作际期间赵,要都么在现迭代贺前进钟行的难克隆雀操作帅期间牛,锁坦定整役个列板表,荡这两扰种做悉法的遮开销额都很豪大。堪当对辅列表钓执行犁会引扒起列陵表发屯生变鉴化的闯操作驶时,车坦Co尸py矮On侨Wr渔it宫

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论