﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-jackyrong</title><link>http://www.cnblogs.com/jackyrong/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2009 13:02:17 GMT</lastBuildDate><pubDate>Mon, 06 Jul 2009 13:02:17 GMT</pubDate><ttl>60</ttl><item><title>struts+hibernate上传图片保存到oracle的blob字段</title><link>http://www.cnblogs.com/jackyrong/archive/2009/07/01/1514415.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Wed, 01 Jul 2009 01:25:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/07/01/1514415.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1514415.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/07/01/1514415.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1514415.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1514415.html</trackback:ping><description><![CDATA[<p>&nbsp; 其实上传图片等保存到oracle的blob字段的话,感觉不是太好,但如果一定要这样做的话也是可以的,</p>
<p>比如struts1+hibernate上传一个文件,典型的示例代码如下:<br />&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;DWorkstationDAO d=new DWorkstationDAO();<br />&nbsp;&nbsp;Session s = d.getSession();</p>
<p>FormFile file1 = f.getFile();&nbsp;</p>
<p>byte[] b=file1.getFileData();<br />&nbsp;&nbsp;&nbsp;ByteArrayInputStream imgin = new ByteArrayInputStream(b);<br />&nbsp;&nbsp;&nbsp;o.setPic(Hibernate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.createBlob(ImageUtil.genSmallImg(imgin)));&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.save(o);</p>
<p>其中ImageUtil.genSmallImg(imgin)是一个保存缩略图的方法,</p>
<p>更新的时候:<br /><br />&nbsp;o.setPic(Hibernate.createBlob(new byte[1]));<br />&nbsp;&nbsp;&nbsp;s.flush();<br />&nbsp;&nbsp;&nbsp;s.refresh(o,LockMode.UPGRADE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] b= file1.getFileData();<br />&nbsp;&nbsp;&nbsp;&nbsp; Blob ph= Hibernate.createBlob(b);//数据转换为blob类型</p>
<p>&nbsp;&nbsp;&nbsp;o.setPic(ph);&nbsp;</p>
<p>&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.cnblogs.com/jackyrong/aggbug/1514415.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48008/" target="_blank">IBM发布全球首款开源智能编译器</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>记得不要放错位置</title><link>http://www.cnblogs.com/jackyrong/archive/2009/06/23/1509604.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Tue, 23 Jun 2009 08:38:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/06/23/1509604.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1509604.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/06/23/1509604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1509604.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1509604.html</trackback:ping><description><![CDATA[<p>当在tomcat下设置数据源时.比如&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;Context&gt;<br />&nbsp;&lt;Resource name="jdbc/panyu" type="javax.sql.DataSource",</p>
<p>&nbsp;</p>
<p>不要忘记把驱动放在common\lib下,而不是放在工程的lib下，否则出错的</p><img src ="http://www.cnblogs.com/jackyrong/aggbug/1509604.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48007/" target="_blank">IE颓势不减 微软下月公布最新浏览器架构</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>（转）oracle extent</title><link>http://www.cnblogs.com/jackyrong/archive/2009/06/22/1508697.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Mon, 22 Jun 2009 13:47:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/06/22/1508697.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1508697.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/06/22/1508697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1508697.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1508697.html</trackback:ping><description><![CDATA[在Oracle的逻辑存储中，表空间由各种类型的段组成，而段则由区组成，区是段分配存储的单位。当建立一个表段时，Oracle为该段分配初始区，如果之后由于数据的插入，初始区装满后，将继续分配下一个区，区的大小在表段或者更高一级的存储参数中指定，下面通过实验的方式把分配的过程展示出来。 
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 在scott方案下建立初始表段</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQL&gt; conn scott/tiger<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已连接。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; create table t1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; as<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp; select * from dept where 1=3;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表已创建。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 查看段的初始区分配情况&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; select segment_name,extent_id,bytes from user_extents<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp; where segment_name='T1';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SEGMENT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXTENT_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BYTES<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 65536</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以看到段T1的初始区ID为0，大小为 65536 bytes;</p>
<p>&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 向表段中插入数据，使Oracle为该段分配更多的区</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; insert into t1 select * from dept;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp; for i in 1..10 loop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp; insert into t1 select * from t1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp; commit;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp; end loop;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp; end;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp; /</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PL/SQL 过程已成功完成。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; select segment_name,extent_id,bytes from user_extents<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; where segment_name='T1';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEGMENT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXTENT_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BYTES<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;65536<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;65536<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;65536</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此时看到随着数据的插入，T1段动态扩展为三个区；</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. 回收T1段的区</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; delete t1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已删除4096行。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; select segment_name,extent_id,bytes from user_extents<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; where segment_name='T1';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEGMENT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXTENT_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BYTES<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 65536<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 65536<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 65536</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此时表段的数据已经删除，但所有extent依然健在；</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQL&gt; truncate table t1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表被截断。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; select segment_name,extent_id,bytes from user_extents<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp; where segment_name='T1';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEGMENT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXTENT_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BYTES<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;65536</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 截断表后，表的空间也同时回收，这与delete语句要区分开来.</p>
<p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><img src ="http://www.cnblogs.com/jackyrong/aggbug/1508697.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48002/" target="_blank">竞争日趋激烈 微软欲借 Windows 7 扭转战局</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>软件测试1基本知识点</title><link>http://www.cnblogs.com/jackyrong/archive/2009/06/03/1495708.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Wed, 03 Jun 2009 14:21:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/06/03/1495708.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1495708.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/06/03/1495708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1495708.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1495708.html</trackback:ping><description><![CDATA[<p>并发用户数量：<br />与服务器交互的用户数量</p>
<p><br />请求响应：一般网络响应时间+server响应时间</p>
<p><br />事务响应时间：完成一个事务需要的时间</p>
<p><br />吞吐量：单位时间在网络上传输的数据量，指SERVER端发送到CLIENT端的数据量</p>
<p>点击率：每秒发送的HTTP请求量</p>
<p>TPS：每秒能处理事务的数量</p><img src ="http://www.cnblogs.com/jackyrong/aggbug/1495708.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>(转)JBPM和JPDL</title><link>http://www.cnblogs.com/jackyrong/archive/2009/05/16/1458103.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Fri, 15 May 2009 18:06:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/05/16/1458103.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1458103.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/05/16/1458103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1458103.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1458103.html</trackback:ping><description><![CDATA[<p><strong>关于jBPM</strong></p>
<p>jBPM，全称是Java Business Process Management，是一种基于J2EE的轻量级工作流管理系统。jBPM是公开源代码项目，它使用要遵循 Apache License。jBPM在2004年10月18日，发布了2.0版本，并在同一天加入了JBoss，成为了JBoss企业中间件平台的一个组成部分，它的名称也改成JBoss jBPM。随着jBPM加入JBoss组织，jBPM也将进入一个全新的发展时代，它的前景是十分光明的。</p>
<p>jBPM最大的特色就是它的商务逻辑定义没有采用目前的一些规范，如WfMC&amp;acute;s XPDL, BPML, ebXML, BPEL4WS等，而是采用了它自己定义的JBoss jBPM Process Definition Language (jPDL)。jPDL认为一个商务流程可以被看作是一个UML状态图。jPDL就是详细定义了这个状态图的每个部分，如起始、结束状态，状态之间的转换等。</p>
<p>jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据持久层解决方案。通过Hibernate，jBPM将数据的管理职能分离出去，自己专注于商务逻辑的处理。</p>
<p><strong>关于jPDL</strong></p>
<p>jPDL（JBoss <font size="2">jBPM Process Definition Language</font>）是构建于jBPM框架上的流程语言之一。在jPDL中提供了任务（tasks）、待处理状态 （wait states）、计时器（timers）、自动处理（automated actions）&#8230;等术语，并通过图型化的流程定义，很直观地描述业务流程。</p>
<p>jPDL可以部署于Java语言的任何应用环境下，JavaSE Application(Swing/SWT)、JavaEE Application(Application Server) 。</p>
<p><strong>jPDL分发包的组成</strong></p>
<p>目前jPDL的最新版本是3.2.3，通过<a href="http://labs.jboss.com/jbossjbpm/jpdl_downloads/">http://labs.jboss.com/jbossjbpm/jpdl_downloads/</a>可以获得官方下载包。下载包分为两种，一种是标准包(jbpm-jpdl-3.2.3.zip)；一种是套件包(jbpm-jpdl-suite-3.2.3.zip)。两者最大的区别是套装包自带一个已经配置好的jboss服务，下载解压缩后，可直接运行。</p>
<p>（1）jPDL的核心程序包(jbpm-jpdl.jar)</p>
<p>它是一个典型的jar文件，它涵盖对流程定义和运行时流程实例上下文环境的操作API。在最简化的业务流程样例中，jPDL将流程定义存储与XML格式的定义文件中，在运行时载入内存，在内存里记录完整的业务实例和执行过程的环境变量，并完成全部操作。显然，在实际应用中，流程信息必须被持久化的存储于数据库中。jPDL使用了Hibernate作为其对象持久化的API。</p>
<p>（2）Graphical Process Designer插件(jbpm-jpdl-designer-3.1.2.zip)</p>
<p>它是一个基于Eclipse的图型编辑插件。使用它可以对业务流程进行可视化的定制，而无须手动编辑XML文件。该插件还提供了流程定义上传功能，可以将新定义的流程发布到在线运行的jPDL系统上。</p>
<p>（3）jPDL身份包(jbpm-identity.jar)</p>
<p>它是jPDL的一个轻量级扩展包，简单实现了组Group、用户User、许可权Permission等用户身份认证和鉴权机制。如果您的应用环境只需要简单的用户认证鉴权管理，那么它十分适合您。</p>
<p>（4）jPDL Web控制台(jbpm-console.war)</p>
<p>它是一个标准Web应用（使用了JSF技术），提供了对jPDL平台执行情况的监控程序（对jPDL数据库的监控）。管理员可以通过该程序方便的维护jPDL的数据库，管理流程定义和流程实例的执行情况。同时，它还提供了一个简单的Getting started DEMO，方便初学者了解jPDL。</p>
<p><strong>jbpm-jpdl-suite-3.2.3.zip压缩包组成</strong></p>
<p>在解压jbpm-jpdl-suite-3.2.3.zip后，会看到很多目录，如下所示：</p>
<p>（1）config目录</p>
<p>该目录存放了jPDL的默认配置文件 ，包括hibernate.cfg.xml 、jbpm.cfg.xml（jPDL的主配置文件，默认是空的）、jbpm.mail.templates.xml（邮件模板配置文件）、log4j.properties（日志配置文件）</p>
<p>（2）db目录</p>
<p>该目录存放了jPDL针对不同数据库的表初始化sql文件。这里要说的是，jbpm.jpdl.mysql.sql在MySql下批量运行时，会出现错误提示，原因是语句后缺少&#8221;;&#8221;号，需要修订后才能使用。</p>
<p>（3）designer目录</p>
<p>该目录存放了GPD（Graphical Process Designer）插件。</p>
<p>（4）examples目录</p>
<p>该目录存放了jPDL的简单范例。</p>
<p>（5）doc目录</p>
<p>该目录存放jPDL 的相关说明文档，包括用户指南、Java API文档等。</p>
<p>（6）server目录</p>
<p>该目录存放了配置好的jBoss和控制台程序，Windows下双击start.bat可立即执行。数据库使用HSQL，存放于/server/server/jbpm/data下。</p>
<p>（7）src目录</p>
<p>该目录下存放的是源代码，可以通过查看代码来了解其具体实现，有助于增强理解。</p>
<p>（8）deploy目录</p>
<p>该目录下面包含3个war包：jbpm-console.war、jbpm-enterprise.ear、jbpm-mail.war。</p>
<p>（9）lib目录</p>
<p>该目录中存放了支持的jar包。</p>
<img src ="http://www.cnblogs.com/jackyrong/aggbug/1458103.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48000/" target="_blank">数万名网友签名抗议星际争霸2取消局域网功能</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>oracle 中建方案和数据导入导出小结</title><link>http://www.cnblogs.com/jackyrong/archive/2009/05/15/1457512.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Fri, 15 May 2009 03:10:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/05/15/1457512.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1457512.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/05/15/1457512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1457512.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1457512.html</trackback:ping><description><![CDATA[&nbsp;一般情况下@xxxxx.sql即可
<p>&nbsp; 先建立一个方案(schema),这里我的理解是oracle里的方案其实是相当于其他数据库中的"数据库",因为如果oracle<br />
里没特殊的要求,其实就在当前实例对应的数据库里建立不同的方案就可以了.<br />
&nbsp;&nbsp; 首先 </p>
<p style="text-indent: 2em">1、&nbsp;创建一个表空间</p>
<p style="text-indent: 2em">2、&nbsp;要在oracle中创建一个用户，因为oracle中的每个方案是与用户对应的。比如，并设置用户对该表空间的操作权限(connect,resource必须，</p>
<p style="text-indent: 2em">如果要导入其他Dba导入的.dmp，则需要有DBA权限)</p>
<p style="text-indent: 2em">3、&nbsp;这时方案已经创建成功了，这时还没有在方案树下面显示出来，因为这个方案里面为空。这时可以新建一个表，</p>
<p style="text-indent: 2em">connect&nbsp; 用户/密码@sid as sysdba</p>
<p style="text-indent: 2em">，这时方案就可以从方案树下面显示出来&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p style="text-indent: 2em">总的来说方案(Schema)＝User + User&#8217;s objects</p>
<p style="text-indent: 2em">建立一个用户，然后为该用户建立一些objects（如table,index...），该用户和其下的objects就构成一个方案(schema)</p>
<p style="text-indent: 2em">导入导出：</p>
<p style="text-indent: 2em">&nbsp;</p>
<p>数据导出：</p>
<p>&nbsp;1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中<br />
&nbsp;&nbsp; exp system/manager@TEST file=d:daochu.dmp full=y</p>
<p>&nbsp;2 将数据库中system用户与sys用户的表导出<br />
&nbsp;&nbsp; exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)</p>
<p>&nbsp;3 将数据库中的表inner_notify、notify_staff_relat导出<br />
&nbsp;&nbsp;&nbsp; exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) </p>
<p>&nbsp;4 将数据库中的表table1中的字段filed1以"00"打头的数据导出<br />
&nbsp;&nbsp; exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"<br />
&nbsp;<br />
&nbsp; 上面是常用的导出，对于压缩，既用winzip把dmp文件可以很好的压缩。<br />
&nbsp; 也可以在上面命令后面 加上 compress=y 来实现。</p>
<p>数据的导入</p>
<p>&nbsp;1 将D:daochu.dmp 中的数据导入 TEST数据库中。<br />
&nbsp;&nbsp; imp system/manager@TEST&nbsp; file=d:daochu.dmp<br />
&nbsp;&nbsp; imp aichannel/aichannel@HUST full=y&nbsp; file=d:datanewsmgnt.dmp ignore=y<br />
&nbsp;&nbsp; 上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。<br />
&nbsp;&nbsp; 在后面加上 ignore=y 就可以了。</p>
<p>&nbsp;2 将d:daochu.dmp中的表table1 导入<br />
&nbsp;imp system/manager@TEST&nbsp; file=d:daochu.dmp&nbsp; tables=(table1)<br />
&nbsp;<br />
&nbsp;基本上上面的导入导出够用了。不少情况要先是将表彻底删除，然后导入。<br />
&nbsp;<br />
注意：<br />
&nbsp;操作者要有足够的权限，权限不够它会提示。<br />
&nbsp;数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。</p>
<p>附录一：<br />
&nbsp;给用户增加导入数据权限的操作<br />
&nbsp;第一,启动sql*puls<br />
&nbsp;第二，以system/manager登陆<br />
&nbsp;第三，create user 用户名 IDENTIFIED BY 密码 （如果已经创建过用户，这步可以省略）<br />
&nbsp;第四，GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,<br />
&nbsp;&nbsp; DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBA,CONNECT,RESOURCE,CREATE SESSION&nbsp; TO 用户名字<br />
&nbsp;第五, 运行-cmd-进入dmp文件所在的目录,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imp userid=system/manager full=y file=*.dmp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者 imp userid=system/manager full=y file=filename.dmp</p>
<p>&nbsp;执行示例:<br />
&nbsp;F:WorkOracle_Databackup&gt;imp userid=test/test full=y file=inner_notify.dmp</p>
<p>屏幕显示<br />
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006<br />
(c) Copyright 2000 Oracle Corporation.&nbsp; All rights reserved.</p>
<p>连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production<br />
With the Partitioning option<br />
JServer Release 8.1.7.0.0 - Production</p>
<p>经由常规路径导出由EXPORT:V08.01.07创建的文件<br />
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入<br />
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)<br />
. 正在将AICHANNEL的对象导入到 AICHANNEL<br />
. . 正在导入表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "INNER_NOTIFY"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4行被导入<br />
准备启用约束条件...<br />
成功终止导入，但出现警告。</p>
<p>&nbsp;<br />
附录二：<br />
&nbsp;Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.<br />
&nbsp; 先建立import9.par,<br />
&nbsp; 然后，使用时命令如下：imp parfile=/filepath/import9.par<br />
&nbsp; 例 import9.par 内容如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROMUSER=TGPMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOUSER=TGPMS2&nbsp;&nbsp;&nbsp;&nbsp; （注：把表的拥有者由FROMUSER改为TOUSER，FROMUSER和TOUSER的用户可以不同）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROWS=Y<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEXES=Y<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRANTS=Y<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONSTRAINTS=Y<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BUFFER=409600<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file==/backup/ctgpc_20030623.dmp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log==/backup/import_20030623.log </p>
<img src ="http://www.cnblogs.com/jackyrong/aggbug/1457512.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>dojo+dwr+spring快速入门</title><link>http://www.cnblogs.com/jackyrong/archive/2009/04/05/1429967.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Sun, 05 Apr 2009 13:37:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/04/05/1429967.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1429967.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/04/05/1429967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1429967.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1429967.html</trackback:ping><description><![CDATA[<p>dojo号称是不错的东西了，但其实要全面用好的确不容易的，很多控件和东西，搞起来</p>
<p>有一定的时间需要。之前公司的一个项目，是boss的网站，客服对　ajax要求比较高，因为要经常操作，</p>
<p>所以ajax是需要的了，特别是无刷新的。用的是dojo+dwr+spring,前端完全是dojo&nbsp;了，是完全的静态页面，当然还是有点javascript　的，dwr+spring是不错的后端组合，dojo+dwr+spring真的有时候可以<br />完全代替struts,但究竟效果如后，文后小结之。现在以例子快速讲解之,本文要求先有点dwr的基础知识，看起来就<br />方便多了。</p>
<p>&nbsp;</p>
<p>例子是典型的列表，增删改之类的了，先看静态页面bbslist.htm<br /><font face="Verdana">&lt;script language="JavaScript" type="text/javascript" src="dwr/engine.js"&gt;&lt;/script&gt;<br />&nbsp;&lt;script language="JavaScript" type="text/javascript" src="dwr/util.js"&gt;&lt;/script&gt;<br />&nbsp;&lt;script language="JavaScript" type="text/javascript" src="dwr/interface/bbs.js"&gt;&lt;/script&gt;</font></p>
<p><font face="Verdana">&lt;script language="JavaScript" type="text/javascript" src="dojo.js"&gt;&lt;/script&gt;</font></p>
<p><font face="Verdana">&nbsp;&lt;script language="JavaScript" type="text/javascript" src="js/mootools.js"&gt;&lt;/script&gt;</font><br /><font face="Verdana">&lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;dojo.require("dojo.widget.Dialog");<br />&nbsp;&nbsp;<br />&nbsp;&lt;/script&gt;<br />首先引入了dwr,dojo的js文件，还有dojo 的对话框效果，</font><font face="Verdana"></p>
<p><br /><font face="Verdana">&lt;table〉&nbsp;&nbsp;<br />&nbsp;&lt;thead&gt;<br />&nbsp;&nbsp;&lt;!-- 列表头 --&gt;<br />&nbsp;&nbsp;&lt;tr&gt;<br />&nbsp;&nbsp;&lt;th width="50%" height="13"&gt;文章标题&lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&lt;th width="12%"&gt;作者&lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&lt;th width="18%"&gt;最新回帖时间&lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&lt;th width="14%"&gt;最新回复人&lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&lt;th width="6%"&gt;回复次数&lt;/th&gt;<br />&nbsp; &lt;/tr&gt;&nbsp;<br />&nbsp;&lt;/thead&gt;<br />&nbsp;&lt;!-- 显示记录内容 --&gt;<br />&nbsp;&lt;tbody id="recordData"&gt;&lt;/tbody&gt;&nbsp;<br />&nbsp;&lt;!-- 显示翻页的信息 --&gt;<br />&nbsp;&lt;tbody id="rollPageInfo"&gt;&lt;/tbody&gt;</font></p>
<p><font face="Verdana">&lt;script language="JavaScript" type="text/javascript" src="tousu/bbs/bbslist.js"&gt;&lt;/script&gt;</font><br /><br />这里只给出了列表头，其中recorddata,rollpageinfo都是到时候通过moontools,dojo,dwr等动态填充进去的。</p>
<p>&nbsp;</p>
<p>好的，现在前端的列表页面先这样了。接下来我们看下dwr，dojo,moontools部分。先看bbslist.js这个辅助文件，它的作用是把接收前端的输入，并用dwr传递到后端spring,<br /></p>
<p><font face="Verdana">var smsContentConfigQuery = {<br />&nbsp;//定义方法:根据用户输入的条件进行查询<br />&nbsp;queryByCon:function(){<br />&nbsp;&nbsp;setRowEff.oRow = null;&nbsp; //清空当前行<br />&nbsp;&nbsp;pageInfoBean.pageno = 1;&nbsp; //把页码设为1<br />&nbsp;</font><font face="Verdana">&nbsp;&nbsp;&nbsp;getList();<br />&nbsp;&nbsp;<br />&nbsp;}<br />};</font></p>
<p>&nbsp;</p>
<p><font face="Verdana">/查询函数<br />function getList(){<br />&nbsp;useLoadingMsg("");&nbsp; //显示提示信息"正在加载数据，请稍候......"<br />&nbsp;//按用户输入的查询条件进行查询,gotList是回调函数<br />&nbsp; BBSLIST=null;<br />&nbsp;bbs.getBbsList(.......,gotList);<br />}</font></p>
<p><font face="Verdana">//回调函数<br />function gotList(item){&nbsp;<br />&nbsp;DWRUtil.removeAllRows("recordData");&nbsp; //清除之前的所有记录<br />&nbsp;&nbsp;//如果没有返回数据(item == null),则结束程序<br />&nbsp;if(item == null){<br />&nbsp;&nbsp;return;<br />&nbsp;}</font></p>
<p><font face="Verdana"><font face="Verdana">&nbsp;DWRUtil.addRows("recordData", item.bbslist, cellFunctions,options);&nbsp;<br />&nbsp;BBSLIST = item.bbslist;</font></font></p>
<p><br /><font face="Verdana">//页面加载时,<br />dojo.addOnLoad(<br />&nbsp;function(){<br />&nbsp;&nbsp;smsContentConfigQuery.queryByCon();&nbsp; //根据用户输入条件进行查询<br />&nbsp;}<br />);</font></p>
<p>&nbsp;这里的意思其实就是dojo先加载smsContentConfigQuery.queryByCon()这个函数，</p>
<p>在querybycon()这里，可以进行些初始设置，之后bbs.getBbsList(.......,gotList);中<br />其实是通过dwr调用后端的spring进行处理了，比如返回新闻列表，以map的形式返回，</p>
<p>返回后，在通过调用回调函数gotList()进行处理</p>
<p>这里item其实可以理解为后端返回的结果集了。观察<br />DWRUtil.addRows("recordData", item.bbslist, cellFunctions,options);&nbsp;<br />其中item.bbslist是什么？</p>
<p>&nbsp; 其实假设后端spring返回的是一个list,一个map的话，bbslist就是其名称，比如后端这样：</p>
<p><font face="Verdana">retHashMap.put("bbslist", bbslist);</font></p>
<p>明白了吧？<br />cellfuntions,options是什么？这是dwr里规定的了具体可以google.<br /><br /></p>
<p><font face="Verdana">var cellFunctions = [];&nbsp; //定义一个数组,保存读取对象中属性的函数名称<br />cellFunctions = [getTitle,getUsername,getLast_time,getLast_name,getCount];</font></p>
<p><font face="Verdana">&nbsp;<br />//定义读取对象属性的函数<br />//读取记录标识<br />function getSysId(item){<br />&nbsp;return item.sysid;<br />}<br />//读取工单号<br />//读取可选地市范围<br />function getContent(item){<br />&nbsp;return item.content;<br />}<br />function getUsername(item){<br />&nbsp;return item.username;<br />}</font></p>
<p><font face="Verdana">function getTitle(item){<br />&nbsp;<br />&nbsp;//如果是精华帖<br />&nbsp;if (item.is_key==1)<br />&nbsp;{<br />&nbsp;return&nbsp; "&lt;img src='/JBilling/images/goodnees.gif'&gt;"+item.title;<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;return item.title;&nbsp;<br />&nbsp;}<br />&nbsp;<br />}<br /><br />function getContent(item){<br />&nbsp;return item.content;<br />}</font></p>
<p><font face="Verdana">function getCount(item){<br />&nbsp;return item.count;<br />}<br />function getWrite_time(item){<br />&nbsp;return item.write_time;<br />}<br />function getLast_time(item){<br />&nbsp;return item.last_time;<br />}<br />function getLast_name(item){<br />&nbsp;return item.last_name;<br />}<br />function getIs_key()<br />{&nbsp; return item.is_key;<br />&nbsp;<br />}<br /></font></p>
<p>&nbsp;最后，DWRUtil.addRows("recordData", item.bbslist, cellFunctions,options);&nbsp;<br />中的"recordData"看到了么？dwr把后端拿过来的数据，填充到静态页面中的<br />&nbsp;&lt;tbody id="recordData"&gt;&lt;/tbody&gt;&nbsp;<br />中了，就显示了新闻列表。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 小结：dojo+dwr+spring，如果用在某些场合是不错的，但要注意的时，复杂情况的话，比如一对多等<br />情况，用dwr+dojo这样的处理方式不一定很简单，反而有时直接struts，jstl作前端反而会更好，</p>
<p>起码方便美工去实施，而且这样的处理的话，有时会要动太多的脑子了，为了ajax。所以个人认为&nbsp;<br />&nbsp;dwr最后还是做为一个桥梁，其优点在于把后端的javabean,spring等东西直接暴露为前端的javascript,<br />减少了写javascript的功夫，但用dwr作本文这样的前端展示，不是太恰当，需要太高的技巧了。<br />而dojo控件很多，有时做些效果还是不错的，其他的用的太多不一定好，耗费太多内存。<br />&nbsp; 下次继续讲解dojo+dwr+spring如何做增，删，改</p></font><img src ="http://www.cnblogs.com/jackyrong/aggbug/1429967.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>php sca学习之1</title><link>http://www.cnblogs.com/jackyrong/archive/2009/02/19/1394355.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Thu, 19 Feb 2009 14:17:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/02/19/1394355.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1394355.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/02/19/1394355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1394355.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1394355.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 折腾了一个上午,PHP SCA的居然连helloworld也出不来,在单位的VISITA上,百思不得其解,于是晚上回家</p>
<p>在WIN2003上，用同样的APACHE版本,PHP 用5.2.1,居然完成成功,下面记录过程,毕竟这方面资料国内很少。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>1 先安装pear</p>
<p>&nbsp;&nbsp; 在你的PHP目录下,输入go-pear,然后基本按回车,就完成安装了</p>
<p>&nbsp;</p>
<p>2 用PECL安装SCA-SDO,因为这样很方便了</p>
<p>&nbsp;&nbsp; 输入pecl install -B SCA_SDO ,之后会自动下载</p>
<p>ＳＣＡ－ＳＤＯ的相关库文件，会放在你的pear目录下的</p>
<p>&nbsp;</p>
<p>３　还要下载一个php_sdo.sll文件，然后在</p>
<p>php.ini中加入&nbsp;<code><span class="boldcode">extension=php_sdo.dll</span> </code></p>
<p><code>４　把pear\sca\examples\下的随便一个例子放到你运行ＰＨＰ的目录下，就可以运行了，</code></p>
<p><code>5 咱们来helloworld</code></p>
<p><code>&nbsp; </p>
<p><font face="Verdana">include 'SCA/SCA.php';</font></p>
<p><font face="Verdana">/**<br />
&nbsp;* @service<br />
&nbsp;* @binding.soap<br />
&nbsp;*/<br />
class Greeting<br />
{<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param string $name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @return string<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public function greet($name) <br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 'hello ' . $name;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
?&gt;</font></p>
<p>&nbsp;</p>
<p>　　　这里用了标签，之后ＩＥ浏览<a href="http://localhost:8082/myphp/Greeting.php">http://localhost:8082/myphp/Greeting.php</a>？wsdl<br />
就可以看到ＷＳＤＬ了</p>
<p>使用之：</p>
<p>&nbsp;</p>
<p><font face="Verdana">include 'SCA/SCA.php';</font></p>
<p><font face="Verdana">$greeting_service&nbsp; = SCA::getService('http://localhost:8082/myphp5/helloworldscawsservice/Greeting.php?wsdl');<br />
</font><font face="Verdana">$name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ＂jackyrong";</font></p>
<p><font face="Verdana">$greeting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = $greeting_service-&gt;greet($name);<br />
</font><font face="Verdana">echo "Name: " . $name . "&lt;br/&gt;";</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">之后就可以使用了，第一个ＨＥＬＬＯＷＯＬＲＤ出来了．</font></p>
<p><font face="Verdana">　注意，我在visita上运行是出错的，在win2003上运行正确，哎，可恶的visita</font></p>
<p><font face="Verdana">参考资料：</font></p>
<p><font face="Verdana"><a href="http://www.osoa.org/display/PHP/SCA+with+PHP">http://www.osoa.org/display/PHP/SCA+with+PHP</a></font></p>
<p><font face="Verdana">http://www.ibm.com/developerworks/webservices/library/ws-soa-scasdo/</font></p>
</code>
<img src ="http://www.cnblogs.com/jackyrong/aggbug/1394355.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>(转）什么是QName</title><link>http://www.cnblogs.com/jackyrong/archive/2009/02/19/1393817.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Thu, 19 Feb 2009 03:57:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/02/19/1393817.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1393817.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/02/19/1393817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1393817.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1393817.html</trackback:ping><description><![CDATA[<p>先来看官方的解释：</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #000000">[Definition:]&nbsp;&nbsp;&nbsp;QName&nbsp;represents&nbsp;XML&nbsp;qualified&nbsp;names.&nbsp;The&nbsp;&#183;value&nbsp;space&#183;&nbsp;of&nbsp;QName&nbsp;is&nbsp;the&nbsp;set&nbsp;of&nbsp;tuples&nbsp;{<font color="#ff0000">namespace&nbsp;name,&nbsp;local&nbsp;part</font>},&nbsp;where&nbsp;<font color="#ff0000">namespace&nbsp;name&nbsp;is&nbsp;an&nbsp;anyURI</font>&nbsp;and&nbsp;<font color="#ff0000">local&nbsp;part&nbsp;is&nbsp;an&nbsp;NCName</font>.&nbsp;The&nbsp;&#183;lexical&nbsp;space&#183;&nbsp;of&nbsp;QName&nbsp;is&nbsp;the&nbsp;set&nbsp;of&nbsp;strings&nbsp;that&nbsp;&#183;match&#183;&nbsp;the&nbsp;QName&nbsp;production&nbsp;of&nbsp;[Namespaces&nbsp;in&nbsp;XML].&nbsp;</span></div>
</div>
<p>&nbsp;也就是说QName是由一个命名空间名称前缀和NCName（就是XML元素的名称）</p>
<p>csdn上的一个blog的解释：</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #000000">Qname这个东东，在使用dom4j的时候，经常见到，可能是自己解析的xml都太简单了，所以没有仔细研究过，就是觉得名字很怪异，在google百度搜索&#8220;什么是qname&#8221;，居然只有几条没有像样答案的纪录。还好，在国外网站上找到了相关的解释，这下基本明白了。<br />
</span><span style="color: #000000">1</span><span style="color: #000000">.来历：qname是qualified&nbsp;name&nbsp;的简写<br />
</span><span style="color: #000000">2</span><span style="color: #000000">.构成：由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成<br />
</span><span style="color: #000000">3</span><span style="color: #000000">.举例：<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">xsl:stylesheet&nbsp;xmlns:xsl</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.w3.org/1999/XSL/Transform</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">xsl:template&nbsp;match</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">foo</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">hr</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">xsl:template</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">xsl:stylesheet</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
xsl是名字空间前缀，template是元素名称，xsl:template&nbsp;就是一个qname&nbsp;</span></div>
</div>
<img src ="http://www.cnblogs.com/jackyrong/aggbug/1393817.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>tuscany 1.4之与ssh中的包冲突 </title><link>http://www.cnblogs.com/jackyrong/archive/2009/02/11/1388272.html</link><dc:creator>jackyrong的世界</dc:creator><author>jackyrong的世界</author><pubDate>Wed, 11 Feb 2009 07:37:00 GMT</pubDate><guid>http://www.cnblogs.com/jackyrong/archive/2009/02/11/1388272.html</guid><wfw:comment>http://www.cnblogs.com/jackyrong/comments/1388272.html</wfw:comment><comments>http://www.cnblogs.com/jackyrong/archive/2009/02/11/1388272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/jackyrong/comments/commentRss/1388272.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jackyrong/services/trackbacks/1388272.html</trackback:ping><description><![CDATA[<p>&nbsp; 在用tuscany 1.4，以及SSH架构时，遇到包冲突了<br />
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.&lt;init&gt;(Z)V</p>
<p>&nbsp;</p>
<p>方法，只保留asm-all-3.1.jar,包其他asm开头的包都去掉，</p>
<p>并且只保留cglib-nodep-2.1.3.jar,去掉cglib.jar</p>
<img src ="http://www.cnblogs.com/jackyrong/aggbug/1388272.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47995/" target="_blank">Google Voice 上手</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>