﻿<?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>BlogJava-jindw的blog-随笔分类-Java</title><link>http://www.blogjava.net/jindw/category/22726.html</link><description>Java、XML、JavaScript、DHTML、
&lt;a href="http://www.xidea.org/project/jsi/"&gt;JSI&lt;/a&gt;、
&lt;a href="http://www.xidea.org/project/jsa/"&gt;JSA&lt;/a&gt;、
、Codegen
</description><language>zh-cn</language><lastBuildDate>Tue, 11 Mar 2008 13:19:53 GMT</lastBuildDate><pubDate>Tue, 11 Mar 2008 13:19:53 GMT</pubDate><ttl>60</ttl><item><title>Java服务器每次请求创建的对象数</title><link>http://www.blogjava.net/jindw/archive/2008/03/11/185301.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Tue, 11 Mar 2008 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2008/03/11/185301.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/185301.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2008/03/11/185301.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/185301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/185301.html</trackback:ping><description><![CDATA[改写了一下Java基类，添加了一个计数器。<br />
用tomcat测试了一下连续若干次请求时创建的对象个数。<br />
<br />
第【148259】个对象<br />
天哪，服务器启动开始就是14万个对象。<br />
<br />
第【148668】个对象<br />
第【149091】个对象<br />
第【149211】个对象<br />
第【149291】个对象<br />
第【149418】个对象<br />
第【149541】个对象<br />
第【149867】个对象<br />
第【149947】个对象<br />
<br />
回想一下以前人们为丑陋的struts1的单例Action的设计的辩护，真是可笑之极，哈哈哈哈
<img src ="http://www.blogjava.net/jindw/aggbug/185301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2008-03-11 11:35 <a href="http://www.blogjava.net/jindw/archive/2008/03/11/185301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>挺一个中国程序员开发的漂亮的模板引擎：CommonTemplate</title><link>http://www.blogjava.net/jindw/archive/2007/11/29/164118.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Thu, 29 Nov 2007 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/11/29/164118.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/164118.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/11/29/164118.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/164118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/164118.html</trackback:ping><description><![CDATA[我一直都想搞一个<a href="http://hi.baidu.com/jindw/blog/item/70380e17f5b107024a90a798.html">XML的模板引擎</a>，大凡非xml的模板风格，第一感觉就是那么的不爽。<br />
可是CommonTemplate例外。<br />
<br />
CommonTemplate处处为程序员考虑周到的漂亮的语法风格，确实非常诱人。<br />
具体的语法我就不一一列举了，大家可以到他的<a href="http://www.commontemplate.org/">官方网站</a>去翻阅。<br />
<br />
挑几个亮点介绍一下：<br />
<ol>
    <li>
    <h2>for循环的空处理，相信曾经麻烦了不少程序员吧。</h2>
    现在好了，CT支持如下语法：<br />
    <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
    <br />
    Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
    http://www.CodeHighlighter.com/<br />
    <br />
    --><span style="color: #000000;">&nbsp;&nbsp;&nbsp;$for{<img src="http://www.blogjava.net/Images/dot.gif" alt="" />}</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">1</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">2</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">3</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;$forelse</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">colspan</span><span style="color: #0000ff;">="3"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">没有数据</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><br />
    <span style="color: #000000;">&nbsp;&nbsp;&nbsp;$end</span></div>
    <br />
    </li>
    <li>
    <h2>大胆的关键字利用。</h2>
    <br />
    <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
    <br />
    Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
    http://www.CodeHighlighter.com/<br />
    <br />
    --><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$if{users&nbsp;!=&nbsp;null&nbsp;&amp;&amp;&nbsp;users.size&nbsp;&gt;&nbsp;0}<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">table&nbsp;</span><span style="color: #ff0000;">border</span><span style="color: #0000ff;">="1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$for{user&nbsp;:&nbsp;users}<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">${for.index&nbsp;+&nbsp;1}</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">${user.name}</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">${user.coins}</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$end<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$end<br />
    &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></div>
    <br />
    <br />
    大家看这段代码。一般来说，for这种常用关键字是不好用作id的，但是这里作为默认的循环状态对象的id。既解决了块对象存放的问题，又不会引起其他命名的冲突。一个字，妙！！！！<br />
    <br />
    </li>
    <li>
    <h2>其他漂亮的特征：</h2>
    <br />
    注释版语法外套，方便于测试数据填充及可视化编辑。<br />
    单一的语法规则，方便解析与扩展。<br />
    <br />
    等等。。。。<br />
    </li>
</ol>
<br />
<br />
好了，赞叹之余还是给出一点点遗憾：<br />
<br />
boolean 运算有点丑陋。<br />
我个人更期望 js的boolean运算风格，没有必要一碰到boolean 运算就返回true ？ false<br />
我们完全可以返回一个更有意义的值，比如，我更期望这个语句能如我所愿的执行。<br />
&nbsp;<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">${&nbsp;variable||&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">默认值</span><span style="color: #000000;">"</span><span style="color: #000000;">}</span></div>
<br />
当能，如上支持，CT是有的，它的写法是 <br />
&nbsp;<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">${&nbsp;variable | </span><span style="color: #000000;">"</span><span style="color: #000000;">默认值</span><span style="color: #000000;">"</span><span style="color: #000000;">}</span></div>
<br />
但是，我感觉，这个语法就有点复杂了，也不那么直观。<br />
一般来说| 是按位取或，是位运算符，这里这个用法，跳跃的确实有点大，较难接受的。<br />
<img src ="http://www.blogjava.net/jindw/aggbug/164118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-11-29 21:28 <a href="http://www.blogjava.net/jindw/archive/2007/11/29/164118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse正则表达式在编码过程中的运用</title><link>http://www.blogjava.net/jindw/archive/2007/11/10/159598.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Sat, 10 Nov 2007 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/11/10/159598.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/159598.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/11/10/159598.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/159598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/159598.html</trackback:ping><description><![CDATA[刚刚经历的一点小技巧，共享一下。<br />
<br />
1。给代理函数加上空判断<br />
<br />
一个组合模式的运用。代码如下：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Composite&nbsp;impliments&nbsp;IF1,IF2,IF3{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF1&nbsp;if1;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF2&nbsp;if2;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF2&nbsp;if2;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Composite&nbsp;(if1,if2,if3){<br />
&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<br />
eclipse 生成指代方法&gt;&gt;&gt;&gt;<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Composite&nbsp;impliments&nbsp;IF1,IF2,IF3{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF1&nbsp;if1;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF2&nbsp;if2;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF2&nbsp;if2;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Composite&nbsp;(if1,if2,if3){<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;method1(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if1.method1();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.<br />
}</span></div>
<br />
//正则表达式 <br />
// (\w+method\d)(\..*)              if($1!=null){$0}<br />
//&gt;&gt;&gt;<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Composite&nbsp;impliments&nbsp;IF1,IF2,IF3{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF1&nbsp;if1;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF2&nbsp;if2;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IF2&nbsp;if2;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Composite&nbsp;(if1,if2,if3){<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;method1(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(if1</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if1.method1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.<br />
}</span></div>
<br />
//还有一个构造函数里的属性赋值：<br />
// (\w+)        &nbsp;&nbsp;   &nbsp;&nbsp;   this.$1=$1<br />
<br />
结果，略<br />
<br />
触类旁通，更多新的用法待你去发掘^_^<br />
<img src ="http://www.blogjava.net/jindw/aggbug/159598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-11-10 18:17 <a href="http://www.blogjava.net/jindw/archive/2007/11/10/159598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这是hsqldb的bug？还是自己的用法不对。</title><link>http://www.blogjava.net/jindw/archive/2007/10/18/154012.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Thu, 18 Oct 2007 14:31:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/10/18/154012.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/154012.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/10/18/154012.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/154012.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/154012.html</trackback:ping><description><![CDATA[被一个貌似hsqldb bug的问题折磨了好几个小时。<br />
把经过帖出来，大家帮我看看。<br />
<br />
习惯把hql都写成预定义的形式，同时又为了避免过多的hql定义，我的惯用伎俩：通过如下方式定义hql。<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;Message<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">where</span><span style="color: #000000;">&nbsp;packageKey</span><span style="color: #808080;">=</span><span style="color: #000000;">:packageKey<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;(<strong>&nbsp;</strong></span><strong><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span></strong><span style="color: #000000;"><strong>&nbsp;&nbsp;:fileKey</strong>&nbsp;</span><span style="color: #808080;">or</span><span style="color: #000000;">&nbsp;fileKey&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;:fileKey)<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;(<strong> </strong></span><strong><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span></strong><span style="color: #000000;"><strong>&nbsp;:objectKey</strong>&nbsp;</span><span style="color: #808080;">or</span><span style="color: #000000;">&nbsp;objectKey</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;:objectKey)<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;(</span><strong><span style="color: #0000ff;"> null</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span></strong><span style="color: #000000;"><strong>&nbsp;:memberKeys</strong>&nbsp;</span><span style="color: #808080;">or</span><span style="color: #000000;">&nbsp;memberKey&nbsp;</span><span style="color: #808080;">in</span><span style="color: #000000;">&nbsp;(&nbsp;:memberKeys))&nbsp; <br />
</span></div>
<br />
<br />
但是。今天在hqldb上测试时发现，在任何情况下 （null = ?）&nbsp; 都为真！！！<br />
非常奇怪，害我调试了老半天，后来把数据库换成了mysql，ok！！<br />
<br />
非常奇怪啊。<br />
不过，上面的写法（<span><strong><span class="op">null</span></strong><span><strong>&nbsp;=&nbsp;&nbsp;:fileKey</strong></span></span>）也有点怪怪的。
<img src ="http://www.blogjava.net/jindw/aggbug/154012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-10-18 22:31 <a href="http://www.blogjava.net/jindw/archive/2007/10/18/154012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一篇可能是误认子弟的言论</title><link>http://www.blogjava.net/jindw/archive/2007/07/30/133214.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Mon, 30 Jul 2007 00:29:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/07/30/133214.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/133214.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/07/30/133214.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/133214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/133214.html</trackback:ping><description><![CDATA[最近看见一个JavaEye上关于Java基本类型编译优化的帖子。<br>貌似高深莫测，其实疑点重重。吧内容转贴过来，希望在这里找到更合理的解释。<br><fieldset><legend>引用</legend>网上看得一些文章
<p>　int a = 3;
<br>　int b = 3；   </p>
<p>　　编译器先处理int a =
3；首先它会在栈中创建一个变量为a的引用，然后查找有没有字面值为3的地址，没找到，就开辟一个存放3这个字面值的地址，然后将a指向3的地址。接着处
理int b = 3；在创建完b的引用变量后，由于在栈中已经有3这个字面值，便将b直接指向3的地址。这样，就出现了a与b同时均指向3的情况。</p>
<p>    再令a=4；那么，b不会等于4，还是等于3。在编译器内部，遇到a=4；时，它就会重新搜索栈中是否有4的字面值，如果没有，重新开辟地址存放4的值；如果已经有了，则直接将a指向这个地址。因此a值的改变不会影响到b的值</p>
<p>不知道真正的原理是不是那样的？</p>
<p>如果是的话能证明吗？</p>
</fieldset>
<p>这些描述我也看过，很是不解。</p>
<p>如果说这种基本类型也需要用这种指针的风格，还要共享数据，那么后续的操作处理起来不是更麻烦吗？
<br>每次写操作都要查找已有常量。甚至开辟新的空间存储新值。
<br>再说这个指针怎么的也要个32位吧。为什么就不能直接吧值放进去，硬是要通过指针跳来跳去的，有意义吗？
<br>这优化了吗？</p>
<p><strong>反正在我看来，这是不可能的。</strong></p>
<p>希望有高手出来澄清一下，给个合理的解释。</p>
<p>如果是对的，那也应该给出有点说服力的证据。
<br>如果是错的，那么建议大家吧这篇文章的源头揪出来，这个确实误人不浅。</p>
<p>不过java对 String 这类不可变对象的处理，编译器确实有类似优化，不过也只是编译期。
<br>这种系统类库受到点编译器的特别关注倒是很合理的。</p>
<br><br>  <img src ="http://www.blogjava.net/jindw/aggbug/133214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-07-30 08:29 <a href="http://www.blogjava.net/jindw/archive/2007/07/30/133214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 代码生成工具示例工程</title><link>http://www.blogjava.net/jindw/archive/2007/07/06/128585.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Fri, 06 Jul 2007 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/07/06/128585.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/128585.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/07/06/128585.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/128585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/128585.html</trackback:ping><description><![CDATA[<p>大约两年前私下编写一个wiki时使用的代码生成工具，最近想继续这个wiki项目（<a href="http://sourceforge.net/projects/txdoc" target="blank">http://sourceforge.net/projects/txdoc</a>），也顺便吧这个代码生成工具整理出来。</p>
<p>PPT见：<a href="http://www.blogjava.net/jindw/archive/2007/06/30/127195.html">http://www.blogjava.net/jindw/archive/2007/06/30/127195.html</a></p>
<p>eclipse项目，文件太大，SF文件发布系统最近问题多多，只好分成三分上传在javaeye blog：<a href="http://jindw.javaeye.com/blog/98436">http://jindw.javaeye.com/blog/98436</a></p>
<p>其中，代码生成工具及一些基础类库在web/WEB-INF/lib/xdoclet-xidea-plus.jar文件中（附源码）</p>
<p>&#160;</p>
<br>
<div style="border: medium dotted #2000ff;" id="" class="quote_div">目录结构<br>&nbsp;&nbsp;&nbsp; src/main：&nbsp;&nbsp; 源文件<br>&nbsp;&nbsp;&nbsp; src/gen:&nbsp;&nbsp;&nbsp;&nbsp; 生成的源文件及配置文件<br>&nbsp;&nbsp;&nbsp; src/test:&nbsp;&nbsp;&nbsp; 测试类<br>&nbsp;&nbsp;&nbsp; build:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant 脚本(build.xml)、ant配置、构建过程的临时目录（temp）<br>&nbsp;&nbsp;&nbsp; web:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; web根目录<br>&nbsp;&nbsp;&nbsp; lib：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编译器附加类库（如ant任务需要的lib）<br>&nbsp;&nbsp;&nbsp; doc:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文档目录<br>&nbsp;&nbsp;&nbsp; doc/xdoclet: xdoclet参考文档<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>一.创建持久类：<br>&nbsp; 1.改类为一个有诺干属性的简单java类<br>&nbsp; 2.为持久类打上hibernate标记：<br>&nbsp;&nbsp;&nbsp;&nbsp; 必要标记：hibernate.class(指定该类为持久类，无必选属性，可选属性参考xdoclet文档)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate.id (指定持久类主键，必选属性generator-class，指定主键生成算法，常用算法有uuid.hex、hilo、assigned....)<br>&nbsp;&nbsp;&nbsp;&nbsp; 常用标记：hibernate.property(指定持久属性，无必选属性)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate.cache(预定义查询，必选属性 name，query)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate.one-to-many,hibernate.many-to-one等，指定对象关系，比较复杂，建议先看hibernate官方文档、xdoclet文档<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; 3.打开项目下build/build.xml、运行hibernate任务，该任务将生成hibernate映射文件、hibernate dao实现、hibernate的spring配置，及dao配置。<br>&nbsp;&nbsp;&nbsp; 其中hibernateDao实现常用DAO方法，并定义以后将使用的常量：如预定义查询名、预定义查询参数名、集合名，等等。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp; 4.持久类的路径一般为:src/main/{package}/po/{TableName}.java ,生成的DAO路径为src/main/{package}/dao/{TableName}Dao.java<br>&nbsp; <br>二.创建Spring服务实现：<br>&nbsp; 1.Spring服务实现无任何接口约束，普通java对象即可。<br>&nbsp; 2.将需要使用的hibernate Dao 声明为该服务类的属性（spring.property标记）。<br>&nbsp; 3.为服务类打上spring标记：<br>&nbsp;&nbsp;&nbsp; 必要标记：spring.bean(parent:对于所有需要spring事务支持的javabean，必须声明parent属性值为"transactionProxy";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 生成工具将根据类名为spring bean自动生成默认 id，)<br>&nbsp;&nbsp;&nbsp; 常用标记：spring.property(spring 属性)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spring.transaction(对于parent=transactionProxy的bean，需要为需要声明是事务支持的方法声明事务属性，具体请参考xdoclet文档)<br>&nbsp; 4.打开项目下build/build.xml、运行spring任务，该任务将生成spring配置文件。<br>&nbsp; <br>三.创建XWork Action,一般为*/action/*.java<br>&nbsp; 1.Action需要实现com.opensymphony.xwork.Action，如果我们需要xwork的国际化支持，继承ActionSupport基类，必然需要实现TextProvider接口。<br>&nbsp; 2.为Action打上xwork标记：<br>&nbsp;&nbsp;&nbsp; 必要标记：xwork.package（必要属性有name），<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xwork.action(必要属性name，表示某方法为Action方法，将映射到一个具体的url地址)，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xwork.result(必要属性name,该标记定义在定义了xwork.action的地方，可定义多个，表示该Action的结果集)<br>&nbsp;&nbsp;&nbsp; 常用属性: xwork.spring-ref （属性的set方法上，其值将从spring context中获取）<br>&nbsp;&nbsp;&nbsp; <br>&nbsp; 3.为Action制作结果集页面：<br>&nbsp;&nbsp;&nbsp; 若未在 xwork.result标记中定义value属性，其值未ActionName+"-"+resultName，若有大写字符，将用"-"隔开，并转小写;<br>&nbsp;&nbsp;&nbsp; value值即未页面地址。可以为jsp，velocity，xsl等等。<br>&nbsp; <br>&nbsp; 4.打开项目下build/build.xml、运行xwork任务，该任务将生成xwork配置文件。<br>&nbsp; <br>&nbsp; <br><br>&nbsp; <br>  </div><img src ="http://www.blogjava.net/jindw/aggbug/128585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-07-06 14:37 <a href="http://www.blogjava.net/jindw/archive/2007/07/06/128585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布一个有点古老的代码生成工具</title><link>http://www.blogjava.net/jindw/archive/2007/06/30/127195.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Sat, 30 Jun 2007 00:44:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/06/30/127195.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/127195.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/06/30/127195.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/127195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/127195.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="border-collapse: collapse; color: #000000; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<p>已经有一年多没做java这块了，今天翻出这个一年前写的代码生成工具，准备开放出来，或许对某些人还有点用处。</p>
<p>这个代码生成器是基于xdoclet2的改进版。
<br>&nbsp; 所做工作：
<br>&nbsp; * 生成Hibernate 映射文件及相应得spring的配置文件。
<br>&nbsp; * 生成Hibernate DAO 文件及命名查询名称常量（新）。
<br>&nbsp; * 生成Spring配置文件（支持事务申明）。
<br>&nbsp; * 生成xwork配置文件（增加多包及spring属性支持）。
<br>&nbsp; * 验证资源冗余及缺失。</p>
<p>先吧PPT放出来，如果有人（包括我自己）能用上再吧代码整理一下，放出来。</p>
<br>
<p>ppt下载：<br><span class="Apple-style-span" style="border-collapse: collapse; color: #000000; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><a  href="http://www.blogjava.net/Files/jindw/codegen.rar">http://www.blogjava.net/Files/jindw/codegen.rar</a></span></p>
</span><img src ="http://www.blogjava.net/jindw/aggbug/127195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-06-30 08:44 <a href="http://www.blogjava.net/jindw/archive/2007/06/30/127195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中国象棋的webstart小程序</title><link>http://www.blogjava.net/jindw/archive/2007/06/14/124252.html</link><dc:creator>金大为</dc:creator><author>金大为</author><pubDate>Thu, 14 Jun 2007 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/jindw/archive/2007/06/14/124252.html</guid><wfw:comment>http://www.blogjava.net/jindw/comments/124252.html</wfw:comment><comments>http://www.blogjava.net/jindw/archive/2007/06/14/124252.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jindw/comments/commentRss/124252.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jindw/services/trackbacks/124252.html</trackback:ping><description><![CDATA[<p>刚发布JSA的webstart版，顺便吧这个古董级别的小程序也发布一下。
<br>仅供那些和我一样棋术平平的无聊人士打发时间。</p>
<p>高手就不必了：）
<br>当能，如果是想找个地方出出气，也可以，呵呵。</p>
<br>
<p><a  href="http://www.xidea.org/webstart/chess.jnlp" target="blank">http://www.xidea.org/webstart/chess.jnlp</a></p>
<br>
<p><br></p>
<p>没有棋谱，所以，开局的棋力很差。中局还行。</p><img src ="http://www.blogjava.net/jindw/aggbug/124252.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jindw/" target="_blank">金大为</a> 2007-06-14 10:51 <a href="http://www.blogjava.net/jindw/archive/2007/06/14/124252.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>