Java靜態代理和動態代理
首先java代理分為靜態代理和動態代理,動態代理中java提供的動態代理需要動態代理一個inteface,如果沒有inteface則需要使用實現cglib提供的接口。
下面例子只實現動態代理














實現方式









打印出:












實現





































執行結果




posted @ 2009-02-18 16:52 Pitey 閱讀(495) | 評論 (0) | 編輯 收藏
隨筆 - 8, 文章 - 0, 評論 - 4, 引用 - 0
|
Java靜態代理和動態代理
網上和bolg上相關例子不少,今天自己動手寫了個例子作為學習筆記。
首先java代理分為靜態代理和動態代理,動態代理中java提供的動態代理需要動態代理一個inteface,如果沒有inteface則需要使用實現cglib提供的接口。 下面例子只實現動態代理 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 實現方式 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 打印出: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 實現 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 執行結果 ![]() ![]() ![]() ![]() posted @ 2009-02-18 16:52 Pitey 閱讀(495) | 評論 (0) | 編輯 收藏 轉:Message Driven POJO
作者:江南白衣
一直希望那些J字頭的協議能有幾個提前告老還鄉的,好減輕一下我們的負擔,特別是這WebService滿天飛的時代。但似乎還有很久都輪不到JMS的消失: 1.因為 1.它是《Effective Enterprise Java》的一個實踐。 可以把不影響用戶執行結果又比較耗時的任務(比如發郵件通知管理員)異步的扔給JMS 服務端去做,而盡快的把屏幕返還給用戶。 而且服務端能夠多線程排隊響應--高并發的請求。 2. 可以在Java世界里達到最高的解耦。 對比WebService,JMS的客戶端與服務端無需直連,甚至無需知曉對方是誰、在哪里、有多少人,只要對流過的信息作響應就行了。對牽一發動全身的企業應用來說很輕省。 2. 但是 1. Message Bean帶著EJB系的榮光,步驟比較繁雜,你需要實現MessageDrivenBean、MessageListener接口,還需要設置EJB的配置信息,然后是deploy.... 2. Spring 1.x 提供的JMS Template簡化了JMS
Client端的編程,但并沒有涉及到服務端的改造。 1. 它是Lightweight的,基本上只是普通POJO,不用搞太多東西。 2. 它是Spring Base的,可以使用Spring的各種特性如IOC、AOP。 3. 它是Effective的,基于Jencks的JCA Container實現 pool connection,control transactions and manage security。 4. 但它是withdout EJB
Container的。 posted @ 2009-02-11 09:52 Pitey 閱讀(260) | 評論 (0) | 編輯 收藏 [導入]一次Java垃圾收集調優實戰
摘要: GC調優是個很實驗很伽利略的活兒,最后服務的處理速度從1180 tps 上升到1380 tps,調整兩個參數提升17%的性能還是筆很劃算的買賣..... 閱讀全文
文章來源:http://www.aygfsteel.com/calvin/archive/2008/07/09/213535.html posted @ 2009-02-11 09:17 Pitey 閱讀(169) | 評論 (0) | 編輯 收藏 Spring事物攔截器學習筆記Spring事物攔截器,按照通知方式分為[前置通知(Before advice),返回后通知(After returning advice) 1.定義切面類接口,切面類實現這個接口。聲明(如果被代理的目標對象實現了至少一個接口,則會使用JDK動態代理。所有該目標類型實現的接口都將被代理。若該目標對象沒有實現任何接口,則創建一個CGLIB代理) ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
2.定義前置通知攔截處理類
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() posted @ 2009-02-10 23:07 Pitey 閱讀(1689) | 評論 (0) | 編輯 收藏 轉:重寫window.setTimeout傳參數(支持傳對象)的方法也許你過去在setTimeout中傳參數一直是這樣 setTimeout("pass(" + argu + ")",1000) 這樣只能傳字符串,對傳遞object就無能為力了,需要大費文章.然而別忘了,第一個參數還可以是function!!! 看以下代碼實現向里面的function 傳參數 <script type="text/javascript">
var _st = window.setTimeout;window.setTimeout = function(fRef, mDelay) { if(typeof fRef == 'function'){ var argu = Array.prototype.slice.call(arguments,2); var f = (function(){ fRef.apply(null, argu); }); return _st(f, mDelay); } return _st(fRef,mDelay);} function test(x){ alert(x);} window.setTimeout(test,1000,'fason'); </script> 怎樣?是不是很方便了?代碼其實就很簡單,重載了一下window.setTimeout,用apply去回調前面的function. 還沒有用過apply,call的可以去查資料,發現版本不夠的看我低版本的實現方法http://blog.csdn.net/fason/archive/2004/07/30/apply_call.aspx 另外需要知道的是,NS環境下,后面的參數確實是來傳給前面的函數的,IE爛,沒有實現~~~~~~~~~~~~~ posted @ 2008-03-18 10:21 Pitey 閱讀(3679) | 評論 (1) | 編輯 收藏 |
|