ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩亚洲精品电影,久久久99爱,91在线网站http://www.aygfsteel.com/kevinzheng/zh-cnThu, 24 Jul 2025 07:52:44 GMTThu, 24 Jul 2025 07:52:44 GMT60Hibernate中如何高效处理æ“v量数æ?/title><link>http://www.aygfsteel.com/kevinzheng/archive/2008/12/19/247401.html</link><dc:creator>kevinzheng</dc:creator><author>kevinzheng</author><pubDate>Fri, 19 Dec 2008 14:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/kevinzheng/archive/2008/12/19/247401.html</guid><wfw:comment>http://www.aygfsteel.com/kevinzheng/comments/247401.html</wfw:comment><comments>http://www.aygfsteel.com/kevinzheng/archive/2008/12/19/247401.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kevinzheng/comments/commentRss/247401.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kevinzheng/services/trackbacks/247401.html</trackback:ping><description><![CDATA[<p>最˜q‘一直常常看到别人javaeye¾|‘站上看到别人在问在hibernate怎么样处理æ“v量数据,怎么æ ähé«˜æ€§èƒ½åQŒæœ¬äººåœ¨CSDN博客上看到这½‹‡å¥½çš„æ–‡ç« ï¼Œòq¶ç»“合本äºÞZ¸€ä¸€éªŒè¯ ¼‹®å®žå¦‚作者所è¯?故拿出来和大家分享。希望对初学HIBERNATE框架的朋友有所帮助ã€?<br /> Hibernate扚w‡å¤„理‹¹·é‡å…¶å®žä»Žæ€§èƒ½ä¸Šè€ƒè™‘åQŒå®ƒæ˜¯å¾ˆä¸å¯å–çš„åQŒæµªè´¹äº†å¾ˆå¤§çš„内存。从它的机制上讲åQŒHibernate它是先把½W¦åˆæ¡äšg的数据查出来åQŒæ”¾åˆ°å†…存当中,然后再进行操作。实际ä‹É用下来性能非常不理惻I¼Œåœ¨ç¬”者的实际使用中采用下面的½W¬ä¸‰¿Uä¼˜åŒ–方案的数据是:100000条数据插入数据库åQ?nbsp;需要约30分钟åQŒå‘µå‘µï¼Œæ™•倒。(本äh10分钟插入1000000条数据(字段比较ž®ï¼‰æˆ‘的爱机是宏基Aspire 4920åQ?<br />     æ€È»“下来有三¿Uæ¥å¤„理以解å†Ïx€§èƒ½é—®é¢˜åQ?</p> <p>    1åQšç»•˜q‡Hibernate API åQŒç›´æŽ¥é€šè¿‡ JDBC API 来做åQŒè¿™ä¸ªæ–¹æ³•性能上是比较好的。也是最快的ã€?</p> <p>    2åQšè¿ç”¨å­˜å‚¨è¿‡½E‹ã€?</p> <p><br />     3åQšè¿˜æ˜¯ç”¨Hibernate API 来进行常规的扚w‡å¤„理åQŒå¯ä»¥ä¹Ÿæœ‰å˜åQŒå˜ž®±å˜åœ¨ï¼Œæˆ‘们可以在查扑ևºä¸€å®šçš„量的时候,及时的将˜q™äº›æ•°æ®åšå®Œæ“ä½œž®?</p> <p><br />     删掉åQŒsession.flushåQˆï¼‰åQ›session.evictåQˆXX对象集)åQ?˜q™æ ·ä¹Ÿå¯ä»¥æŒ½æ•‘一ç‚ÒŽ€§èƒ½æŸå¤±ã€‚è¿™ä¸?#8220;一定的é‡?#8221;è¦å°±è¦æ ¹æ®å®žé™…æƒ…å†µåšå®šé‡å‚è€ƒäº†ã€‚ä¸€èˆ¬äØ“30-60左右åQŒä½†æ•ˆæžœä»ç„¶ä¸ç†æƒŸë€?</p> <p>    1åQšç»•˜q‡Hibernate API åQŒç›´æŽ¥é€šè¿‡ JDBC API 来做åQŒè¿™ä¸ªæ–¹æ³•性能上是比较好的åQŒä¹Ÿæ˜¯æœ€å¿«çš„。(实例ä¸?更新操作åQ?</p> <p> </p> <p>    Transaction tx=session.beginTransactionåQˆï¼‰åQ?//注意用的是hibernate事务处理边界 </p> <p><br />     Connection conn=session.connectionåQˆï¼‰åQ?</p> <p><br />     PreparedStatement stmt=conn.preparedStatementåQ?update CUSTOMER as C set C.sarlary=c.sarlary+1 where c.sarlary>1000"åQ‰ï¼› </p> <p> </p> <p>    stmt.excuteUpdateåQˆï¼‰åQ?</p> <p>    tx.commitåQˆï¼‰åQ?//注意用的是hibernate事务处理边界 </p> <p><br />     ˜q™å°½E‹åºä¸­ï¼Œé‡‡ç”¨çš„æ˜¯ç›´æŽ¥è°ƒç”¨JDBC çš„API 来访问数据库åQŒæ•ˆçŽ‡å¾ˆé«˜ã€‚é¿å…äº†Hibernate 先查询出来加载到内存åQŒå†˜q›è¡Œæ“ä½œå¼•发的性能问题 </p> <p> </p> <p>    ã€?</p> <p>    2åQšè¿ç”¨å­˜å‚¨è¿‡½E‹ã€‚但˜q™ç§æ–¹å¼è€ƒè™‘到易植和½E‹åºéƒ¨çÖv的方便性,不徏议ä‹É用。(实例ä¸?更新操作åQ?</p> <p> </p> <p>    如果底层数据库(如OracleåQ‰æ”¯æŒå­˜å‚¨è¿‡½E‹ï¼Œä¹Ÿå¯ä»¥é€šè¿‡å­˜å‚¨˜q‡ç¨‹æ¥æ‰§è¡Œæ‰¹é‡æ›´æ–°ã€‚存储过½E‹ç›´æŽ¥åœ¨æ•°æ®åº“中˜qè¡ŒåQŒé€Ÿåº¦æ›´åŠ å¿«ã€‚åœ¨Oracleæ•?</p> <p>    据库中可以定义一个名为batchUpdateCustomeråQˆï¼‰çš„存储过½E‹ï¼Œä»£ç å¦‚下åQ?</p> <p> </p> <p>    代码内容create or replace procedure batchUpdateCustomeråQˆp_age in numberåQ?as begin update CUSTOMERS set AGE=AGE+1 where AGE>p_ageåQ›endåQ?</p> <p>    以上存储˜q‡ç¨‹æœ‰ä¸€ä¸ªå‚æ•°p_ageåQŒä»£è¡¨å®¢æˆïLš„òq´é¾„åQŒåº”用程序可按照以下方式调用存储˜q‡ç¨‹åQ?</p> <p>    代码内容 </p> <p><br />     tx = session.beginTransactionåQˆï¼‰åQ?</p> <p><br />     Connection con=session.connectionåQˆï¼‰åQ?</p> <p><br />     String procedure = "{call batchUpdateCustomeråQˆï¼ŸåQ?}"åQ?</p> <p><br />     CallableStatement cstmt = con.prepareCallåQˆprocedureåQ‰ï¼› </p> <p>    cstmt.setIntåQ?åQ?åQ‰ï¼› //把年龄参数设ä¸? </p> <p>    cstmt.executeUpdateåQˆï¼‰åQ?</p> <p>    tx.commitåQˆï¼‰åQ?</p> <p><br />     从上面程序看出,应用½E‹åºä¹Ÿå¿…™åȝ»•˜q‡Hibernate APIåQŒç›´æŽ¥é€šè¿‡JDBC API来调用存储过½E‹ã€?</p> <p> </p> <p><br /> 3åQšè¿˜æ˜¯ç”¨Hibernate API 来进行常规的扚w‡å¤„理åQŒå¯ä»¥ä¹Ÿæœ‰å˜åQŒå˜ž®±å˜åœ¨ï¼Œæˆ‘们可以在查扑ևºä¸€å®šçš„量的时候,及时的将˜q™äº›æ•°æ®åšå®Œæ“ä½œž®?</p> <p>    删掉åQŒsession.flushåQˆï¼‰åQ›session.evictåQˆXX对象集)åQ?˜q™æ ·ä¹Ÿå¯ä»¥æŒ½æ•‘一ç‚ÒŽ€§èƒ½æŸå¤±ã€‚è¿™ä¸?#8220;一定的é‡?#8221;要就要根据实际情况做定量参考了…… </p> <p> </p> <p>    åQˆå®žä¾‹äØ“ 保存操作åQ?</p> <p><br />     业务逻辑为:我们要想数据库插å…?0 0000 条数æ?</p> <p> </p> <p>    tx=session.beginTransactionåQˆï¼‰åQ?</p> <p>    foråQˆint i=0åQ›i<100000åQ›i++åQ?</p> <p><br />     { </p> <p>    Customer custom=new CustomeråQˆï¼‰åQ?</p> <p> </p> <p>    custom.setNameåQ?user"+iåQ‰ï¼› </p> <p><br />     session.saveåQˆcustomåQ‰ï¼› </p> <p> </p> <p>    ifåQˆi%50==0åQ?// 以每50个数据作ä¸ÞZ¸€ä¸ªå¤„理单元,也就是我上面说的“一定的é‡?#8221;åQŒè¿™ä¸ªé‡æ˜¯è¦é…Œæƒ…考虑çš?</p> <p> </p> <p>    { </p> <p>    session.flushåQˆï¼‰åQ?</p> <p>    session.clearåQˆï¼‰åQ?</p> <p> </p> <p>    } </p> <p>    } </p> <p> </p> <p>    ˜q™æ ·å¯ä»¥æŠŠç³»¾lŸç»´æŒåœ¨ä¸€ä¸ªç¨³å®šçš„范围…… </p> <p>    在项目的开发过½E‹ä¹‹ä¸­ï¼Œç”׃ºŽ™å¹ç›®éœ€æ±‚,我们常常需要把大批量的数据插入到数据库。数量çñ”有万¾U§ã€åä¸‡çñ”、百万çñ”、甚臛_ƒä¸‡çñ”别的。如此数量çñ”别的数据用Hibernate做插入操作,ž®±å¯èƒ½ä¼šå‘生异常åQŒå¸¸è§çš„异常是OutOfMemoryErroråQˆå†…存溢出异常)ã€?</p> <p>    首先åQŒæˆ‘们简单来回顾一下Hibernate插入操作的机制。Hibernate要对它内部缓存进行维护,当我们执行插入操作时åQŒå°±ä¼šæŠŠè¦æ“ä½œçš„对象全部攑ֈ°è‡ªèín的内部缓存来˜q›è¡Œ½Ž¡ç†ã€?</p> <p>    谈到Hibernate的缓存,Hibernate有内部缓存与二çñ”¾~“存之说。由于Hibernate对这两种¾~“存有着不同的管理机åˆÓž¼Œå¯¹äºŽäºŒçñ”¾~“å­˜åQŒæˆ‘们可以对它的大小˜q›è¡Œç›¸å…³é…ç½®åQŒè€Œå¯¹äºŽå†…部缓存,Hibernatež®±é‡‡å–了“放ä“Q自流”çš„æ€åº¦äº†ï¼Œå¯¹å®ƒçš„å®¹é‡åÆˆæ²¡æœ‰é™åˆ¶ã€‚çŽ°åœ¨ç—‡¾l“找åˆîCº†åQŒæˆ‘们做‹¹·é‡æ•°æ®æ’入的时候,生成˜q™ä¹ˆå¤šçš„对象ž®×ƒ¼šè¢«çº³å…¥å†…部缓存(内部¾~“存是在内存中做¾~“存的)åQŒè¿™æ ·ä½ çš„ç³»¾lŸå†…存就会一点一点的被蚕食,如果最后系¾lŸè¢«æŒ?#8220;ç‚?#8221;了,也就在情理之中了ã€?</p> <p>    我们æƒÏxƒ³å¦‚何较好的处理这个问题呢åQŸæœ‰çš„开发条件又必须使用Hibernate来处理,当然有的™å¹ç›®æ¯”较灉|´»åQŒå¯ä»¥åŽ»å¯ÀL±‚其他的方法ã€?</p> <p><br />     ½W”者在˜q™é‡ŒæŽ¨èä¸¤ç§æ–ÒŽ³•åQšï¼ˆ1åQ‰ï¼šä¼˜åŒ–HibernateåQŒç¨‹åºä¸Šé‡‡ç”¨åˆ†æ®µæ’入及时清除¾~“存的方法ã€?</p> <p>    åQ?åQ‰ï¼š¾l•过Hibernate API åQŒç›´æŽ¥é€šè¿‡ JDBC API 来做扚w‡æ’å…¥åQŒè¿™ä¸ªæ–¹æ³•性能上是最 好的åQŒä¹Ÿæ˜¯æœ€å¿«çš„ã€?</p> <p>    对于上述中的æ–ÒŽ³•1åQŒå…¶åŸºæœ¬æ˜¯æ€èµ\为:优化HibernateåQŒåœ¨é…ç½®æ–‡äšg中设¾|®hibernate.jdbc.batch_size参数åQŒæ¥æŒ‡å®šæ¯æ¬¡æäº¤SQL的数量;½E‹åºä¸Šé‡‡ç”¨åˆ†ŒD‰|’入及时清除缓存的æ–ÒŽ³•åQˆSession实现了异步write-behindåQŒå®ƒå…è®¸Hibernate昑ּåœ°å†™æ“ä½œçš„æ‰¹å¤„理åQ‰ï¼Œä¹Ÿå°±æ˜¯æ¯æ’入一定量的数据后及时的把它们从内部缓存中清除掉,释放占用的内存ã€?</p> <p>    讄¡½®hibernate.jdbc.batch_size参数åQŒå¯å‚考如下配¾|®ã€?</p> <p><br />     <hibernate-configuration> <session-factory>…… </p> <p> </p> <p>    <property name=“ hibernate.jdbc.batch_size”>50</property>…… </p> <p><br />     <session-factory> <hibernate-configuration> </p> <p>    配置hibernate.jdbc.batch_size参数的原因就是尽量少è¯ÀL•°æ®åº“åQŒhibernate.jdbc.batch_sizeå‚æ•°å€ÆD¶Šå¤§ï¼Œè¯ÀL•°æ®åº“的次数越ž®‘,速度­‘Šå¿«ã€‚从上面的配¾|®å¯ä»¥çœ‹å‡ºï¼ŒHibernate是等到程序积累到äº?0个SQL之后再批量提交ã€?</p> <p>    ½W”者也在想åQŒhibernate.jdbc.batch_size参数å€ég¹Ÿå¯èƒ½ä¸æ˜¯è®„¡½®å¾—越大越好,从性能角度上讲˜q˜æœ‰å¾…商榗÷€‚这要考虑实际情况åQŒé…Œæƒ…设¾|®ï¼Œä¸€èˆ¬æƒ…形设¾|?0ã€?0ž®±å¯ä»¥æ»¡­‘³éœ€æ±‚了ã€?</p> <p>    ½E‹åºå®žçŽ°æ–šw¢åQŒç¬”者以插入10000æ¡æ•°æ®äØ“ä¾‹å­åQŒå¦‚ </p> <p> </p> <p>    Session session=HibernateUtil.currentSessionåQˆï¼‰åQ?</p> <p>    Transatcion tx=session.beginTransactionåQˆï¼‰åQ?</p> <p>    foråQˆint i=0åQ›i<10000åQ›i++åQ?</p> <p> </p> <p>    { </p> <p>    Student st=new StudentåQˆï¼‰åQ?</p> <p> </p> <p>    st.setNameåQ?#8220;feifei”åQ‰ï¼› </p> <p> </p> <p>    session.saveåQˆståQ‰ï¼› </p> <p>    ifåQˆi%50==0åQ?//以每50个数据作ä¸ÞZ¸€ä¸ªå¤„理单å…?</p> <p>    { </p> <p>    session.flushåQˆï¼‰åQ?//保持与数据库数据的同æ­?</p> <p><br />     session.clearåQˆï¼‰åQ?//清除内部¾~“存的全部数据,及时释放出占用的内存 </p> <p>    } </p> <p>    } </p> <p> </p> <p>    tx.commitåQˆï¼‰åQ?</p> <p>    …… </p> <p> </p> <p><br />     在一定的数据规模下,˜q™ç§åšæ³•可以把系¾lŸå†…存资源维持在一个相对稳定的范围ã€?</p> <p> </p> <p>    注意åQšå‰é¢æåˆîCºŒ¾U§ç¼“存,½W”者在˜q™é‡Œæœ‰å¿…要再提一下。如果启用了二çñ”¾~“å­˜åQŒä»Žæœºåˆ¶ä¸Šè®²Hibernateä¸ÞZº†¾l´æŠ¤äºŒçñ”¾~“å­˜åQŒæˆ‘们在做插入、更新、删除操作时åQŒHibernate都会往二çñ”¾~“存充入相应的数据。性能上就会有很大损失åQŒæ‰€ä»¥ç¬”者徏议在批处理情况下¼›ç”¨äºŒçñ”¾~“å­˜ã€?</p> <p><br />     对于æ–ÒŽ³•2åQŒé‡‡ç”¨ä¼ ¾lŸçš„JDBC的批处理åQŒä‹É用JDBC API来处理ã€?</p> <p>    些方法请参照java 批处理自执行SQL </p> <p><br />     看看上面的代码,是不是总觉得有不妥的地方?对,没发çŽîC¹ˆåQè¿™˜q˜æ˜¯JDBC的传¾lŸç¼–½E‹ï¼Œæ²¡æœ‰ä¸€ç‚¹Hibernate味道ã€?</p> <p> </p> <p>    å¯ä»¥å¯¹ä»¥ä¸Šçš„ä»£ç ä¿®æ”¹æˆä¸‹é¢è¿™æ øP¼š </p> <p> </p> <p>    Transaction tx=session.beginTransactionåQˆï¼‰åQ?//使用Hibernate事务处理 </p> <p>    边界Connection conn=session.connectionåQˆï¼‰åQ?</p> <p>    PrepareStatement stmt=conn.prepareStatementåQ?#8220;insert into T_STUDENTåQˆnameåQ?valuesåQˆï¼ŸåQ?#8221;åQ‰ï¼› </p> <p>    foråQˆint j=0åQ›j++åQ›j<200åQ‰{ </p> <p><br />     foråQˆint i=0åQ›i++åQ›j<50åQ?</p> <p> </p> <p>    { </p> <p>    stmt.setStringåQ?åQ?#8220;feifei”åQ‰ï¼› </p> <p><br />     } </p> <p>    } </p> <p>    stmt.executeUpdateåQˆï¼‰åQ?</p> <p> </p> <p>    tx.commitåQˆï¼‰åQ?//使用 Hibernate事务处理边界 </p> <p>    …… </p> <p><br />     ˜q™æ ·æ”¹åЍž®±å¾ˆæœ‰Hibernate的味道了。笔者经˜q‡æµ‹è¯•,采用JDBC API来做扚w‡å¤„理åQŒæ€§èƒ½ä¸Šæ¯”使用Hibernate API要高ž®†è¿‘10倍,性能上JDBC 占优˜q™æ˜¯æ— ç–‘çš„ã€?</p> <p><br />     扚w‡æ›´æ–°ä¸Žåˆ é™?</p> <p>    Hibernate2中,对于扚w‡æ›´æ–°æ“ä½œåQŒHibernate是将½W¦åˆè¦æ±‚的数据查出来åQŒç„¶åŽå†åšæ›´æ–°æ“ä½œã€‚æ‰¹é‡åˆ é™¤ä¹Ÿæ˜¯è¿™æ øP¼Œå…ˆæŠŠ½W¦åˆæ¡äšg的数据查出来åQŒç„¶åŽå†åšåˆ é™¤æ“ä½œã€?</p> <p>    ˜q™æ ·æœ‰ä¸¤ä¸ªå¤§¾~ºç‚¹åQšï¼ˆ1åQ‰ï¼šå ç”¨å¤§é‡çš„内存ã€?</p> <p>    åQ?åQ‰ï¼šå¤„理‹¹·é‡æ•°æ®çš„æ—¶å€™ï¼Œæ‰§è¡Œupdate/delete语句ž®±æ˜¯‹¹·é‡äº†ï¼Œè€Œä¸”一条update/delete语句只能操作一个对象,˜q™æ ·é¢‘繁的操作数据库åQŒæ€§èƒ½ä½Žä¸‹åº”该是可惌™€ŒçŸ¥çš„了ã€?</p> <p>    Hibernate3 发布后,å¯Òމ¹é‡æ›´æ–?删除操作引入了bulk update/deleteåQŒå…¶åŽŸç†ž®±æ˜¯é€šè¿‡ä¸€æ¡HQL语句完成扚w‡æ›´æ–°/删除操作åQŒå¾ˆ¾cÖM¼¼JDBC的批量更æ–?删除操作。在性能上,比Hibernate2的批量更æ–?删除有很大的提升ã€?</p> <p>    Transaction tx=session.beginSessionåQˆï¼‰åQ?</p> <p>    String HQL=“delete STUDENT”åQ?</p> <p>    Query query=session.createQueryåQˆHQLåQ‰ï¼› </p> <p><br />     int size=query.executeUpdateåQˆï¼‰åQ?</p> <p> </p> <p>    tx.commitåQˆï¼‰åQ?</p> <p> </p> <p>    …… </p> <p>    控制台输å‡ÞZº†ä¹Ÿå°±ä¸€æ¡åˆ é™¤è¯­å¥HibernateåQšdelete from T_STUDENTåQŒè¯­å¥æ‰§è¡Œå°‘了,性能上也与ä‹É用JDBC相差无几åQŒæ˜¯ä¸€ä¸ªæå‡æ€§èƒ½å¾ˆå¥½çš„æ–¹æ³•ã€‚å½“ç„¶äØ“äº†æœ‰æ›´å¥½çš„æ€§èƒ½åQŒç¬”者徏议批量更æ–îC¸Žåˆ é™¤æ“ä½œ˜q˜æ˜¯ä½¿ç”¨JDBCåQŒæ–¹æ³•以及基本的知识点与上面的批量插入方æ³?基本相同åQŒè¿™é‡Œå°±ä¸åœ¨å†—è¿°ã€?</p> <p>    ½W”者这里再提供一个方法,ž®±æ˜¯ä»Žæ•°æ®åº“端来考虑提升性能åQŒåœ¨Hibernate½E‹åºç«¯è°ƒç”¨å­˜å‚¨è¿‡½E‹ã€‚存储过½E‹åœ¨æ•°æ®åº“端˜qè¡ŒåQŒé€Ÿåº¦æ›´å¿«ã€‚以扚w‡æ›´æ–°ä¸ÞZ¾‹åQŒç»™å‡ºå‚考代码ã€?</p> <p>    首先在数据库端徏立名为batchUpdateStudent存储˜q‡ç¨‹åQ?</p> <p>    create or replace produre batchUpdateStudentåQˆa in numberåQ?as </p> <p> </p> <p>    begin </p> <p><br />     update STUDENT set AGE=AGE+1 where AGE>aåQ?</p> <p><br />     endåQ?</p> <p>    调用代码如下åQ?</p> <p> </p> <p>    Transaction tx=session.beginSessionåQˆï¼‰åQ?</p> <p><br />     Connection conn=session.connectionåQˆï¼‰åQ?</p> <p><br />     String pd=“……{call batchUpdateStudentåQˆï¼ŸåQ‰}”åQ?</p> <p><br />     CallableStatement cstmt=conn.PrepareCallåQˆpdåQ‰ï¼› </p> <p>    cstmt.setIntåQ?åQ?0åQ‰ï¼› //把年龄这个参数设ä¸?0 </p> <p>    tx.commitåQˆï¼‰åQ?</p> <p>    观察上面的代码,也是¾l•过Hibernate APIåQŒä‹Éç”?JDBC API来调用存储过½E‹ï¼Œä½¿ç”¨çš„还是Hibernate的事务边界。存储过½E‹æ— ç–‘是提高扚w‡å¤„理性能的一个好æ–ÒŽ³•åQŒç›´æŽ¥è¿è¡Œä¸Žæ•°æ®åº“端åQŒæŸ¿Uç¨‹åº¦ä¸Šè®²æŠŠæ‰¹å¤„理的压力转接¾l™äº†æ•°æ®åº“ã€?</p> <p><br />     三:¾~–后è¯?</p> <p>    本文探讨了Hibernate的批处理操作åQŒå‡ºå‘点都是在提高性能上考虑了,也只是提供了提升性能的一个小斚w¢ã€?</p> <p>    不管采取什么样的方法,来提升性能都要æ ÒŽ®å®žé™…的情冉|¥è€ƒè™‘åQŒäؓ用户提供一个满­‘³éœ€æ±‚的而且高效½E›_®šçš„ç³»¾lŸæ‰æ˜¯é‡ä¸­ä¹‹ä¸­ã€?/p> <p> </p> <img src ="http://www.aygfsteel.com/kevinzheng/aggbug/247401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kevinzheng/" target="_blank">kevinzheng</a> 2008-12-19 22:03 <a href="http://www.aygfsteel.com/kevinzheng/archive/2008/12/19/247401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">Î÷»ªÏØ</a>| <a href="http://" target="_blank">ׯºÓÊÐ</a>| <a href="http://" target="_blank">½õÆÁÏØ</a>| <a href="http://" target="_blank">ÏĺÓÏØ</a>| <a href="http://" target="_blank">¸ÞÀ¼ÏØ</a>| <a href="http://" target="_blank">ÓÑÒêÏØ</a>| <a href="http://" target="_blank">ξÀçÏØ</a>| <a href="http://" target="_blank">Ã÷ÐÇ</a>| <a href="http://" target="_blank">¶ÑÁúµÂÇìÏØ</a>| <a href="http://" target="_blank">º£ÃÅÊÐ</a>| <a href="http://" target="_blank">ÊÕ²Ø</a>| <a href="http://" target="_blank">ËçÀâÏØ</a>| <a href="http://" target="_blank">Óå±±Çø</a>| <a href="http://" target="_blank">ÎÚËÕÊÐ</a>| <a href="http://" target="_blank">³çÑôÏØ</a>| <a href="http://" target="_blank">¼òÑôÊÐ</a>| <a href="http://" target="_blank">ÇúÑôÏØ</a>| <a href="http://" target="_blank">ÉäÑôÏØ</a>| <a href="http://" target="_blank">ÕòÆ½ÏØ</a>| <a href="http://" target="_blank">»Ý¶«ÏØ</a>| <a href="http://" target="_blank">ÌïÑôÏØ</a>| <a href="http://" target="_blank">Îä¸ÔÊÐ</a>| <a href="http://" target="_blank">ÎÞÎªÏØ</a>| <a href="http://" target="_blank">Èê³ÇÏØ</a>| <a href="http://" target="_blank">½Ò¶«ÏØ</a>| <a href="http://" target="_blank">ËÕÖÝÊÐ</a>| <a href="http://" target="_blank">ãÉÐÐÇø</a>| <a href="http://" target="_blank">ºþÖÝÊÐ</a>| <a href="http://" target="_blank">ÎÚÉóÆì</a>| <a href="http://" target="_blank">°ÔÖÝÊÐ</a>| <a href="http://" target="_blank">ÇØ»ÊµºÊÐ</a>| <a href="http://" target="_blank">ÐÇ×ù</a>| <a href="http://" target="_blank">Õû¯ÏØ</a>| <a href="http://" target="_blank">ÐÂÐËÏØ</a>| <a href="http://" target="_blank">Ú¯°²ÏØ</a>| <a href="http://" target="_blank">ÑÓ³¤ÏØ</a>| <a href="http://" target="_blank">ÉÛÎäÊÐ</a>| <a href="http://" target="_blank">ºâÑôÏØ</a>| <a href="http://" target="_blank">ºÓ¶«Çø</a>| <a href="http://" target="_blank">¾©É½ÏØ</a>| <a href="http://" target="_blank">êùÎªÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>