原创 Spring 源碼學習 - ClassPathXmlApplicationContext
衆所周知,Spring以其強大而又靈活的IoC管理功能著稱。IoC本質上是通過依賴注入DI的方式實現組件之間的解耦。其實在DI模式下,一個關鍵性的角色
原创 如何進行Java EE性能測試與調優
[b]性能測試的目標[/b]性能測試不同於功能測試,不是對與錯的檢驗,而是快與慢的衡量。在進行真正的性能測試之前要先搞清楚目標:1. 在確定的硬件條件
原创 從appfuse開始學習Spring和Hibernate - (2)Spring啓動log
分析appfuse的詳細的啓動日誌來看看Spring的啓動過程。1. 裝載app上下文main INFO org.springframework.web.context.ContextLoader - R
原创 關於Hashtable和HashMap, Vector和ArrayList
在功能上講Hashtable和HashMap, Vector和ArrayList有着幾乎相同的功能。他們的主要區別在於:Hashtable和HashMap的區別,先看put方法的源代碼Hashtablepu
原创 Tomcat 7 源碼分析 - 下載 tomcat source code 並導入eclipse
準備好好研究學習一下tomcat 7 的源代碼,那麼第一步就是下載,導入eclipse並且運行。[size=small]1. 下載源代碼[/size]tomcat 7 的源代碼在svn上,所以你需要svn的
原创 Java 併發編程 - Programming Concurrency on the JVM
這幾個月一直在做性能調優的工作,以前總是進行功能的開發,從來不考慮性能的問題,經過這幾個月的工作,發現從性能和擴展性的角度去看軟件開發,還真是大不一樣。在和朋友聊天的時候,提及Java程序是否能充分利用多核cpu的問題的時候,朋友給我推薦
原创 關於 sun.misc.Unsafe
今天在看java.util.concurrent.atomic包的源代碼的時候看到原來這個包的底層都調用了sun.misc.Unsafe這個類,這個類其實是個native的實現類,他的神奇之處就在於它可以直接訪問內存地址。如果你能直接調用
原创 Java String 詳解 - String Literal
爲了性能和內存資源上的考慮,JVM對String類型的數據做了特殊的處理。也就是大家都知道的String是immutable的或者是constant。其實很多面試或者筆試裏面都會考到。有時覺得沒事找事,確實
原创 Tomcat 7 源碼分析 - 初始化 class loader
Bootstrap 在啓動的時候初始化了三種class loader:common,server和shared。在它的createClassLoader方法裏面,通過:String value = Cata
原创 如何提高代碼質量
本文是寫給開發人員的建議,不會涉及很多QA方面的討論。我覺得有三個方法可以提高軟件質量,根據重要性和有效性一次爲:Code Review, Refactor和Unit Test。這三個方法不是三個階段,而是
原创 JVisualVM還真是不錯
最近再看Java 性能的問題。一直都習慣使用Jconsole和Jstack。今天偶然發現一個更好的東東JVisualVM。這個工具功能更強大而且有很多插件可以擴展,相信後面插件會越來越豐富。如此一來一些簡單
原创 Java Management Extensions (JMX) 學習筆記- 程序管理和監控
在學習Tomcat 7 的源代碼的時候發現,大量運用到了JMX, MBeans,所以決定先學習一下。[size=medium]介紹[/size]JMX是Java 5開始引入的API。這個API意在幫助管理和
原创 Java 執行過程詳解 - JVM 生命週期
Java的執行過程也就是JVM從啓動到退出的過程。JVM的運行是一個進程單元,可以用jps工具列舉出正在運行的JVM 進程。在一個JVM進程中可以運行多個線程。[size=medium]1. JVM 啓動[
原创 Java Generic 學習
泛型是Java 5開始引入的一個語言級別的特性,目的是爲了讓你的程序更爲可靠(reliable)。 程序總是有bug,而bug分爲編譯時bug和運行時bug,編譯時bug是比較令人舒服的bug
原创 Java System 類詳解 - properties and environment variables
在環境配置中我們經常需要知道或者設置系統屬性值和環境變量。系統屬性值是在同一個Java process裏面有效的全局變量。而環境變量則是對於整個操作系統中所有進程都可見的,就如同你在OS裏面設置的一樣。因此