摘要: 基于MongoDB開發的統計服務對業務數據進行遷移,分析。 閱讀全文
2008年3月24日 #
摘要: 當系統有海量數據需要級聯刪除時,我們需要小心,如果同步刪除用戶體驗會很差,他會等相當長的時間,直到系統超時,另外還會給系統突發地增加很大的負載, 閱讀全文
摘要: Mysql在數據量大的情況下,會遇到水平分表的情況。將實際開發中遇到的分表解決方案總結了一下。 閱讀全文
摘要: 存放幾百萬條數據的Redis List的性能描述,使用小結,并附上一個巧妙的使用例子。 閱讀全文
摘要: Activemq-pool的PooledConnectionFactory解密,使用時需要注意。 閱讀全文
摘要: 網上大多數文章都是用keytool生成自簽名根證書,將根證書配置在tomcat的server.xml中。我不太喜歡用keytool,原因:
1.我們可能換provider,不同的provider會有不同的算法實現,算法的安全性和性能也可能不同,通過代碼生成比較方便一些,不同算法的實現要放在classpath上。
2.通過代碼生成還有一個好處,會對整個流程理解的比較清楚,實現的原理到底是怎樣的。 閱讀全文
1.我們可能換provider,不同的provider會有不同的算法實現,算法的安全性和性能也可能不同,通過代碼生成比較方便一些,不同算法的實現要放在classpath上。
2.通過代碼生成還有一個好處,會對整個流程理解的比較清楚,實現的原理到底是怎樣的。 閱讀全文
摘要: Lucene如何和數據庫集成,如何從數據庫中實時地將數據爬出,在Lucene中建索引。本文沒有使用AOP和ORM FRM的Listener方式,而是采用的主動輪詢的方式從DB將確實存在在DB中的指定數據爬出,建全文索引。可以讓用戶實時地搜出結果。需要考慮的問題很多,我只是把我能想到的給出來。如果大家有什么好的想法和建議,歡迎提出來。 閱讀全文
摘要: A項目一開始code的時候,沒有加任何test。現在需要重構了,我們根據use case設計了一些automation的high level 的接近integration test的functional tests. 但跑下來發現code coverage不高。于是老大讓我看看想些方法提高一下code coverage。總結一下。 閱讀全文
摘要: javamail已經設計的很好了,精巧強悍,為什么還需要封裝它呢? 閱讀全文
摘要: 最近在javamail的基礎上,寫了一個Email channel,把相關知識總結一下。 閱讀全文
摘要: OC4J1033升級Oracle JDBC driver到11.1.0.7.0版本 閱讀全文
摘要: 在用戶修改了領域對象的值后,我們有時需要記錄下用戶的改動。比如對一些關鍵業務對象的改動有時往往需要發郵件通知客戶。有時用戶可能想查閱所有歷史的改動,甚至有可能會改回原先的值。領域邏輯關系往往比較復雜,這時我們會使用到ORM Framework。本文以toplink為例,講述如何利用toplink編寫一個完成此功能的簡易Framework,我們暫且把它稱為ActionMemed。
閱讀全文
閱讀全文
摘要: 在一個月黑風高的晚上,產品環境上所有application都OOM了,令人心驚膽寒,打開log文件,上下打諒著他,他就是傳說中的“java.lang.OutOfMemoryError: unable to create new native thread‘,到底誰創造出了這個魔鬼,原來一個application在瘋狂創建線程池,不過用TDA(Thread dump analyzer)看到也就只創建了400×2(2JVMs)個線程,但這并不算多,應該還可以更多。奇怪!讓我們來剝下“java.lang.OutOfMemoryError: unable to create new native thread‘的外衣,看看誰是幕后黑手。。。。。 閱讀全文
摘要: 最近又把壓在箱底的幾本單元測試相關的書翻了翻,既然翻了,順便拿了個筆頭記了記,好記性不如爛筆頭呀。內容不算太多,平時寫Unit test時要follow,要深入理解,不然就不能學以致用。以后相關的內容,就往這個坑里填了。 閱讀全文
摘要: java端RESTful web services的幾種實現方式 閱讀全文
摘要: 是用ServletContextListenser還是Servlet初始化資源 閱讀全文
摘要: Collect and collate. Introduction to Rest and SOAP, compare SOAP with Rest, how to implement Rest in java. 閱讀全文
摘要: 悲觀離線鎖可以控制多事務的并發,特別是當多事務是在多個jvm上執行時,我們需要利用外部鎖,如DB鎖。本文利用Oracle PLSQL UL鎖,在JTA分布式事務中實現鎖管理器,并封裝成隱含鎖提供給應用項目組使用。 閱讀全文
摘要: 僅以此文歌頌我們永遠清純和青春的90后同事---柳阿福 閱讀全文
摘要: 前兩天application team使用framework的rmi服務出了一些問題,總結一下,順便俺也占個坑,以后RMI使用中需要注意的地方都可以加到此帖中。 閱讀全文
摘要: 我們經常需要進行遠程業務方法的調用,并對返回的結果進行處理。我們規范化了調用流程,可擴展支持多種協議:HTTP, JMS, RMI, FTP等,實現了序列化和反序列化,負載均衡,異步調用等模塊。默認給出HTTP實現。 閱讀全文
摘要: java實現的同步循環鏈表,支持順序迭代訪問,添加,刪除操作。 閱讀全文
摘要: XStream和JAXB這兩東東本質上是有差別的,JAXB稱為OX binding工具,XStream應該算序列化工具,但OX binding工具也會marshall和unmarshall,則包含了序列化部分。序列化工具不一定需要提供binding的功能。既然都玩序列化,那就簡單地比較一下它們兩在序列化方面的強弱吧。 閱讀全文
摘要: 由于業務需要將quartz的jobstore從JobStoreTX更新為JobStoreCMT,接著啟動servlet時發現被鎖住了。由于使用JobStoreCMT我們使用了managed datasource,按照quartz文檔的要求也配置了non managed datasource,但是發現程序啟動的時候就被鎖住了,鎖在Quartz_Locks的表鎖上了。最后通過查閱源代碼,跟蹤代碼解決了這個問題。問題解決過程記錄了下來。 閱讀全文
摘要: 對json(json lib, jettison)和xstream轉換后的數據長度,格式和花費的時間做了比較,描述了使用json和xstream的各自的優勢,以及如何如何選擇。 閱讀全文
摘要: 要看的書真不少,主攻方向:模式,SOA,分布式算法,多核計算,安全,動態語言和領域語言。 閱讀全文
摘要: 在Oracle Application Server環境下OC4J Instance下的每個process的jvm的rmi端口是動態分配的,如果能解決這個動態的問題,就可以使用ORMI作為jndi的provider url。但是需要注意的是如果是在server啟動時初始化toplink session,需要等待JmsServer線程執行完畢。 閱讀全文
摘要: 在分布式應用中,單個業務應用的toplink運行在多個jvm上,同時開啟了會話緩存,而這些在多個jvm上會話緩存中的domain對象就需要進行同步,這樣可以及時拿到最新的domain對象而不需要每次都查詢database,這大大減少了樂觀鎖沖突。在Oracle Application Server上Ormi端口是動態分配的,而opmn request端口氏固定的,所以我們用opmn作為jndi lookup的url。經過測試OC4J in memory jms作為同步消息的傳輸和發現方式效率是最高的,所以采用OC4J in memory jms作為消息同步的傳輸方式。具體實現方法參見本文。 閱讀全文
摘要: 晚上要下班的時候,application team那里使用Tibco EMS做消息集成服務時候出了bug,錯誤是:java.sql.SQLException: 當全局事務處理處于活動狀態時, 無法調用方法 'commit',應該是在全局事務中使用了本地事務并提交了。幫忙看了一下,它的oc4j, toplink, spring的使用上都存在著一些問題,并把要注意的地方總結了一下。包括oc4j,toplink,spring三塊。 閱讀全文
摘要: 通過Context lookup出來的是DataSource卻能完成XADataSource的功能,雖然用了動態代理,但是為什么不用繼承呢? 閱讀全文
摘要: 原有的應用沒有開放RMI服務,由于將schedule模塊移到了standalone的JVM上,需要在遠程通過RPC Call回來,于是在已有的系統中增加了RMI服務,關鍵是如何方便而有效地加入這個RMI服務,和原有的系統解耦,還要方便以后的升級。這篇隨便記錄了在已有系統中加入RMI服務模塊的一些心得。 閱讀全文
摘要: 最近在完成一個小小的framework項目,由于項目中不使用spring,guice,自己實現了一個簡易的依賴注入框架。主要是項目是基于接口設計的,所以一些類的實現需要在配置文件里設定,實現類的實例屬性也要是可以擴展的,并且提供屬性值的邏輯校驗,所以就有了這么一個東東。 閱讀全文
摘要: 在java端調用存儲過程的時候需要存儲過程串行的執行,如果使用synchronized lock在應用服務器突然down掉的情況下會出現問題,因為session并沒有立即斷掉,后臺的存儲過程還在繼續執行,這樣如果應用服務器立即重啟,再調用該存儲過程或者其他需要一起串行化處理的存儲過程就會違反同步執行的原則,所以我們必須把鎖放在oracle db端,利用oracle鎖機制來完成存儲過程的同步,文章總結了一下在java端如何使用oracle這個用戶鎖機制。 閱讀全文
摘要: 最近要寫message在傳送過程中狀態改變的流程,并根據不同的狀態作不同的處理,同時記錄當前的狀態。于是,看了一下狀態模式,發現還是不太好用,比如狀態對象創建的太多了,稍加修改了一下,大概是就是文章中的這個模樣了:把它分為了“狀態持有者”, “狀態對象“, ”狀態管理者”, “狀態機”等。 閱讀全文
摘要: 主要是要構建一個符合自己需求的的連接池(對象池)。這個連接池中所存放的對象的行為是自定義的并滿足項目實際應用需求的。但是這些對象的頻繁創建需要很大的代價,比如一些Socket連接。connection-pool所有部分都是基于接口設計,便于實現的動態加入和變更。也用到了很多開源的framework如commons-pool,commons-beanutils,xmlbeans,commons-net。 閱讀全文
摘要: 《Head First Design Pattern》一書在講單例模式時舉了一個double check的例子,覺得它的代碼寫的有問題,修改了一下它的代碼,不知道正確與否,大家討論。討論的結果兩種寫法在舊的JMM上都是錯的,在新的JMM上都是正確的,文中添加了一些個人的理解。 閱讀全文
摘要: 總結了一下java中使用到Connection Pool的一些情況,并想了一下如何實現特定種類的Connection Pool。 閱讀全文
摘要: 因為log對象常常不需要序列化,我們如何在可序列化類中定義log對象? 閱讀全文
摘要: 介紹了在spring的基礎上實現一個簡易的Exception處理框架。主要是采取受管的方式:xml配置文件和annotation。Exception在框架統一的地方進行處理,使得應用程序開發人員不必為處理exception而困擾,也不必為寫大量的try,catch塊而困擾。 閱讀全文
摘要: 上次用Coherence實現緩存數據同步的transport manager之后,對它進行了壓力測試并和EMS JMS和 OracleAS JMS(內存)進行了性能對比。文中描述了測試的過程,并共享了代碼和測試結果。 閱讀全文
摘要: 用ASM直接分析字節碼來加載Class級別的Annotation。文中給出了一個例子,例子的主程序會加載用某個Annotation標注的class,而那些沒有被該Annotation標注的class就不會被加載。 閱讀全文
摘要: Toplink提供了很強大的Cache功能,利用cache可以大大減少直接和DB通信的次數,特別是讀事務比較多的情況下。在分布式應用中,多個toplink session cache之間需要即時的同步數據,保證各個cache中的數據都是最新的數據,避免頻繁地出現stale數據或樂觀鎖異常。Toplink默認支持的兩種同步機制:JMS和RMI,有時為了考慮一些特殊的需求,必須性能,我們可能需要自定義一個Toplink的Transport Manager,本文給出了一個用Oracle Coherence實現Toplink Tranport Manager的具體例子,注意只是用了Coherence的通信并沒有把Coherence整合成Toplink的Session Cache。 閱讀全文
摘要: 本文主要介紹了如何用XPath編寫自定義的PMD Rule。靜態分析代碼是否符合相應的規則,及早檢查出代碼中的不足之出。 閱讀全文
摘要: 總結了有幾種方法編寫自定義Annotation 閱讀全文