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