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