您的位置:首页 > 科技 > 能源 > 深圳注册公司需要多少钱_企业网络营销策划与分析_查询网站收录_拓客平台有哪些

深圳注册公司需要多少钱_企业网络营销策划与分析_查询网站收录_拓客平台有哪些

2024/10/5 16:26:53 来源:https://blog.csdn.net/a924382407/article/details/142632132  浏览:    关键词:深圳注册公司需要多少钱_企业网络营销策划与分析_查询网站收录_拓客平台有哪些
深圳注册公司需要多少钱_企业网络营销策划与分析_查询网站收录_拓客平台有哪些

在这里插入图片描述

文章目录

  • 二、命令列表
    • 2.3 monitor/watch/trace/stack/tt 相关
      • 2.3.5 watch (方法执行数据观测)
        • 举例1:监控方法
        • 举例2:同时观察函数调用前和函数返回后
  • 本人其他相关文章链接

二、命令列表

2.3 monitor/watch/trace/stack/tt 相关

2.3.5 watch (方法执行数据观测)

提示

函数执行数据观测

让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值抛出异常入参,通过编写 OGNL 表达式进行对应变量的查看。

参数说明:

参数名称参数说明
class-pattern类名表达式匹配
method-pattern函数名表达式匹配
express观察表达式,默认值:{params, target, returnObj}
condition-express条件表达式
[b]函数调用之前观察
[e]函数异常之后观察
[s]函数返回之后观察
[f]函数结束之后(正常返回和异常返回)观察
[E]开启正则表达式匹配,默认为通配符匹配
[x:]指定输出结果的属性遍历深度,默认为 1,最大值是 4
[m <arg>]指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch <arg>]

特别说明:

  • watch 命令定义了 4 个观察事件点,即 -b 函数调用前,-e 函数异常后,-s 函数返回后,-f 函数结束后
  • 4 个观察事件点 -b-e-s 默认关闭,-f 默认打开,当指定观察点被打开后,在相应事件点会对观察表达式进行求值并输出
  • 这里要注意函数入参函数出参的区别,有可能在中间被修改导致前后不一致,除了 -b 事件点 params 代表函数入参外,其余事件都代表函数出参
  • 当使用 -b 时,由于观察事件点是在函数调用前,此时返回值或异常均不存在
  • 在 watch 命令的结果里,会打印出location信息。location有三种可能值:AtEnterAtExitAtExceptionExit。对应函数入口,函数正常 return,函数抛出异常。
举例1:监控方法

基础语法

watch 全路径类名 方法名 {params,returnObj,throwExp} -x 8

[arthas@7265]$ watch com.hero.lte.ems.security.service.impl.LdapService login {params,returnObj,throwExp} -x 8
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 237 ms, listenerId: 7
ts=2024-09-19 14:15:42; [cost=10.802626ms] result=@ArrayList[@Object[][@LdapLoginRequest[username=@String[testuser2],password=@String[Hero@1993],principal=@String[testuser2@MS-DCS.BEE.VIMPELCOM.RU],keytabFilePath=null,ldapFlag=null,domainName=@String[ms-dcs.bee.vimpelcom.ru],baseDn=@String[dc=ms-dcs,dc=bee,dc=vimpelcom,dc=ru],adminBindDn=@String[cn=Tech_Hytera_MS,ou=TechDir_Msk,ou=Moscow,dc=ms-dcs,dc=bee,dc=vimpelcom,dc=ru],adminBindPassword=@String[Bingo@1993],userSearchDn=@String[],userSearchScope=@Integer[2],userIdAttribute=@String[sAMAccountName],groupSearchDn=@String[DC=ms-dcs,DC=bee,DC=vimpelcom,DC=ru],groupSearchScope=@Integer[2],groupFilter=@String[(objectClass=*)],groupMemberAttribute=@String[member],createTime=@Date[2024-09-17 16:20:38,000],updateTime=@Date[2024-09-17 16:20:38,000],ldapConnectionSecurityMode=@Integer[0],port=@Integer[636],ignoreReferrals=@Integer[0],enableFullDnForGroupMemberAttribute=@Integer[0],validGroup=@String[testou1,APP_Hytera_MS],searchGroupFilter=@String[(&(objectClass=*)(member=*))],],],@ResultSet[errorCode=@String[43],errorString=@String[kerberos authentication failed.],errorParams=null,resultVal=null,],null,
]
举例2:同时观察函数调用前和函数返回后

基础语法

watch 全路径类名 方法名 {params,returnObj,throwExp} -x 8 -b -s

代码:请求前传入ouValues参数,方法返回的也是这个参数

public static List<Object> extractOUValues(String dn, List<Object> ouValues) {// 定义正则表达式,用于匹配 OU 属性及其值String ouPattern = "OU=([^,]+)";// 创建 Pattern 和 Matcher 对象Pattern pattern = Pattern.compile(ouPattern);Matcher matcher = pattern.matcher(dn);// 查找所有匹配的 OU 值并添加到列表while (matcher.find()) {if (!ouValues.contains(matcher.group(1))) {ouValues.add(matcher.group(1));}}return ouValues;}
[arthas@9890]$ watch com.hero.lte.ems.security.service.impl.LdapService extractOUValues {params,returnObj,throwExp} -x 8 -b -s
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 190 ms, listenerId: 2
ts=2024-09-19 14:53:14; [cost=0.909333ms] result=@ArrayList[@Object[][@String[CN=testuser1,OU=testou1,OU=TechDir_Msk,OU=Moscow,DC=ms-dcs,DC=bee,DC=vimpelcom,DC=ru],@ArrayList[isEmpty=true;size=0],],null,null,
]
ts=2024-09-19 14:53:14; [cost=4.773943466517351E9ms] result=@ArrayList[@Object[][@String[CN=testuser1,OU=testou1,OU=TechDir_Msk,OU=Moscow,DC=ms-dcs,DC=bee,DC=vimpelcom,DC=ru],@ArrayList[@String[testou1],@String[TechDir_Msk],@String[Moscow],],],@ArrayList[@String[testou1],@String[TechDir_Msk],@String[Moscow],],null,
]

本人其他相关文章链接

1.Arthas 全攻略:让调试变得简单
2.Arthas dashboard(当前系统的实时数据面板)
3.Arthas thread(查看当前JVM的线程堆栈信息)
4.Arthas jvm(查看当前JVM的信息)
5.Arthas sysprop(查看和修改JVM的系统属性)
6.Arthas sysenv(查看JVM的环境变量)
7.Arthas vmoption(查看和修改 JVM里诊断相关的option)
8.Arthas getstatic(查看类的静态属性 )
9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
10.Arthas logger(查看 logger 信息,更新 logger level)
11.Arthas mbean(查看 Mbean 的信息)
12.Arthas memory(查看 JVM 内存信息)
13.Arthas ognl(执行ognl表达式)
14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)
15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)
16.Arthas jad(字节码文件反编译成源代码 )
17.Arthas mc(Memory Compiler/内存编译器 )
18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )
19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)
20.Arthas sc(查看JVM已加载的类信息 )
21.Arthas sm(查看已加载类的方法信息 )
22.Arthas monitor(方法执行监控)
23.Arthas stack (输出当前方法被调用的调用路径)
24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)
25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)
26.Arthas watch (方法执行数据观测)
27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com