??xml version="1.0" encoding="utf-8" standalone="yes"?>久久综合亚洲色HEZYO社区 ,91亚洲国产成人久久精品网址,亚洲视频在线免费播放http://www.tkk7.com/luluyanglu/category/42355.htmlzh-cnThu, 20 Oct 2011 22:40:25 GMTThu, 20 Oct 2011 22:40:25 GMT60FineReport调用Oracle数据库中的存储过E需要两步走http://www.tkk7.com/luluyanglu/archive/2011/10/19/361558.html大鱼大鱼Wed, 19 Oct 2011 02:28:00 GMThttp://www.tkk7.com/luluyanglu/archive/2011/10/19/361558.htmlhttp://www.tkk7.com/luluyanglu/comments/361558.htmlhttp://www.tkk7.com/luluyanglu/archive/2011/10/19/361558.html#Feedback0http://www.tkk7.com/luluyanglu/comments/commentRss/361558.htmlhttp://www.tkk7.com/luluyanglu/services/trackbacks/361558.html  调用Oracle存储q程主要有两步:W一步,定义存储q程Q第二步Q调用存储过E?

  下面以一个具体的实例来学习如何用FineReport调用Oracle存储q程的?

  W一步,Oracel定义存储q程

  StScroe是Oracele数据库中的张表,其中记录了学生的成W信息Q表l构如下Q?

  

  定义q回列表的存储过E?#8212;—׃oracle存储q程没有q回|它的所有返回值都是通过out参数来替代的Q列表同样也不例外,但由于是集合Q所以不能用一般的参数Q必要用pagkage了,所以定义存储过E要分两部分Q?

 1.建立一个程序包Q如下:

CREATE or REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
END TESTPACKAGE;

  2.建立存储q程Q存储过EؓQ?

CREATE or REPLACE PROCEDURE p_STSCORE(Class in varchar2,p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR select * FROM FR.STSCORE where STSCORE.ClassNo=Class;
END p_STSCORE;




  W二步,调用存储q程

  1.启动FineReport设计器,叛_数据源面板,选择U有数据源,弹出U有数据源对话框?

  2.点击增加按钮Q新Z个私有数据源Q名为ds1Q数据库选择为Oracle数据源,查询cd为存储过E,在sql文本框中写如下语句调用存储过E:

  

{call fr.p_stscore('[?Class|Class1?]',?)}

  

  3.点击预览按钮Q可以预览查询到的数据,如下所C:

  

  xQFineReport设计器成功调用Oracle存储q程Q您可以Ҏ报表需求随心所Ʋ地设计报表样式了?

  



大鱼 2011-10-19 10:28 发表评论
]]>
J2EE常用工具cL?/title><link>http://www.tkk7.com/luluyanglu/archive/2010/01/01/307989.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Fri, 01 Jan 2010 14:37:00 GMT</pubDate><guid>http://www.tkk7.com/luluyanglu/archive/2010/01/01/307989.html</guid><wfw:comment>http://www.tkk7.com/luluyanglu/comments/307989.html</wfw:comment><comments>http://www.tkk7.com/luluyanglu/archive/2010/01/01/307989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/luluyanglu/comments/commentRss/307989.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/luluyanglu/services/trackbacks/307989.html</trackback:ping><description><![CDATA[J2EE常用工具cL?br /> J2EE常用工具cL?<br /> <a target="_blank">J2EE常用工具cZValue Object工具c?/a> <br /> <a target="_blank">J2EE常用工具cZJson工具</a> <br /> <a target="_blank">J2EE常用工具cZJdbc操作</a> <br /> <a target="_blank">J2EE常用工具cZHibernate操作</a> <br /> <a target="_blank">J2EE常用工具cZCookie操作</a> <br /> <a target="_blank">J2EE常用工具cZ数l操?/a> <br /> <a target="_blank">J2EE常用工具cZ时间处理工L</a> <br /> <a target="_blank">J2EE常用工具cZ文件打包解包处理类</a> <br /> <a target="_blank">J2EE常用工具cZ—文件操作类</a> <br /> <a target="_blank">J2EE常用工具cZ—邮件处理类(javaMail发送邮?</a> <br /> <a target="_blank">J2EE常用工具cZ—字W串工具c?/a> <br /> jar文g和apiQ?<br /> <a target="_blank">J2EE常用工具cjar及API</a> <img src ="http://www.tkk7.com/luluyanglu/aggbug/307989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/luluyanglu/" target="_blank">大鱼</a> 2010-01-01 22:37 <a href="http://www.tkk7.com/luluyanglu/archive/2010/01/01/307989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高 Web Service 数据传输效率的基本方?/title><link>http://www.tkk7.com/luluyanglu/archive/2009/11/23/303393.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Mon, 23 Nov 2009 14:37:00 GMT</pubDate><guid>http://www.tkk7.com/luluyanglu/archive/2009/11/23/303393.html</guid><wfw:comment>http://www.tkk7.com/luluyanglu/comments/303393.html</wfw:comment><comments>http://www.tkk7.com/luluyanglu/archive/2009/11/23/303393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/luluyanglu/comments/commentRss/303393.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/luluyanglu/services/trackbacks/303393.html</trackback:ping><description><![CDATA[<blockquote>本文介绍了在 Web Service 实施和开发过E中Q提高系l效率的一些方法,实践证明Q这些方法都是非常有效且易于实现的。针对各U方法的优缺点以及应用场景,文章也进行了相应的讨论?</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES--> <p><a name="N10049"><span id="e86mysq" class="atitle">背景</span></a></p> <p>Web Service 现如今已l成?SOA 实现标准之一。很多公司已l或者正在参与到 Web Service 目的实现和部v中。Web Service 的优点在于松散的处理异构pȝ之间的通信和数据交换,可以随机应变的处理企业各个系l之间的整合问题。但是同ӞWeb Service 采用 XML 标准q行pȝ间的数据传输Q加大了传输的数据量Q尤其是在传输一些具有比较严格结构的数据Ӟ会得传输效率有所下降。所以,如何提高 Web Service 传输效率成ؓ很多公司q行目部v旉常关心的问题?/p> <p><a name="N10053"><span id="u0uym00" class="atitle">目的</span></a></p> <p>本文介绍了在 Web Service 实施和开发过E中Q提高系l效率的一些方法,实践证明Q这些方法都是非常有效且易于实现的。不同的Ҏ都有其应用领域和优缺点,我们会分别进行讨论。文章的主要目的在于Q提供给读者多U方式的基本解决ҎQ得读者在 Web Service 目部vӞ拥有更多的思\?/p> <p><a name="N1005D"><span id="6y6su8o" class="atitle">原因分析</span></a></p> <p>Web Service 是采?XML 标准q行数据传输的。XML 在传输过E中Q会附带很多数据的相关信息,q以标签的Ş式表现出来。在传输q程中,一些情况下Q这些标{会占用一半以上甚x多的数据传输量,例如Q要传输一个表g息,如下Q表g的h名ؓ虚构的):</p> <br /> <a name="N10067"><strong>?1. 要q行传输的表格示?/strong></a><br /> <table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="带表头、所有列左对齐的样式" border="0"> <tbody> <tr> <th scope="col">Name</th> <th scope="col">City</th> <th scope="col">Apartment</th> </tr> <tr> <th class="tb-row" scope="row">Air Wang</th> <td>Beijing</td> <td>Some Place</td> </tr> </tbody> </table> <br /> <p>?1 中的数据在传输过E中Q有可能会生成下面的 XML 文g: <br /> <a name="N1009A"><strong>清单 1. 对应于表 1 数据所传输?XML 文gCZ</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> <Heading> <column> Name</column> <column>City</column> <column>Apartment</column> </Heading> <Data Grid> <row> <column>Air Wang</column> <column>Beijing</column> <column>IBM CDL</column> </row> </Data Grid> </pre> </td> </tr> </tbody> </table> <br /> </p> <p>如果上面的表gq带有格式的信息Q比如字体,背景颜色{等Q的话,那么相应?XML ׃更加复杂了。从上述 XML 中我们可以看出,除了数据之外QXML 会附加很多标{信息,q就使得传输的数据量增大Q当所需要传输的数据比较多的时候,XML的标{ְ会带来比较大的效率问题?</p> <p><a name="N100A4"><span id="q0gmsom" class="atitle">解决Ҏ一: 压羃与解压羃</span></a></p> <p>Web Service 在网l中传输的是?XML 为基的消息的h和响应。大量的数据传输会ɾ|络成ؓ瓉。一个最直接的解x案就是对传输的消息进行压~。对于不同规模的数据量,压羃应该有不同的解决ҎQ下面分别介l如?</p> <p>1. 对于整个 XML 传输文gq行压羃<br /> 数据压羃已经发展了很多年Q有很多成熟的技术,法以及工具包。经常用于对数据压羃?API ?gzip {方式。对文gq行压羃的做法非常简单,是在发?XML 之前?XML q行压羃Q经q压~以后,再在 XML 接收端对已经压羃的文件进行解压羃?br /> 优点: <br /> 该方法的优点在于Q用了成熟的压~和解压~技术,当数据量比较大的时候,可以大大提高传输效率。对于纯文本?XMLQ压~可以减其80%以上的体U?br /> ~点Q?br /> 压羃和解压羃虽然可以使得 XML 的体U大大减,但是其过E却是十分耗费pȝ资源的。压~和解压~往往会具有很大的 CPU 占有率以及内存占有率。对于配|不高的客户端甚x服务器端Q都会造成不小的压力?br /> 应用场景:<br /> 该技术应用于|络瓉非常严重的情冉|是主机配|比较高的情c?br /> 举例: <br /> 正如本小节最开始已l介l的Q现在已l有很多成熟的压~与解压~的 API 提供l开发h员进行用,我们选取其中最常用?gzip 方式举例说明。一般来Ԍpȝh XML 的体U相对较,没有必要使用压羃和解压羃的方法处理请?XML。而对于系l响?XML 来讲Q一般都包含大量的数据,D其体U庞大,需要进行压~处理。对响应 XML q行压羃的流E如?<br /> 服务器端数据模型-->序列化操?->利用 gzip 方式对序列化后的 XML q行压羃-->q回到客L-->?gzip 方式q行解压~?->对解压羃后的 XML q行反序列化操作-->客户端数据模?br /> q里需要说明的一ҎQ客L以及服务器端的数据模型需要实?Serializable 接口?<br /> <a name="N100CA"><strong>清单 2. gzip 方式压羃部分实现代码CZQjava 实现Q?/strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> import java.io.*; import java.util.zip.*; public class Compress { public String gzip(OutputStream pStream) { … try { GZIPOutputStream stream = new GZIPOutputStream(pStream); return stream.toString(); }catch(IOException e){…} … return null; } … } </pre> </td> </tr> </tbody> </table> <br /> </p> <p>在程序将对象模型序列化成 XML 之前Q可以用上面的压羃ҎQ对数据进行压~。部分代码如? <br /> <a name="N100D7"><strong>清单 3. 对象模型序列化后再进行压~的实现代码CZ</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> public class XMLSerializerHelper { … public static String saveOBJtoString(Object inputOBJ) throws ConverException { …… ByteArrayOutputStream outputStream = null; try{ outputStream = new java.io.ByteArrayOutputStream(); m_serializer.save((IXMLSerializable) inputObject, outputStream); return Compress.gzip(outputStream); }catch(Exception e){…} …… } … } </pre> </td> </tr> </tbody> </table> <br /> </p> <p>解压~的q程也类g上述代码。测试表明,采用 gzip 压羃可以减少60%以上的网l所带来的消耗?/p> <p>2. 对于特定的数据进行特D的处理<br /> 在企业日常的数据传输中,往往大量的数据具有很多共同的特点。数据和数据之间往往h很多相同的地方,或者说Q具有很多重复的地方。例如,在一个以 Web Service 为构架的报表处理pȝ中,报表往往会含有很多的I数据,或者相同属性和值域的数据,对于q样的情况,可以在代码中对特D情况进行特D的处理。我们同样以传输一个表gZ子,如下:</p> <br /> <a name="N100E6"><strong>?2. 要传输的含有多个空值的表格CZ</strong></a><br /> <table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="带表头、所有列左对齐的样式" border="0"> <tbody> <tr> <th scope="col">Software sold</th> <th scope="col">Hardware sold</th> <th scope="col">System sold</th> <th scope="col">Others</th> </tr> <tr> <th class="tb-row" scope="row">120</th> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <th class="tb-row" scope="row">-</th> <td>-</td> <td>90</td> <td>-</td> </tr> <tr> <th class="tb-row" scope="row">-</th> <td>110</td> <td>-</td> <td>-</td> </tr> </tbody> </table> <br /> <p>可以看到Q上q表格具有很多的I|那么?XML 中完全可以把I值的部分l一处理Q这样就能大大减网l传输的数量Q其对应的部?XML 如下Q?<br /> <a name="listing1"><strong>清单 4. 对空D行处理后的简?XML CZ</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> …… <NULL Value>(1,2),(1,3),(1,4),(2,1),(2,2),(2,4)(3,1),(3,3),(3,4)</NULL Value> …… </pre> </td> </tr> </tbody> </table> <br /> </p> <p>优点:<br /> 对于重复性的数据来说Q该Ҏ可以几十倍甚至上癑ր的减少传输的数据量Q这取决于数据重复的数量大小Q,相对于第一U压~方式,׃只是对固定Ş式的数据q行处理Q所以不会占用很大的 CPU 以及内存?br /> ~点:<br /> 数据的特点不Ҏ把握Q能够处理的情况比较单和单一。对于空值或者某些值重复较多的情况Q可以采用本Ҏ?/p> <p><a name="N10152"><span id="mg0gmy0" class="atitle">解决Ҏ? 减少多次调用Q尽量用一ơ性的调用方式?/span></a></p> <p>传统?RPC 调用Q在多次使用的时候会产生很大的效率问题。用户在q行每次q程调用的时候都要等待网l传输所耗费的时间。而对?Web Service 来讲Q很多用户仍然将其作Zl的 RPC 来进行调用。每ơ都调用 Web Service Provider 所提供的函敎ͼ造成了效率的极大费。Web Service 的一大特点在于,可以在本地进行一ơ性的讄Q再把生成的 XML l一的发送给服务的另外一端。对于用hԌ所有的讄工作都是在本地进行的Q用户完全感觉不到网l所带来的瓶颈,而在最后的数据传输q程中,多消耗一些时间也是值得的?br /> 应用场景:<br /> 对于同用户交互的情况Q尽可能使用q样的处理,卛_多ơ的q程调用Q尽量得程序仅需完成一ơ调用。D一个简单的例子来说明问题:在一个用L面上QUser InterfaceQ,需要进行很多的讄Q而这些设|的每一步都是需要进行远E调用的Q这样对于用h_׃在每一ơ的讄q程中都{待|络传输所耗费的时间。而对?Web Service 而言Q客L所有的工作是生成h XMLQ所有的讄工作都可以统一生成一?XML 文gQ然后将其传送给服务器端Q这样一来,用户只用{待一ơ的数据传输旉Q可能相Ҏ间较长,但是用户只用{待一ơ,q是值得的)Q而其他的工作都在服务器端q行处理?br /> 优点:<br /> 所有数据操作在本地q行Q用户在处理数据时不会感到网l所带来的停ѝ最l所有操作请求统一发送给服务器端Q得原本多ơ等待的q程操作只需要一ơ数据传输就能完成?br /> 举例:<br /> 下面的两q图Q图 1 和图 2Q是某数据导入向g的两个步骤,用户通过界面讄数据库以及数据表的信息,从而得到目的数据?/p> <br /> <a name="N1016A"><strong>?1. 数据导入讄向导CZ一</strong></a><br /> <img height="253" alt="数据导入向导CZ? src="http://www.ibm.com/developerworks/cn/webservices/0710_wangyun/databaseselect.jpg" width="286" /> <br /> <br /> <a name="N10179"><strong>?2. 数据导入讄向导CZ?/strong></a><br /> <img height="227" alt="数据导入向导CZ? src="http://www.ibm.com/developerworks/cn/webservices/0710_wangyun/databaseselect2.jpg" width="286" /> <br /> <p>很多初学者容易进入的一个误区是在数据库选择以后Q在E序中直接连接数据库Q通过用户提供的用户密码徏立数据库q接Q然后在后箋的每一个步骤中Q如图中的设定数据表条gQ都q行q程函数调用Q以至于用户每一ơ点dg?#8220;下一?#8221;按钮旉会感觉到|络带来的瓶颈,例如停顿感,或者更严重的程序一D|间的没有响应{等。事实上Q对?Web Service 来讲Q每一步都可以对请?XML q行讄Q这U设|是在本地进行的Q,当所有步骤都完成以后Q再?XML l一发送给服务器端q行处理。这样一来,用户在每一步之间的操作都是在本地进行的Q不会带来多余的|络响应{待旉Q得整个向导的讄工作能够很快的进行。而最后一步完成以后,用户对于|络的一ơ性等待是相对值得的。在q个例子中,hXML的部分结构如? <br /> <a name="N1018C"><strong>清单 5. 客户端进行数据导入设|的 XML CZ</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> …… <Data Retrieving> <Database> <Type>Toolbox</Type> <Pattern>TCP/IP</Pattern> <UserName>Wang Yun</UserName> </Password> </Database> <Table> <Condition method=’more than’ value=’table’ >2500</Condition> <Condition method=’equal to’ value=’table’>Wang Yun</Condition> <Condition method=’less than’ value=’table’>10 days</Condition> </Table> <Data Retrieving> …… </pre> </td> </tr> </tbody> </table> <br /> </p> <p>pȝ客户端对 XML q行讄的部分示例代码如下(对象模型序列化的过E,仅列?Database 节点Q? <br /> <a name="N10199"><strong>清单 6. 对象模型序列化成 XML CZ</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> public class DataBaseLoginOBJ { … public Element persistToXML(DataObject pOBJ) { … Element dbElement = pOBJ.createElement(“Database”); Element typeElement = pOBJ.createElement(“Type”); Element patternElement = pOBJ.createElement(“Pattern”); Element userElement = pOBJ.createElement(“UserName”); Element pwdElement = pOBJ.createElement(“Password”); dbElement.appendChild(typeElement); dbElement.appendChild(patternElement); dbElement.appendChild(userElement); dbElement.appendChild(pwdElement); … } … } </pre> </td> </tr> </tbody> </table> <br /> DataObject实现了org.w3c.dom.Document的接? Element实现了org.w3c.dom.Element接口。在完成了整个请求XML的设|之后,将其统一传输x务器端进行处理?/p> <p><a name="N101A0"><span id="6a6qi0g" class="atitle">解决Ҏ? XML 解析器的选择和优?/span></a></p> <p>现在软g领域有很多种cȝ XML 解析器,最基本的方式有两种QDOM ?SAX。对于不同别的XML文gQ应该用不同的解析器。有?XML 解析器的介绍Q请参考其他相x档。下面列Z们用的场景以及优缺?</p> <br /> <a name="N101AA"><strong>?3. SAX ?DOM 解析方式的基本比?/strong></a><br /> <table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="带表头、所有列左对齐的样式" border="0"> <tbody> <tr> <th scope="col">U类</th> <th scope="col">优点</th> <th scope="col">~点</th> <th scope="col">使用场景</th> </tr> <tr> <th class="tb-row" scope="row">DOM</th> <td>1.XML树在内存中完整存储,因此可以直接修改其数据和l构?2.可以通过该解析器随时讉KXML树中的Q何一个节炏V?3.DOM解析器的API在用上也相Ҏ较简单?/td> <td>如果XML文档体积比较大时Q将文档d内存是非常消耗系l资源的?/td> <td>DOM 是用与^台和语言无关的方式表C?XML 文档的官?W3C 标准。DOM 是以层次l构l织的节点的集合。这个层ơ结构允许开发h员在树中L特定信息。分析该l构通常需要加载整个文档和构造层ơ结构,然后才能q行M工作。DOM是基于对象层ơ结构的?/td> </tr> <tr> <th class="tb-row" scope="row">SAX</th> <td>SAX 对内存的要求比较低,因ؓ它让开发h员自己来军_所要处理的标签。特别是当开发h员只需要处理文档中所包含的部分数据时QSAX q种扩展能力得到了更好的体现?/td> <td>用SAX方式q行XML解析Ӟ需要顺序执行,所以很难访问到同一文档中的不同数据。此外,在基于该方式的解析编码过E也相对复杂?/td> <td>对于含有数据量十分巨大,而又不用Ҏ档的所有数据进行遍历或者分析的时候,使用该方法十分有效。该Ҏ不用整个文档读入内存,而只需d到程序所需的文档标{֤卛_?/td> </tr> </tbody> </table> <p>正确的选择XML解析器的U类Q对于Web Servicepȝ的效率会有很大的帮助。现在有很多厂家提供了基于这两种cd的很多XML解析器,在选择的时候,应该仔细阅读说明文档Q慎重进行选择。另外,往往在一个系l中可以同时使用q两U方式,以达到解析的最高效率。一般来Ԍ对于hXML可以采用DOM的解析方式进行解析,而对于响应XML可以使用SAX的方式进行解析?/p> <p><a name="N101F0"><span id="6uga00e" class="atitle">解决Ҏ? 化标{?/span></a></p> <p>我们知道QWeb Service 解决Ҏ在网l中传输 XML h比较复杂的结构。在传输q程中,不仅仅必要的数据被发送和接收Q同时也会由?XML 的结构过于冗杂而附加了更多的信息进行传输。D例如?<br /> pȝ客户端从服务器端得到的返回数据的响应 XML l构如下: <br /> <a name="listing1"><strong>清单 7. 在网l中传输的表格数据对应的 XML</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> <Cells> <Heading Cells> <Column> <Row> Data </Row> </Column> <Column> <Row/> </Column> … </Heading Cells> <DataGrid Cells> … </DataGrid Cells> </Cells> </pre> </td> </tr> </tbody> </table> <br /> </p> <p>׃面的 XML 我们可以看出Q每一个返回数|都至有 <Column>, </Column>, <Row>, </Row> 来标识它Q也是_如果我们要传输一个表|那么表格中每一个数据都要伴随传输相应的q四个标{。假设表g的每一个数据的字节Cؓ8Q那么标{所带来的附加字节就近为数据的4倍。如果要传输的数据量十分巨大的话Q效率自然会降低许多。所以我们可以采用一U十分简单的方式Q有效的减少XML所带来的附加字节数Q即化XML标签。可以将上面所说的XML改写成下面的格式: <br /> <a name="listing1"><strong>清单 8. 对应于清?7 的简化后?XML</strong></a><br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> <Cells> <Heading Cells> <C> <R> Data </R> </C> <C> <R/> </C> … </Heading Cells> <DataGrid Cells> … </DataGrid Cells> </Cells> </pre> </td> </tr> </tbody> </table> <br /> </p> <p>优点:<br /> 试证明Q采用这L改进方式Q可以得整个系l的效率提高q一倍甚x多。而且q样的处理方式简单易行,只是修改标签可以了?br /> ~点:<br /> 使XML自n代表的意义变得不那么ҎLQI补的方式是一般会有一个对照表Q来说明具体化后?XML 文g的含义?br /> 举例:<br /> 该方法比较简单直观,q里列出对照表的一个例子如?</p> <br /> <a name="N10220"><strong>?4. 化前?XML 的对照表及其含义</strong></a><br /> <table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="带表头、所有列左对齐的样式" border="0"> <tbody> <tr> <th scope="col">化前标签</th> <th scope="col">化后标签</th> <th scope="col">含义</th> </tr> <tr> <th class="tb-row" scope="row">Row</th> <td>R</td> <td>表示表格中的?/td> </tr> <tr> <th class="tb-row" scope="row">Column</th> <td>C</td> <td>表示表格中的?/td> </tr> <tr> <th class="tb-row" scope="row">...</th> <td>...</td> <td>...</td> </tr> </tbody> </table> <p>cM上面q样的声明表格应该作为文档提供给用户?/p> <p>应用场景:<br /> q里需要说明一点,XML 能够清晰的表C出整个数据l构Q而很多Y件开发h员往往希望利用 XML 来观察数据的情况Q而标{ְ是协助他们更好的完成q样的工作。所以,一般来Ԍ标签需要尽可能的有意义Q由?C ?R 可以比较明确的表C?Column ?RowQƈ且他们在数据传输q程中是重复的最多的Q占传输标签L?0%Q,所以我们进行了上述的改动。但是对于像 Cells q样的标{,׃光复率不是很高Q而且我们需要这个标{օ有字面上的意义,所以,cM于这L情况Q我们给予保留?/p> <p><a name="N1026F"><span id="8wa6a80" class="atitle">解决Ҏ? ~存机制</span></a></p> <p>前面介绍的四U提高效率的Ҏ都是Z XML 传输的,也就是说Q都是在如何提高 XML 传输效率上进行介l的。而第五种机制对于M的Y件解x案都适用Q而对?Web Service 解决Ҏ来讲Q更是具有锦上添q作用。缓存机制最通用的一个思想是,用次数比较多的数据缓存v来,如果再有相同hӞ将~存中的数据q回。这样会减少数据逻辑处理所带来的时间。我们以用户的一ơ刷新数据的操作ZQ介l一U比较通用的缓存方式,如图:</p> <br /> <a name="N1027B"><strong>?3. 某数据刷新操作的~存程</strong></a><br /> <img height="516" alt="某数据刷新操作的~存程" src="http://www.ibm.com/developerworks/cn/webservices/0710_wangyun/huancun.jpg" width="518" /> <br /> <p>由图中可知,当用戯行刷新操作时Q服务器端先查请?XMLQ取h数据源的 CUID。根据该 CUIDQ系l检查在~存中是否存在该 CUID 对应的数据对象,如果有,则取出其h状态,q与对应?CUID 的数据源的刷新状态进行比较。如果比较一_则直接返回数据给客户端,如果比较不一_则需要打开数据源进行重新刷斎ͼq将h以后的结果集的对象保存在~存中。如果缓存已l满了,则利用最q最用原则,清除~存中的一部分数据对象。另外,~存的大设|是可以通过属性文件进行设|的Q在E序中,对缓存进行初始化Ӟ首先d了属性文件来q行~存大小的设定。缓存数据的好处在于Q在Ҏ据进行多ơ重复刷新时Q系l不需要重新打开数据源(有时候连接ƈ打开数据源是非常消耗时间的Q,从而提高了pȝ的效率?br /> 优点:<br /> 对于多次的相同方式的数据操作Q数据直接从~存q回Q可以很大程度的提高pȝ效率?br /> ~点:<br /> ~程的工作量比较大,需要测试的部分比较多?br /> 应用场景:<br /> 一般的 Web Service 部vE序都可以采用缓存机制的处理?/p> <p><a name="N10297"><span id="6eiy0ey" class="atitle">其他解决Ҏ</span></a></p> <p>对于 Web Service 服务器,各个厂商都提供了很多服务器设|,以提?Web Service 的性能和效率。具体请参考相x务器的文档?/p> <p><a name="N102A1"><span id="imuyys6" class="atitle">结</span></a></p> <p>对于提高 Web Service 的效率,本文l出了一些解x案,从各个不同方面对 Web Service 效率的提高进行了讨论。对于不同的应用pȝQ应该酌情分析系l徏立的环境以及pȝ的用h和范围Q以最l决定采用何U解x案?/p> <img src ="http://www.tkk7.com/luluyanglu/aggbug/303393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/luluyanglu/" target="_blank">大鱼</a> 2009-11-23 22:37 <a href="http://www.tkk7.com/luluyanglu/archive/2009/11/23/303393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>恶意q发讉K控制QDoSdQ?/title><link>http://www.tkk7.com/luluyanglu/archive/2009/10/25/299701.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sun, 25 Oct 2009 14:44:00 GMT</pubDate><guid>http://www.tkk7.com/luluyanglu/archive/2009/10/25/299701.html</guid><wfw:comment>http://www.tkk7.com/luluyanglu/comments/299701.html</wfw:comment><comments>http://www.tkk7.com/luluyanglu/archive/2009/10/25/299701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/luluyanglu/comments/commentRss/299701.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/luluyanglu/services/trackbacks/299701.html</trackback:ping><description><![CDATA[在实际应用中Q我们可能会遇到|站被恶意攻ȝ情况。比如:某h写了一个程序,不断的@环访问^C某个消耗资源比较大的页面,造成服务器无法即时处理这些请求,从而另其他用户也无法用系l了Q这是一般所说的拒绝服务dQDoSQ?br />     对于q个问题Q网客通^台实C一个过滤器Q限制在指定旉内,多次讉K某些资源的请求。当某个客户端的hW合qo器的qo条gӞpȝ会在一D|间内直接昄错误提示Q而不作Q何操作,保证了其他合法用戯正常的用系l?br />     比如Q有个ip?9.123.11.1的客户在半分钟内Q连l访问了搜烦功能15ơ,被过滤器捕捉CQ系l就会禁止这个ip讉K搜烦功能10分钟Qƈ会记录到黑名单,当下ơ这个ip再次恶意讉KӞpȝ会根据这个黑名单廉止讉K的时间?br />     除了qo器的限制Q^台对于一些重要功能,如文件上传、用h册、管理员d{加上验证码的功能,用户必须输入pȝ随机生成的验证码才能使用q些功能Q通过q样双管齐下Q就可以有效防止恶意的ƈ发访问了? <img src ="http://www.tkk7.com/luluyanglu/aggbug/299701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/luluyanglu/" target="_blank">大鱼</a> 2009-10-25 22:44 <a href="http://www.tkk7.com/luluyanglu/archive/2009/10/25/299701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE中间?/title><link>http://www.tkk7.com/luluyanglu/archive/2009/10/25/299700.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sun, 25 Oct 2009 14:37:00 GMT</pubDate><guid>http://www.tkk7.com/luluyanglu/archive/2009/10/25/299700.html</guid><wfw:comment>http://www.tkk7.com/luluyanglu/comments/299700.html</wfw:comment><comments>http://www.tkk7.com/luluyanglu/archive/2009/10/25/299700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/luluyanglu/comments/commentRss/299700.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/luluyanglu/services/trackbacks/299700.html</trackback:ping><description><![CDATA[中间件层主要是网客通^C用的J2EE中间Ӟ包括q_使用到的应用服务器和中间件技术?br />     <strong>一、应用服务器</strong><br />     应用服务器ؓ|客通提供的整个J2EEq_实现QEMALL基础服务层和应用层、业务层都是建立在应用服务器之上?br />     |客通设计上遵@SUN公司提出的J2EE规范Q这栯够尽可能的保证在不同的J2EE应用服务器中q行UL?br />     l过试、网客通^台支持Tomcat、WebLogic、JBossq几UJ2EE应用服务器?br />     <br />     <strong>二、中间g技?/strong><br />     本着重用的设计原则,|客通在一些功能中采用了已有的成熟技术,q些都是l过实践考验的中间g。主要以java标准包和开源项目ؓ主,大部分都针对pȝ作了相应调整Q以侉K合pȝ的需要?br />     <strong>1. Apache commonsQ?/strong><br />     著名的开源组lApache的一个java工具包,提供很多实用的功能?br />      1) commons-beanutilsQ?br />     提供对Java反射和自省API的包装?br />     在^C用于通用的接口设计?br />      2) commons-codecQ?br />     包含一些通用的编码解码算法。HexQBase64Q?以及URL encoder?br />     q_中主要用来做消息摘要Q实现数据加密等功能?br />      3) commons-collectionsQ?br />     提供一个类包来扩展和增加标准的Java Collection框架。提供了比j2sdk更全面的数据l构Q^Cl承q实C一些特D的数据l构?br />      4) commons-poolQ?br />     提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池?br />     我们在原有的基础上进行了优化Q在性能和用性方面有所提高?br />      5) commons-dbcpQ?br />     q是一个基于apache的对象池Qapache commons poolQ实现的数据库连接池?br />     我们在原有的基础上进行了优化Q对数据库连接进行了特别的处理,防止数据库连接泄漏的问题Qƈ提供了监控的功能?br />      6) commons-discoveryQ?br />     供工h定位资源Q包括类Q?Q通过使用各种模式来映服?引用名称和资源名U?br />      7) commons-elQ?br />     提供在JSP2.0规范中定义的EL表达式的解释器?br />     对^C的JSP提供EL表达式支持?br />      8) commons-fileuploadQ?br />     强大和高性能的文件上传功能?br />     q_中被用于上传各种囄、Flash、文档等资源Q我们在原有的基上进行了优化?br />      9) commons-loggingQ?br />     提供通用的日志操作接口?br />     主要用于E序调试和服务器日常的日志输出?br />     10) commons-validatorQ?br />     提供了一个简单的Q可扩展的框架来在一个XML文g中定义校验器Q校验方法)和校验规则。支持校验规则的和错误消息的国际化?br />     q_中用来校验各Uxml数据?br />     <br />     <strong>2. Cewolf / JFreeChartQ?/strong><br />     Cewolf 是一个用于生成各U图表的标签库。它支持在JSP中嵌入图表图片。运行servlet 容器的Q意的Web应用E序服务器都可以使用它。因为Cewolf 是一个功能完整的标签库,所以不需要用Javascript?br />     JFreeChart是开放源代码站点SourceForge.net上的一个JAVA目Q它主要用来各种各样的图表,q些图表包括Q饼图、柱状图(普通柱状图以及堆栈q?、线图、区域图、分布图、؜合图、甘特图以及一些A表盘{等。这些不同式L图表基本上可以满目前的要求。主要用于生成统计图表?br />     q两个技术一h供了|客通^台的l计分析图表QJFreeChart主要用于输出图表QCewolf对其q行了封装?br />     <br />     <strong>3. Dom4jQ?/strong><br />     Dom4j是一个易用的、开源的库,用于XMLQXPath和XSLT。它应用于Javaq_Q采用了Java集合框架q完全支持DOMQSAX和JAXP?br />     主要用来处理XML数据?br />     XML在网客通有q泛的应用,主要是作为配|文件用。由于XML严格的格式要求和层次l构Q也有用来作为参数在HTML表单中传递。如l合商品功能Q因为组合商品中的商品是q理员挑选的Q参数数量ƈ不确定,如果每从l合商品中添?删除一个商品都直接更新到数据库话,会对pȝ造成负荷。所以,在组合商品的理中,操作的数据c{换成XML传递,可以一ơ进行修攏V? <p align="left">    <strong>4. HibernateQ?/strong><br />     Hibernate是一个开放源代码的对象关pL框Ӟ它对JDBCq行了非常轻量的对象封装,使得JavaE序员可以随心所Ʋ的使用对象~程思维来操U|据库。Hibernate可以应用在Q何用JDBC的场合,既可以在Java的客LE序实用Q也可以在Servlet/JSP的Web应用中用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMPQ完成数据持久化的重仅R?br />     在^CQ我们采用Hibernateq行数据库操作,只有在一些对数据库性能有特别要求的模块Q才直接使用jdbcq行q接?/p> <p align="left">   <strong> 5. EhcacheQ?/strong><br />     EhcacheHibernateQ在Hibernate中用它作ؓ数据~存的解x案。这是Hibernate必须的包?/p> <p align="left">    <strong>6. JCrontabQ?/strong><br />         它是由Java语言~写的日E处理程序,它目的是提供强大的定时处理功能,让我们的应用E序可以按照提供的时间表来执行不同的应用?br />     我们主要用Jcrontab理以下一些定时Q务:<br />      1) q排行榜后台更新q程Q自动计年排行榜?br />      2) 月排行榜后台更新q程Q自动计月排行榜?br />      3) 周排行榜后台更新q程Q自动计周排行榜?br />      4) 日排行榜后台更新q程Q自动计日排行榜?br />      5) 更新对象~存Q实现对象缓存的更新Q处理那些长期没被再一ơ访问的对象~存?br />      6) 清页面缓存:当管理员使用的手工刷新页面缓存的功能Ӟpȝ会将q些需要刷新的~存加到一个队列中Q由本进E负责刷新?br />      7) 相关产品自动实现间隔Q相关品的计算对系l消耗比较大Q所以系l不会对所有几十万个商品进行计,只有在用h看单个商品时出q个商品的相关品ƈq行~存。那么当用户下一ơ访问这个商品的相关产品时就直接从缓存中d出来。而这个进E就是ؓ了定时更新这个缓存?br />      8) 自动推荐后台更新q程Q进E根据商品推荐规则进行自动推荐?<br />      9) 新闻推荐后台更新q程Q进E根据新L荐规则进行自动推荐?br />     10) 关键字后台进E:当用户在前台搜烦栏中输入一个查询值时Q系lƈ不马上将其统计到关键字,而是攑ֈ内存中,由此q程定时l计?br />     11) 保存讉K量信息进E:用户每访问一ơ系l,pȝq不马上l计Q而是攑ֈ内存中,由此q程定时保存到数据库Q供l计q程q行l计?br />     12) q访问量排行计算Q计年讉K量排行榜?br />     13) 月访问量排行计算Q计月讉K量排行榜?br />     14) 周访问量排行计算Q计周讉K量排行榜?br />     15) 日访问量排行计算Q计日讉K量排行榜?br />     16) q降h行计:计算q降h行榜?br />     17) 月降h行计:计算月降h行榜?br />     18) 周降h行计:计算周降h行榜?br />     19) 日降h行计:计算日降h行榜?br />     20) l计计算Q每天对讉K量进行统计?br />     21) 生成订阅邮g列表q程Q根据用L订阅讄Q生成需要发送的邮g队列?br />     22) 发送订阅邮件进E:Ҏ要发送的邮g队列发送邮件?br />     23) 拍卖自动Zhq程Q实现拍卖模块中的自动出价功能?br />  <br />     <strong>7. JCSQ?/strong><br />     JCS是Jakarta的项目Turbine的子目。它是一个复合式的缓冲工兗可以将对象~冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过JCS构徏h~冲的分布式构架Q以实现高性能的应用?br />     对于一些需要频J访问而每讉K一ơ都非常消耗资源的对象Q可以时存攑֜~冲ZQ这样可以提高服务的性能。而JCS正是一个很好的~冲工具。缓冲工具对于读操作q远多于写操作的应用性能提高非常显著?br />     |客通^C使用jCS提供~存功能Q主要是面~存和对象缓存,通过JCSQ系l将用户讉Kq的面和对象缓存到内存中,对于讉K量巨大,内存~存已经不能负荷的情况下Q我们还可以缓存设|到盘中保存?br />     使用~存的话Q能系l可负蝲和性能大幅度的提升。当没有使用集群环境的情况下Q缓存是一U必不可的技术?/p> <p align="left">    <strong>8. JSF / MyFaces:<br /> </strong>    JavaServer Faces (JSF) 是一U用于构?Web 应用E序的新标准 Java 框架。它提供了一U以lgZ心来开?Java Web 用户界面的方法,从而简化了开发?br />     JSF 的主要优势之一是它既?Java Web 用户界面标准又是严格遵@模型Q视图-控制?(MVC) 设计模式的框架。用L面代码(视图Q与应用E序数据和逻辑Q模型)的清晰分M JSF 应用E序更易于管理。ؓ了准备提供页面对应用E序数据讉K?JSF 上下文和防止寚w面未授权或不正确的访问,所有与应用E序的用户交互均׃个前?#8220;Faces”servletQ控制器Q来处理?br />     MyFaces是JavaServer FacesQJSFQ?Web框架 QJSR 127Q的一个实现。提供了很多常用控g?br />     我们q_中采用一些基于JSF框架的MyFaces控g。这样ɽE序l构十分清晰?/p> <p align="left">    <strong>9. Log4jQ?br /> </strong>    Log4j是Apache的一个开放源代码目Q通过使用Log4jQ我们可以控制日志信息输送的目的地是控制台、文件、GUIlg、甚x套接口服务器、NT的事件记录器、UNIX Syslog守护q程{;我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E。最令h感兴的是Q这些可以通过一个配|文件来灉|地进行配|,而不需要修改应用的代码?br />     q是一个可选包Q如果不使用Log4j的话Qcommons-logging会自动用SUN J2SDK的日志包Q不q我们还是推荐用Log4jQ它的功能非常强大?/p> <p align="left">    <strong>10. LuceneQ?br /> </strong>        Lucene是一个开放源E序的搜d引擎Q利用它可以LCؓJava软g加入全文搜寻功能。Lucene的最主要工作是替文g的每一个字作烦引,索引让搜ȝ效率比传l的逐字比较大大提高QLucen提供一l解读,qoQ分析文Ӟ~排和用烦引的APIQ它的强大之处除了高效和单外Q是最重要的是使用者可以随时应自已需要自订其功能?br />     我们使用Lucene建立索引Qƈ在这基础上实C全文搜烦功能?/p> <p align="left">    <strong>11. AntQ?/strong><br />     Ant是一个基于Java的自动化脚本引擎Q脚本格式ؓXML?br />     我们除了用Ant做Java~译相关d外,q通过插g实现很多应用的调用。包括程序编译、打包、Hibernate配置文g自动生成、部|Ӏ以及单元测试等操作?br />     当一个代码项目大了以后,每次重新~译Q打包,试{都会变得非常复杂而且重复Q因此c语言中有make脚本来帮助这些工作的扚w完成。在Java中应用是q_无关性的Q当然不会用q_相关的make脚本来完成这些批处理d了,Ant本n是q样一个流E脚本引擎,用于自动化调用程序完成项目的~译Q打包,试{。除了基于JAVA是^台无关的外,脚本的格式是ZXML的,比make脚本来说q要好维护一些?/p> <p align="left">    <strong>12. AxisQ?br /> </strong>    Axis是一个SOAP引擎Q提供创建服务器端、客L和网关SOAP操作的基本框架。SOAP是被q泛作ؓC代跨q_、跨语言分布计算Web Services的重要部分?br />     |客通^C用Axis提供WebService支持Q广泛应用于通用数据接口Q对外系l提供服务等功能?br />     如:<br />      1) 商品查询服务Q提供接口让外接pȝ可以查到q_中的商品信息?br />      2) 新闻发布服务Q提供接口让外接pȝ可以取到各类新闻?br />      3) 订单服务Q提供接口让外接pȝ可以在^C生成订单Qƈ获取各种订单信息?br />     注:上述服务都有严格的权限控制?/p> <p align="left">    <strong>13. JavaMailQ?/strong><br />     JavaMail是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮g传输?br />     我们使用JavaMail实现了^C邮g发送、群发等相关功能Q供业务pȝ使用?/p> <p align="left">    <strong>14. XDocletQ?/strong><br />     XDoclet是一个开源项目,可以通过在java源代码中的一些特D的注释信息Q自动生成配|文件、源代码{等。例如web、ejb的部|描q文件等?br />     我们用XDoclet来生成Hibernate的hbm配置文g?/p> <p align="left">    <strong>15. JSTLQ?br /> </strong>    JSP 标准标记库(JSP Standard Tag LibraryQJSTLQ是一个实?Web 应用E序中常见的通用功能的定制标记库集,q些功能包括q代和条件判断、数据管理格式化、XML 操作以及数据库访问?br />     我们使用JSTL装各种业务逻辑?/p> <p align="left">    <strong>16. Jakarta OROQ?/strong><br />     Jakarta ORO Java cL一套文本处理Javac,提供了与Perl5 兼容的规则表辑ּQ类AWK规则表达式,glob 表达式,以及用于执行替换、分剌Ӏ过滤文件名{的工具。这个包是OROMatcher, AwkTools, PerlTools, and TextTools libraries originally from ORO, Inc的后l品?br />     |客通^C用ORO处理正则表达式,q泛应用于各U文本处理中?/p> <p align="left">    <strong>17. SwarmCache / JGroupsQ?/strong><br />     SwarmCache是一个简单且有效的分布式~存Q它使用IP multicast与同一个局域网的其他主行通讯Q是特别为集和数据驱动web应用E序而设计的。SwarmCache能够让典型的L作大大超q写操作的这cd用提供更好的性能支持。SwarmCache使用JavaGroups来管理从属关pd分布式缓存的通讯?br />     JGroups是一个开源的Ujava~写的可靠的组通讯工具。其工作模式ZIP多播Q但可以在可靠性和组成员理上进行扩展。其l构上设计灵z,提供了一U灵zd容多U协议的协议栈,对于每个产品都有不同的可靠性需求。这U协议栈可以让用户定义的自己可靠性指标和性能指标?br />     当用集环境时Q系l存在着~存同步的问题,需要对集群中每一台服务器的缓存进行同步,q样必要有一个缓存同步的机制QSwarmCache和JGroups是Z解决q个问题而被加到|客通中?/p> <p align="left">    <strong>18. JUnitQ?/strong><br />     JUnit是由 Erich Gamma ?Kent Beck ~写的一个回归测试框Ӟregression testing frameworkQ。Junit试是程序员试Q即所谓白盒测试,因ؓE序员知道被试的Y件如何(HowQ完成功能和完成什么样QWhatQ的功能?br />     我们主要用JUnit来进行单元测试?/p> <img src ="http://www.tkk7.com/luluyanglu/aggbug/299700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/luluyanglu/" target="_blank">大鱼</a> 2009-10-25 22:37 <a href="http://www.tkk7.com/luluyanglu/archive/2009/10/25/299700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://502274.com" target="_blank">޾Ʒ</a>| <a href="http://mmm19.com" target="_blank">þ99޾Ʒۿ</a>| <a href="http://miya77772.com" target="_blank">ձ㽶ƵۿƵ</a>| <a href="http://7778tv.com" target="_blank">ձһþ </a>| <a href="http://yixinbanks.com" target="_blank">ҰƵ߹ۿ </a>| <a href="http://805ios.com" target="_blank">߾þþƷĹ</a>| <a href="http://vip98888.com" target="_blank">˸һþ </a>| <a href="http://bbscqz.com" target="_blank">ֻˬƵѿ</a>| <a href="http://haidiaori.com" target="_blank">AVһɫ</a>| <a href="http://w7768.com" target="_blank">պһ</a>| <a href="http://wwwfac37.com" target="_blank">˾Ʒһ</a>| <a href="http://spxingyiquan.com" target="_blank">ٸaëƬ</a>| <a href="http://tlyyt.com" target="_blank">18ëƬaëƬѿ</a>| <a href="http://xyyfamily.com" target="_blank">Ʒۺһ</a>| <a href="http://86trader.com" target="_blank">aѹۿƵ</a>| <a href="http://86trader.com" target="_blank">99Ļ</a>| <a href="http://qq-gm.com" target="_blank">߿ѹۿAVҹӰԺ</a>| <a href="http://sanyoumiaomu.com" target="_blank">avþDz</a>| <a href="http://hkcdk.com" target="_blank">Ʒjizz߹ۿ</a>| <a href="http://gyqcy.com" target="_blank">һĻ</a>| <a href="http://6777s.com" target="_blank">AVһ</a>| <a href="http://bjsunic.com" target="_blank">99ee6ȾþѾƷ6</a>| <a href="http://zhuguangbaoyu.com" target="_blank">Ʒ߲ҳ</a>| <a href="http://yeyaweiban.com" target="_blank">պaëƬѹۿ</a>| <a href="http://038037.com" target="_blank">Ƭ</a>| <a href="http://www-44455588.com" target="_blank">þþþ޾Ʒ</a>| <a href="http://bjgjjrxy.com" target="_blank">ѿ13</a>| <a href="http://sdcwpfw.com" target="_blank">Ʒһ </a>| <a href="http://sjzbosite.com" target="_blank">AV뾫Ʒ</a>| <a href="http://6668889.com" target="_blank">ձһѵӰ</a>| <a href="http://15831883389.com" target="_blank">þùֱ</a>| <a href="http://6h6y.com" target="_blank">þþƷAVDz18</a>| <a href="http://jiezinet.com" target="_blank">ѿŮճˮƵ</a>| <a href="http://51a88.com" target="_blank">ڵƵ</a>| <a href="http://pjappuiehjdkhsjkssd2.com" target="_blank">Ƶ߹ۿһ</a>| <a href="http://xzgfbxg.com" target="_blank">ѿһëƬ</a>| <a href="http://5ggy.com" target="_blank">йëƬѹۿ</a>| <a href="http://jiggybaby.com" target="_blank">þ4438</a>| <a href="http://hzkjjy.com" target="_blank">߹ۿ</a>| <a href="http://jt4f.com" target="_blank">Ĺѹۿ߲ </a>| <a href="http://3baimm.com" 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>