java-tracer 是一个 Java 源码阅读工具,利用它可以把我们程序运行过程栈录制下来,并实时绘制成时序图,使用简单方便。
java-tracer 主要提供[线程]方法调用栈时序图录制/展现功能,在程序运行的时候,录制调用栈,然后借助浏览器一层一层查看调用时序图,结合原i码,能更容易理解框架运行原理。
使用方法是以 javaagent 的方法带入程序中,使用模式有两种,第 1 种是函数模式,即录制某个方法,第 2 种是线程模式,即录制所有线程。
函数模式
启动的时候,增加 agent 参数,例如:java -javaagent:xxx/tracer-agent/target/java-tracer.jar xxxMainClass
启动的时候,console 会输出: pages can be found in http://127.0.0.1:18902
打开链接,可以设置需要录制的方法的类名及方法名。
设置完之后,当方法被再次调用的时候,在主页面下面的 result list 模块就会有每次方法的录制记录,点击链接即可看到如上 demo 那样的时序图了。
线程模式
线程模式跟函数模式一样,只是需要增加一个 agent 参数 mode=1,例如:java -javaagent:xxx/tracer-agent/target/java-tracer.jar=mode=1 xxxMainClass
同样,程序启动之后,打开页面 http://127.0.0.1:18902 即可看到线程运行情况。
可以点击 result list 里面的 service 的链接,就可以查看到[线程]栈时序图。
在时序图中,可能通过调节显示栈深度,或者进入方法里面查看栈调用情况。
介绍 对于程序开发一般要从两个角度去考虑,业务开发更关注功能逻辑实现,是一个业务问题;技术开发则需要关注性能稳定性,是一个纯技术问题。功能逻辑是一个大话题,涉及思维方式,业务需求,比较复杂,不太好量化,但是对于性能稳定性,却是一个技术领域的问题,对性能的追求是一个码农应有的素质。 要想对性能有所追求,就要对系统有所了解,项目开发不是一个独立的事件,大的工程往往依赖很多人很多工具的辅助才能完成。正常
java-tracer : 方法调用跟踪记录工具 agent 工具 可以用来记录方法调用 步骤 1 下载agent包 步骤 2 运行进程 运行进程如下 如果使用命令行启动java进程 java -javaagent:xxx/tracer-agent/target/java-tracer.jar xxx 使用IDE启动进程 增加-javaagent:xxx/tracer-agent/target/j
4.0.0 io.opentracing.contrib opentracing-spring-tracer-configuration-parent pom 0.4.1-SNAPSHOT opentracing-spring-tracer-configuration-starter ${project.groupId}:${project.artifactId} Default OpenTrac
#!/bin/sh # ---------------------------------------------------------------------------- # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the
本实验会带着大家阅读 express 源码。为什么有那么多的 Express 用法?而没有人去看一看它的实现呢?
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的 java 应用程序。JDK 是整个 java 开发的核心,它包含了 JAVA 的运行环境(JVM+Java 系统类库)和JAVA工具。
学习5阶段 getting start 入门 guide 指南 doc 查api 阅读源码 向开源贡献代码 你该阅读源码? 上面已经说了,第四个阶段才是读源码 原因是,必须熟练才有用,不然读了也白扯 熟练使用该模块 熟练掌握npm 熟练掌握nodejs语法 有了这个前提你就可以阅读了。 当然事情也不能绝对,没这些,你也可以看,从中找出有用的写法或者学习代码规范也是好的。 看目录结构(express
Sanic源码阅读:基于0.1.2 Sanic是一个可以使用async/await语法编写项目的异步非阻塞框架,它写法类似于Flask,但使用了异步特性,而且还使用uvloop作为事件循环,其底层使用的是libuv,从而使 Sanic的速度优势更加明显。 本章,我将和大家一起看看Sanic里面的运行机制是怎样的,它的Router Blueprint等是如何实现的。 如果你有以下的需求: 想深入了解
本文向大家介绍有阅读过ElementUI的源码吗?相关面试题,主要包含被问及有阅读过ElementUI的源码吗?时的应答技巧和注意事项,需要的朋友参考一下 读过, 公司封装自己的UI库的时候, 我都过很多UI库的源码, 比如element, iview, vuetifyjs, 等
问题内容: Java的默认编码为。是?(请参见下面的编辑) 当文本文件被编码为?读者如何知道自己必须使用? 我谈论的读者是: s 来自的s 一个从 … 轮到我们,编码取决于操作系统,这意味着以下内容并非在每个操作系统上都适用: 问题答案: 读者如何知道他必须使用UTF-8? 通常你指定 你自己 的一个。它有一个采用字符编码的构造函数。例如 所有其他读者(据我所知)都使用平台默认字符编码,这实际上可
为什么要阅读Tornado的源码? Tornado 由前 google 员工开发,代码非常精练,实现也很轻巧,加上清晰的注释和丰富的 demo,我们可以很容易的阅读分析 tornado. 通过阅读 Tornado 的源码,你将学到: 理解 Tornado 的内部实现,使用 tornado 进行 web 开发将更加得心应手。 如何实现一个高性能,非阻塞的 http 服务器。 如何实现一个 web 框
问题内容: 我想阅读使用linux命令编写的实际源代码。我已经获得了使用它们的一些经验,现在我认为是时候与我的机器进行更深层次的互动了。 我在http://directory.fsf.org/wiki/GNU中找到了一些命令。不幸的是,我找不到基本的命令,例如“ ls”,在我看来这很容易上手。 我如何准确地读取像’ls’这样的简单shell命令的源代码?我在Ubuntu 12.04上运行 问题答案