
		 
		2008年3月11日		  
	
 
	
			
			改写了一下Java基类,添加了一个计数器。
用tomcat测试了一下连续若干次请求时创建的对象个数。
第【148259】个对象
天哪,服务器启动开始就是14万个对象。
第【148668】个对象
第【149091】个对象
第【149211】个对象
第【149291】个对象
第【149418】个对象
第【149541】个对象
第【149867】个对象
第【149947】个对象
回想一下以前人们为丑陋的struts1的单例Action的设计的辩护,真是可笑之极,哈哈哈哈
			
posted @ 
2008-03-11 11:35 金大为 阅读(954) | 
评论 (4) | 
编辑 收藏 
	
		
	
		
	
		
		 
		2007年11月29日		  
	
 
	
			
			我一直都想搞一个
XML的模板引擎,大凡非xml的模板风格,第一感觉就是那么的不爽。
可是CommonTemplate例外。
CommonTemplate处处为程序员考虑周到的漂亮的语法风格,确实非常诱人。
具体的语法我就不一一列举了,大家可以到他的
官方网站去翻阅。
挑几个亮点介绍一下:
    - 
    for循环的空处理,相信曾经麻烦了不少程序员吧。现在好了,CT支持如下语法:
    $for{ }
       <tr>
          <td>1</td>
          <td>2</td>
          <td>3</td>
       </tr>
       $forelse
       <tr>
          <td colspan="3">没有数据</td>
       </tr>
       $end }
       <tr>
          <td>1</td>
          <td>2</td>
          <td>3</td>
       </tr>
       $forelse
       <tr>
          <td colspan="3">没有数据</td>
       </tr>
       $end
 
 
- 
    大胆的关键字利用。
 <html>
 <body>
 $if{users != null && users.size > 0}
 <table border="1">
 $for{user : users}
 <tr>
 <td>${for.index + 1}</td>
 <td>${user.name}</td>
 <td>${user.coins}</td>
 </tr>
 $end
 </table>
 $end
 </body>
 </html>
 
 
 大家看这段代码。一般来说,for这种常用关键字是不好用作id的,但是这里作为默认的循环状态对象的id。既解决了块对象存放的问题,又不会引起其他命名的冲突。一个字,妙!!!!
 
 
- 
    其他漂亮的特征:
 注释版语法外套,方便于测试数据填充及可视化编辑。
 单一的语法规则,方便解析与扩展。
 
 等等。。。。
 
好了,赞叹之余还是给出一点点遗憾:
boolean 运算有点丑陋。
我个人更期望 js的boolean运算风格,没有必要一碰到boolean 运算就返回true ? false
我们完全可以返回一个更有意义的值,比如,我更期望这个语句能如我所愿的执行。
 
${ variable|| "默认值"}
当能,如上支持,CT是有的,它的写法是 
 
${ variable | "默认值"}
但是,我感觉,这个语法就有点复杂了,也不那么直观。
一般来说| 是按位取或,是位运算符,这里这个用法,跳跃的确实有点大,较难接受的。
			
posted @ 
2007-11-29 21:28 金大为 阅读(1478) | 
评论 (5) | 
编辑 收藏 
	
		
	
		
		 
		2007年11月10日		  
	
 
	
			
			刚刚经历的一点小技巧,共享一下。
1。给代理函数加上空判断
一个组合模式的运用。代码如下:
class Composite impliments IF1,IF2,IF3{
   private IF1 if1;
   private IF2 if2;
   private IF2 if2;
   public Composite (if1,if2,if3){
   }
}
eclipse 生成指代方法>>>>
class Composite impliments IF1,IF2,IF3{
   private IF1 if1;
   private IF2 if2;
   private IF2 if2;
   public Composite (if1,if2,if3){
   }
   public void method1(){
      if1.method1();
   }
   

 .
.
} 
//正则表达式 
// (\w+method\d)(\..*)              if($1!=null){$0}
//>>>
class Composite impliments IF1,IF2,IF3{
   private IF1 if1;
   private IF2 if2;
   private IF2 if2;
   public Composite (if1,if2,if3){
   }
   public void method1(){
      if(if1= null){
         if1.method1();
      }
   }
   

 .
.
} 
//还有一个构造函数里的属性赋值:
// (\w+)                  this.$1=$1
结果,略
触类旁通,更多新的用法待你去发掘^_^
			
posted @ 
2007-11-10 18:17 金大为 阅读(986) | 
评论 (3) | 
编辑 收藏 
	
		
	
		
		 
		2007年10月18日		  
	
 
	
			
			被一个貌似hsqldb bug的问题折磨了好几个小时。
把经过帖出来,大家帮我看看。
习惯把hql都写成预定义的形式,同时又为了避免过多的hql定义,我的惯用伎俩:通过如下方式定义hql。
 from Message
  where packageKey=:packageKey
   and ( null =  :fileKey or fileKey = :fileKey)
   and ( null = :objectKey or objectKey= :objectKey)
   and ( null = :memberKeys or memberKey in ( :memberKeys))  
但是。今天在hqldb上测试时发现,在任何情况下 (null = ?)  都为真!!!
非常奇怪,害我调试了老半天,后来把数据库换成了mysql,ok!!
非常奇怪啊。
不过,上面的写法(
null =  :fileKey)也有点怪怪的。
			
posted @ 
2007-10-18 22:31 金大为 阅读(821) | 
评论 (2) | 
编辑 收藏 
	
		
	
		
		 
		2007年10月14日		  
	
 
	
			
			     摘要: 刚刚学习了一下网页动画中上的缓动效果,分享一下学习心得。
缓动曲线的概念:
缓动曲线是一个0为起点的连续函数曲线,x轴表示时间变化,y轴表示位移变化。曲线的斜率反映出运动的数度。
缓动效果在Flash动画中比较常见,用于模拟一些现实中常见的运动轨迹,或者制造一些超绚的效果。
而且新版本的Flash中,内置了一些常用的缓动曲线函数。
可惜,Flash的这些曲线函数不是开源的...  
阅读全文
			posted @ 
2007-10-14 21:14 金大为 阅读(1257) | 
评论 (0) | 
编辑 收藏 
	
		
	
		
		 
		2007年9月29日		  
	
 
	
			
			目前为止,JSA依然是最强大的脚本压缩工具。
As i know,JSA is the most powerfull compressor for javascript.
for jquery1.2.1 (80,469 byte;)
    
        
            | Compressor | beforegzip | aftergzip | 
        
            | source: | 80,469; | 24,975; | 
        
            | jquery default: | 46,437; | 14,641; | 
        
            | yuicomressor | 46,210; | 14,452; | 
        
            | JSA(without eval) | 40,704; | 13,604; | 
        
            | JSA(with eval): 
 | 26,157; 
 | 13,549; | 
    
   
JSA(webstart): 
http://www.xidea.org/webstart/JSA.jnlp
			posted @ 
2007-09-29 14:04 金大为 阅读(847) | 
评论 (2) | 
编辑 收藏 
	
		
	
		
	
		
		 
		2007年8月12日		  
	
 
	
			
			今天无意间打开了一个CSDN上的个人blog,发现窗口无法拖动,Firefox的标签页也无法切换。
查看代码:
<script type="text/javascript">Include("Csdn.Blog.UserOnline");</script>  
<script type="text/javascript">Include("Csdn.Blog.ShowmeDataDeal");</script>
 
看到Include函数,马上可以想到,它很可能使用了动态包含脚本的设计。
//http://blog.csdn.net/scripts/jsframework.js  
window.Include=function(namespace, path)  
{  
    ..
..  
};  
S.load=function(namespace, path)  
{  
   
 
  
}   
仔细阅读这两个函数代码,发现它是通过XMLHttpRequest对象同步装载脚本资源的(对IE,它采用userdata缓存优化)。而这必将导致一种完全阻塞问题(这种问题我在仍外一篇blog上描述过:http://jindw.javaeye.com/blog/66702)。
说到阻塞问题,我想大家可能会以为只是一种下载延迟,其实不然。
下载延迟不是完全阻塞,浏览器依然可以响应用户事件。而同步XHR请求阻塞是一种完全的阻塞。
浏览器在脚本运行与事件响应共用同一个线程(我的猜测)。任何脚本尚在运行时(包括被同步XHR请求阻塞的时间),浏览器将无法响应任何用户事件(无法拖放窗口、切换标签、重画页面等等,就像程序死了一样)。与普通的下载延迟造成的阻塞,感觉明显不同。
我对这个问题可以说深有体会,起初,在构建JSI1的项目站点时。因为网站放在sourceforge上,访问数度不是一般的慢,几个简单的例子,浏览器就要完全阻塞好几妙钟。正是厌恶这种完全阻塞的现象,我才开发了JSI2。
事实上,现在的一堆堆js框架中,采用XHR同步装载资源的有不少,JSVM、dojo、a9engine、hax的pies;其中JSVM,
dojo都提供打包工具,将可能装载的脚本打包到启动文件中,所以也可以避免XHR同步请求。不过这样也就失去了部分动态装载的意义了。
总之,我非常讨厌这种完全阻塞现象,认为这个严重影响用户体验。
可能也有些主观因素把,希望听听大家的看法。
 
			posted @ 
2007-08-12 22:22 金大为 阅读(810) | 
评论 (0) | 
编辑 收藏 
	
		
	
		
		 
		2007年7月30日		  
	
 
	
			
			最近看见一个JavaEye上关于Java基本类型编译优化的帖子。
貌似高深莫测,其实疑点重重。吧内容转贴过来,希望在这里找到更合理的解释。
这些描述我也看过,很是不解。
如果说这种基本类型也需要用这种指针的风格,还要共享数据,那么后续的操作处理起来不是更麻烦吗?
每次写操作都要查找已有常量。甚至开辟新的空间存储新值。
再说这个指针怎么的也要个32位吧。为什么就不能直接吧值放进去,硬是要通过指针跳来跳去的,有意义吗?
这优化了吗?
反正在我看来,这是不可能的。
希望有高手出来澄清一下,给个合理的解释。
如果是对的,那也应该给出有点说服力的证据。
如果是错的,那么建议大家吧这篇文章的源头揪出来,这个确实误人不浅。
不过java对 String 这类不可变对象的处理,编译器确实有类似优化,不过也只是编译期。
这种系统类库受到点编译器的特别关注倒是很合理的。
  
			posted @ 
2007-07-30 08:29 金大为 阅读(1191) | 
评论 (12) | 
编辑 收藏