
2007年8月12日
改寫了一下Java基類,添加了一個計數器。
用tomcat測試了一下連續若干次請求時創建的對象個數。
第【148259】個對象
天哪,服務器啟動開始就是14萬個對象。
第【148668】個對象
第【149091】個對象
第【149211】個對象
第【149291】個對象
第【149418】個對象
第【149541】個對象
第【149867】個對象
第【149947】個對象
回想一下以前人們為丑陋的struts1的單例Action的設計的辯護,真是可笑之極,哈哈哈哈
posted @
2008-03-11 11:35 金大為 閱讀(932) |
評論 (4) |
編輯 收藏
無意間看到的一片趣文:
希望有一天能看到文言文版的國外圖書翻譯,真的比較有趣,還有,不懂的時候,也可以順帶看看英文原文,也好順便學學英語,呵呵。
引:
Thus spake the master programmer:
"When you have learned to snatch the error code from the trap frame, it will be time for you to leave."
師曰:『惑中取錯之日,可出山矣。』
…..
全文見:
http://livecn.huasing.org/tao_of_programming.htm
posted @
2007-12-01 15:27 金大為 閱讀(259) |
評論 (0) |
編輯 收藏
我一直都想搞一個
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
-
大膽的關鍵字利用。
<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 金大為 閱讀(1429) |
評論 (5) |
編輯 收藏
剛剛經歷的一點小技巧,共享一下。
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 金大為 閱讀(958) |
評論 (3) |
編輯 收藏
被一個貌似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 金大為 閱讀(794) |
評論 (2) |
編輯 收藏
摘要: 剛剛學習了一下網頁動畫中上的緩動效果,分享一下學習心得。
緩動曲線的概念:
緩動曲線是一個0為起點的連續函數曲線,x軸表示時間變化,y軸表示位移變化。曲線的斜率反映出運動的數度。
緩動效果在Flash動畫中比較常見,用于模擬一些現實中常見的運動軌跡,或者制造一些超絢的效果。
而且新版本的Flash中,內置了一些常用的緩動曲線函數。
可惜,Flash的這些曲線函數不是開源的...
閱讀全文
posted @
2007-10-14 21:14 金大為 閱讀(1227) |
評論 (0) |
編輯 收藏
目前為止,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 金大為 閱讀(824) |
評論 (2) |
編輯 收藏
JSA這個壓縮工具,是java編寫的,需要安裝java運行環境。
這多少給一些非jav程序員帶來點不便。
現在我們發布servlet在線壓縮版本。無需安裝,在線壓縮,給非Java用戶一個更加便捷的使用方式。
項目主頁:http://www.xidea.org/project/jsa/
現在的在線壓縮服務器由Seaprince提供。
歡迎更多有空閑服務器資源的朋友安裝JSA在線服務,我將在jsa項目主頁提供鏈接,方便大家使用。
仍外,為了避免服務器資源被惡意濫用,我們默認啟用了圖片驗證,服務頻率限制等保護設置。
給用戶帶來些不便,敬請諒解。
posted @
2007-08-22 16:28 金大為 閱讀(1015) |
評論 (5) |
編輯 收藏
今天無意間打開了一個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 金大為 閱讀(781) |
評論 (0) |
編輯 收藏