Btrace 拦截构造函数,同名函数
拦截方法:
1、普通方法 @OnMethod(clazz="", method="")
2、构造函数@OnMethod(claszz="", method="<init>")
3、拦截同名函数,用参数区分
一、拦截构造函数
1、创建接口
@RequestMapping("/constructor")
public User constructor(User user){
return user;
}
2、测试接口
http://127.0.0.1:8080/monitor_tuning/ch4/constructor?id=1&name=nick

3、查看进程

4、创建btrace脚本,运行btrace脚本
package com.example.monitor_tuning.chapter4; import com.sun.btrace.AnyType;
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*; /**
* 拦截构造函数.
*/
@BTrace
public class PrintConstructor { /*要拦截哪个类,<init>w为构造函数,*/
@OnMethod(
clazz = "com.example.monitor_tuning.chapter2.User",
method="<init>"
)
/*ProbeClassName 方法类名; ProbeMethodName 方法名 ; AnyType[] 构造函数参数*/
public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, AnyType[] args)
{
BTraceUtils.printArray(args);
BTraceUtils.println(pcn + "," + pmn);
BTraceUtils.println();
}
}
运行btrace脚本

显示结果

二、拦截同名函数
1、创建两个同名的方法
@RequestMapping("/same1")
public String same(@RequestParam("name")String name){
return "hello," + name;
}
@RequestMapping("/same2")
public String same(@RequestParam("id")int id, @RequestParam("name")String name){
return "hello," + name + " id: " + id;
}
2、创建btrace脚本
通过参数个数,和顺序进行匹配。
package com.example.monitor_tuning.chapter4; import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*; /**
* 监控同名方法
*/ @BTrace
public class PrintSame { @OnMethod(
clazz = "com.example.monitor_tuning.chapter4.Ch4Controller",
method="same"
) public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, int id, String name)
{
BTraceUtils.println(pcn + "," + pmn + "," + name + "," + id);
BTraceUtils.println();
} }
3、运行btrace脚本

调用接口
http://127.0.0.1:8080/monitor_tuning/ch4/same2?name=nick&id=2
最终显示结果见上图
Btrace 拦截构造函数,同名函数的更多相关文章
- 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数
上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是publi ...
- Qt 学习之路 2(19):事件的接受与忽略(当重写事件回调函数时,时刻注意是否需要通过调用父类的同名函数来确保原有实现仍能进行!有好几个例子。为什么要这么做?而不是自己去手动调用这两个函数呢?因为我们无法确认父类中的这个处理函数有没有额外的操作)
版本: 2012-09-29 2013-04-23 更新有关accept()和ignore()函数的相关内容. 2013-12-02 增加有关accept()和ignore()函数的示例. 上一章我们 ...
- 编译器如何处理C++不同类中同名函数(参数类型个数都相同)
转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: 一.不类中的特征标相同的同名函数,它们是不同的函数,原因就 ...
- (转) C++中基类和派生类之间的同名函数的重载问题
下面有关派生类与基类中存在同名函数 fn: class A { public: void fn() {} void fn(int a) {} }; class B : public A { publi ...
- JS特殊函数(Function()构造函数、函数直接量)区别介绍
函数定义 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 函数的构造语法有这三种: 1.function functionName(arg0, ...
- C++ 学习笔记 (六) 继承- 子类与父类有同名函数,变量
学习了类的继承,今天说一下当父类与子类中有同名函数和变量时那么程序将怎么执行.首先明确当基类和子类有同名函数或者变量时,子类依然从父类继承. 举例说明: 例程说明: 父类和子类有同名的成员 data: ...
- Function()构造函数与函数直接量
Function()构造函数与函数直接量 制作人:全心全意 在JavaScript中,除了可使用基本的function语句定义函数之外,还可以使用另外两种方式来定义,即使用Function()构造函数 ...
- 【java&c++】父子类中同名函数的覆盖问题
java和c++两门语言对于父子类中同名函数具有不同的处理方式. 先上两段代码: C++: class Basic { public: void test(string i){ cout <&l ...
- C++不同类中的特征标相同的同名函数
转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: ...
随机推荐
- [server]阿里云服务器远程文件传输的解决方案
在今年6月份以前使用windows自带的远程桌面还可以畅快无阻地进行稍大文件的传输.但是后来就总是会蹦了.最近频繁使用,发现已经不能愉快地的传输文件了,就是挂载本地驱动器,只能传输很小,大概小于40M ...
- 小白的REDIS学习(二)-链表
本文为读<Redis设计与实现>的记录.该书以Redis2.9讲解Redis相关内容.请注意版本差异. Redis使用C语言,实现了自己的链表结构,实现的代码如下 //集成了链表的各类信息 ...
- UIMediaScanner从相册读取资源的功能
iPhone的照片上传到了iCloud,本地的照片就被压缩,每当你要查看这些照片的时候就需要下载,不然上传的图片就是缩略图. //图片多张选择 function select_album(max, c ...
- makefile笔记3 - makefile规则
target ... : prerequisites ... command ... ... 规则包含两个部分,一个是依赖关系,一个是生成目标的方法. 在 Makefile 中,规则的顺序是很重要的, ...
- js中bind的用法,及与call和apply的区别
call和apply的使用和区别不再做阐述,可以参考我的另一篇随笔<JavaScript中call和apply方法的使用>(https://www.cnblogs.com/lcr-smg/ ...
- 神州数码BGP路由协议配置
实验要求:了解BGP路由协议的配置方法及原理 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 ip add ...
- react 组件导出
前段时间忙于公司的招聘,导致react学习停滞了一段时间.今天通过react官方文档在本地创建了一个项目,把里面的文件自己重新开发.遇到了一个有意思的问题 class App extends Reac ...
- 科学计算库Numpy(1)
Numpy 一,数据结构 数据类型: ndarray import numpy world_alchol = numpy.genfromtxt('world_alchol.txt',delimiter ...
- CSS Sprites ——雪碧图的使用方法
首先解释下CSS Sprites是什么:有称CSS精灵,有称CSS雪碧的,无论叫什么,他的作用就是把网页上很多小图标放到一张图片里面,然后通过CSS里面的background-position来控制每 ...
- android 版本更新适配8.0,解决8.0手机无法更新自动安装apk
随着android 7.0的普及android 8.0的也逐渐流行起来,那么google对权限方面又有了新的修改.而且我发现在android8.0中除了一些bug,比如说:在小米6(Android 8 ...