本期主要根据自己经验给大家推荐在数据分析领域几款轻量小众,但实用精悍的工具。旨在帮助大家在工作学习当中提高效率。
Arthas(阿尔萨斯) 是 Alibaba 开源的一款 Java 在线诊断工具。首先看看 Arthas 可以给你带来什么。
1-1 Arthas官网用户文档
以上是官网的首页介绍,简单的话来说:就是在不重启应用的情况下达到排查问题的目的。
工作内容会涉及到Java开发的同学会知道,当我们要发布一个应用到线上环境时一般会经过一下几个步骤:
在这个过程当中,不管公司是否搭建一套规范的发布系统,从打包到发布实际上都需要花费一定的时间。
对于Java使用还不是很熟练的同学将本地代码打包发布到线上然后发现问题后又下线修改再发布,消耗的时间实则更多。
因此在不重启应用的情况下就排查到问题绝对是很多人的福音。
也许你经常会遇到这样的问题:
重新发布了Java应用到线上,此时从日志发现自己改的那行代码根本没有达到效果。
你怀疑是不是因为几分钟之前因为临时处理了另外一件事情,导致上传线上的Jar包并不是之前自己打好的新包,还是延用的旧版本。
有Arthas之后,其实你在线上只需要反编译一下对应的类即可。以Arthas自带测试类为例:
1-2 Arthas-反编译类
如上图,jad+类路径即可在线反编译类,毋需再有担心代码没提交重新上下线应用的烦恼。
Arthas的简单易用也体现在仪表盘。如下图:
1-2 Arthas-仪表盘
输入 dashboard(仪表板),就会展示当前进程的信息
【1】第一部分时显示 JVM中运行的所有线程:所在线程组,优先级,线程的状态,CPU占有率,是否是后台进程等;
【2】第二部分显示的 JVM内存的使用情况;
【3】第三部分是操作系统的一些信息和 Java版本号。
Arthas用watch+包名.类名+方法+返回值(OGNL表达式)命令来监视数的返回值。
例输入:watch demo.MathGame primeFactors returnObj。则返回如下图:
1-3 Arthas-列表
通过watch可以实时观察到我们关注的范围:返回值、抛出异常、入参。在问题复现排查等场景上作用颇大。
profiler 命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图。
命令基本运行结构是 profiler 命令 火焰图可以直观的分析代码占用cpu,内存,锁争用的情况。
1-3 Arthas-火焰图
如上图,在性能分析过程中,通过火焰图可以辅助自己对应用程序性能进行判断,定位哪些地方还有优化的空间。
当然,Arthas支持的功能远不止于此,大家有兴趣可以通过官网(https://arthas.aliyun.com/)继续探索。
相信大家接触也了解不少编辑器,比如EditPlus、UltraEdit、Notepad++等等。并且我一直用的是Notepad++,因为其轻便快捷一直吸引着我。
但直到我接触到Sublime Text,便有出类拔萃的感觉。说不定经过我的推荐你也会忍不住赶紧上手试试。
风格对于任何一个编辑器都相当重要。看上去简洁大气的编辑器一定会立马吸引用户的眼球。Sublime Text就是如此。
2-1 Sublime Text 界面
2-2 Notepad++ 界面
以上对比了Sublime Text和Notepad++的界面。可以看出来Sublime Text自带的深色风格(也可以调成浅色)与Notepad++完全不同。
如果是一名程序员大概率会毫不犹豫的选择Sublime Text的界面,因为你很少会看到一个程序员用的Idea或者Eclipse是浅色界面。更重要的一点是深色界面不会让人容易产生疲惫感(个人观点)。
作为一个编辑器,基本编辑功能自然要强大,Sublime Text就是如此。这里例举经常使用的编辑快捷键。
当然,Sublime Text的编辑快捷键远不止如此,更多的好玩高效的快捷键需每个人根据自己实际慢慢发掘。
Sublime Text 提供了强大的查找(和替换)功能。
比如,我们需要查找文中某个关键字出现的其它位置,这时并不需要重新将该关键字重新输入一遍然后搜索,我们只需要使用 Shift + ←/→ 或 Ctrl + D 选中关键字,然后 F3 跳到其下一个出现位置,然后快速替换。如图:
2-3 Sublime Text 查找&替换
当然我们也可以使用Alt + F3 选中其出现的所有位置然后快速替换。
Sublime Text 提供了强大的跳转功能使得我们可以在不同的文件/方法/函数中无缝切换。而现在很难有一款编辑器可以在这个方面超越Sublime Text,如下:
Ctrl + P 会列出当前打开的文件(或者是当前文件夹的文件),输入文件名然后 Enter 跳转至该文件。如下图:
2-4 Sublime Text 跳转到文件
Sublime Text 能够对代码符号进行一定程度的索引。Ctrl + R 会列出当前文件中的符号(例如类名和函数名,但无法深入到变量名)。如下图:
2-5 Sublime Text 跳转到符号
当然你的代码或者SQL运行在别处报错在多少行,你也可以利用Ctrl + G 然后输入行号以跳转到指定行,如下图:
2-6 Sublime Text 跳转到行数
Sublime Text的强大之处远不止如此,包括它以插件形式支持各种编程语言,自动补全,主题自定义,屏幕,窗口等都值得读者慢慢探索。这里就点到为止。
附上导读文档地址:https://docs.sublimetext.io/guide/getting-started/installation.html。
初入编程领域的小伙伴经常会遇到诸如此类的问题:
Beyond Compare能帮忙你快速定位到关注的问题,如下图:
3-1 Beyond Compare-文本比较示例
图中是作者引用Kafka源码的MemoryPool类稍加修改,将文本文件复制到Beyond Compare中进行比较。
如图中标识的1,2,3处都是文本存在差异的地方,工具会识别高亮显示。
1处主要的差异在大小写,工具会判定为不重要差异,并把差异部分置为蓝色;2处存在字符的不同,为重要差异,会被工具置红色;而3处因为只是空格直接的区别,因此只会被判定为不重要差异。
当然这个工具还有其他的一些功能,如图:
3-2 Beyond Compare首页
当然笔者主要是在一些非常规代码场景下用到文本比较功能。其他功能或许可以帮忙读者运用在其他场景当中,这里就不做更多介绍。
截图,是一个非常简单但又非常难以做到令人满意的需求。
如果只是单纯的截取屏幕上的内容,相信很多人会选择Windows 自带的 Snipping Tool 或者微信截图。
但是Snipaste这个截图工具说不定会给做数据同学带来眼前一亮的感觉。
利用Snipaste按下F1来开始截图, 选择“复制到剪贴板”,再按F3,截图就在桌面置顶显示了。
4-1 Snipaste 截图贴到屏幕上
图中的截图场景是在Excel的某个Sheet页,左边是Excel当中的数据,右边是用Snipaste截图并贴到屏幕。
这样的使用场景对于数据分析同学不少,因为数据源经常可能来自不同的地方,对于少量数据源的对比,用Snipaste截图进行对比非常适用。
当然Snipaste截图的亮点在于可以不断贴~
在做需求过程经常需要在读需求,做数据对比不断切换,就必然伴随的不断切换应用。
比如忘记需求则需要切换到Tapd上,对比不同数据引擎的计算结果时需要在两个引擎中来回切换。这张场景Snipaste截图可以帮你搞定
4-2 Snipaste 多截图贴到屏幕上
如上图,将需要的关键信息用Snipaste不断贴图的方式统一放在同一画面当中,便可轻松应对不断需要频繁切应用的烦恼。
当然,Snipaste 在截图后提供的标注工具也算得上全面而且强大。
它提供了非常丰富的标注类型,包括方框、椭圆框、连续线段、箭头、画笔、记号笔、文本、马赛克、模糊等 9 种工具。
4-2 Snipaste标注|引用自官方
4-3 Snipaste标注|引用自官方
上面两图引自官方,可以说功能齐全,开发者花了很多心思。
Snipaste的轻量级以及易上手的特点也能立刻提升你的工作效率。有兴趣的同学可以继续探索,附上官网地址:https://www.snipaste.com/
正如所起的名字一样,Everything是 Windows 上一款搜索引擎,它能够基于文件名快速定位文件和文件夹位置。
不像 Windows 内置搜索,"Everything" 默认显示电脑上每个文件和文件夹 (就如其名 "Everything")。
做数据开发免不了跟Excel经常打交道,因为应对各业务端要数据是很常见的事情。
这对于经常忘记文件地址苦于用Windows文件系统内置搜索的同学来说,绝对算是个福音。如图:
5-1 Everything-全局搜索示例
Everything可以在秒级别内快速响应并轻松定位到你想要搜索的文档。
Everything特点明显
这里也给出官网地址:https://www.voidtools.com/zh-cn/。供大家继续探讨。