jad

MyEclipse10.7安装jad反编译插件

吃可爱长大的小学妹 提交于 2021-02-10 15:31:24
1.下载反编译工具jad(下面提供下载) 将下载下来的jad star 158.zip解压缩,将jad.exe文件放入jdk安装目录下 如:C:\Program Files\Java\jdk1.6.0_20\bin 下载eclipse反编译插件net.sf.jadclipse_3.3.0.jar(下面提供下载) 将 import java.io.File; import java.util.ArrayList; import java.util.List; /** * MyEclipse10.0 插件配置代码生成器 * * */ public class CreatePluginsConfig { public CreatePluginsConfig() { } public void print(String path) { List<String> list = getFileList(path); if (list == null) { return; } int length = list.size(); for (int i = 0; i < length; i++) { String result = ""; String thePath = getFormatPath(getString(list.get(i))); File file = new File

web测试与移动App测试的常见测试要点

我们两清 提交于 2021-01-09 18:03:28
手机APP项目测试点(内容)总结 对于手机项目(应用软件),主要是进行系统测试。 而针对手机应用软件的系统测试,我们通常从如下几个角度开展测试工作: 功能模块测试 交叉事件测试 性能测试 安全测试 容量测试 兼容性测试 接口测试 易用性/用户体验测试 硬件环境测试 安装/卸载测试 升级/更新测试 1、功能模块测试: 根据软件需求说明书或者用户需求验证app的各个功能是否实现,采用如下方法实现并评估功能测试过程: 采用时间、地点、对象、行为、和背景五元素或业务分析等方法、提炼app的用户使用场景,对比说明和需求,整理出内在,外在及非功能直接相关需求,构建测试点和用例,并明确测试标准,若用户需求中无明确标准遵循,则需要参考行业或相关国际标准或准则。 根据被测试功能点的特性列出相应类型的测试用例对其进行覆盖,如:涉及输入的地方需要考虑等价、边界、负面、异常或非法、场景回滚、关联测试等测试类型对其进行覆盖。 在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误地方。 运行 1)App安装完成后的试运行,可正常打开软件。 2)App打开测试,是否有加载状态进度提示。 3)App打开速度测试,速度是否可观。 4)App页面间的切换是否流畅,逻辑是否正确 5)注册 –同表单编辑页面 –用户名密码长度 –注册后的提示页面 –前台注册页面和后台的管理页面数据是否一致

Java泛型的类型擦除

折月煮酒 提交于 2021-01-09 02:53:44
From: http://softlab.sdut.edu.cn/blog/subaochen/2017/01/generics-type-erasure/ Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure),将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生态类型),就像完全没有泛型一样。理解类型擦除对于用好泛型是很有帮助的,尤其是一些看起来“疑难杂症”的问题,弄明白了类型擦除也就迎刃而解了。 泛型的类型擦除原则是: 消除类型参数声明,即删除<>及其包围的部分。 根据类型参数的上下界推断并替换所有的类型参数为原生态类型:如果类型参数是无限制通配符或没有上下界限定则替换为Object,如果存在上下界限定则根据子类替换原则取类型参数的最左边限定类型(即父类)。 为了保证类型安全,必要时插入强制类型转换代码。 自动产生“桥接方法”以保证擦除类型后的代码仍然具有泛型的“多态性”。 1 擦除类定义中的类型参数 1.1 无限制类型擦除 当类定义中的类型参数没有任何限制时,在类型擦除中直接被替换为Object,即形如<T>和<?>的类型参数都被替换为Object,参见 1 。 图 1: 擦除类定义中的类型参数 1.2

java应用线上诊断神器--Arthas

…衆ロ難τιáo~ 提交于 2020-10-28 12:24:14
前言 1、什么是Arthas? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱(截止2020.9.19 github star是23K)。通过Arthas我们可以在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。 2、Arthas有哪些特性 实时查看系统的运行状况 查看函数调用的参数,返回值和异常 代码在线热更新 秒解类冲突问题,定位类加载路径 快速定位应用的热点,生成火焰图 在线诊断,点开网页诊断线上应用 3、Arthas能帮我们解决什么问题 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? 怎么快速定位应用的热点,生成火焰图? 4、安装 下载arthas-boot.jar,然后用java -jar的方式启动: curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar

记录一次 Arthas 使用

谁都会走 提交于 2020-08-19 22:56:38
【Arthas 官方社区正在举行征文活动,参加即有奖品拿~ 点击投稿 】 前言 疫情期间,在家办公,每天都是 007,感觉自己已经升级为熊猫特工了,心累,身体疲惫!!! 今天终于有时间休息一下,然后记录一下在家办公期间 Arthas 的简单使用。 下载安装 方式一: 推荐使用 IDEA 插件下载 Cloud Toolkit 来使用 Arthas Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。不仅仅有 IntelliJ IDEA 主流版本,还有 Eclipse、Pycharm、Maven 等其他版本。 方式二: 直接下载 启动:java -jar arthas-boot.jar 这里需要重点说明一下:必须使用和目标进程相同的用户,否则启动不成功。 问题背景 本人前天刚上线一个任务。由于某产品手误,误操作了线上数据,要求帮忙把数据删除了。 这尼玛的真坑啊,明显是坑老子。 还好有先见之明,没次做任务的时候多多少少都会写几个后门工具( 不是为了删库跑路,而是这些后门在特定情况下真能应急使用

JAVA为什么不建议在for循环中使用"+"进行字符串拼接,而是建议使用StringBuilder 的 append 方法?idea提示string concatenation ‘+=’in loop

霸气de小男生 提交于 2020-08-14 22:28:50
目录 以代码来讲解 结论: 以代码来讲解 String str = "" ; for ( int i = 0 ; i < 10 ; i ++ ) { str += "a" ; } str = str + "a" + "b" ; 使用jad反编译以后 jad使用指南 String str = "" ; for ( int i = 0 ; i < 10 ; i ++ ) str = ( new StringBuilder ( ) ) . append ( str ) . append ( "a" ) . toString ( ) ; str = ( new StringBuilder ( ) ) . append ( str ) . append ( "a" ) . append ( "b" ) . toString ( ) ; 我们可以看到,反编译后的代码,在for循环中,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。 而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费。 我为什么在for循环外写 str=str+"a"+"b"; ,是为了告诉大家,不是一个 ”+“ 就创建一个 StringBuilder 结论: 如果不是在循环体中进行字符串拼接的话,直接使用+就好了

使用JadClipse反编译代码

最后都变了- 提交于 2020-08-12 09:50:24
说明:当我们需要反编译jar 包或者查看 .class 类型文件时,我们首先会想到使用 jd-gui.exe 工具,但是在 eclipse 中查看时总觉得这样做很繁琐,以下步骤简述如何在 eclipse 中查看 .class 类型和 *.class without source 类型文件。 下载插件包 下载地址为: http://sourceforge.jp/projects/sfnet_jadclipse/releases/ ,如图一所示: 图一 根据不同的eclipse 版本下载不同版本的 jar 包,我这里下载的是 net.sf.jadclipse_3.3.0.jar 。 安装插件包 将 net.sf.jadclipse_3.3.0.jar拷贝到 eclipse 安装目录 /plugins 文件夹下,将 jad.exe 拷贝到任意目录,比如我的目录为: D:\Users\jd-gui\jad.exe ,关于 jad 的使用方式参考博文: 反编译工具 jad 的使用 修改 eclipse 启动方式,如图二所示:在目标后面增加“ -clean ”强制重新载入插件。 图二 启动 eclipse ,依次打开 Window->Preferences->Java ,修改 Path to decompiler 的值,如图三所示: 图三 依次打开 Window->Preferences-

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题

≡放荡痞女 提交于 2020-08-11 01:14:09
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用 top -Hp 加 jstack 命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档: https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。CPU 负载过高一般是某个或某几个线程有问题,所以我们尝试使用第一个命令:thread,这个命令会显示所有线程的信息,并且把 CPU 使用率高的线程排在前面。 [arthas@384]$ thread Threads Total: 112, NEW: 0, RUNNABLE: 26, BLOCKED: 0, WAITING: 31, TIMED_WAITING: 55, TERMINATED: 0 ID NAME STATE %CPU TIME 108 h..ec-0 RUNNABLE 51 4011:48

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题

牧云@^-^@ 提交于 2020-08-10 23:33:31
最近我们线上有个应用服务器有点上头,CPU 总能跑到 99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用top -Hp 加 jstack命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。 申请阿里云服务时,可以使用 2000元阿里云代金券 ,阿里云官网领取网址: https://dashi.aliyun.com/site/yun/youhui 今天向大家推荐一款更高效更精准的工具:Arthas! Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档: https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。 CPU 负载过高一般是某个或某几个线程有问题,所以我们尝试使用第一个命令:thread,这个命令会显示所有线程的信息,并且把 CPU 使用率高的线程排在前面。 [arthas@384]$ thread Threads Total: 112, NEW: 0, RUNNABLE: 26, BLOCKED: 0, WAITING: 31, TIMED_WAITING: 55, TERMINATED: 0 ID NAME STATE %CPU TIME

得亏了它,我才把潜藏那么深的Bug挖出来

梦想与她 提交于 2020-08-10 18:31:54
2020 年写了很多事故解决的文章,并不是我绞尽脑汁想出来的,而是真的遇到了这些问题。通过文章的方式记录下来,分享出去,才有意义。 事故背景 首先看下面的图吧,这是我从 cat 上截的图。 可以看到是一个 Rpc 调用的错误,从错误中我们只能分析出这个 Rpc 的请求成功了,并且返回了,因为都走到了反序列化这步。 最后是在创建 DTO 对象的时候报错了,Could not initalize class xxxxx.DTO说明了这一点。 作为一个调用方,虽然看到了明确的错误,但还是要本着严谨的态度去排查问题,还是先确认服务提供者到底有没有问题,跟同事确认了,服务提供方没问题,通过 telnet 可以正常 invoke。 好了,到这为止就把背景交代清楚了,能不能将这个潜藏的 Bug 找出来就各显身手吧。 arthas 大显身手 要想效率高,那必须得有好用的工具呀!arthas 挺身而出,都毛遂自荐了,不用白不用。 首先使用 sc 命令查看 JVM 已加载的类信息,就看这个不能实列化的类到底有没有被成功加载。 sc -d 类全路径 (打印类的详细信息) 类的信息都被打印出来了,足以证明这个类被加载了。 然后打印下类里面的字段,看看有没有丢失什么的 sc -d -f 类全路径 (打印出类的Field信息) 居然报错了,错误还跟我们之前在 cat 中看到的一模一样,这边也是要是创建对象