我發現很多人沒辦法高效地解決問題的關鍵原因是不熟悉工具,不熟悉工具也還罷了,甚至還不知道怎麼去找工具,這個問題就大條了。我想列下我能想到的一個Java程式員會用到的常用工具。
一、編碼工具
1.IDE:
Eclipse
或者 IDEA
,熟悉儘可能多的快速鍵,《
Eclipse常見快速鍵列表
》
2.外掛程式:
(1)
Findbugs
,在release之前進行一次靜態代碼檢查是必須的
(2)
Clover ,關心你的單元測試覆蓋率
(3)
Checkstyle
代碼風格檢查
3.構建和部署工具:
ant
或者 maven
,現在主流都是maven了吧, 使用nexus搭建maven私服
,再加上持續整合
jenkins
。代碼品質不用愁。
4.版本管理工具:
svn
或者 git
5.
diff和patch
6.設定你的eclipse或者IDEA,如formatter,
save actions
以及code template等。代碼風格,直接用google的也可以啊。《
Google style guide
》
7.掌握一個文字編輯器,Emacs或者VIM,熟悉常用快速鍵。這在你需要線上編輯代碼,或者編寫其他語言代碼時候特別有用。《
神器聖戰
》
二、JDK相關
1.jstat : 觀察GC情況,如:
jstat -gcutil pid 2000
2.jmap,查看heap情況,如查看存活對象列表:
jmap -histo:live pid |grep com.company |less
或者dump記憶體用來分析:
jmap -dump:file=test.bin pid
3.分析dump的堆檔案,可以用jhat:
jhat test.bin
分析完成後可以用瀏覽器查看堆的情況。這個工具的分析結果還比較原始,你還可以用
Eclipse MAT
外掛程式進行圖形化分析,或者IBM的
Heap Analyzer
.
4.jvisualvm和jconsole: JVM內建的效能分析和監控工具,怎麼用?
請自己看文檔。
5.jstack:分析線程堆棧,如
jstack pid > thread_dump
查看CPU最高的線程在幹什麼的方法結合top和jstack:
http://www.iteye.com/topic/1114219
6.更多JVM工具,參見官方文檔:
http://docs.oracle.com/javase/6/docs/technotes/tools/
7.學習使用btrace分析java運行時問題。《
Btrace使用簡介
》
8.GC日誌分析工具:
GC viewer
、 GC-console
或者
自己挑吧。
9.效能分析工具,除了內建的jvisualvm外,還可以用商業的
jprofiler
。
10.JVM參數大全
11.《
JVM調優標準參數陷阱
》,iteye神貼。
三、Linux工具
1.
熟悉常用的shell命令, 2. 設定ssh免登陸
3.使用
htop 替換top。
4.熟悉下
strace,gdb
甚至 systemta
p來分析問題。
5.熟悉vmstat,iostat,sar等效能統計工具。
5.自動化部署指令碼,
py-fabric
或者自薦下我的
clojure-control
。
四、其他
1.掌握一門指令碼語言,
Python
或者 Ruby
,高效解決一些需要quick and dirty的任務:比如讀寫檔案、匯入匯出資料庫、網頁爬蟲等。注意不是python.com,哢哢。
2.使用Linux或者Mac os系統作為你的開發環境。
3.升級你的“硬體工具”,雙屏大屏顯示器、SSD、8G記憶體甚至更多。
4.你懂的:
https://code.google.com/p/goagent/
五、如何尋找工具?
1.搜尋引擎,google或者baidu,《
搜尋技巧
》
2.萬能的stack overflow:
http://stackoverflow.com/
3.虛心問牛人。
六、最重要的是⋯⋯
一顆永不停止學習的心。