![](https://img-blog.csdnimg.cn/f1b48847f6534007957a73a9827d7703.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 74
测试人员在实际工作中遇到的java技巧总结
测试开发Kevin
05年开始从事测试工作,擅长性能测试、安全渗透测试、UI自动化测试,接口测试,白盒测试,测开后端,熟悉Java和Python。
展开
-
使用Java apache commons包五分钟搞定NCR解析(内附源码)
在网上看到很多关于解析NCR(Numeric Character Reference)字符串的java实现,核心都是通过自定义正则表达式来解析,其实org.apache.commons 已经为我们提供了jar包 解决该问题,非常的方便!在这里我就来简单分享一下具体实现方法!原创 2024-06-04 11:16:25 · 155 阅读 · 0 评论 -
友情提示!使用JDK11,如果 maven包含 <scope>test</scope>标签,构建时会出现严重错误
友情提示!使用JDK11,如果 maven包含 <scope>test</scope>标签,构建时会出现严重错误原创 2023-12-29 11:06:11 · 1060 阅读 · 0 评论 -
持续部署中测试非常非常重要,但引入自动化测试往往只需要一行代码(Java系:maven+Junit4实现)
持续部署是一种软件开发策略,方法是将应用的代码变更自动发布到生产环境中。 这种自动化由一系列预定义的测试驱动。 一旦新更新通过这些测试,系统会将更新直接推送到软件的用户。很显然这一过程中测试环节是非常关键的,因为全程无人工干预,只有测试环节通过,才能进入下一环节。这里的测试环节是通过测试脚本来实现的(包括:单元测试脚本+接口测试脚本+UI测试脚本),由于持续部署整个流程太过复杂,往往需要专门的团队负责运维,本文只针对测试这一环节进行讲解,注重流程梳理,忽略具体实现细节。原创 2023-12-28 14:41:56 · 989 阅读 · 0 评论 -
Eclipse 转IDEA的小伙伴看过来,告诉大家在IDEA中如何快速配置和运行Maven!
很多新从Eclipse 转入IDEA的小伙伴在执行Maven项目时,可能在IDEA中找不到maven配置和运行相关的入口,本文就带大家快速了解相关用法。原创 2023-12-27 11:02:16 · 472 阅读 · 0 评论 -
解决:File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!提示说明,没有使用UTF-8的格式原创 2023-12-27 10:52:59 · 662 阅读 · 0 评论 -
如果你始终不理解Java动态代理的设计目的,建议您来看看!
动态代理类的源码是在程序运行期间由JVM根据反射等机制动态的生成,所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定原创 2023-12-21 16:20:29 · 1087 阅读 · 0 评论 -
一文读懂Java中的设计模式——代理模式,以翻译场景举例,特别通俗易懂!
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。目的:为其他对象提供一种代理以控制对这个对象的访问。原创 2023-12-21 11:20:22 · 654 阅读 · 0 评论 -
在AI技术的无情侵袭下,学学Java的23种设计模式还是非常有必要的
目前国内80%程序员的主要工作是调用组合api实现各种业务需求,在顶层架构师设定好的框架下,做着重复且无聊的编码工作!如果未来ai被广泛应用,那么被替代的风险是很高的!比较扎心的是:其实目前用ai生成片段代码已经是各个公司比较普遍的做法了!如果普通程序员想提高避免早早退休,多了解一些设计模式是非常有必要的,不仅能提升自己的编码能力,还能够让大家感受到编码其实是挺有趣的!原创 2023-12-18 11:26:55 · 1130 阅读 · 0 评论 -
一文读懂Java中的设计模式——适配器模式,对于兼容不同系统特别适用!
适配器(变压器)模式:这种模式的核心是当你想实现一个接口但又不想实现所有接口方法,只想去实现一部分方法时,就用默认的适配器模式,他的方法是在接口和具体实现类中添加一个抽象类,而用抽象类去空实现目标接口的所有方法。而具体的实现类只需要覆盖其需要完成的方法即可。原创 2023-12-15 11:11:58 · 387 阅读 · 0 评论 -
一文读懂Java中的设计模式——单例模式!默认情况下,Spring的Bean就是单例的
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式只应在有真正的“单一实例”的需求时才可使用。原创 2023-12-15 10:56:18 · 920 阅读 · 0 评论 -
一文读懂Java中的设计模式——模板方法,给大家的代码添点料!
模板设计模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。原创 2023-12-14 11:13:34 · 926 阅读 · 0 评论 -
一文读懂Java中应用最广泛的策略模式
策略模式是应用最为广泛也是最基础的设计模式。策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个类或者抽象类(可有可无,属于辅助类),提供辅助函数。原创 2023-12-14 10:57:27 · 879 阅读 · 0 评论 -
Java体系性能测试进阶必须了解的知识点——GC日志分析
GC(Garbage Collection)是垃圾收集的意思,内存处理是程序员编码容易产生问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否需要进行垃圾回收。所以,Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。GC日志是分析GC相关问题的重要线索,即便是在生产服务器上,也建议开启,程序员应当学会通过相应工具理解和分析GC日志内容。原创 2023-10-31 10:48:36 · 320 阅读 · 0 评论 -
Java体系性能测试进阶必须了解的知识点——死锁分析和锁竞争分析
所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。对于锁更好的理解,先要理解monitor这个概念!原创 2023-10-31 09:56:26 · 86 阅读 · 0 评论 -
Java体系性能测试进阶必须了解的知识点——Thread Dump
Java Thread dump记录了线程在jvm中的执行信息,可以看成是线程活动的日志。Java线程转储文件有助于分析应用程序和死锁情况中的瓶颈。Thread Dump是非常有用的诊断Java应用问题的工具。它提供了当前活动线程的快照及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可 能的话还有源代码的行数。原创 2023-10-30 14:41:09 · 84 阅读 · 0 评论 -
五分钟理解Java跨平台原理(适合小白)
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机,即JVM(Java Virtual Machine)是实现这一特点的关键。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。大家可以简单的理解为JVM也是一个操作系统,只不过JVM中只运行java程序。原创 2023-10-30 11:29:36 · 247 阅读 · 0 评论 -
其实内存溢出和内存泄漏还真不是一回事儿!
内存溢出(Out Of Memory) :就是申请内存时,JVM没有足够的内存空间。一个通俗的例子就是去厕所时发现坑位满了。内存泄露 (Memory Leak):就是申请了内存,但是没有释放,导致内存空间浪费。一个通俗的例子就是就是有人占着茅坑不拉屎。原创 2023-10-30 10:57:30 · 60 阅读 · 0 评论 -
JMeter进阶——详解Java请求关于事务的操作 (附源码)
如果需求是在jmeter中对多个类的多个api进行调用该如何实现呢?同学们会说,简单呀,我们创建多个类然后分别继承AbstractJavaSamplerClient就可以了呀!这样做当然可以,但是这要创建太多的类啦,Jmeter提供了方法可以实现事务操作,即 在一个runTest 方法中创建一个事务,然后一个事务中包括多个请求原创 2023-05-04 10:27:32 · 730 阅读 · 0 评论 -
避坑经验分享:JDK11 与JDK1.8成功切换后,重启失效的问题
由于工作需要,本人的工作机(win10系统)安装了双JDK,分别是1.8和11。之前默认使用的是11,最近又安装了JDK1.8。从JDK11切换到JDK1.8之后发现了一个令人匪夷所思的问题,解决问题的过程在这里跟大家分享一下,帮大家避坑!原创 2023-04-27 11:15:40 · 1070 阅读 · 0 评论 -
解决Eclipse Maven Local Repository无法设置的问题
在实际项目中,各个公司的Maven项目通常需要配置自己的settings.xml 以及repository(非默认值)。那么这个时候就需要我们在IDE中进行重新设置了,今天我们讲解在Eclipse中如何设置。原创 2023-04-24 11:51:10 · 1076 阅读 · 1 评论 -
JDK1.8去除永久代引入元空间的原因您知道吗
JDK8之后就没有永久代(Permanent Generation,简称PermGen),取而代之的是元空间(meta space)。原创 2023-03-31 10:56:09 · 747 阅读 · 0 评论 -
十分钟掌握JVM垃圾回收核心知识点
垃圾回收随着程序的运行,内存中的实例对象、变量等占据的内存越来越多,如果不及时进行回收,会降低程序运行效率,甚至引发系统异常,JVM会自动完成垃圾回收工作,主要包括:Minor GC/Young GC:针对新生代的垃圾收集;Major GC/Old GC:针对老年代的垃圾收集。Full GC:针对整个Java堆以及方法区的垃圾收集Java堆区可以划分为新生代和老年代,新生代又可以进一步划分为Eden区、Survivor 1区、Survivor 2区。具体比例参数的话,可以看一下这张图..原创 2022-04-07 13:05:48 · 120 阅读 · 0 评论 -
从0到1学会使用SpringBoot 搭建mock Server
Mock Server做过接口测试的同学一定听说过mock Server,大家会觉得其很神秘,很高大上!mock Server出现的原因是现今的业务系统很少有孤立存在的,它们或多或少需要使用兄弟团队或是其他公司提供的服务,这给我们的联调和测试造成了麻烦。于是就有了解决方案——搭建一个临时的server,模拟那些服务,提供数据进行联调和测试。下图很好的解释了什么是Mock server:Springboot介绍Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简原创 2020-11-02 17:24:16 · 781 阅读 · 0 评论 -
一文搞定java.lang.Class.isInstance和instanceof的区别
java.lang.Class.isInstance和instanceof关键字都是用来判断对象类型的,但是当程序在运行时动态地判断对象的类型时instanceof就无能为力了。话不多说,直接上代码!public class Car {}public class Train{}public class Benz extends Car { publicvoid printBenz() { System.out.prin...原创 2021-08-19 11:29:52 · 340 阅读 · 1 评论 -
详解Java中的静态代理和动态代理
代理是一种设计模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。目的:为其他对象提供一种代理以控制对这个对象的访问。类关系图:静态代理创建一个接口,然后创建被代理的类实现该接口并且实现该接口中的抽象方法。之后再创建一个代理类,同时使其也实现这个接口。在代理类中持有一个被代理对象的引用,而后在代理类方法中调用该对象的方法。代码如下:接口pub...原创 2021-06-24 09:27:17 · 280 阅读 · 1 评论 -
详解Java泛型之2——详解通配符
上一篇文章中我们介绍了泛型的基础知识点,详情请参考文章:详解Java泛型之1——入门泛型必懂的知识点今天我们来继续讲解泛型中另一个非常重要的概念,就是那个“小问号”——通配符!通配符概念泛型中除了用 表示泛型外,还有 这种形式。?被称为通配符。那么引入通配符的原因又是什么呢?看下面这段代码:public classCar{ public void drive() { System.out.println("car的drive方法"); };...原创 2021-06-11 09:47:45 · 266 阅读 · 1 评论 -
Java应用必选掌握的性能调优知识点
本文介绍了在性能测试过程中Java进程消耗CPU过高的问题排查方法、线程死锁问题排查方法和内存泄露的排查方法Java进程消耗CPU过高的问题排查方法CPU利用率过高,查看JVM中线程占用cpu大小的方法ps –Lfp pidtop –p pid -H查看高占用的线程并转化为十六进制的方法printf "%x\n" 其中x为线程号然后 jstack -l 16进制的线程号线程死锁问题排查方法死锁定义线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处..原创 2020-11-04 11:08:35 · 128 阅读 · 0 评论 -
干货!使用Java注解和反射实现Junit4中的用例调用(附源码)
前面我写了关于Java注解和反射的文章,大家可能会问,这些高级的知识点在实际工作中有哪些应用呢?在这里我们来结合java注解和反射的知识做一个实际案例的编写,让大家对其有更深刻的理解!直接上实例!实例需求需求:模拟Junit4中的用例结构,自定义一个标签作为测试用例的标识。在Junit4中注解@Test表示测试用例,每一个测试用例的本质就是测试类中的一个方法,即:@Testpublic void test() {fail("Not yet implemented");}..原创 2021-04-19 10:41:43 · 280 阅读 · 0 评论 -
详解Java泛型之1——入门泛型必懂的知识点
我相信,绝大多数初始Java泛型的同学都会感到这个知识点理解起来有些困难,在这里我讲会对java泛型相关知识点做一个详细的介绍,包括:入门泛型必懂的知识点、通配符、泛型擦除以及泛型应用四个内容。今天我来讲解第一个知识点:泛型入门。欢迎大家持续关注我的后续文章。泛型定义泛型的英文是 generics,generic 的意思是通用,而翻译成中文,泛应该意为广泛,型是类型。所以泛型就是能广泛适用的类型。但泛型还有一种较为准确的说法就是为了参数化类型,或者说可以将类型当作参数传递给一个类或者是方法。原创 2021-06-03 14:25:49 · 270 阅读 · 1 评论 -
JVM中的堆和栈到底存储了什么
JVM数据区先上一张Java虚拟机运行时数据区中堆、栈以及方法区存储数据的概要图,如下所示:然后我们来具体解析一下堆和栈堆堆是存储时的单位,对于绝大多数应用来说,这块区域是 JVM 所管理的内存中最大的一块。线程共享,主要是存放对象实例和数组。栈栈是运行时的单位,Java 虚拟机栈,线程私有,生命周期和线程一致。描述的是 Java 方法执行的内存模型:每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法.原创 2020-11-05 11:16:30 · 10590 阅读 · 2 评论 -
详解Java抽象类和接口
详解Java抽象类和接口抽象类使用了关键字abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。特征:1、抽象类是不完整的(可以理解为类中的方法并没有完全实现),并且它只能用作基类。2、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。3、在继承抽象类时,必须覆盖该类中的每一个抽象方法示例:设计一个门类,因为是普通门和指纹门开门的方式是不原创 2021-04-28 15:08:06 · 177 阅读 · 2 评论 -
详解Java泛型之4——一个例子理解泛型带来的好处
前面我介绍了关于泛型、通配符以及泛型擦除的相关知识点,大家可以参考以下文章:详解Java泛型之1——入门泛型必懂的知识点详解Java泛型之2——详解通配符详解Java泛型之3——十分钟理解泛型擦除今天我设计一个实例,分别通过重载、Object类型参数以及泛型三种方式来实现这个实例,让大家清楚地体会到使用泛型技术给我们带来的好处!实例需求有这样一个需求,自己写一个方法能够比较两个数值的大小,如果相等返回true,否则返回false。通过重载实现分析:因为在java...原创 2021-07-08 11:37:14 · 157 阅读 · 0 评论 -
详解Java多态
多态定义多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。多态有两种表现形式:重载和覆盖。重载(overload)重载是发生在同一类中。与父类和子类、继承毫无关系。标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数叫同一个名字,而他们的参数不同。他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读...原创 2020-11-05 11:22:22 · 198 阅读 · 1 评论 -
测试同学上手Spring 之DI深入解析
前面已经介绍了如何上手Spirng编码以及IOC的核心概念,文章链接如下:测试同学从0到1上手Spring测试同学上手Spring 之IoC深入解析今天给大家讲解Spring的另一个重点——DI。DI概念IoC 其实有两种方式,一种就是 DI(Dependency Injection),而另一种是 DL(Dependency Lookup)即依赖查找。前者是当前组件被动接受IoC容器注入的依赖组件,而后者则是组件主动去某个服务注册地查找其依赖的组件,我们这里重点介绍DI。..原创 2021-03-22 09:36:38 · 421 阅读 · 0 评论 -
测试开发必须掌握的重要知识点-Spring的核心知识点 -Java注解@
由@Autowired引发对注解的思考我们在编写Spring应用时,会发现通过@Autowired来对成员变量、方法和构造函数进行标注进而实现自动装配的工作,在IDE中点击@Autowired 看其源码会发现里面有更多以@开头的东东,这就是我们今天讲解的重点——Java注解!@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANN..原创 2021-04-12 09:29:04 · 153 阅读 · 0 评论 -
详解Java泛型之3——十分钟理解泛型擦除
前面我们介绍了泛型以及通配符的基础概念,可以参考文章:详解Java泛型之1——入门泛型必懂的知识点详解Java泛型之2——详解通配符今天我们来讲解泛型中另一个重要知识点——泛型擦除!泛型擦除概念泛型信息只存在于代码编译阶段,但是在java的运行期(已经生成字节码文件后)与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。我们来看一个例子:ArrayList<Integer> l1 = new ArrayList();ArrayList<String> l2原创 2021-06-18 10:22:11 · 298 阅读 · 1 评论 -
测试同学从0到1上手Spring
最近在各个大厂的JD中关于测试平台开发的职位信息频频曝光,有很多同学对该职位产生了极高的热情。也有很多人对其望而却步,认为Spring、Spring boot这些东东太深奥了,开发都很难搞定,自己是一个tester又怎能驾驭呢?为了打消大家的顾虑,我准备了一系列文章,通过我一个测试人的视角(我是从零开始学习,我懂测试同学的需求),用最通俗的语言帮大家搞定Spring基础知识,进而快速理解Spring并在实际工作中进行应用!Spring定义Spring是一个开源框架,是为了解决企业应用程序开发复杂性而原创 2021-03-09 15:41:39 · 153 阅读 · 0 评论 -
一文搞懂String 、CharSequence、StringBuffer和StringBuilder
String 、CharSequence、StringBuffer和StringBuilder概述String 是java中的字符串,他实现了CharSequence接口,代码如下public final class String implements java.io.Serializable,Comparable, CharSequenceCharSequence是一个接口,包括length(), charAt(int index),subSequence(int start, int end原创 2021-05-06 10:41:04 · 244 阅读 · 0 评论 -
测试同学上手Spring 之IoC深入解析
想要理解Spring,必须要掌握的两个知识点就是IoC和AOP,在这里我首先带大家了解一下什么是IoC。为大家上手Sping编码做好前期最充分的知识储备,做到有的放矢!Spring Hello World 回顾在Hello Spring实例中我们定义了类public class HelloSpring { private String name="hello"; HelloSpring(){ System.out.println("Hello Spring");原创 2021-03-15 13:31:09 · 106 阅读 · 0 评论 -
测试开发必须掌握的知识点:Java反射
Spring 在创建 Bean 实例和依赖注入以及AOP时都使用了反射,今天我们就来讲解一下反射的概念以及其应用。反射机制Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时通过Reflection APIs取得任何一个已知名称的class的内部信息以及任意一个对象的内部信息。Java反射机制提供如下功能:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任一个对象的方法在运原创 2021-04-06 10:53:32 · 217 阅读 · 0 评论