来源:InfoQ
文章来源:微信公众号 数据派THU
本文约6400字,建议阅读10+分钟。
工欲善其事必先利其器,善于利用各种开发工具同样可以事半功倍。
工欲善其事必先利其器,一个优秀的程序员除了代码写得好,善于利用各种开发工具同样可以事半功倍。以 BAT 为代表的各大厂程序员们在平时的工作中都用什么开发工具呢?我们盘点了大厂内部常用的开发工具,以供读者参考。本文涉及工具大部分为开源项目,大家可以按需选用。
阿里篇
一、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/help/productionDoc/project
三、腾讯敏捷协作平台 TAPD
TAPD 平台是腾讯敏捷研发体系十余年的发展成果,为产品研发全生命周期提供解决方案,支持敏捷需求规划、迭代计划跟踪、测试与质量保证、持续构建交付等全过程研发实践。TAPD 于 2017 年对外服务,目前已帮助超过 10 万家企业提升研发效能,实现数字化转型升级。
使用场景:
任务协作——适合不同场景的任务跟进
敏捷研发——一站式敏捷研发全生命周期管理
DevOps——一站式 DevOps 持续交付平台
企业级研发数据度量——助力企业衡量效能、持续改进
官网:
文档:
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 开源基金会。
使用场景:
高效支持后台服务的开发、部署、发布、运营、监控等;
提供一站式服务治理,包括服务注册发现、服务配置、负载均衡、过载保护、容灾容错等功能;
提供立体化监控平台,轻松获取流量、耗时、超时、异常、自定义等监控数据和历史曲线。同时可进行消息染色,从而做有针对性的监控。
开源地址:
轻量级服务注册发行容错方案 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://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
开源地址:
五、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/
开源地址:
六、Python 语言基础库——Cup
CUP 基础库是百度开源的 Python 语言基础库,致力将业务开发从涉及底层操作、Util 操作类解放出来,进而更关注构建上层业务逻辑。目前 CUP 已涵盖从零构建一个服务底层支持的各个方面。
使用场景:
使用 CUP 辅助从 0 到 1 构建一个 Service,特别是底层结构;
使用 CUP 作为 Utils 底层库协助业务代码开发。
使用教程:
开源地址:
七、一站式 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 日常里,有使用过以上哪款开发工具?你还觉得哪些开发工具对于程序员来说堪称神器?欢迎留言告诉我们!