<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[小罗的空间]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[双人床，单人睡！]]></description>
<link>http://hi.baidu.com/luodaijun</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[处理配置文件的利器，Apache commons-configuration]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/c9cbddb4c078a7798ad4b236.html]]></link>
        <description><![CDATA[
		
		官方URL: http://commons.apache.org/configuration/userguide/howto_xml.html#Hierarchical_properties<br>
<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>
<strong>&lt;config&gt;</strong><br>
&lt;company&gt;<br>
&lt;name&gt;中博科创综合管理平台&lt;/name&gt;<br>
&lt;address&gt;深圳市南山区高新南一道飞亚达科技大厦1402 &lt;/address&gt;<br>
&lt;post&gt;518057&lt;/post&gt;<br>
&lt;testVar&gt;${company.address}--${company.post}&lt;/testVar&gt;<br>
&lt;/company&gt;<br>
<strong>&lt;/config&gt;</strong><br>
<br>
<br>
几个注意点：<br>
1.&#160; XML配置文件根节点是不算的,上面示例的config节点不用写<br>
String companyName=config.getString(&quot;company.name&quot;, &quot;没有读取到时的默认值&quot;);<br>
<br>
2. 可以指定没有读取到配置项时的默认值<br>
<br>
3. 可以使用其它节点的作为变量，如示例的testVar节点，值就是引用其它节点的值<br>
<br>
4. 可以使用单例模式，保证系统只有一个Configuration对象，如下<br>
<br>
-----------------------------------------------------------------------------------------------<br>
public class AppConfigUtils {<br>
<br>
private static XMLConfiguration config = null;<br>
<br>
static {<br>
String configFilePath = &quot;AppConfig.xml&quot;;<br>
try {<br>
config = new XMLConfiguration(configFilePath);<br>
//logger.info(&quot;读取配置文件[&quot; + configFilePath + &quot;]成功&quot;);<br>
} catch (ConfigurationException e) {<br>
// logger.error(&quot;读取系统配置文件[&quot; + configFilePath + &quot;]错误&quot;, e);<br>
}<br>
}<br>
<br>
public static Configuration getConfiguration() {<br>
return config;<br>
}<br>
<br>
public static void main(String[] args) {<br>
// 注意:xml第一个节点不用写，以点符号表示节点的层级<br>
<br>
String appTitle = AppConfigUtils.getConfiguration().getString(<br>
&quot;company.appTitle&quot;, &quot;如果没有读取到时的默认值&quot;);<br>
<br>
String testVar = AppConfigUtils.getConfiguration().getString(<br>
&quot;company.testVar&quot;, &quot;默认值&quot;);<br>
<br>
System.out.println(&quot;appTitle[&quot; + appTitle + &quot;]&quot;);<br>
<br>
System.out.println(&quot;testVar[&quot; + testVar + &quot;]&quot;);<br>
<br>
}<br>
}<br>
------------------------------------------------------------------------------------------------- <a href="http://hi.baidu.com/luodaijun/blog/item/c9cbddb4c078a7798ad4b236.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/java%BB%F9%B4%A1">java基础</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/c9cbddb4c078a7798ad4b236.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-01  23:17</pubDate>
        <category><![CDATA[java基础]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/c9cbddb4c078a7798ad4b236.html</guid>
</item>

<item>
        <title><![CDATA[关于数据显示标签的设计]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/2ad38235bf6ed51891ef390a.html]]></link>
        <description><![CDATA[
		
		<p>完善的表格显示标签，应该具备如下功能点<br>
1. 支持text,link,checkbox,radio等多种类型显示</p>
<p>2. 支持代码转名称，如查询结果有operator_id,应能支持转换显示operator_name<br>
3.支持条件表达式，某列显示的内容，复杂情况下是根据条件显示的，如&quot;删除&quot;列，其显示与否跟这条记录的状态有关系</p>
<p>4.支持表格样式由模板文件生成，</p>
<p>5.支持透明的分页，即生成的分页超链接，必须携带所有请求参数(遍历request)，跳转下一页，防止查询条件丢失</p>
<p>7 显示格式format,如日期，数字</p>
<p>8. 支持可扩展的多种格式导出</p>
<p>9. 支持国际化</p>
<p> </p>
<p><strong>时间比较长的开源项目display tag, 好像也很差劲</strong></p>
<p>个人认为，表格显示、数据库查询、分页、排序、导出，本来就是一体的，所以有如下设计</p>
<p> </p>
<p>1. sql.xml, 存放SQL语句&nbsp;&nbsp;</p>
<p>&lt;sql&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;query-name&gt;sysadmin.queryOperator&lt;/query-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;  &lt;sql-string&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  select operator_id,operator_name,emai from t_operator</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  where operator_name = $varchar2{operator_name} or $varchar2{opeartor_name} is null</p>
<p>&nbsp;&nbsp;  &lt;/sql-string&gt;</p>
<p>&lt;/sql&gt;</p>
<p>&nbsp;&nbsp;  说明: SQL语句必须使用绑定变量方式，即PreparedStatement,所以$varchar2{operator_name}来表示varchar2类型的参数值, 其中operator_name来至于pageContext,request,session中属性,有数据显示标签收集替换SQL语句中的参数部分</p>
<p><strong>特别注意：必须使用绑定变量，不然会有性能及SQL注入的漏洞</strong></p>
<p> </p>
<p> </p>
<p>2. 数据显示标签, 与sql.xml绑定</p>
<p>&lt;chinablog:table title=&quot;员工列表&quot;&nbsp;&nbsp;  <strong><font color="#ff0000">query-name=&quot;sysadmin.queryOperator &quot;</font></strong> defaultSortColumn=&quot;operator_name&quot; exportType=&quot;pdf,excel,csv&quot;&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;chinablog:column text=&quot;${operator_id}&quot; titile=&quot;操作人员ID&quot; /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;  &lt;chinablog:column text='&lt;a href=&quot;editOperator.do?id=${operator_id}&quot;&gt;${operator_name} &lt;/a&gt;'</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  title=&quot;姓名&quot; sort=&quot;true&quot;/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;  &lt;chinablog:column text=&quot;${email}&quot; titile=&quot;电子邮件&quot;/&gt;</p>
<p>&lt;/chinablog:table&gt;</p>
<p> </p>
<p>如此，数据显示只需要定义xml,以及在jsp里放一个表格显示tag而已，简单，可靠</p> <a href="http://hi.baidu.com/luodaijun/blog/item/2ad38235bf6ed51891ef390a.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%BD%A8%C4%A3%BA%CD%C9%E8%BC%C6">建模和设计</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/2ad38235bf6ed51891ef390a.html#comment">查看评论</a>]]></description>
        <pubDate>2009-07-01  23:58</pubDate>
        <category><![CDATA[建模和设计]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/2ad38235bf6ed51891ef390a.html</guid>
</item>

<item>
        <title><![CDATA[鄙人7月16日大婚]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/c66ab1fde72cfb1f08244d61.html]]></link>
        <description><![CDATA[
		
		大把大把的美女，都是你们年轻人的了!! 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/c66ab1fde72cfb1f08244d61.html#comment">查看评论</a>]]></description>
        <pubDate>2009-06-29  12:06</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/c66ab1fde72cfb1f08244d61.html</guid>
</item>

<item>
        <title><![CDATA[全世界最简单的HTTP服务器]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/7a84e2dd11e507e777c638cb.html]]></link>
        <description><![CDATA[
		
		<p>/*<br>
 * 全世界最简单的Http服务器<br>
 */<br>
package httpserver;</p>
<p>import java.io.BufferedReader;<br>
import java.io.BufferedWriter;<br>
import java.io.FileInputStream;<br>
import java.io.InputStreamReader;<br>
import java.io.OutputStreamWriter;<br>
import java.net.ServerSocket;<br>
import java.net.Socket;<br>
import java.util.Date;</p>
<p>/**<br>
 *<br>
 * @author Robin<br>
 */<br>
public class Main {</p>
<p>&nbsp;&nbsp;&nbsp;  /**<br>
&nbsp;&nbsp;&nbsp;&nbsp;  * 默认端口<br>
&nbsp;&nbsp;&nbsp;&nbsp;  */<br>
&nbsp;&nbsp;&nbsp;  private static int port = 80;<br>
&nbsp;&nbsp;&nbsp;  /**<br>
&nbsp;&nbsp;&nbsp;&nbsp;  * 页面存放文件夹<br>
&nbsp;&nbsp;&nbsp;&nbsp;  */<br>
&nbsp;&nbsp;&nbsp;  public static String pageHome = null;</p>
<p>&nbsp;&nbsp;&nbsp;  /**<br>
&nbsp;&nbsp;&nbsp;&nbsp;  * 只能接收一个port参数<br>
&nbsp;&nbsp;&nbsp;&nbsp;  */<br>
&nbsp;&nbsp;&nbsp;  public static void main(String[] args) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (args.length &gt; 1) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  port = Integer.valueOf(args[0]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // pageHome = args[1];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  pageHome = &quot;d:/pages&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  execute();<br>
&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  /**<br>
&nbsp;&nbsp;&nbsp;&nbsp;  * 处理http请求<br>
&nbsp;&nbsp;&nbsp;&nbsp;  * @param port<br>
&nbsp;&nbsp;&nbsp;&nbsp;  */<br>
&nbsp;&nbsp;&nbsp;  public static void execute() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(&quot;服务器已启动，端口:&quot; + port);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  while (true) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ServerSocket server = new ServerSocket(port);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Socket httpConn = null;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  httpConn = server.accept();</p>
<p>&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;  BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String firstLine = reader.readLine();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (firstLine == null) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(&quot;请求信息不格式不正确&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&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;  String[] firstLineArray = firstLine.split(&quot; &quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String pagePath = firstLineArray[1];</p>
<p>&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;  BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(httpConn.getOutputStream()));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  writer.write(&quot;HTTP/1.1 200 OK&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  writer.write(&quot;\r\n&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  writer.write(&quot;Date:&quot; + new Date().toGMTString());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  writer.write(&quot;\r\n&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  writer.write(&quot;\r\n&quot;);</p>
<p>&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;  BufferedReader pageReader = new BufferedReader(new InputStreamReader(new FileInputStream(pageHome + pagePath)));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int b = pageReader.read();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  while (b != -1) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  writer.write(b);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  b = pageReader.read();<br>
&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;  writer.flush();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (Throwable t) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  t.printStackTrace();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } finally {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (httpConn != null) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  httpConn.close();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  server.close();<br>
&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;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (Throwable t) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  t.printStackTrace();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }<br>
}</p> <a href="http://hi.baidu.com/luodaijun/blog/item/7a84e2dd11e507e777c638cb.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/java%BB%F9%B4%A1">java基础</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/7a84e2dd11e507e777c638cb.html#comment">查看评论</a>]]></description>
        <pubDate>2009-05-02  19:48</pubDate>
        <category><![CDATA[java基础]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/7a84e2dd11e507e777c638cb.html</guid>
</item>

<item>
        <title><![CDATA[SQL语句索引不能使用的一些情况]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/52dfdac436e5f4c339db499d.html]]></link>
        <description><![CDATA[
		
		先不论索引是否被滥用，今天只谈虽然建立了索引，但不同的SQL语句写法，用不上的问题 <br>
<br>
看看下面这颗树，就知道索引用不了的原因了 <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  a <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ab  ad <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  abc&nbsp;&nbsp;&nbsp;&nbsp;  adm <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  abcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  admn <br>
<br>
<br>
1. not 用不了索引 <br>
2. &lt;&gt; 用不了索引 <br>
3. 与null值比较用不了索引 <br>
4. like ,  select * from emp where ename like 'luo%' --能用上 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  select * from emp where ename like '%dai' --不能 <br>
5. 查询字段使用了函数 <br>
&nbsp;&nbsp;  select * from emp where to_char(reg_date,'yyyy')='2009' <br>
&nbsp;&nbsp;  当然，还包括了||连接符，对查询字段做运算等，如: where age+1=30 <br>
<br>
<strong>&nbsp;&nbsp;  解决办法，使用FBI(基于函数的索引)</strong> <br>
<br>
6. 多个字段建立组合索引 <br>
&nbsp;&nbsp;   <br>
&nbsp;&nbsp;  如对班号,姓名建立索引，并且班号在前 <br>
  where class_no='200105302'  and stu_name= '罗某'  --可以用索引 <br>
  where class_no='200105302'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --可以 <br>
  where stu_name='罗某'&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>
  原因和like类似 <br>
<br>
7. 注意数据类型隐式转换的问题 <br>
  如service_type字段，数据库表里varchar2类型，但是像下面这样写 <br>
  where service_type=82  --用不了，隐式类型转换 <a href="http://hi.baidu.com/luodaijun/blog/item/52dfdac436e5f4c339db499d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/52dfdac436e5f4c339db499d.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-18  10:58</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/52dfdac436e5f4c339db499d.html</guid>
</item>

<item>
        <title><![CDATA[我就不明白了，为什么那么多人觉得索引比全表扫描更快？求求你，别这样说了。]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/6f5e71c687ecbe139d163dd9.html]]></link>
        <description><![CDATA[
		
		<p>没有fast=true的设置有人说or 比 in 好，exists 比in 好,索引比全表扫描好，分区能提高查询效率，但是分区要降低插入效率</p>
<p>我要说的是，没有fast=true的选项， 如果能找到一步，或者几步公式化的方法能提高效率，那么优化器自己就会做了，根本不用用户担心。</p>
<p>假设 or比in好，数据库优化器把in语法和or语法走的执行计划一样就可以了，何必折磨用户呢。</p>
<p>说点实际的，很多人张嘴就说，SQL优化就是避免全表扫描，不知道大家有没有了解过索引查找的原理.索引查找数据，有两步要做，第一步是索引中快速查询，索引里只存储了对应表数据的rowid, 所以还有第二步，根据rowid去得到全部的数据, 所以需要一次磁盘i/o, 不要小看磁盘I/O,通过索引查询出的结果比较多的时候，磁盘i/o的时间是非常大的，这个时候比全表扫描慢得多， 实际上，oracle 10g基于成本的优化器(CBO)，选择性不高的索引，优化器根本不会使用，而自动采用全表扫描的方式来做.</p> <a href="http://hi.baidu.com/luodaijun/blog/item/6f5e71c687ecbe139d163dd9.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/6f5e71c687ecbe139d163dd9.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-16  07:05</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/6f5e71c687ecbe139d163dd9.html</guid>
</item>

<item>
        <title><![CDATA[Java用户回调方法消除冗余代码]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/ce1cccef6acb173eadafd518.html]]></link>
        <description><![CDATA[
		
		一.   看一段冗余的代码<br>
<br>
public String login(HttpServletRequest request){<br>
&nbsp;&nbsp;    OperatorService  operatorService = new OperatorService();<br>
&nbsp;&nbsp;    WebContext webContext= request.getSession().getAttribute(&quot;WEB_CONTEXT_KEY&quot;);     <br>
Connection conn=null;<br>
<font color="#ff0000"><strong>  try{       <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong> Conection conn =DBManager.getConnection();<strong><br>
&nbsp;&nbsp;&nbsp;&nbsp;</strong>&nbsp;&nbsp;    <font color="#000000">if(webContext.getOperatorName.equals(&quot;123&quot;)){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    // 登陆成功<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    }</font><strong><br>
}catch(Throwable t){<br>
&nbsp;&nbsp;    //记录日志<br>
//跳转到统一的错误页面,不能让用户看到异常页面<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    //关闭Connection<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    if(conn!=null){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    try{conn.close();}cath(SQLException ex){}<br>
&nbsp;&nbsp;&nbsp;&nbsp;      }<br>
&nbsp;&nbsp;    }  </strong></font><br>
}<br>
<br>
public String logOut(HttpServletRequest request){<br>
&nbsp;&nbsp;    OperatorService  operatorService = new OperatorService();<br>
&nbsp;&nbsp;    WebContext webContext= request.getSession().getAttribute(&quot;WEB_CONTEXT_KEY&quot;);     <br>
<font color="#ff0000"><strong>  try{       <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     </strong></font><font color="#ff0000"><strong> </strong>Conection conn =DBManager.getConnection();</font><br>
<font color="#ff0000"><strong> &nbsp;&nbsp;&nbsp;&nbsp;</strong>&nbsp;&nbsp;&nbsp;<font color="#000000"> operatorService.logout();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     </font><font color="#000000"> request.getSession().invalidate();</font><br>
</font><font color="#ff0000"><strong>   }catch(Throwable t){<br>
</strong></font><font color="#ff0000"><strong>    &nbsp;&nbsp;    //记录日志<br>
//跳转到统一的错误页面,不能让用户看到异常页面<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    //关闭Connection<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    if(conn!=null){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    try{conn.close();}cath(SQLException ex){}<br>
&nbsp;&nbsp;&nbsp;&nbsp;      }</strong></font><br>
<font color="#ff0000"><strong> &nbsp;&nbsp;    }  </strong></font><br>
}<br>
<br>
<br>
<br>
二、可以看到,红色部分代码完全是冗余的，下面用回调方法简化这部分代码<br>
<br>
<br>
1.先定义一个回调抽象类<br>
public abstract class AppCallback {<br>
<br>
&nbsp;&nbsp;&nbsp;    /**<br>
&nbsp;&nbsp;&nbsp;     * 回调执行方法<br>
&nbsp;&nbsp;&nbsp;     * <br>
&nbsp;&nbsp;&nbsp;     * @return<br>
&nbsp;&nbsp;&nbsp;     */<br>
&nbsp;&nbsp;&nbsp;    public String execute() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    Connection conn=null;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000"><strong> try{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    conn= DBManager.getConnection();<br>
</strong></font>&nbsp;&nbsp;&nbsp;    &nbsp;&nbsp;        this.doLogic(conn);<br>
&nbsp;&nbsp;&nbsp;    &nbsp;&nbsp;<font color="#ff0000"><strong> catch(Throwable t){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     //记录日志<br>
&nbsp;&nbsp;    //跳转到统一的错误页面,不能让用户看到异常页面<br>
</strong></font><font color="#ff0000"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    //关闭Connection<br>
&nbsp;&nbsp;&nbsp;&nbsp;        if(conn!=null){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        try{conn.close();}cath(SQLException ex){}<br>
&nbsp;&nbsp;&nbsp;&nbsp;    &nbsp;&nbsp;&nbsp;    }</strong></font><br>
<font color="#ff0000"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    }</strong></font><br>
&nbsp;&nbsp;&nbsp;    }<br>
<br>
&nbsp;&nbsp;&nbsp;    /**<br>
&nbsp;&nbsp;&nbsp;     * 业务代码，由子类实现<br>
&nbsp;&nbsp;&nbsp;     * <br>
&nbsp;&nbsp;&nbsp;     * @param xmlResponse<br>
&nbsp;&nbsp;&nbsp;     * @param webContext<br>
&nbsp;&nbsp;&nbsp;     */<br>
&nbsp;&nbsp;&nbsp;    public abstract void doLogic(Connection conn);<br>
<br>
}<br>
<br>
<br>
<br>
三、用回调类简化代码<br>
<br>
public String login(HttpServletRequest request){<br>
&nbsp;&nbsp;    OperatorService  operatorService = new OperatorService();<br>
&nbsp;&nbsp;    WebContext webContext= request.getSession().getAttribute(&quot;WEB_CONTEXT_KEY&quot;);     <br>
<font color="#ff0000"><strong>&nbsp;&nbsp;&nbsp;&nbsp;    </strong><font color="#000000">new<strong> </strong></font></font>AppCallback(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    public void doLogic(Connection conn){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    //  conn.executeQuery()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    }<br>
&nbsp;&nbsp;&nbsp;    }.execute();<br>
}<br>
<br>
public String logOut(HttpServletRequest request){<br>
&nbsp;&nbsp;    OperatorService  operatorService = new OperatorService();<br>
&nbsp;&nbsp;    WebContext webContext= request.getSession().getAttribute(&quot;WEB_CONTEXT_KEY&quot;);     <br>
<font color="#ff0000"><strong> </strong></font><font color="#ff0000"><strong> <font color="#000000">new</font></strong><font color="#000000"><strong> </strong></font></font>AppCallback(){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    public void doLogic(Connection conn){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     //  conn.executeQuery()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    }<br>
&nbsp;&nbsp;&nbsp;    }.execute();<br>
}<br>
<br>
<br>
当然，通过回调方法，约束并简化了代码，比如这里将异常捕捉逻辑封装起来,对程序编码也是一种规范，可以防止不好程序编写方式，比如忘记关闭Connection,把异常和关闭Connecton都放到回调类里，用户再也不必担心connection 的关闭了<br> <a href="http://hi.baidu.com/luodaijun/blog/item/ce1cccef6acb173eadafd518.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/java%BB%F9%B4%A1">java基础</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/ce1cccef6acb173eadafd518.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-07  21:10</pubDate>
        <category><![CDATA[java基础]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/ce1cccef6acb173eadafd518.html</guid>
</item>

<item>
        <title><![CDATA[Oracle中为什么where rownum &#62; 3 查找不到数据？]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/94d2f124a1a78e358644f9e4.html]]></link>
        <description><![CDATA[
		
		<p>查询表emp中所有数据</p>
<p>select emp_id,rownum from emp</p>
<p><br>
<strong>第一步，查询结果,rownum待定</strong><br>
emp_id rownum<br>
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ?&nbsp;&nbsp;  1<br>
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ?&nbsp;&nbsp;  2<br>
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ?&nbsp;&nbsp;  3<br>
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ?</p>
<p><br>
<strong>第二步，现在假设用rownum &lt; 3的条件来过滤</strong></p>
<p>第一行，rownum初始分配为1，满足rownum &lt;3的条件，然后rownum加1<br>
第二行，rownum现在为2,满足 &lt; 3的条件,然后rownum加1<br>
.....</p>
<p> </p>
<p><font color="#ff0000"><strong>第二步，现在假设用 rownum &gt; 2的条件来过滤</strong></font></p>
<p>现在看第一行，rownum初始分配为1， 不满足rownum&gt;2的条件,rownum不会加1</p>
<p>第二行，rownum还是1，同样不满足&gt;2的条件</p>
<p>....</p>
<p><strong>所以，最后的查询结果，一条数据也没有</strong></p>
<p> </p>
<p><strong>例子，取第3行倒第5行当数据</strong></p>
<p>&nbsp;&nbsp;&nbsp;  select * from <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (select t.*,rwonum rn</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  from emp t<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  where rownum &lt; 5 )<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  where rn &gt; 3</p> <a href="http://hi.baidu.com/luodaijun/blog/item/94d2f124a1a78e358644f9e4.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/94d2f124a1a78e358644f9e4.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-01  17:41</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/94d2f124a1a78e358644f9e4.html</guid>
</item>

<item>
        <title><![CDATA[数据库设计原则与技巧]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/c960282e37a362554ec22637.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537412">download.csdn.net/source/537412</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/c960282e37a362554ec22637.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:37</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/c960282e37a362554ec22637.html</guid>
</item>

<item>
        <title><![CDATA[数据库并发操作]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/5e3a80d606e5672a06088b36.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537422">download.csdn.net/source/537422</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/5e3a80d606e5672a06088b36.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:35</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/5e3a80d606e5672a06088b36.html</guid>
</item>

<item>
        <title><![CDATA[EJB3图文教程之开发Session Bean]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/e464aa6e3f5da8df80cb4a35.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537427">download.csdn.net/source/537427</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/Ejb">Ejb</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/e464aa6e3f5da8df80cb4a35.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:34</pubDate>
        <category><![CDATA[Ejb]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/e464aa6e3f5da8df80cb4a35.html</guid>
</item>

<item>
        <title><![CDATA[EJB3图文教程之开发Message Driven Bean]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/c5423d8780c9cc2fc75cc335.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537429">download.csdn.net/source/537429</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/Ejb">Ejb</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/c5423d8780c9cc2fc75cc335.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:33</pubDate>
        <category><![CDATA[Ejb]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/c5423d8780c9cc2fc75cc335.html</guid>
</item>

<item>
        <title><![CDATA[EJB3图文教程之开发Entity]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/4fe0ff199181cf7fdbb4bd35.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537433">download.csdn.net/source/537433</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/Ejb">Ejb</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/4fe0ff199181cf7fdbb4bd35.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:32</pubDate>
        <category><![CDATA[Ejb]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/4fe0ff199181cf7fdbb4bd35.html</guid>
</item>

<item>
        <title><![CDATA[ireport2.0图文手把手教程]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/4e8434fa39135f1ba9d31134.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537435">download.csdn.net/source/537435</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/4e8434fa39135f1ba9d31134.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:32</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/4e8434fa39135f1ba9d31134.html</guid>
</item>

<item>
        <title><![CDATA[oracle培训课件下载]]></title>
        <link><![CDATA[http://hi.baidu.com/luodaijun/blog/item/b521f103621550723812bb34.html]]></link>
        <description><![CDATA[
		
		下载地址:<a target="_blank" href="http://download.csdn.net/source/537448">download.csdn.net/source/537448</a> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/luodaijun/blog/category/%CA%FD%BE%DD%BF%E2">数据库</a>&nbsp;<a href="http://hi.baidu.com/luodaijun/blog/item/b521f103621550723812bb34.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-13  12:30</pubDate>
        <category><![CDATA[数据库]]></category>
        <author><![CDATA[luodaijun]]></author>
		<guid>http://hi.baidu.com/luodaijun/blog/item/b521f103621550723812bb34.html</guid>
</item>


</channel>
</rss>