
2009年7月6日
摘要: 1. Springboot config示例與原理介紹1.1 Springboot config示例Springboot給我們提供了非常便捷與方便的配置使用方式,常用的使用示例有以下兩種:1)使用@ConfigurationProperties 讀取多個屬性使用方法:@ConfigurationProperties(prefix = "spring.datasource")使用說明:提供...
閱讀全文
posted @
2021-04-08 20:00 x.matthew 閱讀(537) |
評論 (0) |
編輯 收藏
摘要: jprotobuf-rpc-http 是應用jprotobuf類庫實現基于http協議的RPC開發組件。 目前1.0提供可以直接把Google protobuf的IDL定義語言發布成RPC服務,客戶端也可以直接應用IDL定義語言進行動態創建,幫助開發完全省去了手工編譯protobuf IDL語言的麻煩。
閱讀全文
posted @
2014-10-10 15:20 x.matthew 閱讀(3549) |
評論 (0) |
編輯 收藏
摘要: JProtobuf官方網址:https://github.com/jhunters/jprotobuf
1.0.0 支持普通類型,嵌套對象以及對象數組的Protobuf協議的序列化與反序列化實現。(注解替換proto描述文件)
1.0.1 由注解對象動態生成Protobuf的IDL描述文件內容。
1.0.3 增加由.proto 描述文件動態生成Protobuf操作對象的支持,詳見下面使用說明。
閱讀全文
posted @
2014-09-30 11:43 x.matthew 閱讀(4909) |
評論 (4) |
編輯 收藏
摘要: 如果大家有遇到過Java內存泄露問題,而且親自動手去定位和分析經歷的同學來講,獲取Java的堆內信息對了內存使用情況的問題分析和定位是非常有幫助了。例如我們常用的MAT工具,可以較方便的讓我們定位程序中內存的使用情況,是哪塊導致了內存的泄露等。
但由于傳統的分析過程比較麻煩,需要使用Jdk的jmap(Java Memory Map)命令把heap內存dump到一個文件,然后用MAT進行分析。所以本文介紹一種方法可以實現在線查看heap內存的使用情況,并附上源碼實現,希望對大家有幫助。由于目前調研中只找到了Sun JDK6以及以上版本的實現,所以目前該方案只支持Sun JDK6或以上。如果其他同學有其它版本的JDK實現分享,歡迎一起交流。
閱讀全文
posted @
2013-02-20 16:30 x.matthew 閱讀(6319) |
評論 (9) |
編輯 收藏
摘要: CyclicBarrier一個同步輔助類,它允許一組線程互相等待,直到到達某個公共屏障點 (common barrier point)。假如在涉及一組固定大小的線程的程序應用中,要求這些線程必須不時地互相等待(保證所有線程都執行完畢才返回),那么選擇 CyclicBarrier 就會讓這個實現變得非常容易。CyclicBarrier 在釋放等待線程后可以重用,所以又稱它為循環 的 barrier。
閱讀全文
posted @
2012-06-28 13:34 x.matthew 閱讀(2754) |
評論 (1) |
編輯 收藏
摘要: 本文通過對Apache Commons Collections 項目中LRUMap這個集合類的源代碼進行詳細解讀,為幫助大家更好的了解這個集合類的實現原理以及使用如何該集合類。
首先介紹一下LRU算法. LRU是由Least Recently Used的首字母組成,表示最近最少使用的含義,一般使用在對象淘汰算法上。也是比較常見的一種淘汰算法。
閱讀全文
posted @
2012-06-28 13:34 x.matthew 閱讀(5854) |
評論 (1) |
編輯 收藏
摘要: Treap=Tree+Heap。Treap本身是一棵二叉搜索樹,它的左子樹和右子樹也分別是一個Treap,和一般的二叉搜索樹不同的是,Treap記錄一個額外的數據,就是優先級。Treap在以關鍵碼構成二叉搜索樹的同時,還按優先級來滿足堆的性質(在這里我們假設節點的優先級大于該節點的孩子的優先級)。但是這里要注意的是Treap和二叉堆有一點不同,就是二叉堆必須是完全二叉樹,而Treap可以并不一定是。
閱讀全文
posted @
2012-05-16 14:37 x.matthew 閱讀(4294) |
評論 (0) |
編輯 收藏
摘要: 對于Mybatis 擁有的Lazy Load(有中文翻譯成延遲加載)功能,應該很同學都有聽說過,今天主要與大家一起來解讀一下Mybatis在Lazy Load功能的實現的代碼。Lazy Load實現的功能很好理解,就是在數據與對象進行Mapping操作時,只有當真正使用該對象時,才進行Mapping操作,以減少不必要的數據庫查詢開銷,從而提升了程序的效率。
閱讀全文
posted @
2011-12-29 19:14 x.matthew 閱讀(5037) |
評論 (1) |
編輯 收藏
摘要: Thrift出自Facebook用于后臺各個服務間的通訊,Thrift的設計強調統一的編程接口的多語言通訊框架.
本文通過一個實例來介紹一下Thrift最基本的應用。
閱讀全文
posted @
2011-11-12 18:57 x.matthew 閱讀(17898) |
評論 (4) |
編輯 收藏
摘要: JDK Proxy AOP實現與Cglib Proxy AOP實現對比。
閱讀全文
posted @
2011-10-10 19:24 x.matthew 閱讀(5022) |
評論 (1) |
編輯 收藏
摘要: 在SQL開發過程中,動態構建In集合條件查詢是比較常見的用法,在Mybatis中提供了foreach功能,該功能比較強大,但由于官方文檔對這塊的使用,描述的比較簡短,細節上也被忽略掉了(可能是開源項目文檔一貫的問題吧),也使用不少同學在使用中遇到了問題。特別是foreach這個函數中,collection屬性做什么用,有什么注意事項。由于文檔不全,這塊只能通過源代碼剖析的方式來分析一下各個屬性的相關要求。
閱讀全文
posted @
2011-08-31 14:38 x.matthew 閱讀(50562) |
評論 (4) |
編輯 收藏
摘要: 本文主要介紹什么是API,以及API兼容的重要性,最終給出方案如何評估API,以及如何做到API兼容。
閱讀全文
posted @
2011-07-29 19:35 x.matthew 閱讀(578) |
評論 (0) |
編輯 收藏
摘要: Spring聲明式事務功能應該是大家應用Spring中使用的最多的功能之一了,的確該功能極大的簡化了大家對數據庫操作的。目前Spring支持的聲明式事務有兩個配置方式,一種是XML配置方式,另一種是注解方式
針對配置這塊,XML配置同學們會覺得比較麻煩,特別是針對事務屬性的配置,所以補充一下本塊配置說明,特分享給大家,希望對大家有幫助。
閱讀全文
posted @
2011-06-23 13:25 x.matthew 閱讀(4387) |
評論 (3) |
編輯 收藏
摘要: 本月Tomcat 7.0.14版本正式發布,其最顯著的一個新功能就是引入了StuckThreadDetectionValve功能,該功能可以幫助分析和檢查耗時的請求或潛在可能會出現請求線程阻塞等情況
閱讀全文
posted @
2011-05-25 21:51 x.matthew 閱讀(3059) |
評論 (4) |
編輯 收藏
摘要: 本文章會通過連載的方式來深入了解和學習Spring相關核心技術和實現原理。包括Spring的Bean生命周期管理,聲明性事務管理,AOP管理,注解應用實現,以及在其上面進行擴展的相關應用。
本篇技術文章將介紹Spring聲明式事務管理實現技術細節的剖析。
閱讀全文
posted @
2011-04-29 10:54 x.matthew 閱讀(2186) |
評論 (1) |
編輯 收藏
摘要: 講起靜態代碼分析工具,估計大家耳熟能詳的都能講出幾個來,像PMD, Checkstyle, Findbug等。沒錯這些都是我們日常編碼代碼時用于提升我們代碼質量的好工具,本文將從PMD工具實現的規則出發,通過這些規則的定義來學習一下代碼優化的技巧,希望通過這些技巧的介紹可以幫助大家在編碼過程中提升大家的代碼編寫質量。同時也算給大家介紹一個比較不錯的途徑去學習改進代碼編寫質量的方法。
閱讀全文
posted @
2011-04-29 10:54 x.matthew 閱讀(2361) |
評論 (2) |
編輯 收藏
摘要: 本文章會通過連載的方式來深入了解和學習Spring相關核心技術和實現原理。包括Spring的Bean生命周期管理,聲明性事務管理,AOP管理,注解應用實現,以及在其上面進行擴展的相關應用。
本篇技術文章介紹Spring AOP的實現。
閱讀全文
posted @
2011-04-01 10:52 x.matthew 閱讀(2353) |
評論 (0) |
編輯 收藏
摘要: 本塊文章會通過連載的方式來深入了解和學習Spring相關核心技術和實現原理。包括Spring的Bean生命周期管理,聲明性事務管理,AOP管理,注解應用實現,以及在其上面進行擴展的相關應用進行介紹。
本篇技術文章將作為Spring入門篇。
閱讀全文
posted @
2011-03-14 19:24 x.matthew 閱讀(2450) |
評論 (3) |
編輯 收藏
摘要: 本文是針對 之前的通過Spring2.5對單元測試的Annotation支持進行TDD開發 進行擴展,增加了Struts Action層的測試實現。雖然Action沒有注入到Spring容器,也可以通過 getProxyAction方法,實現Spring容器的屬性依賴注入實現
閱讀全文
posted @
2011-02-27 19:15 x.matthew 閱讀(1941) |
評論 (2) |
編輯 收藏
摘要: 介紹:
Hibernate Envers目的是根據對實體的設置,提供記錄執行數據變更歷史的功能(數據變更版本)。它實現原理是通過對Hibernate的操作事件監聽并根據
基于Annoatation的配置來記錄修改數據的內容。
閱讀全文
posted @
2010-08-22 23:20 x.matthew 閱讀(9423) |
評論 (1) |
編輯 收藏
摘要: 在上篇博客中,介紹了如何借助Spring Module項目,配置聲明式緩存功能實現,文中只針對Ehcahce的實現進行了講解,其它Spring Module項目把這塊的功能做了一個很好的抽取,使其能更好的對其它的緩存框架的支持和擴展。筆者正好利用該代碼框架實現了與Memcached服務的集成,本文將得點通過源代碼解講一下抽取這層的實現,希望大家有所幫助。
閱讀全文
posted @
2010-05-13 19:53 x.matthew 閱讀(4457) |
評論 (2) |
編輯 收藏
摘要: 前言:
如果大家使用過Spring事務管理,會發現Spring提供的事務分為“只讀”和“讀寫”事務兩類。這不免就會疑問這兩種事務會有什么不同?本文則通過對Spring和Hibernate源代碼的剖析來找出這兩種事務的區別。特別是運行性能方面的區別。
文章調試使用的版本為 Spring 2.5.6.SEC01 ,Hibernate 3.3.2.GA。
閱讀全文
posted @
2010-05-06 19:31 x.matthew 閱讀(6048) |
評論 (1) |
編輯 收藏
摘要: 本筆記針對Spring-dynamic 1.2.0版本進行一個簡單開發應用講解,使用Apache Felix-1.8.0作為osgi運行環境。
閱讀全文
posted @
2010-04-29 19:08 x.matthew 閱讀(4539) |
評論 (2) |
編輯 收藏
摘要: 前言:
本文檔將講解一下,如何借助Spring Module項目,實現配置聲明性緩存功能。
說明:
本檔的配置經過本人測試,都能正確運行。
運行環境: Jdk5.0, Spring-2.5, Spring-modules-0.9, ehcache-1.6.0-beta4.jar
閱讀全文
posted @
2010-04-22 19:47 x.matthew 閱讀(3294) |
評論 (4) |
編輯 收藏
兩種Java代碼實現方法:
通過jmx rmi 連接:
HashMap env = new HashMap(1);
final String[] credentials = new String[] { "admin", "adminadmin" };
env.put( JMXConnector.CREDENTIALS, credentials );
// so our JMXConnectorProvider may be found
//env.put( JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "com.sun.enterprise.admin.jmx.remote.protocol" );
JMXServiceURL serviceURL = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost:8686/management/rmi-jmx-connector");
JMXConnector connector = JMXConnectorFactory.connect(serviceURL , env);
MBeanServerConnection connection = connector.getMBeanServerConnection();
Object o = connection.invoke(new ObjectName("com.sun.appserv:type=domain,category=config"), "getName", new Object[]{}, new String[]{});
System.out.println(o);
通過jmx http連接
HashMap env = new HashMap(4);
env.put( "com.sun.enterprise.as.http.auth", "BASIC" );
env.put( "USER", "admin" );
env.put( "PASSWORD", "adminadmin" );
env.put( JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "com.sun.enterprise.admin.jmx.remote.protocol" );
JMXServiceURL serviceURL = new JMXServiceURL("s1ashttp", "localhost", 4848);
final JMXConnector conn = JMXConnectorFactory.connect( serviceURL, env );
MBeanServerConnection connection = conn.getMBeanServerConnection();
Object o = connection.invoke(new ObjectName("com.sun.appserv:type=domain,category=config"), "getName", new Object[]{}, new String[]{});
System.out.println(o);
Good Luck!
Yours Matthew!
posted @
2010-03-29 15:42 x.matthew 閱讀(2534) |
評論 (0) |
編輯 收藏
摘要: 經過這么長時候的等候,終于期待到了Spring3.0 GA版本的發布,猜想眾多和我一樣期待的朋友應該是會非常高興等到這一天。
Spring3.0主要新增的特征如下:
1. 完整的Rest API支持(可惜不兼容JSR311規范)
2. Java EE 6 的初步支持
3. 基于聲明式的數據模塊校驗功能
4. 支持內置數據庫
5. Spring Expression Language
6. 基于原生的Java API支持,如泛型支持。
閱讀全文
posted @
2009-12-15 22:24 x.matthew 閱讀(1626) |
評論 (0) |
編輯 收藏
摘要: 本示例中,應用netbeans 6.0版本,演示使用Netbeans IDE自帶的Profiler工具,跟蹤Java應用程序中發生的內存泄漏問題。本人已經對文檔中的操作過程進行嘗試,的確能進行內存泄漏的定位,希望能給大家帶來幫助。并祝大家國慶,中秋雙節快樂!
轉自: http://www.javapassion.com/handsonlabs/nbprofilermemory/
閱讀全文
posted @
2009-10-07 11:53 x.matthew 閱讀(2853) |
評論 (1) |
編輯 收藏
摘要: 本文將介紹使用Eclipse JPDA,在Eclipse的開發環境下對遠程運行的Java程序進行調試操作。
請按以下步驟進行(本人已經在Eclipse 3.2, JDK 1.5_08)環境下調試成功。
1. 在啟動Java程序時,在Java啟動命令中,加入以下參數
Xrunjdwp:transport=dt_socket,address=1234,server=y,suspend=n
注: suspend參數表示,啟動時,是否等待JPDA調試端連接。n表示否
閱讀全文
posted @
2009-08-08 11:10 x.matthew 閱讀(4093) |
評論 (3) |
編輯 收藏
摘要: 在上次發布http://www.aygfsteel.com/xmatthew/archive/2009/06/30/284825.html游戲之后收到很多人的關注,在此本人表示感謝。這次把整理后的服務器和客戶端的程序打包上傳,希望大家能喜歡玩這個游戲。
閱讀全文
posted @
2009-07-06 13:12 x.matthew 閱讀(3648) |
評論 (10) |
編輯 收藏