原创 通過Reflect調用可變參數方法

JDK5之後,java的方法定義多了一個可變參數(varargs),在某些場合下還是比較方便的。 但是,在通過反射(reflect)調用時,就遇到了一些問題。 主要體現在兩個方面: 1、如何根據方法名及參數類型精確地從一個Class中獲取

原创 Ehcache還是Memcached的抉擇(二)

  Liferay中使用的是Ehcache, 這個緩存框架不錯,性能很好(參見上篇與memcached對比的文章),在Liferay中封裝的也不錯,很容易使用。 可最近在項目中遇到一個問題,那就是需要有多個系統共同訪問某個(某些)數據表

原创 關於軟件生產的工業化思考(序)

從開始讀計算機專業開始,我就產生一個夢想:以工業化的方式來進行軟件開發。 軟件生產的過程能像流水線一樣,工序劃分清晰、採用精密儀器組裝(製造)、按照流程生產出的軟件質量穩定、可靠。 開始的時候這確實只是一個夢想,很天真,而且也很籠統。但是

原创 全國哀悼日期間將網站風格變爲黑白

使用Liferay做的網站,做這個修改很簡單。在頁面設置設置風格與樣式的地方,有一個CSS標籤,在其中添加下面代碼: html { filter:progid:DXImageTransform.Microsoft.BasicImage(g

原创 Ehcache還是Memcached的抉擇(一)

緩存的目的就是爲了提高響應速度,尤其是併發訪問的速度,降低數據庫服務器的壓力,在同等硬件配置的情況下,提供更高的系統性能。 總的來說,請指導原則就是:儘量用低開銷的計算代替高開銷的計算。比如直接從數據庫查詢的開銷要遠高於內存中的計算返回,

原创 一個有趣的java性能測試

早上看到兩個文章,關於性能測試的一些爭論的。 http://www.mkyong.com/java/while-loop-for-loop-and-iterator-performance-test-java/ http://stuq.n

原创 Liferay研究之廿五:緩存技術的使用

緩存是一個良好設計架構的必須元素,因爲使用具有通用目的的架構機制,勢必會造成一些計算的冗餘,造成性能的降低,通過緩存機制,就可以彌補這方面的問題。 Liferay中大量的使用了緩存機制,其核心都是MultiVMPool機制,但在具體使用上

原创 Liferay研究之廿四:如何實現配置模式

Liferay的Portlet Configuration頁面,都有幾個固定的Tab頁,比如“權限”,“導出導入”等,這些是在什麼地方定義的呢? 我們知道,portal/render_portlet.jsp負責界面上一個portlet的解

原创 ExtJS學習筆記(一):ExtJS程序的結構及如何定義js的private, public屬性、方法

一般編寫一個ExtJS程序需要包含下面四個類型的文件: 1、html文件,引入樣式表,js文件,並標明html元素; 2、html同名js文件,用來創建組件,並動態替換DOM中的元素; 3、組件js文件 4、組件對應的css文件   對於

原创 Liferay研究之廿六:5.1更新分析

1、Portlet Container Implement.Add sun container implement for furture. JSR268?   2、ThemeAdd a shortcut icon for a theme

原创 Liferay研究之廿七:一些有用的API分析

 com.liferay.portal.util.PropsUtil在Portal.properties中設置的每個屬性,都有一個類的屬性與之對應,這

原创 MIS系統中數據字典的兩種解決方案

在信息系統中,很多的信息都是有標準化,所謂標準就是實現定義的一些規範,根據這個規範可以在多個實體之間進行數據的共享,以避免溝通中的歧異問題。 數據字典就是標準化中的一個重要組成部分。 關於數據字典的定義,版本有很多,在不同的場合中可能有不

原创 關於軟件生產的工業化思考(一)

  工業脫胎於手工業。 在手工業時代,我們生產一個產品,比如刺繡,是用繡花針一針一針的縫出來的,可以按照手工業者的想法,繡出各種各樣的創意作品,相當靈

原创 Liferay研究之廿八:爲同類Portlet設置不同的ICON

 根據Portlet的定義,每個Portlet都是會有一個icon的。 但是,一些Portlet是可以instancable的,這樣如果一個頁面上放置

原创 使用事務時應該避免的陷井

事務可實現“要麼完全成功,要不全部不成功”,保證數據的完整性和一致性,使我們在開發中能方便地實現一些業務邏輯。比如,在股票交易時,除了記錄交易的過程,還要更新交易完成之後的賬戶狀態。這兩個操作顯然必須“要麼完全成功,要麼全部不成功”,否則