普通码农一枚,分享一下自己最常使用的几个效率生产工具。
目前还没看到神级程序员的回答,问题先码一下,坐等神级程序员。
下面本人抛砖引玉的回答:
1、
关于架构设计和系统设计:会推荐几个自己常用的画图工具,这类工具可以帮助理清楚思路;
2、
推荐8个实用的环境工具:工欲善其事必先利其器;
3、
推荐7个优秀的开源项目:内功修炼得好,写代码效率自然提高。
一、架构设计&系统设计
写代码前做好系统分析设计,会使得进入编码阶段后代码思路比较清晰、避免返工、以及良好的实现团队结对编程。
画图工具-UML类图、架构图、流程图、时序图等等。
推荐工具:Visual paradigm、OmniGraffle、ProcessOn、ppt、PlantUml。
俗话说,一图胜千言,图即是代码的指导思路。
如下是示例功能流程图和数据流程图:
如下是Flink的时间戳分配器类图:
Flink架构图:
另外,关于系统设计再推荐一本备受好评的神书:《数据密集型应用系统设计(DDIA:Design Data Intensive Application)》。
这本书在各大网站的评价非常高。
Amazon:
Googlereads:
那么它到底是一本什么样的书呢?
现今,尤其是在互联网领域,大多数应用都属于数据密集型应用。本书从底层数据结构到顶层架构设计,将数据系统设计中的精髓娓娓道来。理论结合实践,给出了很多实际场景中遇到的问题以及应对方案,能让人少走很多弯路。
涵盖了分布式系统设计的方方面面,复杂的事情深入浅出,浅显易懂。另外书后给出了很多参考论文资料。
二、环境工具
1、Git
版本控制工具,不仅是代码,文档之类的也需要常做版本以及备份,防止重要资料丢失。
2、多显示器
我一般平台用3个显示器:一个用来显示线上系统的运行状态的监控、一个用来看文档、一个用来敲代码。还有就是机械键盘。
3、信息搜索
- google(非百度,不要怕看不懂英文)
- Stack Overflow:上面高手如云,而且非常热心。
- github
- 各个项目的官方手册(MySQL、Flink、Redis等等,官方文档是最权威最新的资料)
- https://www.coursera.org/
- http://www.programcreek.com/
4、Alfred
超级好用的查询和搜索工具:
5、VIM
VIM用熟练后,完全可以脱离鼠标,并且效率提高几倍。
6、笔记工具
推荐onenote,随时随地记录自己的想法和总结。
7、postman
非常好用的http请求调试工具。
8、文档编辑
推荐MacDown:一款优秀的mac平台的markdown编辑,客户端贼好用。
三、内功修炼
多看优秀开源项目的代码,尽量参与进去,不论是maillist、QQ/钉钉群组等等,可以尝试从编写文档、写测试用例开始入手,逐步切入核心功能。
参与优秀的开源项目可以和业界优秀的程序员大神一起结对编程,开阔思路,掌握优秀的代码编写风格、设计模式和技巧。
在此推荐几个业界有名的优秀的开源项目:
1、Redis:Redis
Redis的性能极高且拥有丰富的数据类型,同时,Redis所有操作都是原子性的,也支持对几个操作合并后原子性的执行。另外,Redis有丰富的扩展特性,它支持publish/subscribe, 通知,key 过期等等特性。 Redis更为优秀的地方在于,它的代码风格极其精简,整个源码只有23000行,很有利于阅读和赏析。
2、RocketMQ:Apache RocketMQ
阿里巴巴开源的消息中间件,久经双11大促流量洪峰考验。
3、Flink:Stateful Computations over Data Streams
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和管道方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。
Flink提供高吞吐量、低延迟的流数据引擎以及对事件-时间处理和状态管理的支持。Flink应用程序在发生机器故障时具有容错能力,并且支持exactly-once语义。程序可以用Java、Scala、Python和SQL等语言编写,并自动编译和到在集群或云环境中运行的数据流程序。
4、Google guava:Google提供的java库函数,guava cache和guava限流的实现很有参考价值。
5、sharding-jdbc:数据库分库分表、读写分离的一个中间件。
6、RxJava:java平台的Reactive 扩展。
7、Spring:这就不解释了。
最后再推荐几个优秀的前沿信息来源:
- infoq
- 《美团技术博客》
- 公众号-阿里技术
- 公众号-高可用技术
- 业界有名的会议:archsummit 架构师大会、flink forward
文末再贴几个我的其他回答,可能会有你需要的:
整理的Java从入门到进阶的书籍阅读顺序,已经2400+赞和收藏,是知乎的热门内容:
关于JAVA的书籍最佳阅读顺序,大家有什么建议?586 赞同 · 43 评论回答
总结的本人在校期间C++的学习路径,感兴趣的可以看看:
想学习C++,应该怎么开始入手?64 赞同 · 11 评论回答
给计算机专业大一新生的一些肺腑建议:
有哪些给计算机科学与技术专业大一新生的建议?769 赞同 · 87 评论回答
答者:如下图
开发工具
SourceTree
如果你习惯使用命令行操作 Git,请忽略。
SourceTree 是非常好用的 Git 图形界面工具,它是由Atlassian开发的免费Git图形界面工具,可以操作任何 Git 库。
官网地址:https://www.sourcetreeapp.com/
Charles
最好用的抓包工具。 Charles 是一个支持多平台的 HTTP 代理器、HTTP 监控、反向代理器。它能够让开发者查看本地机器与互联网之间的所有 HTTP 以及 SSL/HTTPS 传输数据。
官网地址:https://www.charlesproxy.com/
iTerm2
对于需要长期与终端打交道的工程师来说,拥有一款称手的终端管理器是很有必要的,对于 MacOS 用户来说,仍然毋庸置疑,iTerm2 就是你要的利器,如果你觉得不是,那是你的问题,不是 iTerm2 的问题。
官网地址:https://iterm2.com/
只上一张效果图,大家感受一下吧
Apifox
最好用的接口管理神器,没有之一,秒杀市面上所有同类产品。
Apifox 是 API 文档、调试、Mock、测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter
。
通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确!
更多介绍看这里:《是时候扔掉 Postman 了,Apifox 真香!》
官网地址:https://www.apifox.cn/
FeHelper
FeHelper是 Web 开发者助手,目前包括 JSON自动/手动格式化、JSON内容比对、代码美化与压缩、信息编解码转换、二维码生成与解码、图片Base64编解码转换、Markdown、 网页油猴、网页取色器、脑图(Xmind)等贴心工具,甚至在目前新版本的FeHelper中,还集成了FH开发者工具, 如果你也想自己搞一个工具集成到FeHelper中,那这一定能满足到你。
官网地址:https://www.baidufe.com/fehelper/index/index.html
Navicat
最好用的数据库管理工具,没有之一。我们 Apifox 团队都用这个工具管理数据库。 Navicat 是一个可多重连接的数据库管理工具,它可以连接到 MySQL、Oracle、PostgreSQL、SQLite、SQL Server 和/或 MariaDB 数据库,让数据库管理更加方便。
CodeLF
变量命名神器。CodeLF 通过搜索在线开源平台Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Projec的项目源码,帮开发者从中找出已有的匹配关键字的变量名。
官网地址:https://unbug.github.io/codelf
http://Coding.net
腾讯全资子公司,项目管理工具,提供一站式开发协作工具,帮助研发团队快速落地敏捷开发与 DevOps 开发方式,实现研发效能升级。 我们团队(Apifox)一直用 Coding 来管理项目,做 CI/CD 持续集成等。顺便说下我们的软件升级包都是放在 Coding 制品库的,免 CDN 费,薅腾讯羊毛,不用白不用。
官网地址:https://coding.net/
日常工具
Typora
Typora 是一款支持实时预览的 Markdown 文本编辑器。看到Typora的第一眼,我就爱上了它。它没有专业软件那么复杂而难以上手的功能,却也没有为了简洁而妥协到难以使用,它的每一寸肌肤都恰到好处,与它相处的每一刻都十分愉悦。
Apifox 的帮助文档就是用 Typora 写的。
官网地址:https://www.typora.io
MdNice
我现在正在用 MdNice 写当前这篇文章。
Markdown Nice(简称 MdNice )是一款样式丰富的Markdown 编辑器,同时支持微信公众号、知乎和稀土掘金等平台的文章排版(能用富文本编辑器写文章的平台基本都支持)。 MdNice支持多达20种样式,支持多达20种样式,总有一款适合你!
官网地址:https://editor.mdnice.com/
Parallel Desktop
Mac系统最强虚拟机!有的软件没有 Windows 版本,或多或少需要一个虚拟机安装其他系统。
官网地址:https://www.parallels.cn/
Alfred
这个我觉得根本无需介绍,神器,使用 macOS 的同学应该都知道。一句话来说就是,Alfred 是 macOS 上神级的效率应用,能够在实际操作中大幅提升工作效率。
官网地址:https://www.alfredapp.com/
uTools
uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。
官网地址:https://u.tools/
SwitchHosts
SwitchHosts是一个管理、快速切换Hosts小工具,开源软件,一键切换Hosts配置,非常实用,高效。开发Web过程成,部署有多套环境,网址域名都相同,部署在不同的服务器上,有开发环境、测试环境、预发布环境、生产环境。经常要切换 Hosts 来访问,测试以及验证 bug,如果纯手工修改这会花掉不少时间。
官网地址:https://github.com/oldj/SwitchHosts