??xml version="1.0" encoding="utf-8" standalone="yes"?>理论视频在线,国产一区二区在线免费,欧美激情欧美激情在线五月 http://www.aygfsteel.com/table/category/36700.htmlzh-cnFri, 14 Aug 2009 00:04:53 GMTFri, 14 Aug 2009 00:04:53 GMT60监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用?/title><link>http://www.aygfsteel.com/table/articles/290827.html</link><dc:creator>卓</dc:creator><author>卓</author><pubDate>Wed, 12 Aug 2009 06:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/table/articles/290827.html</guid><wfw:comment>http://www.aygfsteel.com/table/comments/290827.html</wfw:comment><comments>http://www.aygfsteel.com/table/articles/290827.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/table/comments/commentRss/290827.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/table/services/trackbacks/290827.html</trackback:ping><description><![CDATA[<blockquote>本文介绍如何在应用程序中利用 P6Spy、SQL Profiler、IronTrack SQL 工具来对数据库操作进行监控与剖析Q从中发现应用系l存在的性能瓉Q得到相关的优化q最l找到相应的解决办法?/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--> <table cellspacing="0" cellpadding="0" width="40%" align="right" border="0" sizset="35" sizcache="2"> <tbody sizset="36" sizcache="2"> <tr sizset="36" sizcache="2"> <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td> <td sizset="36" sizcache="2"> <table cellspacing="0" cellpadding="5" width="100%" border="1" sizset="36" sizcache="2"> <tbody sizset="36" sizcache="1"> <tr> <td bgcolor="#eeeeee"> <p>几乎 80% - 85% 的数据库性能问题是由于应用数据库的设计或者应用程序本w的代码所引v的。因此良好的事务处理能力需要在设计应用E序的时候,在设计数据库的时候就考虑到性能和׾~性?/p> <p>---- DB2 Magazine</p> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <p>在我?Java 开发应用程序的q程中,隑օ会碰到系l的性能问题Q特别在企业应用的开发过E中Q都会与数据库进行打交道。当我们到数据库性能Ӟ最有效的就是直接跟t每一?SQL 语句的执行情况,SQL 语句的优化、烦引的优化往往也是最Ҏ取得最直接的效果的?/p> <p>下面Q我们首先开始介l?P6Spy q个剖析工具Q看它是如何无R入性地q行数据库操作的监控与剖析?/p> <p><a name="N10059"><span id="wmqeeuq" class="atitle">P6Spy</span></a></p> <p>P6Spy 是一个可以用来在应用E序中拦截和修改数据操作语句的开源框架。通过 P6Spy 我们可以?SQL 语句q行拦截Q相当于一?SQL 语句的记录器Q这h们可以用它来作相关的分析Q比如性能分析。P6Spy ?Log4J 来记?JDBC 调用的日C息?/p> <p>自从 2003 q?11 ?30 ?P6Spy 版本 1.3 发布后,已经被下载超q?19,000 ơ了。P6Spy 支持 WebSphere、WebLogic、JBoss、Resin ?Tomcat {绝大多数的应用服务器?/p> <p><a name="N10066"><span id="wmqeeuq" class="smalltitle">使用步骤</span></a></p> <p>首先Q你的应用系l应当是Z数据库的Q然后你需要去获取 P6Spy 相关的文Ӟ?<a cmimpressionsent="1">参考资?/a> 中可以找C载链接,您可以直接下载Y件包Q。下面介l?P6Spy 的安装与使用的详l操作过E:</p> <ol> <li><a cmimpressionsent="1">下蝲</a> P6Spy 的文件包Q也可以下蝲它的源文件包来研IӞ <li>?P6Spy ?jar ?p6spy.jar 攑ֈ <code>CLASSPATH</code> 中,如果?Web 应用E序则放?<code>YourWebApp/WEB-INF/lib/</code> 目录下; <li>?spy.properties 攑ֈ <code>CLASSPATH</code> 目录下,如果?Web 应用E序攑֜ <code>YourWebApp/WEB-INF/classess/</code> 目录下,注意不是 <code>lib/</code> 目录 <li>修改你应用系l中的数据库驱动名称?P6Spy 的驱动程序名U?<code>com.p6spy.engine.spy.P6SpyDriver</code> 其它的全部用默认|暂时先都不用修改Q? <li>打开配置文g spy.properties 文gQ找?<code>realdriver</code>Q把它的值改Z的应用系l的真正的数据库驱动名称Q? <li>q行你的应用E序?Web 应用E序Q可以在 spy.log 里看?P6Spy 监测到的 SQL 详细的执行与操作的记录信息了Q包含有完整?SQL 执行参数?</li> </ol> <p><a name="N100A7"><span id="wmqeeuq" class="smalltitle">P6Log ?P6Outage</span></a></p> <p>?P6Spy 发布包中Q它包含 P6Log ?P6Outage 两个模块Q?/p> <ol sizset="37" sizcache="2"> <li sizset="37" sizcache="2"><strong>P6Log</strong> <p>P6Log 是用来拦截和记录d应用E序?JDBC 语句的。这个功能对于开发者监?EJB 服务器上?SQL 语句执行情况其有用Q可以让开发者完成尽可能高效的代码。同?P6Spy 的部|是极其单的Q而且Ҏ不需要更改Q何一行代码,卛_现有的应用是无R入性的?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0" sizset="37" sizcache="2"> <tbody sizset="37" sizcache="1"> <tr> <td class="code-outline"> <pre class="displaycode">realdriver= (your driver) (你的实际 JDBC 驱动E序名称) executionthreshold=整数旉 (以毫Uؓ单位) </pre> </td> </tr> </tbody> </table> <br /> <li sizset="38" sizcache="2"><strong>P6Outage</strong> <p>P6Outage 专门用来和记录执行旉比较长的 SQL 语句QP6Outage 只记录超q配|条仉旉的那些信息,q对可能影响到数据库的运行效率减到最低?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0" sizset="38" sizcache="2"> <tbody sizset="38" sizcache="1"> <tr> <td class="code-outline"> <pre class="displaycode">#outagedetection=true|false (是否记录较长旉q行的语? #outagedetectioninterval=整数旉 (以秒为单? </pre> </td> </tr> </tbody> </table> <br /> </li> </ol> <p><a name="N100CC"><span id="wmqeeuq" class="smalltitle">架构原理</span></a></p> <p>单地Ԍ我们可以认ؓ P6Spy 是一个代理(ProxyQ,它只做了一层对 JDBC 驱动的拦截,然后转发出去Q这L设计与实际的应用E序没有M的耦合性,除了在配|中驱动程序改?P6Spy 的拦截驱动外Q程序其他地方ƈ不需要做M的改变。这层拦截器除了可能会给pȝ带来略微的性能下降外,对程序其他方面没有Q何的影响。而相对于q一点点的性能下降Q在开发环境中对于开发h员来说是无法感觉刎ͼ相比它所带来的好处,完全可以忽略不计?/p> <br /> <a name="N100D6"><strong>?1. P6Spy Ҏ据库q行拦截监控的处理过E?/strong></a><br /> <img alt="?1. P6Spy Ҏ据库q行拦截监控的处理过E? src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig001.jpg" /> <br /> <p><a name="N100E0"><span id="wmqeeuq" class="smalltitle">问题与解?/span></a></p> <p>如果在你的应用程序启动后Q却?spy.log 文g中发C如下的提CZ息,那就是驱动程序加载先后的问题了?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0" sizset="39" sizcache="2"> <tbody sizset="39" sizcache="1"> <tr> <td class="code-outline"> <pre class="displaycode"><你的E序的数据库驱动名称> is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting'deregisterdrivers' to true in spy.properties </pre> </td> </tr> </tbody> </table> <br /> <p>h spy.properties 配置文g里的 <code>deregisterdrivers=false</code> 改ؓ <code>deregisterdrivers=true</code>Q重新运行即可?/p> <p>q是因ؓ有些应用pȝ中会先于 P6Spy 加蝲了真正的数据库的驱动E序Q导?P6Spy 无法监控刎ͼ讄 <code>deregisterdrivers</code> ?<code>true</code>Q是昑ּ地把真正的数据库的驱动程序进行反注册掉,而采?P6Spy 的驱动程序?/p> <p><a name="N10102"><span id="wmqeeuq" class="smalltitle">配置参数及相x?/span></a></p> <p>下表列出?spy.properties 配置文g中的各配|项的名U、默认值及其意义和相关注意事项Q?/p> <table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="" border="0" sizset="40" sizcache="2"> <tbody sizset="40" sizcache="1"> <tr> <th width="25%">配置名U?/th> <th width="25%">默认?/th> <th width="50%">配置Ҏ义及相关注意事项</th> </tr> <tr> <td>module.log</td> <td>com.p6spy.engine.logging. P6LogFactory</td> <td>用来拦截和记录Q务应用程序的 JDBC 语句。若无配|或注释掉则无此功能?/td> </tr> <tr> <td>module.outage</td> <td>com.p6spy.engine.outage. P6OutageFactory</td> <td>和记录执行旉比较长的 SQL 语句。若无配|或注释掉则无此功能?/td> </tr> <tr> <td>realdriver</td> <td> </td> <td>真正的应用系l用的数据库驱动程序名U?/td> </tr> <tr> <td>realdriver2</td> <td> </td> <td>真正的应用系l用的W二U备用数据库驱动E序名称?/td> </tr> <tr> <td>realdriver3</td> <td> </td> <td>真正的应用系l用的W三U备用数据库驱动E序名称?/td> </tr> <tr> <td>deregisterdrivers</td> <td>false</td> <td>昄地把真正的数据库的驱动程序进行反注册掉。取?true| false</td> </tr> <tr> <td>executionthreshold</td> <td> </td> <td>P6Log 模块执行旉讄Q整数?(以毫Uؓ单位)Q只有当过q个旉才进行记?Log?/td> </tr> <tr> <td>outagedetection</td> <td>false</td> <td>P6Outage 模块是否记录较长旉q行的语句。取?true| false</td> </tr> <tr> <td>outagedetectioninterval</td> <td> </td> <td>P6Outage 模块执行旉讄Q整数?Q以Uؓ单位)Q,只有当超q这个时间才q行记录 Log?/td> </tr> <tr> <td>filter</td> <td>false</td> <td>是否qo LogQ取?true| false</td> </tr> <tr> <td>include</td> <td> </td> <td>qo Log 时所包含的表名列表,以逗号分隔?/td> </tr> <tr> <td>exclude</td> <td> </td> <td>qo Log 时所排除的表名列表,以逗号分隔?/td> </tr> <tr> <td>sqlexpression</td> <td> </td> <td>qo Log 时的 SQL 表达式名U?/td> </tr> <tr> <td>autoflush</td> <td>true</td> <td>是否自动h。取?true| false</td> </tr> <tr> <td>dateformat</td> <td> </td> <td>讄旉的格式,也就是用 Java ?SimpleDateFormat E序?/td> </tr> <tr> <td>includecategories</td> <td> </td> <td>昄指定qo Log 时包含的分类列表Q取gؓ errorQinfoQbatchQdebugQstatementQcommitQrollbackQresult 的各U组合?/td> </tr> <tr> <td>excludecategories</td> <td> </td> <td>昄指定qo Log 时排队的分类列表Q取值同上?/td> </tr> <tr> <td>stringmatcher</td> <td> </td> <td>使用正则表达式来qo LogQ取gؓ com.p6spy.engine.common.GnuRegexMatcher ?com.p6spy.engine.common.JakartaRegexMatcher</td> </tr> <tr> <td>stacktrace</td> <td>false</td> <td>打印堆栈跟踪信息。取?true| false</td> </tr> <tr> <td>stacktraceclass</td> <td> </td> <td>如果 stacktrace=trueQ则可以指定具体的类名来q行qo?/td> </tr> <tr> <td>reloadproperties</td> <td>false</td> <td>监测属性配|文件是否进行重新加载。取?true| false</td> </tr> <tr> <td>reloadpropertiesinterval</td> <td>60</td> <td>属性配|文仉新加载的旉间隔Q以Uؓ单位?/td> </tr> <tr> <td>useprefix</td> <td>false</td> <td>是否加上前缀Q设|ؓ trueQ会加上 p6spy: 作ؓ前缀。取?true| false</td> </tr> <tr> <td>appender</td> <td>com.p6spy.engine.logging. appender.FileLogger</td> <td>指定 Log ?appenderQ与 Log4J 有点同义Q取|com.p6spy.engine.logging.appender.Log4jLogger、com.p6spy.engine.logging.appender.StdoutLogger ?com.p6spy.engine.logging.appender.FileLogger</td> </tr> <tr> <td>logfile</td> <td>spy.log</td> <td>指定 Log 的文件名QQ何适于操作pȝ的文件?/td> </tr> <tr> <td>append</td> <td>true</td> <td>指定是否每次是增?LogQ设|ؓ false 则每ơ都会先q行清空。取?true| false</td> </tr> <tr> <td>log4j.appender.STDOUT</td> <td>org.apache.log4j.ConsoleAppender</td> <td>?appender ?log4j 旉用的配置Q配|如?Log4J 的相关配|?/td> </tr> <tr> <td>log4j.appender.STDOUT.layout</td> <td>org.apache.log4j.PatternLayout</td> <td>同上</td> </tr> <tr> <td>log4j.appender.STDOUT. layout.ConversionPattern</td> <td>p6spy - %m%n</td> <td>同上</td> </tr> <tr> <td>log4j.logger.p6spy</td> <td>INFO,STDOUT</td> <td>Log U别的设|,取值同 Log4J 的配|?/td> </tr> <tr> <td>realdatasource</td> <td> </td> <td>讄数据?DataSource 的配|名U?/td> </tr> <tr> <td>realdatasourceclass</td> <td> </td> <td>讄数据?DataSource 的类的全U?/td> </tr> <tr> <td>realdatasourceproperties</td> <td> </td> <td>讄数据?DataSource 的属性,以分号分隔?/td> </tr> <tr> <td>jndicontextfactory</td> <td> </td> <td>讄 JNDI 数据源的 NamingContextFactory?/td> </tr> <tr> <td>jndicontextproviderurl</td> <td> </td> <td>讄 JNDI 数据源的提供者的 URL?/td> </tr> <tr> <td>jndicontextcustom</td> <td> </td> <td>讄 JNDI 数据源的一些定制信息,以分号分隔?/td> </tr> </tbody> </table> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0" sizset="77" sizcache="2"> <tbody sizset="77" sizcache="1"> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right" sizset="78" sizcache="2"> <tbody sizset="79" sizcache="2"> <tr align="right" sizset="79" sizcache="2"> <td sizset="79" sizcache="2"><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0" sizset="79" sizcache="2"> <tbody sizset="79" sizcache="1"> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" cmimpressionsent="1"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N102D2"><span id="wmqeeuq" class="atitle">SQL Profiler</span></a></p> <p>SQL Profiler 是一个由 Jahia.org 提供的基?P6Spy 引擎的快速剖析工P用来l计 SQL 查询语句以便了解哪里是性能瓉Q在哪里创徏索引或者采取相应的办法才能提高效率Qƈ且能Ҏ SQL 查询语句的情况帮你生成合适的索引脚本?/p> <p>q个工具可以实时地昄数据库查询的情况Q通过集成?SQL 解析器,在访问大多数表与列上面徏立统计分析,q生成烦引脚本。当Ӟ其它的信息也会进行收集和昄Q比如:单个数据库请求的旉、一c请求的旉以及所有请求的旉。因此,可以有效地通过视图的排序来数据的性能问题所在。这个工具对于大量的需要进行分析的h是非常有用的Q而不是h工一个个地去做分析。当你需要知道比如对相同的表和列q行讉K但是采用不同的查询值时Q这U分l的查询可以用徏立在 ANTLR 上的 SQL 解析器进行分析?/p> <p><a name="N102DF"><span id="wmqeeuq" class="smalltitle">使用步骤</span></a></p> <p>首先Q你的应用系l同样也应当是基于数据库的,然后你需要去获取 SQL Profiler 相关的文Ӟ?<a cmimpressionsent="1">参考资?/a> 中可以找C载链接,您可以直接下载Y件包Q。下面介l?SQL Profiler 的安装与使用的详l操作过E: </p> <ol> <li><a cmimpressionsent="1">下蝲</a> SQL Profiler 的文件包q行安装Q? <li>?p6spy.jar ?sqlprofiler.jar 攑ֈ <code>CLASSPATH</code> 中,如果?Web 应用E序则放?<code>YourWebApp/WEB-INF/lib/</code> 目录下; <li>?spy.properties 攑ֈ <code>CLASSPATH</code> 目录下,如果?Web 应用E序放?<code>YourWebApp/WEB-INF/classess/</code> 目录下,注意不是 <code>lib/</code> 目录Q? <li>修改你应用系l中的数据库驱动名称?P6Spy 的驱动程序名U?<code>com.p6spy.engine.spy.P6SpyDriver</code> 其它的全部用默认|暂时不用修改Q? <li>打开 spy.properties 文gQ把 <code>realdriver</code> 的值改Z的程序的数据库驱动名Uͼ <li>注意要先q行 <code>java -jar sqlprofiler.jar</code> 来启?SQL ProfilerQƈ成功看到启动界面Q? <li>然后再启动你的应用程序或服务器,q开始进行正常的pȝh处理操作Q? <li>q样可以在 SQL Profiler 囑Ş化的界面上看到结果ƈq行分析了?</li> </ol> <p><a name="N1032A"><span id="wmqeeuq" class="smalltitle">分析l果</span></a></p> <p>l过一D|间的pȝq行后,点击 Pause 按钮停止拦截Q可以得到分析结果如下图Q?/p> <br /> <a name="N10334"><strong>?2. SQL Profiler 的分析结?Profiler 视图</strong></a><br /> <img alt="?2. SQL Profiler 的分析结?Profiler 视图" src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig002.jpg" /> <br /> <p>接着Q可以切换到 Loggers 视图Q这?Lgger 视图的信息:</p> <br /> <a name="N10343"><strong>?3. SQL Profiler 的分析结?Logger 视图</strong></a><br /> <img alt="?3. SQL Profiler 的分析结?Logger 视图" src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig003.jpg" /> <br /> <p>当然Q也可以切换?Analysis 视图Q这?Analysis 视图的分析结果信息:</p> <br /> <a name="N10352"><strong>?4. SQL Profiler 的分析结?Analysis 视图</strong></a><br /> <img alt="?4. SQL Profiler 的分析结?Analysis 视图" src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig004.jpg" /> <br /> <p>在经q分析后Q我们可以直接通过 SQLProfiler 提交的保存按钮,直接导出应当q行数据库优化的的烦引脚本,通过查看索引脚本Q我们可以看到创建烦引的详细 SQL 脚本Q这P我们可以非常方便地q行数据库调优了?/p> <p><a name="N1035F"><span id="wmqeeuq" class="smalltitle">问题与解?/span></a></p> <p>最后一个需要注意的问题是需要先启动 SQLProfilerQ然后再启动应用E序或?Tomcat {应用服务器。这是因?SQLProfiler 默认使用的是 Log4j ?SocketAppenderQ所以要先启动。否则,会因你的应用E序或应用服务器中的 Web 应用之类的因q接不到 Socket 的服务器QSQLProfiler 相当?Socket 的服务器Q而发生错误,可以通过 SQL Profiler 控制界面最下面的连接状态就可以知道是否有程序连接上来?/p> <br /> <a name="N10369"><strong>?5. SQL Profiler 处于非连接状?/strong></a><br /> <img alt="?5. SQL Profiler 处于非连接状? src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig005.jpg" /> <br /> <br /> <a name="N10375"><strong>?6. SQL Profiler 处于q接状?/strong></a><br /> <img alt="?6. SQL Profiler 处于q接状? src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig006.jpg" /> <br /> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0" sizset="80" sizcache="2"> <tbody sizset="80" sizcache="1"> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right" sizset="81" sizcache="2"> <tbody sizset="82" sizcache="2"> <tr align="right" sizset="82" sizcache="2"> <td sizset="82" sizcache="2"><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0" sizset="82" sizcache="2"> <tbody sizset="82" sizcache="1"> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" cmimpressionsent="1"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N1037F"><span id="wmqeeuq" class="atitle">IronTrack SQL</span></a></p> <p>IronEyeQ一个专注于 JDBC 性能的监控和试的开源项目,它包含有三个工具QIronEye SQLQIronEye CacheQIronTrack SQL。其中,IronEye SQL 用于监测 Java 应用和数据库服务器之间查询开销的时_诊断在性能斚w是否存在着相关问题Q让开发h员在试之前p发现问题。IronEye ?2003 q?10 ?1 日开始基?Apache Software License 发布?/p> <p>IronEye SQL q个轻量U的 Java 工具提供所有流动在数据库与应用E序之间?SQL l计信息q用多张图表展现Q可以快速优化程序的性能?/p> <p>IronGrid 相对?Continuous Integration 提出?Continuous Performance 的概念,卛_目开发过E中随时x性能问题Q而不是传l的Z问题再解决的Ҏ?/p> <p>IronGrid 在应用程序对数据库的操作上的 Continuous Performance 是通过 IronTrack SQL q行体现的。IronTrack SQL 能通过?JDBC 的包装来拦截应用E序Ҏ据库的请求,完成性能监控。IronTrack SQL 的好处在于不需要修改Q何代码或者在数据库端安装ME序Q只需要在试时把依赖?JDBC 替换可以了?/p> <p><a name="N10392"><span id="wmqeeuq" class="smalltitle">使用步骤</span></a></p> <p>首先Q你的应用系l同样也应当是基于数据库的,然后你需要去获取 IronTrack SQL 相关的文Ӟ?<a cmimpressionsent="1">参考资?/a> 中可以找C载链接,您可以直接下载Y件包Q。下面介l?IronTrack SQL 的安装与使用的详l操作过E:</p> <ol> <li><a cmimpressionsent="1">下蝲</a> IronTrack SQL 的文件包q行安装Q? <li>?irontracksql.jar, p6spy.jar ?log4j-1.2.8.jar 攑ֈ <code>CLASSPATH</code> 中,如果?Web 应用E序则放?<code>YourWebApp/WEB-INF/lib/</code> 目录下; <li>?spy.properties 攑ֈ <code>CLASSPATH</code> 目录下,如果?Web 应用E序放?<code>YourWebApp/WEB-INF/classess/</code> 目录下,注意不是 <code>lib/</code> 目录Q? <li>修改你程序的数据库驱动名UCؓ P6Spy 的驱动程序名U?<code>com.p6spy.engine.spy.P6SpyDriver</code> 其它的都不用更改Q? <li>打开配置文g spy.properties 文gQ找?<code>realdriver</code>Q把它的值改Z的应用系l的真正的数据库驱动名称Q? <li>讄监听端口?<code>monitorport=2000</code>Q? <li>先运?<code>java -jar irontracksql.jar</code> 来启?IronTrack SQLQ? <li>再启动你的应用程序或服务器; <li>可以?IronTrack SQL 囑Ş化的界面上看到结果ƈq行分析了?</li> </ol> <p><a name="N103E4"><span id="wmqeeuq" class="smalltitle">q接讄</span></a></p> <p>点击“Config”按钮可以设|主机名、端口与h的时_毫秒为单位)。根据你的服务器与端口的不同而进行相应地改变Q下面以本地?2000 端口Q刷新时间ؓ 500 毫秒为示例。设|完成后Q确定,点击“Connect”可以连接应用系lƈq行监测与分析了Q当要停止分析时Q只要点?#8220;Disconnect”按扭卛_立刻停止分析了?/p> <p>在分析的q程中,我们可以Ҏ需要点?#8220;Purge”按钮Q它可以清除目前所监测到的内容Q然后重新进行记录监信息,很方便地q行重新开始?/p> <br /> <a name="N103F1"><strong>?7. IronTrack SQL q接CZ</strong></a><br /> <img alt="?7. IronTrack SQL q接CZ" src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig007.jpg" /> <br /> <p><a name="N103FB"><span id="wmqeeuq" class="smalltitle">分析l果</span></a></p> <p>l过一D|间的pȝq行后,我们可以直接得到分析的结果与相应的图形分析示例。相关的信息昄如下Q?/p> <br /> <a name="N10405"><strong>?8. IronTrack SQL 分析l果</strong></a><br /> <img alt="?8. IronTrack SQL 分析l果" src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig008.jpg" /> <br /> <ul> <li>Count 列显C?SQL 语句的调用次敎ͼ <li>Avg Time 列显C?SQL 语句的执行^均时_ <li>Max Time 列显C?SQL 语句p的最高时_ <li>SQL 列显C真正执行的 SQL 语句内容?</li> </ul> <p>同时也可以通过讄qo条g来显C指定条件的l果Q比如:只关注^均调用次数大?100 ?的结果。点?#8220;Filtering”左边的小三角图标Q可以显C如下的qo条g讄栏目Q?/p> <br /> <a name="N10423"><strong>?9. IronTrack SQL 讄相关的过滤条?/strong></a><br /> <img alt="?9. IronTrack SQL 讄相关的过滤条? src="http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/fig009.jpg" /> <br /> <p>讄完成后,点击“Apply Filter”按钮卛_以获取所需要的相关l果了。这样可以更加方便地集中_֊q行所需要的内容分析Q可以更加方便快速地定位到问题的所在之处,然后q行解决?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0" sizset="83" sizcache="2"> <tbody sizset="83" sizcache="1"> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right" sizset="84" sizcache="2"> <tbody sizset="85" sizcache="2"> <tr align="right" sizset="85" sizcache="2"> <td sizset="85" sizcache="2"><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0" sizset="85" sizcache="2"> <tbody sizset="85" sizcache="1"> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" cmimpressionsent="1"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N10430"><span id="wmqeeuq" class="atitle">ȝ</span></a></p> <p>通过使用 P6Spy、SQL Profiler、IronTrack SQL 工具Q我们可以无侵入已有的应用系l而有效地q行数据库操作的监控与剖析,为发现系l的性能瓉Q寻扄l的性能调优提供了相当便利的Ҏ?/p> <br /> <br /> <p><a name="resources"><span id="wmqeeuq" class="atitle">参考资?</span></a></p> <strong>学习</strong><br /> <ul> <li><a cmimpressionsent="1">P6Spy 站点</a>Q提供数据库性能监控和剖析工兗?br /> <br /> <li><a cmimpressionsent="1">SQL Profiler 站点</a>Q提供的Z P6Spy 引擎的数据库快速剖析工?SQL Profiler?br /> <br /> <li><a cmimpressionsent="1">Java 技术专?/a>Q寻?Java ~程各方面的技术文章?br /> <br /> </li> </ul> <br /> <strong>获得产品和技?/strong><br /> <ul> <li><a cmimpressionsent="1">下蝲 P6Spy</a> 软g包?<br /> <br /> <li><a cmimpressionsent="1">下蝲 SQL Profiler</a> 软g包?<br /> <br /> <li><a cmimpressionsent="1">下蝲 IronTrack SQL</a> 软g包?</li> </ul> <img src ="http://www.aygfsteel.com/table/aggbug/290827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/table/" target="_blank">卓</a> 2009-08-12 14:48 <a href="http://www.aygfsteel.com/table/articles/290827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql日期和时间函C求hhttp://www.aygfsteel.com/table/articles/256299.htmlMon, 23 Feb 2009 09:41:00 GMThttp://www.aygfsteel.com/table/articles/256299.htmlhttp://www.aygfsteel.com/table/comments/256299.htmlhttp://www.aygfsteel.com/table/articles/256299.html#Feedback0http://www.aygfsteel.com/table/comments/commentRss/256299.htmlhttp://www.aygfsteel.com/table/services/trackbacks/256299.html
q里是一个用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最?0天以内: 

mysql> SELECT something FROM table 
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; 

DAYOFWEEK(date) 
q回日期date的星期烦?1=星期天,2=星期一, ……7=星期?。这些烦引值对应于ODBC标准?nbsp;
mysql> select DAYOFWEEK('1998-02-03'); 
-> 3 

WEEKDAY(date) 
q回date的星期烦?0=星期一Q?=星期? ……6= 星期??nbsp;
mysql> select WEEKDAY('1997-10-04 22:23:00'); 
-> 5 
mysql> select WEEKDAY('1997-11-05'); 
-> 2 

DAYOFMONTH(date) 
q回date的月份中日期Q在1?1范围内?nbsp;
mysql> select DAYOFMONTH('1998-02-03'); 
-> 3 

DAYOFYEAR(date) 
q回date在一q中的日? ??66范围内?nbsp;
mysql> select DAYOFYEAR('1998-02-03'); 
-> 34 

MONTH(date) 
q回date的月份,范围1?2?nbsp;
mysql> select MONTH('1998-02-03'); 
-> 2 

DAYNAME(date) 
q回date的星期名字?nbsp;
mysql> select DAYNAME("1998-02-05"); 
-> 'Thursday' 

MONTHNAME(date) 
q回date的月份名字?nbsp;
mysql> select MONTHNAME("1998-02-05"); 
-> 'February' 

QUARTER(date) 
q回date一q中的季度,范围1??nbsp;
mysql> select QUARTER('98-04-01'); 
-> 2 

WEEK(date) 
  
WEEK(date,first) 
对于星期天是一周的W一天的地方Q有一个单个参敎ͼq回date的周敎ͼ范围??2?个参数Ş式WEEK()允许
你指定星期是否开始于星期天或星期一。如果第二个参数?Q星期从星期天开始,如果W二个参数是1Q?
从星期一开始?nbsp;
mysql> select WEEK('1998-02-20'); 
-> 7 
mysql> select WEEK('1998-02-20',0); 
-> 7 
mysql> select WEEK('1998-02-20',1); 
-> 8 

YEAR(date) 
q回date的年份,范围?000?999?nbsp;
mysql> select YEAR('98-02-03'); 
-> 1998 

HOUR(time) 
q回time的小Ӟ范围??3?nbsp;
mysql> select HOUR('10:05:03'); 
-> 10 

MINUTE(time) 
q回time的分钟,范围??9?nbsp;
mysql> select MINUTE('98-02-03 10:05:03'); 
-> 5 

SECOND(time) 
回来time的秒敎ͼ范围??9?nbsp;
mysql> select SECOND('10:05:03'); 
-> 3 

PERIOD_ADD(P,N) 
增加N个月到阶DPQ以格式YYMM或YYYYMM)。以格式YYYYMMq回倹{注意阶D参数P不是日期倹{?nbsp;
mysql> select PERIOD_ADD(9801,2); 
-> 199803 

PERIOD_DIFF(P1,P2) 
q回在时期P1和P2之间月数QP1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期倹{?nbsp;
mysql> select PERIOD_DIFF(9802,199703); 
-> 11 

DATE_ADD(date,INTERVAL expr type) 
  
DATE_SUB(date,INTERVAL expr type) 
  
ADDDATE(date,INTERVAL expr type) 
  
SUBDATE(date,INTERVAL expr type) 
q些功能执行日期q算。对于MySQL 3.22Q他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词?
在MySQL 3.23中,你可以??而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的
DATETIME或DATE|expr是指定加到开始日期或从开始日期减ȝ间隔g个表辑ּQexpr是一个字W串Q它可以?
一?#8220;-”开始表C间隔。type是一个关键词Q指明表辑ּ应该如何被解释。EXTRACT(type FROM date)函数从日?
中返?#8220;type”间隔。下表显CZtype和expr参数怎样被关联: type?nbsp;含义 期望的expr格式 
SECOND U?nbsp;SECONDS 
MINUTE 分钟 MINUTES 
HOUR 旉 HOURS 
DAY ?nbsp;DAYS 
MONTH ?nbsp;MONTHS 
YEAR q?nbsp;YEARS 
MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 
HOUR_MINUTE 时和分?nbsp;"HOURS:MINUTES" 
DAY_HOUR 天和时 "DAYS HOURS" 
YEAR_MONTH q和?nbsp;"YEARS-MONTHS" 
HOUR_SECOND 时, 分钟Q?nbsp;"HOURS:MINUTES:SECONDS" 
DAY_MINUTE ? 时, 分钟 "DAYS HOURS:MINUTES" 
DAY_SECOND ? 时, 分钟, U?nbsp;"DAYS HOURS:MINUTES:SECONDS" 

MySQL在expr格式中允怓Q何标点分隔符。表C显C的是徏议的分隔W。如果date参数是一个DATE值ƈ且你的计仅?
包含YEAR、MONTH和DAY部分(卻I没有旉部分)Q结果是一个DATE倹{否则结果是一个DATETIME倹{?nbsp;

mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; 
-> 1998-01-01 00:00:00 
mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; 
-> 1998-01-01 
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; 
-> 1997-12-31 23:59:59 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
INTERVAL 1 SECOND); 
-> 1998-01-01 00:00:00 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
INTERVAL 1 DAY); 
-> 1998-01-01 23:59:59 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 
INTERVAL "1:1" MINUTE_SECOND); 
-> 1998-01-01 00:01:00 
mysql> SELECT DATE_SUB("1998-01-01 00:00:00", 
INTERVAL "1 1:1:1" DAY_SECOND); 
-> 1997-12-30 22:58:59 
mysql> SELECT DATE_ADD("1998-01-01 00:00:00", 
INTERVAL "-1 10" DAY_HOUR); 
-> 1997-12-30 14:00:00 
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); 
-> 1997-12-02 
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); 
-> 1999 
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 
-> 199907 
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 
-> 20102 

如果你指定太短的间隔?不包括type关键词期望的间隔部分)QMySQL假设你省掉了间隔值的最左面部分。例如,
如果你指定一个type是DAY_SECONDQ值expr被希望有天、小时、分钟和U部分。如果你?1:10"q样指定|
MySQL假设日子和小旉分是丢失的ƈ且g表分钟和U。换句话_"1:10" DAY_SECOND以它{h?1:10" MINUTE_SECOND
的方式解释,q对那MySQL解释TIMEDC经q的旉而非作ؓ一天的旉的方式有二义性。如果你使用实不正的日期Q?
l果是NULL。如果你增加MONTH、YEAR_MONTH或YEARq且l果日期大于新月份的最大值天敎ͼ日子在新月用最大的天调整?nbsp;

mysql> select DATE_ADD('1998-01-30', Interval 1 month); 
-> 1998-02-28 

注意Q从前面的例子中词INTERVAL和type关键词不是区分大写的?nbsp;
TO_DAYS(date) 
l出一个日期dateQ返回一个天??q的天数)?nbsp;
mysql> select TO_DAYS(950501); 
-> 728779 
mysql> select TO_DAYS('1997-10-07'); 
-> 729669 

TO_DAYS()不打用于用格列高里历(1582)出现前的倹{?nbsp;

FROM_DAYS(N) 
l出一个天数NQ返回一个DATE倹{?nbsp;
mysql> select FROM_DAYS(729669); 
-> '1997-10-07' 

TO_DAYS()不打用于用格列高里历(1582)出现前的倹{?nbsp;

DATE_FORMAT(date,format) 
Ҏformat字符串格式化date倹{下列修饰符可以被用在format字符串中Q?nbsp;%M 月名?January……December) 
%W 星期名字(Sunday……Saturday) 
%D 有英语前~的月份的日期(1st, 2nd, 3rd, {等。) 
%Y q? 数字, 4 ?nbsp;
%y q? 数字, 2 ?nbsp;
%a ~写的星期名?Sun……Sat) 
%d 月䆾中的天数, 数字(00……31) 
%e 月䆾中的天数, 数字(0……31) 
%m ? 数字(01……12) 
%c ? 数字(1……12) 
%b ~写的月份名?Jan……Dec) 
%j 一q中的天?001……366) 
%H 时(00……23) 
%k 时(0……23) 
%h 时(01……12) 
%I 时(01……12) 
%l 时(1……12) 
%i 分钟, 数字(00……59) 
%r 旉,12 时(hh:mm:ss [AP]M) 
%T 旉,24 时(hh:mm:ss) 
%S U?00……59) 
%s U?00……59) 
%p AM或PM 
%w 一个星期中的天?0=Sunday ……6=Saturday Q?nbsp;
%U 星期(0……52), q里星期天是星期的第一?nbsp;
%u 星期(0……52), q里星期一是星期的W一?nbsp;
%% 一个文?#8220;%”?nbsp;

所有的其他字符不做解释被复制到l果中?nbsp;

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); 
-> 'Saturday October 1997' 
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'); 
-> '22:23:00' 
mysql> select DATE_FORMAT('1997-10-04 22:23:00', 
'%D %y %a %d %m %b %j'); 
-> '4th 97 Sat 04 10 Oct 277' 
mysql> select DATE_FORMAT('1997-10-04 22:23:00', 
'%H %k %I %r %T %S %w'); 
-> '22 22 10 10:23:00 PM 22:23:00 00 6' 
MySQL3.23中,在格式修饰符字符前需?。在MySQL更早的版本中Q?是可选的?nbsp;

TIME_FORMAT(time,format) 
q象上面的DATE_FORMAT()函数一样用,但是format字符串只能包含处理小时、分钟和U的那些格式修饰W?
其他修饰W生一个NULL值或0?nbsp;
CURDATE() 
  
CURRENT_DATE 
?YYYY-MM-DD'或YYYYMMDD格式q回今天日期|取决于函数是在一个字W串q是数字上下文被使用?nbsp;
mysql> select CURDATE(); 
-> '1997-12-15' 
mysql> select CURDATE() + 0; 
-> 19971215 

CURTIME() 
  
CURRENT_TIME 
?HH:MM:SS'或HHMMSS格式q回当前旉|取决于函数是在一个字W串q是在数字的上下文被使用?nbsp;
mysql> select CURTIME(); 
-> '23:50:26' 
mysql> select CURTIME() + 0; 
-> 235026 

NOW() 
  
SYSDATE() 
  
CURRENT_TIMESTAMP 
?YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式q回当前的日期和旉Q取决于函数是在一个字W串q是在数字的
上下文被使用?nbsp;
mysql> select NOW(); 
-> '1997-12-15 23:50:26' 
mysql> select NOW() + 0; 
-> 19971215235026 

UNIX_TIMESTAMP() 
  
UNIX_TIMESTAMP(date) 
如果没有参数调用Q返回一个Unix旉戌(?1970-01-01 00:00:00'GMT开始的U数)。如果UNIX_TIMESTAMP()用一
个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的U数倹{date可以是一个DATE字符丌Ӏ一个DATETIME
字符丌Ӏ一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字?nbsp;
mysql> select UNIX_TIMESTAMP(); 
-> 882226357 
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'); 
-> 875996580 

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数直接接受|没有隐含?#8220;string-to-unix-timestamp”变换?nbsp;

FROM_UNIXTIME(unix_timestamp) 
?YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式q回unix_timestamp参数所表示的|取决于函数是在一个字W串
q是或数字上下文中被使用?nbsp;
mysql> select FROM_UNIXTIME(875996580); 
-> '1997-10-04 22:23:00' 
mysql> select FROM_UNIXTIME(875996580) + 0; 
-> 19971004222300 

FROM_UNIXTIME(unix_timestamp,format) 
q回表示 Unix 旉标记的一个字W串Q根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条
目同L修饰W?nbsp;
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(), 
'%Y %D %M %h:%i:%s %x'); 
-> '1997 23rd December 03:43:30 x' 

SEC_TO_TIME(seconds) 
q回seconds参数Q变换成时、分钟和U,g'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字W串q是在数?
上下文中被用?nbsp;
mysql> select SEC_TO_TIME(2378); 
-> '00:39:38' 
mysql> select SEC_TO_TIME(2378) + 0; 
-> 3938 

TIME_TO_SEC(time) 
q回time参数Q{换成U?nbsp;
mysql> select TIME_TO_SEC('22:23:00'); 
-> 80580 
mysql> select TIME_TO_SEC('00:39:38'); 
-> 2378


2009-02-23 17:41 发表评论
]]>
oracle导入与导出指?/title><link>http://www.aygfsteel.com/table/articles/246325.html</link><dc:creator>卓</dc:creator><author>卓</author><pubDate>Mon, 15 Dec 2008 02:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/table/articles/246325.html</guid><wfw:comment>http://www.aygfsteel.com/table/comments/246325.html</wfw:comment><comments>http://www.aygfsteel.com/table/articles/246325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/table/comments/commentRss/246325.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/table/services/trackbacks/246325.html</trackback:ping><description><![CDATA[<p>导出Q?/p> <p>exp <a href="mailto:username/passwork@orcl">username/passwork@orcl</a> file=c:\testdb.dmp<br /> exp <a href="mailto:username/passwork@orcl">username/passwork@orcl</a> file=c:\testdb.dmp compress=y</p> <p>导入Q?/p> <p>imp <a href="mailto:username/passwork@orcl">username/passwork@orcl</a> file=c:\testdb.dmp full=y</p> <img src ="http://www.aygfsteel.com/table/aggbug/246325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/table/" target="_blank">卓</a> 2008-12-15 10:06 <a href="http://www.aygfsteel.com/table/articles/246325.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>