隨筆-57  評(píng)論-129  文章-0  trackbacks-0
           
          改寫了一下Java基類,添加了一個(gè)計(jì)數(shù)器。
          用tomcat測(cè)試了一下連續(xù)若干次請(qǐng)求時(shí)創(chuàng)建的對(duì)象個(gè)數(shù)。

          第【148259】個(gè)對(duì)象
          天哪,服務(wù)器啟動(dòng)開始就是14萬個(gè)對(duì)象。

          第【148668】個(gè)對(duì)象
          第【149091】個(gè)對(duì)象
          第【149211】個(gè)對(duì)象
          第【149291】個(gè)對(duì)象
          第【149418】個(gè)對(duì)象
          第【149541】個(gè)對(duì)象
          第【149867】個(gè)對(duì)象
          第【149947】個(gè)對(duì)象

          回想一下以前人們?yōu)槌舐膕truts1的單例Action的設(shè)計(jì)的辯護(hù),真是可笑之極,哈哈哈哈
          posted @ 2008-03-11 11:35 金大為 閱讀(937) | 評(píng)論 (4)編輯 收藏

          無意間看到的一片趣文:

          希望有一天能看到文言文版的國(guó)外圖書翻譯,真的比較有趣,還有,不懂的時(shí)候,也可以順帶看看英文原文,也好順便學(xué)學(xué)英語,呵呵。

          引:

          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."

          師曰:『惑中取錯(cuò)之日,可出山矣。』

          …..

          全文見:

          http://livecn.huasing.org/tao_of_programming.htm
          posted @ 2007-12-01 15:27 金大為 閱讀(267) | 評(píng)論 (0)編輯 收藏
          我一直都想搞一個(gè)XML的模板引擎,大凡非xml的模板風(fēng)格,第一感覺就是那么的不爽。
          可是CommonTemplate例外。

          CommonTemplate處處為程序員考慮周到的漂亮的語法風(fēng)格,確實(shí)非常誘人。
          具體的語法我就不一一列舉了,大家可以到他的官方網(wǎng)站去翻閱。

          挑幾個(gè)亮點(diǎn)介紹一下:
          1. for循環(huán)的空處理,相信曾經(jīng)麻煩了不少程序員吧。

            現(xiàn)在好了,CT支持如下語法:
               $for{}
               <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
               </tr>
               $forelse
               <tr>
                  <td colspan="3">沒有數(shù)據(jù)</td>
               </tr>
               $end

          2. 大膽的關(guān)鍵字利用。


            <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這種常用關(guān)鍵字是不好用作id的,但是這里作為默認(rèn)的循環(huán)狀態(tài)對(duì)象的id。既解決了塊對(duì)象存放的問題,又不會(huì)引起其他命名的沖突。一個(gè)字,妙!!!!

          3. 其他漂亮的特征:


            注釋版語法外套,方便于測(cè)試數(shù)據(jù)填充及可視化編輯。
            單一的語法規(guī)則,方便解析與擴(kuò)展。

            等等。。。。


          好了,贊嘆之余還是給出一點(diǎn)點(diǎn)遺憾:

          boolean 運(yùn)算有點(diǎn)丑陋。
          我個(gè)人更期望 js的boolean運(yùn)算風(fēng)格,沒有必要一碰到boolean 運(yùn)算就返回true ? false
          我們完全可以返回一個(gè)更有意義的值,比如,我更期望這個(gè)語句能如我所愿的執(zhí)行。
           
          ${ variable|| "默認(rèn)值"}

          當(dāng)能,如上支持,CT是有的,它的寫法是
           
          ${ variable | "默認(rèn)值"}

          但是,我感覺,這個(gè)語法就有點(diǎn)復(fù)雜了,也不那么直觀。
          一般來說| 是按位取或,是位運(yùn)算符,這里這個(gè)用法,跳躍的確實(shí)有點(diǎn)大,較難接受的。
          posted @ 2007-11-29 21:28 金大為 閱讀(1440) | 評(píng)論 (5)編輯 收藏
          剛剛經(jīng)歷的一點(diǎn)小技巧,共享一下。

          1。給代理函數(shù)加上空判斷

          一個(gè)組合模式的運(yùn)用。代碼如下:
          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();
             }
             .
          }

          //正則表達(dá)式
          // (\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();
                }
             }
             .
          }

          //還有一個(gè)構(gòu)造函數(shù)里的屬性賦值:
          // (\w+)       this.$1=$1

          結(jié)果,略

          觸類旁通,更多新的用法待你去發(fā)掘^_^
          posted @ 2007-11-10 18:17 金大為 閱讀(967) | 評(píng)論 (3)編輯 收藏
          被一個(gè)貌似hsqldb bug的問題折磨了好幾個(gè)小時(shí)。
          把經(jīng)過帖出來,大家?guī)臀铱纯础?br />
          習(xí)慣把hql都寫成預(yù)定義的形式,同時(shí)又為了避免過多的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上測(cè)試時(shí)發(fā)現(xiàn),在任何情況下 (null = ?)  都為真!!!
          非常奇怪,害我調(diào)試了老半天,后來把數(shù)據(jù)庫(kù)換成了mysql,ok!!

          非常奇怪啊。
          不過,上面的寫法(null =  :fileKey)也有點(diǎn)怪怪的。
          posted @ 2007-10-18 22:31 金大為 閱讀(802) | 評(píng)論 (2)編輯 收藏
               摘要: 剛剛學(xué)習(xí)了一下網(wǎng)頁(yè)動(dòng)畫中上的緩動(dòng)效果,分享一下學(xué)習(xí)心得。 緩動(dòng)曲線的概念: 緩動(dòng)曲線是一個(gè)0為起點(diǎn)的連續(xù)函數(shù)曲線,x軸表示時(shí)間變化,y軸表示位移變化。曲線的斜率反映出運(yùn)動(dòng)的數(shù)度。 緩動(dòng)效果在Flash動(dòng)畫中比較常見,用于模擬一些現(xiàn)實(shí)中常見的運(yùn)動(dòng)軌跡,或者制造一些超絢的效果。 而且新版本的Flash中,內(nèi)置了一些常用的緩動(dòng)曲線函數(shù)。 可惜,Flash的這些曲線函數(shù)不是開源的...  閱讀全文
          posted @ 2007-10-14 21:14 金大為 閱讀(1238) | 評(píng)論 (0)編輯 收藏
          目前為止,JSA依然是最強(qiáng)大的腳本壓縮工具。
          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 金大為 閱讀(829) | 評(píng)論 (2)編輯 收藏

          JSA這個(gè)壓縮工具,是java編寫的,需要安裝java運(yùn)行環(huán)境。
          這多少給一些非jav程序員帶來點(diǎn)不便。

          現(xiàn)在我們發(fā)布servlet在線壓縮版本。無需安裝,在線壓縮,給非Java用戶一個(gè)更加便捷的使用方式。

          項(xiàng)目主頁(yè):http://www.xidea.org/project/jsa/
          現(xiàn)在的在線壓縮服務(wù)器由Seaprince提供。
          歡迎更多有空閑服務(wù)器資源的朋友安裝JSA在線服務(wù),我將在jsa項(xiàng)目主頁(yè)提供鏈接,方便大家使用。

          仍外,為了避免服務(wù)器資源被惡意濫用,我們默認(rèn)啟用了圖片驗(yàn)證,服務(wù)頻率限制等保護(hù)設(shè)置。
          給用戶帶來些不便,敬請(qǐng)諒解。


          posted @ 2007-08-22 16:28 金大為 閱讀(1037) | 評(píng)論 (5)編輯 收藏

          今天無意間打開了一個(gè)CSDN上的個(gè)人blog,發(fā)現(xiàn)窗口無法拖動(dòng),F(xiàn)irefox的標(biāo)簽頁(yè)也無法切換。

          查看代碼:

          <script type="text/javascript">Include("Csdn.Blog.UserOnline");</script>  
          <script type="text/javascript">Include("Csdn.Blog.ShowmeDataDeal");</script>

           

          看到Include函數(shù),馬上可以想到,它很可能使用了動(dòng)態(tài)包含腳本的設(shè)計(jì)。
          //http://blog.csdn.net/scripts/jsframework.js  
          window.Include=function(namespace, path)  
          {  
             ..  
          };  
          S.load
          =function(namespace, path)  
          {  
               
          }  

          仔細(xì)閱讀這兩個(gè)函數(shù)代碼,發(fā)現(xiàn)它是通過XMLHttpRequest對(duì)象同步裝載腳本資源的(對(duì)IE,它采用userdata緩存優(yōu)化)。而這必將導(dǎo)致一種完全阻塞問題(這種問題我在仍外一篇blog上描述過:http://jindw.javaeye.com/blog/66702)。

          說到阻塞問題,我想大家可能會(huì)以為只是一種下載延遲,其實(shí)不然。
          下載延遲不是完全阻塞,瀏覽器依然可以響應(yīng)用戶事件。而同步XHR請(qǐng)求阻塞是一種完全的阻塞。
          瀏覽器在腳本運(yùn)行與事件響應(yīng)共用同一個(gè)線程(我的猜測(cè))。任何腳本尚在運(yùn)行時(shí)(包括被同步XHR請(qǐng)求阻塞的時(shí)間),瀏覽器將無法響應(yīng)任何用戶事件(無法拖放窗口、切換標(biāo)簽、重畫頁(yè)面等等,就像程序死了一樣)。與普通的下載延遲造成的阻塞,感覺明顯不同。

          我對(duì)這個(gè)問題可以說深有體會(huì),起初,在構(gòu)建JSI1的項(xiàng)目站點(diǎn)時(shí)。因?yàn)榫W(wǎng)站放在sourceforge上,訪問數(shù)度不是一般的慢,幾個(gè)簡(jiǎn)單的例子,瀏覽器就要完全阻塞好幾妙鐘。正是厭惡這種完全阻塞的現(xiàn)象,我才開發(fā)了JSI2。

          事實(shí)上,現(xiàn)在的一堆堆js框架中,采用XHR同步裝載資源的有不少,JSVM、dojo、a9engine、hax的pies;其中JSVM, dojo都提供打包工具,將可能裝載的腳本打包到啟動(dòng)文件中,所以也可以避免XHR同步請(qǐng)求。不過這樣也就失去了部分動(dòng)態(tài)裝載的意義了。

          總之,我非常討厭這種完全阻塞現(xiàn)象,認(rèn)為這個(gè)嚴(yán)重影響用戶體驗(yàn)。
          可能也有些主觀因素把,希望聽聽大家的看法。


          posted @ 2007-08-12 22:22 金大為 閱讀(794) | 評(píng)論 (0)編輯 收藏
          最近看見一個(gè)JavaEye上關(guān)于Java基本類型編譯優(yōu)化的帖子。
          貌似高深莫測(cè),其實(shí)疑點(diǎn)重重。吧內(nèi)容轉(zhuǎn)貼過來,希望在這里找到更合理的解釋。
          引用網(wǎng)上看得一些文章

           int a = 3;
           int b = 3;

            編譯器先處理int a = 3;首先它會(huì)在棧中創(chuàng)建一個(gè)變量為a的引用,然后查找有沒有字面值為3的地址,沒找到,就開辟一個(gè)存放3這個(gè)字面值的地址,然后將a指向3的地址。接著處 理int b = 3;在創(chuàng)建完b的引用變量后,由于在棧中已經(jīng)有3這個(gè)字面值,便將b直接指向3的地址。這樣,就出現(xiàn)了a與b同時(shí)均指向3的情況。

          再令a=4;那么,b不會(huì)等于4,還是等于3。在編譯器內(nèi)部,遇到a=4;時(shí),它就會(huì)重新搜索棧中是否有4的字面值,如果沒有,重新開辟地址存放4的值;如果已經(jīng)有了,則直接將a指向這個(gè)地址。因此a值的改變不會(huì)影響到b的值

          不知道真正的原理是不是那樣的?

          如果是的話能證明嗎?

          這些描述我也看過,很是不解。

          如果說這種基本類型也需要用這種指針的風(fēng)格,還要共享數(shù)據(jù),那么后續(xù)的操作處理起來不是更麻煩嗎?
          每次寫操作都要查找已有常量。甚至開辟新的空間存儲(chǔ)新值。
          再說這個(gè)指針怎么的也要個(gè)32位吧。為什么就不能直接吧值放進(jìn)去,硬是要通過指針跳來跳去的,有意義嗎?
          這優(yōu)化了嗎?

          反正在我看來,這是不可能的。

          希望有高手出來澄清一下,給個(gè)合理的解釋。

          如果是對(duì)的,那也應(yīng)該給出有點(diǎn)說服力的證據(jù)。
          如果是錯(cuò)的,那么建議大家吧這篇文章的源頭揪出來,這個(gè)確實(shí)誤人不淺。

          不過java對(duì) String 這類不可變對(duì)象的處理,編譯器確實(shí)有類似優(yōu)化,不過也只是編譯期。
          這種系統(tǒng)類庫(kù)受到點(diǎn)編譯器的特別關(guān)注倒是很合理的。



          posted @ 2007-07-30 08:29 金大為 閱讀(1177) | 評(píng)論 (12)編輯 收藏
          僅列出標(biāo)題
          共6頁(yè): 1 2 3 4 5 6 下一頁(yè) 
          主站蜘蛛池模板: 嵊州市| 阳城县| 石棉县| 尼勒克县| 河北省| 同德县| 朝阳县| 永胜县| 青阳县| 聂荣县| 昆明市| 龙门县| 海丰县| 屯昌县| 洪雅县| 南木林县| 克拉玛依市| 固镇县| 胶州市| 阜南县| 探索| 错那县| 金溪县| 台北市| 金堂县| 宁国市| 中西区| 乐陵市| 聂荣县| 上虞市| 五指山市| 塔城市| 嫩江县| 古丈县| 岳普湖县| 黑山县| 桃源县| 泸溪县| 宜良县| 昭通市| 双柏县|