java常用的代碼診斷工具

從人工到自動化片挂,從重復(fù)到創(chuàng)新,技術(shù)演進的歷程中贞盯,伴隨著開發(fā)者工具類產(chǎn)品的發(fā)展宴卖。

阿里巴巴將自身在各類業(yè)務(wù)場景下的技術(shù)積淀,通過開源邻悬、云上實現(xiàn)或工具等形式對外開放症昏,本文將精選了一些阿里巴巴的開發(fā)者工具,希望能幫助開發(fā)者們提高開發(fā)效率父丰、更優(yōu)雅的寫代碼肝谭。

由于開發(fā)者涉及的技術(shù)領(lǐng)域眾多掘宪,筆者僅從自己熟悉的領(lǐng)域,以后端開發(fā)者的視角盤點平時可能用得到的工具攘烛。每個工具按照以下幾點進行介紹:

工具名稱和簡介

使用場景

使用教程

獲取方式

一魏滚、Java 線上診斷工具 Arthas

Arthas是阿里巴巴 2018 年 9 月開源的一款 Java 線上診斷工具。

工具的使用場景:

這個類從哪個 jar 包加載的坟漱?為什么會報各種類相關(guān)的 Exception鼠次?

我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit芋齿?分支搞錯了腥寇?

遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎觅捆?

線上遇到某個用戶的數(shù)據(jù)處理有問題赦役,但線上同樣無法 debug,線下無法重現(xiàn)栅炒!

是否有一個全局視角來查看系統(tǒng)的運行狀況掂摔?

有什么辦法可以監(jiān)控到 JVM 的實時運行狀態(tài)?

Arthas 支持 JDK 6+赢赊,支持 Linux/Mac/Windows乙漓,采用命令行交互模式,同時提供豐富的 Tab 自動補全功能释移,進一步方便進行問題的定位和診斷簇秒。

使用教程:

基礎(chǔ)教程: https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics

進階教程: https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced

獲取方式:(開源)

開源地址: https://github.com/alibaba/arthas

開發(fā)者交流群號:21965291(釘群)

二、IDE 插件 Cloud Toolkit

Cloud Toolkit 是一款 IDE 插件秀鞭,可以幫助開發(fā)者更高效地開發(fā)趋观、測試、診斷并部署應(yīng)用锋边。通過 Cloud Toolkit皱坛,開發(fā)者能夠方便地將本地應(yīng)用一鍵部署到任意機器(本地或云端),并內(nèi)置 Arthas 診斷豆巨、高效執(zhí)行終端命令和 SQL 等剩辟,提供 IntelliJ IDEA 版,Eclipse 版往扔,PyCharm 版和 Maven 版贩猎。

工具的使用場景:

每次修改完代碼后,是否正在經(jīng)歷反復(fù)地打包萍膛?

在 Maven 吭服、Git 以及其他運維腳本和工具的之間頻繁切換?

采用 SCP 工具上傳蝗罗?使用 XShell 或 SecureCRT 登錄服務(wù)器艇棕?替換部署包蝌戒?重啟?

文件上傳到服務(wù)器指定目錄沼琉,在各種 FTP北苟、SCP 工具之間頻繁切換 ?

使用教程:

IntelliJ IDEA 版: https://help.aliyun.com/document_detail/98762.html

Eclipse 版: https://help.aliyun.com/document_detail/29970.html

PyCharm 版: https://help.aliyun.com/document_detail/112740.html

Maven 版: https://help.aliyun.com/document_detail/108682.html

獲取方式:(免費)

工具地址: https://www.aliyun.com/product/cloudtoolkit

開發(fā)者交流群號: 23341694(釘群)

三打瘪、混沌實驗注入工具 ChaosBlade

ChaosBlade 是一款遵循混沌工程實驗原理友鼻,提供豐富故障場景實現(xiàn),幫助分布式系統(tǒng)提升容錯性和可恢復(fù)性的混沌工程工具闺骚,可實現(xiàn)底層故障的注入彩扔,提供了延遲、異常葛碧、返回特定值、修改參數(shù)值过吻、重復(fù)調(diào)用和 try-catch 塊異常等異常場景进泼。

工具的使用場景:

微服務(wù)的容錯能力不易衡量?

容器編排配置是否合理無法驗證纤虽?

PaaS 層健壯性的測試工作無從入手乳绕?

使用教程: https://github.com/chaosblade-io/chaosblade/wiki/新手指南

獲取方式:(開源)

開源地址: https://github.com/chaosblade-io/chaosblade/wiki/新手指南

開發(fā)者交流群號:23177705(釘群)

四、Java 代碼規(guī)約掃描插件

該插件用于檢測 Java 代碼中存在的不規(guī)范的位置逼纸,并給予提示洋措。規(guī)約插件是采用 Kotlin 語言開發(fā)。

使用教程:

IDEA插件使用文檔: https://github.com/alibaba/p3c/wiki/IDEA插件使用文檔

Eclipse插件使用文檔: https://github.com/alibaba/p3c/wiki/Eclipse插件使用文檔

獲取方式:(開源)

開源地址: https://github.com/alibaba/p3c

五杰刽、應(yīng)用實時監(jiān)控工具 ARMS

ARMS 是一款 APM 類的監(jiān)控工具菠发,提供前端、應(yīng)用贺嫂、自定義監(jiān)控 3 類監(jiān)控選項滓鸠,可快速構(gòu)建實時的應(yīng)用性能和業(yè)務(wù)監(jiān)控能力。

工具的使用場景:

晚上 10 點收到 37 報警信息第喳,你卻無從下手糜俗?

當我們發(fā)現(xiàn)問題的時候,客戶/業(yè)務(wù)方已經(jīng)發(fā)起投訴曲饱?

每個月花幾十萬買服務(wù)器悠抹,卻無法保障用戶體驗?

使用教程:

前端監(jiān)控接入: https://help.aliyun.com/documentdetail/106086.html

應(yīng)用監(jiān)控接入: https://help.aliyun.com/documentdetail/63796.html

自定義監(jiān)控: https://help.aliyun.com/document_detail/47474.html

獲取方式:(收費)

工具地址: https://www.aliyun.com/product/arms

開發(fā)者交流群號:21914303(釘群)

六扩淀、靜態(tài)開源站點搭建工具 Docsite

Docsite 一款集官網(wǎng)楔敌、文檔、博客和社區(qū)為一體的靜態(tài)開源站點的解決方案驻谆,具有簡單易上手梁丘、上手不撒手的特質(zhì),同時支持 react 和靜態(tài)渲染氛谜、PC端和移動端、支持中英文國際化、SEO酱塔、markdown 文檔埃跷、全局站點搜索、站點風(fēng)格自定義弥雹、頁面自定義等功能垃帅。

使用教程: https://docsite.js.org/zh-cn/docs/installation.html

獲取方式:(開源)

項目地址: https://github.com/txd-team/docsite

七、Android 平臺上的秒級編譯方案 Freeline

Freeline 可以充分利用緩存文件剪勿,在幾秒鐘內(nèi)迅速地對代碼的改動進行編譯并部署到設(shè)備上贸诚,有效地減少了日常開發(fā)中的大量重新編譯與安裝的耗時。Freeline 最快捷的使用方法就是直接安裝 Android Studio 插件厕吉。

使用教程: https://github.com/alibaba/freeline/blob/master/README-zh.md

獲取方式:(開源)

項目地址: https://github.com/alibaba/freeline

八酱固、性能測試工具 PTS

PTS 可以模擬大量用戶訪問業(yè)務(wù)的場景,任務(wù)隨時發(fā)起头朱,免去搭建和維護成本媒怯,支持 JMeter 腳本轉(zhuǎn)化為 PTS 壓測,同樣支持原生 JMeter 引擎進行壓測髓窜。

使用教程: https://help.aliyun.com/document_detail/70290.html

獲取方式:(收費)

工具地址: https://www.aliyun.com/product/pts

九扇苞、云效開發(fā)者工具 KT

KT 可以簡化在 Kubernetes 下進行聯(lián)調(diào)測試的復(fù)雜度,提高基于 Kubernetes 的研發(fā)效率寄纵。

使用教程: https://yq.aliyun.com/articles/690519

獲取方式:(免費)

工具地址: https://yq.aliyun.com/download/3393

十鳖敷、架構(gòu)可視化工具 AHAS

AHAS 為 K8s 等容器環(huán)境提供了架構(gòu)可視化的功能,同時程拭,具有故障注入式高可用能力評測和一鍵流控降級等功能定踱,可以快速低成本的提升應(yīng)用可用性。

工具的使用場景:

服務(wù)化改造過程中恃鞋,想精確的了解資源實例的構(gòu)成和交互情況崖媚,實現(xiàn)架構(gòu)的可視化亦歉?

想引入真實的故障場景和演練模型?

低門檻獲得流控畅哑、降級功能肴楷?

使用教程: https://help.aliyun.com/document_detail/90323.html

獲取方式:(免費)

工具地址: https://www.aliyun.com/product/ahas

十一、數(shù)據(jù)處理工具 EasyExcel

EasyExcel 是一個用來對 Java 進行解析荠呐、生成Excel 的框架赛蔫,它重寫了 poi 對07版 Excel 的解析,原本一個3M的 Excel 用POI sax需要100M左右內(nèi)存泥张,EasyExcel可降低到 KB 級別呵恢,并且再大的excel也不會出現(xiàn)內(nèi)存溢出的情況。03版依賴 POI 的 sax 模式媚创。在上層做了模型轉(zhuǎn)換的封裝渗钉,讓使用者更加簡單方便。

使用教程: https://github.com/alibaba/easyexcel/blob/master/quickstart.md

獲取方式:(開源)

工具地址: https://github.com/alibaba/easyexcel

十二钞钙、iOS 類工具 HandyJSON

HandyJSON 是一個用于 Swift 語言中的JSON序列化/反序列化庫鳄橘。

與其他流行的 Swift JSON 庫相比,HandyJSON 的特點是歇竟,它支持純 Swift 類挥唠,使用也簡單抵恋。它反序列化時(把 JSON 轉(zhuǎn)換為 Model)不要求 Model從 NSObject 繼承(因為它不是基于 KVC 機制)焕议,也不要求你為 Model 定義一個 Mapping 函數(shù)。只要你定義好 Model 類弧关,聲明它服從 HandyJSON 協(xié)議盅安,HandyJSON 就能自行以各個屬性的屬性名為 Key,從 JSON 串中解析值世囊。

使用教程: https://github.com/alibaba/HandyJSON/blob/master/README_cn.md

獲取方式:(開源)

工具地址: https://github.com/alibaba/HandyJSON

十三别瞭、云上資源和應(yīng)用部署工具 EDAS Serverless

EDAS Serverless 一款基于 Kubernetes,面向應(yīng)用和微服務(wù)的 Serverless 平臺株憾。用戶無需管理和維護集群與服務(wù)器蝙寨,即可通過鏡像、WAR 包和 JAR 包嗤瞎,快速創(chuàng)建原生支持 Kubernetes 的容器應(yīng)用墙歪,同時支持 Spring Cloud 和 Dubbo 等主流微服務(wù)框架。

使用教程: https://help.aliyun.com/document_detail/102048.html

獲取方式:(公測期間免費)

工具地址: https://help.aliyun.com/document_detail/97792.html

十四贝奇、數(shù)據(jù)庫連接池 Druid

Druid 是 Java 語言下的數(shù)據(jù)庫連接池虹菲,它能夠提供強大的監(jiān)控和擴展功能。

使用教程: https://github.com/alibaba/druid/wiki/常見問題

獲取方式:(開源)

工具地址: http://central.maven.org/maven2/com/alibaba/druid/

十五掉瞳、Java 工具集 Dragonwell

Alibaba Dragonwell 是阿里巴巴內(nèi)部 OpenJDK 定制版 AJDK 的開源版本毕源, AJDK 為在線電商浪漠,金融,物流做了結(jié)合業(yè)務(wù)場景的優(yōu)化霎褐,運行在超大規(guī)模的址愿,100,000+ 服務(wù)器的阿里巴巴數(shù)據(jù)中心。 Alibaba Dragonwell 與 Java SE 標準兼容瘩欺,目前僅支持 Linux/x86_64 平臺必盖。

使用教程:https://github.com/alibaba/dragonwell8/wiki/阿里巴巴Dragonwell8用戶指南

獲取方式:(開源)

工具地址: https://github.com/alibaba/dragonwell8

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市俱饿,隨后出現(xiàn)的幾起案子歌粥,更是在濱河造成了極大的恐慌,老刑警劉巖拍埠,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件失驶,死亡現(xiàn)場離奇詭異,居然都是意外死亡枣购,警方通過查閱死者的電腦和手機嬉探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棉圈,“玉大人涩堤,你說我怎么就攤上這事》竹” “怎么了胎围?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長德召。 經(jīng)常有香客問我白魂,道長,這世上最難降的妖魔是什么上岗? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任福荸,我火速辦了婚禮,結(jié)果婚禮上肴掷,老公的妹妹穿的比我還像新娘敬锐。我一直安慰自己,他們只是感情好呆瞻,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布台夺。 她就那樣靜靜地躺著,像睡著了一般栋烤。 火紅的嫁衣襯著肌膚如雪谒养。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音买窟,去河邊找鬼丰泊。 笑死,一個胖子當著我的面吹牛始绍,可吹牛的內(nèi)容都是我干的瞳购。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亏推,長吁一口氣:“原來是場噩夢啊……” “哼学赛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吞杭,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盏浇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芽狗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绢掰,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年童擎,在試婚紗的時候發(fā)現(xiàn)自己被綠了滴劲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡顾复,死狀恐怖跪楞,靈堂內(nèi)的尸體忽然破棺而出荐绝,到底是詐尸還是另有隱情朋凉,我是刑警寧澤并淋,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站乙嘀,受9級特大地震影響末购,放射性物質(zhì)發(fā)生泄漏破喻。R本人自食惡果不足惜虎谢,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曹质。 院中可真熱鬧婴噩,春花似錦、人聲如沸羽德。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宅静。三九已至章蚣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姨夹,已是汗流浹背纤垂。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工矾策, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人峭沦。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓贾虽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吼鱼。 傳聞我的和親對象是個殘疾皇子蓬豁,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容