IntelliJ IDEA 2017.1 EAP与异步堆栈跟踪调试器扩展_ideal 调试 completablefuture-程序员宅基地

技术标签: java  调试  idea  异步  

20170214IntelliJ IDEA 2017.1 EAP与异步堆栈跟踪调试器扩展

作者钉钉用户名:

@Li Zhang

封面配图:

文章摘要:

反应性编程趋势后,我们的代码越来越异步。

文章正文:

早些时候java8介绍了CompletableFuture(采用Guava’s ListenableFuture),通过Akka, Ratpack, Reactor, RxJava, Vert.x以及其它库实现反应流。虽然反应性编程能帮助我们构建高效的应用程序,但是它们同时也是难以编写、调试。
如下方示例:

如果我们将堆栈根据一个观察点看起来会这样:

我们通过调用CompletableFuture.supplyAsync (S2_Creating.supplyAsync)来看ForkJoinPool.runWorker(一个执行者服务异步运行代码)和所有的内部,这使得该数据流难以理解并很难导航到相关连接到。

IntelliJ IDEA 2017.1带有一个新的调试器(捕获),这改变了堆栈跟踪相关各部分用异步代码执行(接收器)与相应地区的堆栈跟踪捕获的异步代码传递(发送方)。

IntelliJ IDEA的该特性只需要知道将确切的签名方法用于发送和接收数据(异步代码)。

以下是IntelliJ IDEA在设置中如何配置该调试器(Settings > Build, Execution, Deployment > Debugger > Capture)

一旦所有的需求被满足后,IntelliJ IDEA将显示堆栈跟踪调整:

如果要更好的清晰度,可以设置过滤掉库框架:

堆栈跟踪显示局部变量替换的部分(虽然没有对象字段):

需要知道的是该特性在执行期间会收集额外的数据从而可能导致性能问题。

作者信息:

原文作者Andrey Cheptsov
原文链接:https://dzone.com/articles/intellij-idea-20171-eap-extends-debugger-with-asyn
翻译来与Maxleap团队_云服务研发成员:Sunny Zhang

关键词信息:

性能测试
java
IDEA开发工具

文章分类:

测试开发
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangyu_h321/article/details/55102085

智能推荐

python字符串设置字体_Python字符串的操作-程序员宅基地

文章浏览阅读320次。默认以此为事例:name = "my name is fix zhang"1、首字母大写print(name.capitalize())结果:My name is fix zhang2、统计字符串中的数量print(name.count("a"))结果:23、自动补全剩余字符,文字位于中间print(name.center(50,"-"))结果:---------------my name is ..._python如何把字符串转成font可操作

回归三大评价指标均方误差(MSE):均方根误差(RMSE)平均绝对误差(MAE)平均绝对百分比误差 MAPE-程序员宅基地

文章浏览阅读7.4w次,点赞30次,收藏277次。对于回归预测结果,通常会有平均绝对误差、平均绝对百分比误差、均方误差等多个指标进行评价。这里,我们先介绍最常用的3个目录平均绝对误差(MAE)均方误差(MSE):均方根误差(RMSE)​平均绝对百分比误差 MAPE平均绝对误差(MAE)MAE 的值越小,说明预测模型拥有更好的精确度。The MAE is used to measure the average abso...

什么是RSS?-程序员宅基地

文章浏览阅读1.1k次。相对于BLOG来说,RSS的知名度相应会低很多,而且至今还没有一个非常贴切的中文词汇,也许以后无需中文名,大家都习惯于直接叫RSS了。RSS之所以同BLOG一样会被认为是热门词汇的一个原因,个人推测,应该是许多分析人士认识到RSS将要对互联网内容的浏览方法所产生的巨大影响。  RSS是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成

Linux Debian9安装Go_debian 安装go1.12-程序员宅基地

文章浏览阅读954次。介绍Go,也称为golang,是由Google开发的一种现代开源编程语言。Go在许多应用程序中越来越受欢迎,它采用极简主义的开发方法,帮助您构建可靠,高效的软件。本教程将指导您下载和安装Go,以及在Debian 9服务器上编译和执行基本的“Hello,World!”程序。先决条件要完成本教程,您需要访问Debian 9服务器和具有sudo权限的非root用户,如使用Debia..._debian 安装go1.12

【总结】I/O多路复用及epoll的工作原理_io多路复用的原理和实现epoll-程序员宅基地

文章浏览阅读682次。目录第一部分 epoll原理最直观讲解第二部分 I/O多路复用之水平触发和边沿触发模式 第三部分 epoll的具体使用方法1.创建epoll实例:2.修改epoll的兴趣列表:2.事件等待:4:LT模式与ET模式5 EPOLLONESHOT事件第一部分 epoll原理最直观讲解转自知乎高分回答 https://www.zhihu.com/questio..._io多路复用的原理和实现epoll

计算机五年级画图板书,《第12课  绘制彩色图形》教学设计    五年级-程序员宅基地

文章浏览阅读313次。《第12课绘制彩色图形》教学设计一、教材分析本课通过学习改变画笔的颜色和粗细,让学生知道在Logo语言环境中,可以绘制色彩丰富、线条粗细有变化的图形,同时学会图形的保存和取出。二、学情分析学生通过前几课的学习,能够绘制简单的图形,掌握前进、后退、左转、右转、提笔等命令,为本节课的继续学习打下坚实基础。本节课是学生学习Logo语言以来第一次接触颜色的变化,美观的图形定会大增学生的学习兴趣。三、教学目..._绘图教学设计

随便推点

ctf base全家桶递归解密_qzz|kqbjrrs8qzrqdcywr4_doq7~jyo>0t4r4__aqzq9|rz+k_-程序员宅基地

文章浏览阅读6.2k次,点赞4次,收藏15次。base家族人丁兴旺,常见的有base16、base32、base64、base58、base62、base85、base91、base92、base100,在ctf中还有一些加密的组合,如zlib+base64,这是常用的网络通信的手段, zlib 压缩可以将字符串体积明显缩小(只有较长才能体现出来),而base64可以将刚刚压缩的二进制码变成可见字符,便于在语言中进行传递及网络通信。在ctf中,如果字符串可以使用base64解密,而解密后又有很多不可见字符,那就可能是zlib+base64的编码方式,对_qzz|kqbjrrs8qzrqdcywr4_doq7~jyo>0t4r4__aqzq9|rz+k_q!r#mr90+nr4_4nr%>ipo>0s{r

单臂路由可以实现不同VLAN之间的通信!_单臂路由可以联通不同vlan吗-程序员宅基地

文章浏览阅读84次。配置条件:1----必须要创建接口的子接口!!!!2---- IP地址配置必须是网关地址。即:图中int g0/0/1.1和it g0/0/1.2_单臂路由可以联通不同vlan吗

python用input输入列表_python怎么用input函数输入一个列表-程序员宅基地

文章浏览阅读8k次,点赞5次,收藏18次。在Python3.0以后,键盘输入使用input函数>>> x=input>>> 123123在命令行没有任何显示,输入123后直接赋值给x,并打印。仅仅使用input是无法解决大部分数据处理的,通常输入的字符串需要分割处理,python使用split()函数进行分割>>> x=input()1,2,3,4>>> xlist=x.split(",")>>> print(xlist)['1', '2..._xlist=[] for i in range(3): xlist.append([]) for j in range(3): x=eval(input

Unity 工具类 之 AR/VR Gaze 凝视/按键/鼠标 点击 UI/游戏物体 的交互方式实现_unity 鼠标放置 对应vr-程序员宅基地

文章浏览阅读2k次。Unity 工具类 之 AR/VR Gaze 凝视/按键/鼠标 点击 UI/游戏物体 的交互方式实现目录Unity 工具类 之 AR/VR Gaze 凝视/按键/鼠标 点击 UI/游戏物体 的交互方式实现一、简单介绍二、实现原理三、注意事项四、效果预览五、实现步骤六、关键代码七、参考工程一、简单介绍在Unity 的VR/AR开发中,一些工具类的整理,方便后期使用。在AR/VR 中,一般都会用到凝视交互,本节介绍,在 Unity ..._unity 鼠标放置 对应vr

moment.js当日时间默认值-程序员宅基地

文章浏览阅读723次。var Date = moment().millisecond(0).second(0).minute(0).hour(0);把当天时间设置为0:0:0转载于:https://www.cnblogs.com/JerryWang24/p/7569696.html_moment.js 默认今天

不用加减乘除符号的情况下实现加法运算(js代码)_js 不用+运算符做加法-程序员宅基地

文章浏览阅读518次。1.题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。2.解题思路根据按位异或,可得到没有进位的加法结果,关键在于怎么把进位再与得到的结果相加,才可以得到最后的结果。其中进位的情况是两个都为1时,与按位与运算的逻辑结果一致,但进位是与前一位相加,因此需要左移一位。3.具体的代码实现function Add(num1, num2){ // write code here //按位异或得到的无进位的加法 //按位与并且左移一位为进位值,进位_js 不用+运算符做加法

推荐文章

热门文章

相关标签