点击上方“芋道源码”,选择“设为星标”
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 10:33 更新文章,每天掉亿点点头发...
源码精品专栏
01、起因
朋友遇到个问题,我的回答是这样的:
本来以为这样就结束了,其实才刚刚进入正题;
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
02、问题原因定位
朋友把文件下载下来:
文件好大,这么大的文件咋统计出来是哪类线程最多呢?这就到了妥妥的文本处理内容了(关键时候这类文本命令可以帮助提供非常多的效率);
我们打开文本看看内容:
一共有 80 万行,我们来看下规律:
每个线程的开始都是" 开头,我们仅仅是需要获取线程名即可,那么就简单了,不是的" 开头都删除即可;
输入命令:
:v/"/d
之后效果:
80 万的文件仅仅只剩 6.66 万行了,每一行都是一个线程,我们需要提取线程名称进行排序:
发现规律线程名称就是"线程名称" 被(双引号包围的)
输入命令:
cat jstack.txt| awk -F '"' '{print $2}'>thread.txt
那么我们通过 awk 进行操作;
我们发现确实获取到了线程名称了,但是线程名称后面有后缀,我们需要把后缀给去掉,因为他们都是一类,等会我们还需要汇总统计的;
那么这个时候正则表达式就要起作用了,
输入命令:
:%s#\d\+$##g
执行效果如下:
接下来就简单了,进行排序,之后获取重复次数的计数即可统计了;
输入命令:
cat thread.txt|sort |uniq -c |sort -nr |head -10
效果如下:
到这里我们就基本知道是哪个线程了,接下来的事情就比较简单了,告诉朋友,朋友很快就定位解决了;
基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
项目地址:https://github.com/YunaiV/onemall
03、总结
文本类的处理,还是需要熟悉的,很多时候排查定位问题还是需要这类技能的,希望今天的这个案例可以让你有所收获
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)





被折叠的 条评论
为什么被折叠?



