作者丨InfoQ編輯部
工欲善其事必先利其器,一個優秀的程序員除了代碼寫得好,善於利用各種開發工具同樣可以事半功倍。以 BAT 為代表的各大廠程序員們在平時的工作中都用什麽開發工具呢?InfoQ 編輯部盤點了大廠內部常用的開發工具,以供讀者參考。本文涉及工具大部分為開源項目,大家可以按需選用。
阿里篇
一、Java 線上診斷工具 Arthas
Arthas 是阿里巴巴 2018 年 9 月開源的一款 Java 線上診斷工具。
使用場景:
這個類從哪個 jar 包加載的?為什麽會報各種類相關的 Exception?
我改的代碼為什麽沒有執行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
是否有一個全局視角來查看系統的運行狀況?
有什麽辦法可以監控到 JVM 的實時運行狀態?
Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,採用命令行互動模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。
使用教程:
基礎教程:
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
二、IDE 插件 Cloud Toolkit
Cloud Toolkit 是一款 IDE 插件,可以幫助開發者更高效地開發、測試、診斷並部署應用。通過 Cloud Toolkit,開發者能夠方便地將本地應用一鍵部署到任意機器(本地或雲端),並內置 Arthas 診斷、高效執行終端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。
使用場景:
每次修改完代碼後,是否正在經歷反覆地打包?
在 Maven 、Git 以及其他運維腳本和工具的之間頻繁切換?
採用 SCP 工具上傳?使用 XShell 或 SecureCRT 登陸伺服器?替換部署包?重啟?
文件上傳到伺服器指定目錄,在各種 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
三、混沌實驗注入工具 ChaosBlade
ChaosBlade 是一款遵循混沌工程實驗原理,提供豐富故障場景實現,幫助分布式系統提升容錯性和可恢復性的混沌工程工具,可實現底層故障的注入,提供了延遲、異常、返回特定值、修改參數值、重複調用和 try-catch 塊異常等異常場景。
使用場景:
微服務的容錯能力不易衡量?
容器編排配置是否合理無法驗證?
PaaS 層健壯性的測試工作無從入手?
使用教程:
https://github.com/chaosblade-io/chaosblade/wiki/ 新手指南
開源地址:
https://github.com/chaosblade-io/chaosblade/wiki/ 新手指南
四、Java 代碼規約掃描插件
該插件用於檢測 Java 代碼中存在的不規範的位置,並給予提示。規約插件是採用 Kotlin 語言開發。
使用教程:
IDEA 插件使用文檔:
https://github.com/alibaba/p3c/wiki/IDEA 插件使用文檔
Eclipse 插件使用文檔:
https://github.com/alibaba/p3c/wiki/Eclipse 插件使用文檔
開源地址:
https://github.com/alibaba/p3c
五、解決 Kubernetes 上應用自動化問題工具 OpenKruise
Kruise 的核心是自動化,從不同維度解決 Kubernetes 之上應用的自動化問題,包括部署,升級,彈性擴縮容,Qos 調節,健康檢查,遷移修複等。此次,Kruise 開源的內容主要在應用部署,升級方面,即一套增強版 controller 組件用於應用的部署和級和運維。後續,Kruise 會依次開源智能化的彈性擴縮容組件,以及應用 Qos 自調節能力的組件等。
開源地址:
https://github.com/openkruise/kruise
六、靜態開源站點搭建工具 Docsite
Docsite 是一款集官網、文檔、部落格和社區為一體的靜態開源站點的解決方案,具有簡單易上手、上手不撒手的特質,同時支持 react 和靜態渲染、PC 端和移動端、支持中英文國際化、SEO、markdown 文檔、全局站點搜索、站點風格自定義、頁面自定義等功能。
使用教程:
https://docsite.js.org/zh-cn/docs/installation.html
開源地址:
https://github.com/txd-team/docsite
七、Android 平台上的秒級編譯方案 Freeline
Freeline 可以充分利用緩存文件,在幾秒鐘內迅速地對代碼的改動進行編譯並部署到設備上,有效地減少了日常開發中的大量重新編譯與安裝的耗時。Freeline 最快捷的使用方法就是直接安裝 Android Studio 插件。
使用教程:
https://github.com/alibaba/freeline/blob/master/README-zh.md
開源地址:
https://github.com/alibaba/freeline
八、架構可視化工具 AHAS
AHAS 為 K8s 等容器環境提供了架構可視化的功能,同時,具有故障注入式高可用能力評測和一鍵流控降級等功能,可以快速低成本的提升應用可用性。
使用場景:
服務化改造過程中,想精確的了解資源實例的構成和互動情況,實現架構的可視化?
想引入真實的故障場景和演練模型?
低門檻獲得流控、降級功能?
使用教程:
https://help.aliyun.com/document_detail/90323.html
工具地址:
https://www.aliyun.com/product/ahas
九、數據處理工具 EasyExcel
EasyExcel 是一個用來對 Java 進行解析、生成 Excel 的框架,它重寫了 poi 對 07 版 Excel 的解析,原本一個 3M 的 Excel 用 POI sax 需要 100M 左右記憶體,EasyExcel 可降低到 KB 級別,並且再大的 excel 也不會出現記憶體溢出的情況。03 版依賴 POI 的 sax 模式。在上層做了模型轉換的封裝,讓使用者更加簡單方便。
使用教程:
https://github.com/alibaba/easyexcel/blob/master/quickstart.md
開源地址:
https://github.com/alibaba/easyexcel
十、iOS 類工具 HandyJSON
HandyJSON 是一個用於 Swift 語言中的 JSON 序列化 / 反序列化庫。與其他流行的 Swift JSON 庫相比,HandyJSON 的特點是,它支持純 Swift 類,使用也簡單。它反序列化時 (把 JSON 轉換為 Model) 不要求 Model 從 NSObject 繼承 (因為它不是基於 KVC 機制),也不要求你為 Model 定義一個 Mapping 函數。只要你定義好 Model 類,聲明它服從 HandyJSON 協議,HandyJSON 就能自行以各個屬性的屬性名為 Key,從 JSON 串中解析值。
使用教程:
https://github.com/alibaba/HandyJSON/blob/master/README_cn.md
開源地址:
https://github.com/alibaba/HandyJSON
十一、Java 工具集 Dragonwell
Alibaba Dragonwell 是阿里巴巴內部 OpenJDK 定製版 AJDK 的開源版本, AJDK 為在線電商,金融,物流做了結合業務場景的優化,運行在超大規模的,100,000+ 伺服器的阿里巴巴數據中心。Alibaba Dragonwell 與 Java SE 標準兼容,目前僅支持 Linux/x86_64 平台。
使用教程:
https://github.com/alibaba/dragonwell8/wiki/ 阿里巴巴 Dragonwell8 用戶指南
開源地址:
https://github.com/alibaba/dragonwell8
騰訊篇
一、Web 開發基礎樣式庫 WeUI
WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信 Web 開發量身設計,可以令用戶的使用感知更加統一。包含 button、cell、dialog、 progress、 toast、article、actionsheet、icon 等各式元素。
使用文檔:
https://github.com/Tencent/weui/wiki
開源地址:
https://github.com/Tencent/Weui
二、騰訊 Git 代碼管理平台『工蜂』
騰訊工蜂是騰訊研發管理部自主研發的 Git 託管代碼平台,服務騰訊內部數萬名研發工程師,是騰訊內部使用範圍最為廣泛的工程效率工具;在滿足基本開發協作能力的基礎上,工蜂也提供了可定製化的 CodeReview、開源協作和研發度量能力。
使用場景:
企業內部研發管理、開發協作;
企業內部開源項目管理、協同共享;
微信小程序版本開發;
高校實驗室,教學場景等
官網和文檔:
官網:
https://code.tencent.com/
文檔:
https://code.tencent.com/help/productionDoc/project
三、騰訊敏捷協作平台 TAPD
TAPD 平台是騰訊敏捷研發體系十餘年的發展成果,為產品研發全生命周期提供解決方案,支持敏捷需求規劃、迭代計劃跟蹤、測試與質量保證、持續構建交付等全過程研發實踐。TAPD 於 2017 年對外服務,目前已幫助超過 10 萬家企業提升研發效能,實現數字化轉型升級。
使用場景:
任務協作——適合不同場景的任務跟進
敏捷研發——一站式敏捷研發全生命周期管理
DevOps——一站式 DevOps 持續交付平台
企業級研發數據度量——助力企業衡量效能、持續改進
官網和文檔:
官網:
https://www.tapd.cn/
文檔:
https://www.tapd.cn/help#page-wikidoc
四、一站式 DevOps 研發平台:騰訊 CI 平台(藍盾)
藍盾(bk-ci)是一個開源的持續集成和持續交付系統,從業務安全出發,貫穿產品研發、測試和運營的全生命周期;助力業務平滑過渡到敏捷研發模式,打造一站式研發運營體系,持續快速交付高質量的產品。目前服務於騰訊 10000+ 開發人員,現已成為騰訊公司指定的 CI 平台。另外,也是獲得行業至今為止唯一一個 4 級認證的 DevOps 標準。藍盾提供了流水線、代碼庫、憑證管理、環境管理、研發商店 5 大核心服務,多重組合,滿足企業不同場景的需求。
使用場景:
工程編譯
靜態代碼檢查
運行測試用例,及時發現 BUG
部署與發布
開源地址:
https://github.com/Tencent/bk-ci
五、高性能、多語言的微服務治理框架 Tars
Tars 是騰訊將其內部使用的微服務框架 TAF(Total Application Framework)多年的實踐成果總結而成的開源項目,在騰訊內部有上百個產品使用,服務內部數千名 C++、Java、Golang、Node.Js 與 PHP 開發者。其包含一整套開發框架與管理平台,兼顧多語言、易用性、高性能與服務治理,理念是讓開發更聚焦業務邏輯,讓運營更高效。目前騰訊有 160 多個業務(如 QQ 瀏覽器、手機 QQ、手機遊戲、應用寶、微視、天天快報等)在 10 萬台伺服器上使用 TARS。2017 年,Tars 在 GitHub 開源,目前 TarsCloud 擁有將近一萬 star。2018 年,Tars 項目被捐獻給 Linux 開源基金會。
使用場景:
高效支持後台服務的開發、部署、發布、運營、監控等;
提供一站式服務治理,包括服務注冊發現、服務配置、負載均衡、過載保護、容災容錯等功能;
提供立體化監控平台,輕鬆獲取流量、耗時、超時、異常、自定義等監控數據和歷史曲線。同時可進行消息染色,從而做有針對性的監控。
開源地址:
https://github.com/tarsCloud
輕量級服務注冊發行容錯方案 TSeer
TSeer 是一套裝務注冊發現容錯方案,是對 TARS 名字服務功能的輕量化,對業務侵入性低,並且提供 Web 管理平台。在騰訊內部眾多業務中廣泛採用,目前日均承載百億級的請求量。
開源地址:
https://github.com/Tencent/tseer/
分布式 NoSQL 存儲系統 DCache
DCache 是一個基於 TARS 框架開發的分布式 NoSQL 存儲系統,數據採用記憶體存儲,支持連接後端 DB 實現數據持久化。DCache 採用集群模式,具有高擴展、高可用的特點。DCache 在騰訊內部有大量業務使用,日訪問總量超兆次。
開源地址:
https://github.com/tencent/dcache
六、小程序組件化開發框架 WePY
WePY 項目啟動於 2017 年 11 月份, 是小程序最早的框架之一,是一款讓小程序支持組件化開發的框架,通過預編譯的手段讓開發者可以選擇自己喜歡的開發風格去開發小程序。框架的細節優化,Promise,Async Functions 的引入都是為了能讓開發小程序項目變得更加簡單,高效。
使用場景:
使用 Vue Observer 實現數據綁定
支持 Vue watch/computed/mixin 等特性
基於原生組件實現組件化開發
支持 TypeScript
開源地址:
https://github.com/Tencent/wepy
七、騰訊自動化測試中台 QTA
QTA 是面向多種平台(包括 Android、iOS、Windows、MacOS、Web、小程序、後台服務和雲原生應用等)的自動化測試服務平台,致力於幫助業務研發團隊開展和落地自動化測試,提供包括自動化測試用例管理和數據分析、分布式測試執行、線上測試報告和數據可視化、測試執行度量分析、測試資源管理等功能。
QT4A,UI 自動化測試 for Android:
https://github.com/Tencent/QT4A
QT4i,UI 自動化測試 for iOS:
https://github.com/Tencent/QT4i
QT4W,UI 自動化測試 for Web:
https://github.com/Tencent/QT4W
八、微信跨平台跨業務基礎組件 Mars
Mars 是微信官方的終端基礎組件, 是一個業務性無關, 平台性無關,使用 C++ 編寫的基礎組件。目前已接入微信 Android、iOS、Mac、Windows、WP、UWP 等客戶端。Mars 是一個結合移動 App 所設計的基於 socket 層的解決方案,在網絡調優方面有更好的可控性,Mars 在微信用的應用場景主要是:普通 CGI 請求類似收發消息收發語音,業務 CGI 支付請求等。
開源地址:
https://github.com/Tencent/Mars
百度篇
一、主打 C++ 平台下的高性能 RPC 框架 baidu-rpc
baidu-rpc (簡稱 brpc) 是一款主打 C++ 平台下的高性能 RPC 框架,它上手簡單,擴展性上限又很高,同時還具備完善的運維和調試接口。目的是構建一套百度內統一的 RPC 框架,那麽靈活的擴展性就是最基礎的需求。Baidu-rpc 在實現過程中非常注重機制與策略分離,支持了百度內使用的大部分 RPC 協議,方便無縫遷移業務到 baidu-rpc。除了協議之外,將名字服務、負載均衡和認證也採用了具體 policy 實現,比如 bns 名字服務、rr 負載均衡。
使用場景:
搭建能被百度內所有協議訪問的服務,包括但不限於:標準協議,hulu-pbrpc,sofa-pbrpc,nova-pbrpc,public-pbrpc,ubrpc 和所有使用 nshead 的協議,http 和 https, 其中 json 可自動轉化為 protobuf 消息;
訪問百度內所有的服務,包括但不限於:標準協議,hulu-pbrpc,sofa-pbrpc,nova-pbrpc,public-pbrpc,ubrpc(包括 idl 或裸用 mcpack/compack),http(baidu::rpc::Channel 可以代替 curl);
通過 HTTP 調試服務,或用 pprof 在線采樣服務的性能;
獲得更好的延時和吞吐。
開源地址:
https://github.com/apache/incubator-brpc
二、高度個性化定製的數據可視化圖表 Echarts
ECharts 是一個純 Javascript 的圖表庫,兼容當前絕大部分瀏覽器(IE6/7/8/9/10/11,chrome,firefox,Safari 等),底層依賴輕量級的 Canvas 類庫 ZRender ,提供直觀生動、可互動、可高度個性化定製的數據可視化圖表。從而增強用戶對數據進行挖掘和整合的能力,揭示出隱藏在數據背後的價值。
使用場景:
使用 Canvas 或者 SVG 渲染;
在圖表中支持無障礙訪問;
使用 ECharts GL 實現基礎的三維可視化;
在微信小程序中使用 ECharts;
多種數據格式無需轉換直接使用。
官網地址:
https://echarts.apache.org
開源地址:
https://github.com/apache/incubator-echarts
三、深度學習平台飛槳(PaddlePaddle)
飛槳(PaddlePaddle)是百度自主研發、集深度學習訓練和預測框架、模型庫、工具組件、服務平台等為一體的開源深度學習平台。目前 PaddlePaddle 開源了 60 多個經過真實業務場景驗證的官方模型,涵蓋視覺、NLP、語音和推薦等 AI 核心技術領域。
使用場景:
研究新的 AI 算法等深度學習技術;
利用深度學習技術解決業務問題,例如百度地圖的精準時間預估,百度 Feed 的視頻完全自動分類,中國科學院遙感與數字地球研究所的基於遙感影像的目標地物檢測,領邦智能的快速完成不同零件質檢的業務落地,北京林業大學的 AI 識蟲達到專業人士識別準確率且檢測周期從兩周縮短至一個小時等等;
學習提升。
使用指南:
http://paddlepaddle.org/documentation/docs/zh/1.4/user_guides/index_cn.html?from=paddlenav
API 文檔:
http://paddlepaddle.org/documentation/docs/zh/1.4/api_cn/index_cn.html?from=paddlenav
開源地址:
https://github.com/PaddlePaddle
四、基於 json 生成 MIS 頁面的前端工具 amis
amis 是百度 2019 年 4 月開源的一款基於 json 生成 MIS 頁面的前端工具,目前已用於內部 amis 平台,結合可視化工具及後端服務,大大縮減了各類管理系統的開發成本,目前平台內部已累計創建了 1.4w+ 頁面,每天有 2700 人在使用。
使用場景:
可快速生成各種增刪改查頁面,直接配置接口和需要展示的資料欄信息即可;
要做複雜的表單驗證?直接配置規則就可以;
當然還集成圖表功能,用來做帶管理功能的報表系統也很適合。
使用教程:
https://baidu.github.io/amis/docs/getting-started
開源地址:
https://github.com/baidu/amis
五、MVVM 的組件框架 San
San 是一個 MVVM 的組件框架,它體積小巧(15K)、兼容性好(IE6)、性能卓越、使用靈活。組件是 San 的基本部門,是獨立的數據、邏輯、視圖的封裝單元。從頁面角度看,組件是 HTML 元素的擴展;從功能模式角度看,組件是一個 ViewModel。San 組件提供了完整的生命周期,與 WebComponent 的生命周期相符合。組件間是可嵌套的樹形關係,完整的支持了組件層級、組件間的通信,方便組件間的數據流轉。San 的組件機制,可以有效支撐業務開發上的組件化需求,對各種類型的 Web 應用場景都有較強的適應性。
使用場景:
傳統 Web 頁面,部分區域需要在當前頁面中響應用戶操作;
單頁 Web 應用;
基於 Node.js 的服務端渲染;
同構 Web 應用。
使用教程:
https://baidu.github.io/san/tutorial/start/
開源地址:
https://github.com/baidu/san
六、Python 語言基礎庫——Cup
CUP 基礎庫是百度開源的 Python 語言基礎庫,致力將業務開發從涉及底層操作、Util 操作類解放出來,進而更關注構建上層業務邏輯。目前 CUP 已涵蓋從零構建一個服務底層支持的各個方面。
使用場景:
使用 CUP 輔助從 0 到 1 構建一個 Service,特別是底層結構;
使用 CUP 作為 Utils 底層庫協助業務代碼開發。
使用教程:
開源地址:
https://github.com/baidu/CUP
七、一站式 DevOps 解決方案百度效率雲
百度效率雲是由百度工程效能部自主研發的一站式 DevOps 解決方案,在百度內部每天服務 10000+ 工程師、產品經理的研發協作;每天執行 70000+ 次的構建、30000+ 次的持續集成;每周清掃 3000+ 的代碼高危漏洞。
百度效率雲包括四大平台: 專注產品和項目管理的 icafe 平台,專注代碼託管和協同開發的 icode 平台,專注 CI/CD 的 ipipe 平台以及構建產物管理平台 iRepo。
使用場景:
企業內部的軟體研發管理,企業間項目協同;
高校實驗室,教學場景;
雲原生應用開發;
AI 服務應用開發;
代碼安全掃描、漏鬥掃描。
使用教程:
文檔:
https://cloud.baidu.com/doc/XLY/index.html
視頻:
http://abcxueyuan.cloud.baidu.com/#/course_detail?id=14927&courseId=14927
工具地址:
https://cloud.baidu.com/product/xly.html
結 語
程序員的世界裡,語言多,框架更多,想要從多如牛毛的開發工具中找到好用的輪子並不容易。通過本文,我們盤點了 BAT 大廠程序員們常用的開發工具,這其中不少工具也已開源,你可以很方便地在 GitHub 上找到這些工具並下載使用。
在你的 coding 日常裡,有使用過以上哪款開發工具?你還覺得哪些開發工具對於程序員來說堪稱神器?歡迎留言告訴我們!
點個在看少個 bug