- 博客(60)
- 收藏
- 关注
原创 从0到1带你自动化测试实战(万字详解)
之前学完了自动化测试工具Selenium和单元测试工具JUnit,一直没有进行实战,接下来以知识百宝库系统为例结合两者测试工具,基于web项目进行完整的自动化测试实战
2024-09-21 16:44:17
2128
74
原创 Spring 事务详解
上一章我们介绍了Spring AOP,今天来讲解Spring事务什么是事务?为什么需要事务?Spring 中事务的实现1.编程式事务2.声明式事务@Transactional详解1. REQUIRED(默认值)3.NEVER4.Nested如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞N_0050-优快云博客java SE_N_0050的博客-优快云博客。
2024-09-04 23:49:54
2378
55
原创 详解Spring AOP
Aspect Oriented Programming(面向切面编程),OOP是面向对象编程(开发的时候把一个个都抽象成对象来开发),两者的维度不同,处理的事情不同切⾯就是指某⼀类特定问题, 所以AOP也可以理解为⾯向特定⽅法编程。面向切面编程就是针对某一类特定问题统一进行编程比如people类有自己的属性和行为,但是有小一部分人生病要去医院看病,看病这个业务逻辑就不属于哪一个类,因为people泛指所有人,所有人不会都看病。
2024-08-30 15:23:09
1736
41
原创 SpringBoot 统一功能处理
拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截用户的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。例如公司的保安拦截不是工作人员的人员如果不是工作人员需要登记后才可放行,也可以想象成打给银行电话办理一些业务的时候,需要先输入手机号啊银行卡啊密码啊选择业务啊校验你的身份,成功才会转到人工服务。它的作用维度是URL• 拦截器的使⽤步骤分为两步:•1. 定义拦截器,实现HandlerInterceptor接口,重写里面的preHandle和postHandle方法•。
2024-08-26 23:46:28
1597
32
原创 SpringIoC&DI
IoC 是Spring的核⼼思想,注意这是一个思想!!!IoC (控制反转)是啥?控制权反转就是将创建对象的控制权,交给了Spring。也就是说Spring是一个"控制反转"的容器。类似⾃动驾驶,车辆的控制权交给了驾驶⾃动化系统来控制•控制权:之前创建对象的控制权是由java里面的一些程序控制的,也就是其他对象去创建的,就是使用者去创建的,谁用谁创建。例如图中bookService是由BookController类创建的。
2024-08-20 11:26:15
1054
25
原创 详解Spring MVC
MVC 就是 Model View Controller 的缩写,属于一种软件架构设计模式一种思想,把我们的项目分为控制器(Controller)、模型(Model)、视图(view)三个部分model就是处理业务逻辑处理数据的controller就是接受请求丢给对应的model进行处理的view就是展示数据的也就是界面。
2024-08-17 14:33:30
5619
29
原创 Java EE基础知识点
上一章我们介绍了性能测试工具LoadRunner,今天开启新的篇章EE进阶相关的内容,涉及到框架的使用什么是框架?Java都有哪些框架?什么是Maven?什么是打包?jar包:就是把开发⼈员已经写好的⼀些代码进⾏打包,打好的jar包就可以引⼊到其他项⽬中,也可以直接使⽤这些jar包中的类和属性,另外也可以打成可执⾏jar包, 这样的包就可以通过java -jar命令来执⾏war包:可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西,通常⽤于⽹站注意:添加完依赖记得点刷新按钮,这样才会生效!!!我们可以使用Ma
2024-08-13 12:40:45
1231
18
原创 性能测试工具LoadRunner
上一章我们介绍了性能测试的一些基本概念,重要的是性能测试的各项指标,今天我们使用性能测试工具LoadRunner简单的完成一次性能测试原理:LR启动以后,在任务栏会有一个Agent进程,通过Agent进程,监视各种协议的Client与Server端的 通讯,用LR的一套C语言函数来录制脚本,所以只要LR支持的协议,就不会存在录制不到的,然后LR调用这些 脚本向服务器端发出请求,接受服务器的响应。至于服务器内部如何处理,它不关心LoadRunner性能测试流程
2024-08-09 00:29:46
1810
36
原创 性能测试基础概念
测试人员借助性能测试工具,模拟系统在不同场景下,对应的性能指标是否符合预期资源泄漏,包括内存泄漏,线程死锁,阻塞等造成系统越来越慢,查询速度慢,或者列表的效率低等常见的就是在双11和618这种节日或学校网站选课的时候,在这种情况下,对于一些购物网站来说就会出现性能问题,短时间内同时有大量支付和创建订单等操作产生的并发量巨大导致服务器崩了,衡量一个软件性能好不好在这种极端情况下也可以看出。
2024-08-07 23:39:43
1919
26
原创 单元测试JUnit
上一章我们介绍了自动化测试工具Selenium,今天讲解单元测试工具JUnit首先添加依赖,去中央存储库中搜索找到对应的依赖,我这边选择的是5.8.2,代码如下首先导入注解的依赖,代码如下@Test:表示当前的这个方法是一个测试用例@Disabled:表示忽略当前这个测试用例,直接跳过测试。方便修改这个测试用例输出结果,只输出了上面test1方法的内容@BeforeAll:表示所有测试用例在跑之前,先去执行BeforeAll注解里的代码。所以做UI自动化通常情况把创建驱动打开网页放在
2024-08-04 00:40:59
1710
23
原创 自动化测试selenium
上一章我们对软件测试进行了分类,今天我们来讲解一下自动化测试工具selenium什么是自动化测试?什么是selenium?环境搭建元素的定位操作测试对象如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞N_0050-优快云博客java SE_N_0050的博客-优快云博客java数据结构_N_0050的博客-优快云博客java EE_N_0050的博客-优快云博客什么是自动化测试?
2024-08-02 21:03:34
2832
36
原创 测试类型分类
上一章我们介绍了如何设计一个测试用例,接下来我们对测试类型进行分类以便更好的了解和分清不同测试测试的内容、对象、时间点等对软件界面进行测试包含的以下内容:1.验证界面内容显示的完整性,一致性,准确性,友好性2.验证整个界面布局和排版是否合理,不同板块字体的设计,图片的展示是否符合需求3.对界面不同控件的测试,比如,对话框,文本框,滚动条,选项按钮等是否可以正常使用4.界面的布局和色调符合当下时事的发展可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%,比例越高说明软件可靠性越高。可用性指标
2024-08-02 17:19:56
1450
16
原创 如何设计一个测试用例
上一章我们介绍了什么是软件测试以及软件测试的一些基础概念,今天来聊聊如何设计一个测试用例,涉及到黑盒测试的测试方法基于需求进行测试用例的设计基于需求的具体设计方法等价类边界值判定表法正交表法场景设计法错误猜测法如何模拟弱网?测试用例设计万能公式如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞N_0050-优快云博客java SE_N_0050的博客-优快云博客。
2024-08-01 20:47:41
963
13
原创 软件测试基础概念
上一章我们介绍了什么是软件测试,今天我们讲解测试的一些基础概念1.需求分析就是站在用户的角度看需求是否完整是否正确,站在开发的角度看需求是否能实现或者实现难度大小2.测试计划就是制定测试计划(确定谁来测试什么时候开始测试什么时候结束测试测试哪些模块)3.测试设计、测试开发就是写测试用例(手工测试用例、自动化测试用例)、编写测试工具,测试执行就是执行测试用例,测试评估就是测试人员写一个测试报告包含测试的评估等信息 测试报告内容:测试人员、测试时间(开始时间到结束时间)、开发人员、开发时间、测试用例、bug
2024-07-31 20:17:10
1041
16
原创 软件测试基础知识
上一章我们介绍了jvm相关的知识点,接下来我们进入新的篇章软件测试篇,今天先讲解软件测试的一些基础知识和概念相关的知识可能比较枯燥什么是软件测试?软件测试点可以穷举吗?测试和调试有什么区别?软件测试和软件开发的区别?优秀的测试人员需要具备哪些素质?测试概念什么是需求?测试人员眼里的需求是啥样的?什么是测试用例?为什么有测试用例?什么是bug?软件的生命周期开发模型瀑布模型螺旋模型增量开发迭代开发敏捷开发测试模型V模型编辑W模型(双V模型)
2024-07-29 00:50:52
1895
24
原创 了解Java虚拟机(JVM)
上一章我们介绍网络原理相关的知识点,今天我们浅浅来了解一下java虚拟机JVMJVM内存区域划分方法区/元数据区(线程共享)堆(线程共享)虚拟机栈(线程私有)本地方法栈程序计数器(线程私有)类加载双亲委派模型类加载器类加载过程(也就是上面说的找class文件的过程)JVM垃圾回收机制(GC)找到不再使用的对象回收不再使用的对象分代回收如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞
2024-07-26 21:56:57
976
23
原创 网络原理(下)
上一章我们介绍了网络层和数据链路层相关协议以及解释了DNS,今天来讲解HTTP协议以及HTTPS协议如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞N_0050-优快云博客java SE_N_0050的博客-优快云博客java数据结构_N_0050的博客-优快云博客java EE_N_0050的博客-优快云博客。
2024-07-20 01:00:22
1115
27
原创 网络原理(中)
上一章我们介绍了传输层协议的报文格式以及协议机制,今天接着介绍网络层协议网络层要做的事情,主要是两个,也可以说是核心功能1.地址管理:制定一系列的规则,通过地址来描述一个设备在网络上所处的位置。类似我们收件的地址2.路由选择:因为网络环境比较复杂,一个节点到另外一个节点之间有不同的路径可以走,通过这种方式可以规划出合适的路径进行数据传输。前面初始网络提到过这点,类似快递要经过的路线有很多选择一条合适的去进行运送报头中的字段:1.32位源IP地址和32位目的IP地址:IP协议中最关键的内容,采用点分十进制表示
2024-07-18 11:20:11
971
16
原创 网络原理(上)
上一章我们介绍了网络的一些基础知识,今天来讲解一下网络原理相关的知识点,分三篇进行阐述内容有点多例子:打开外卖软件,相当于发起一个请求带有用户信息和位置信息,然后看到商家列表,这里就涉及程序和服务器之间的网络通信交互。这样服务器就根据请求中带有的信息进行处理然后返回响应(商家列表,每个商家包含头像、名称、地址等)开发中常见的格式:1.xmlHTML是xml的变种,xml是通用的数据格式,我们可以自定义。HTML是专属的数据格式,标签都定义好了的xml的特点:数据的可读性更好,但是标签写起来繁琐,传输的时候会
2024-07-17 01:06:30
1215
34
原创 初始网络知识
上一章我们介绍了使用java代码操作文件,今天我们来聊聊网络的一些基础知识点,以便后续更深入的了解网络如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实是指互联网局域网和广域网的关系和区别:就比如一家公司,有很多分公司在不同的地区,每家分公司可以看作是一个局域网。我们可以通过网络连接将所有的分公司进行连接,这样就能实现跨地通信,这种就叫广域网可以想象平常我们的机房电脑就连接一个路由器那只能这几台电脑进行通信,但是如果路由路由之间再进行连接
2024-07-11 20:53:49
1903
38
原创 文件操作和IO流
上一章我们介绍了多线程进阶的相关内容,今天来介绍使用java代码对文件的一些操作1.绝对路径:就是上面这个以你的盘开头的C:\Windows\System322.相对路径:前提是指定了一个目录,作为基准目录,从基准目录出发沿着路线找你指定的文件,以 .(当前目录)或者 ..(当前目录的上一级目录)开头,结合上面的对比就看出来了1.文本类型:文件中保存的数据,都是字符串,保存的内容都属于合法的字符2.二进制类型:文件中保存的数据,都是二进制,保存的内容不一定是合法的字符首先说什么是字符,字符就是字母、数字、符
2024-07-09 23:43:15
1051
29
原创 多线程(进阶)
上一章我们介绍了线程池的一些基本概念,今天接着分享多线程的相关知识,这些属于是面试比较常见的,大部分都是文本内容乐观锁:预测接下来锁冲突的概率小,就少做些工作称为"乐观锁",乐观锁认为多个线程访问同一个共享变量冲突的概率不大,线程可以不停地访问数据无需加锁也无需等待, 在访问的同时识别当前的数据是否出现访问冲突乐观锁的实现:可以引入一个版本号,借助版本号识别出当前的数据访问是否冲突也可以使用CAS 例子:就像你有问题问老师,乐观的人认为老师不忙肯定有时间,然后直接去找老师,老师如果确实没空就回去
2024-07-07 18:54:15
1179
25
原创 线程池概念的详解
上一章我们介绍了什么是定时器以及如何去实现一个定时器,今天我们来讲解在多线程中同样很重要的一个内容线程池我们知道线程诞生的意义,是因为进程的创建和销毁的操作开销太大并且效率不高,但是呢如果频繁的创建和销毁线程,开销也不小下面使用两种办法,进一步提高线程效率简易解释:在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被其他任务复用线程池可以看作是海王的鱼塘
2024-07-04 00:25:17
1199
33
原创 什么是定时器?
上一章我们介绍了阻塞队列以及生产者消息模式,今天我们来讲讲定时器举个例子,当客户端给服务器发送请求后,服务器半天没有响应,就像你发邮件一样,发的时候会转圈圈,成功了就会显示发送成功或者什么提示信息,如果服务器没有响应,你这边可能就一直在那转圈圈。我们也不知道是什么原因造成的,可能是请求没发过去,可能是响应丢了,也可能是服务器出现了问题。所以对于客户端来说,也可以说对用户来说,肯定不能一直等啊那体验多不好啊,所以设置一个等待时间(最大的期限),过了这个等待时间把电脑砸了,开个玩笑,过了这个最大期限
2024-07-03 00:40:33
909
18
原创 生产者消费模式
上一章我们介绍设计模式中的单例模式,今天我们来讲讲生产者消费模式多线程代码中比较常用的一种数据结构阻塞队列是一种特殊的队列,也遵守 "先进先出" 的原则,阻塞队列是一种线程安全的数据结构, 并且具有以下特性:1.线程安全2.带有阻塞特性 1.如果队列为空,出队列就会发生阻塞,阻塞到其他队列往队列里添加元素为止 2.如果队列为满,入队列就会发生堵塞,阻塞到其他队列从队列里取出元素为止阻塞队列的最大作用,就是可以用来实现"生产者消费模型"(一种常见的多线程代码编写方式)生产者消费模型例子:华莱士或者肯德基生产者
2024-07-02 12:10:51
1048
8
原创 什么是单例模式?
上一章我们介绍了多线程下引发的安全问题,今天接着讲解多线程的内容,同样很重要,请细品开发过程中,会遇到很多经典场景,就是经常出现这种场景,针对这些频繁出现的场景,提出了这种设计模式,遇到什么场景我们就用什么设计模式像单例模式这样的思想,在很多地方有体现,例如final修饰的常量修改了会报错,以及接口实现了接口就必须重写里面的所有方法不然会报错等。但是呢,在语法上,没有对单例做出支持,只能通过编程技巧来达成类似的效果,此时我们需要编译器帮我们做出监督,如果创建出多个对象,编译器直接报错下面我们设计一个单例模式
2024-07-01 20:18:00
1130
21
原创 多线程引发的安全问题
上一章我们介绍了线程的一些基础知识点,例如创建线程、查看线程、中断线程、等待线程等知识点,今天我们讲解多线程下引发的安全问题线程安全(最复杂也最重要)产生线程安全问题的原因锁synchronized 的特性互斥性刷新内存可重入死锁(重要)如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正
2024-06-29 14:34:31
1031
38
原创 多线程(基础)
上一章我们介绍了什么是进程,对于进程就了解那么多即可,我们作为java程序员更关注线程,线程内容比较多,所以我们要分好几部分才能讲完多进程编程的缺点:进程太重量效率不高,创建进程和销毁进程和调度进程消耗的时间都是比较多的(消耗在申请资源上),因为我们知道进程是系统资源分配的基本单元,所以在给进程分配资源的时候是一个大活。拿分配内存说,操作系统内部也有一定的数据结构,用来管理空闲的内存,当进程申请内存空间的时候,操作系统就会从这个数据结构中找到大小合适空闲的内存返回给进程。这里的数据结构可以提高一定的效率
2024-06-27 21:13:43
1157
20
原创 什么是进程?
上一章我们介绍了计算机组成的入门知识,了解这些之后,今天来聊聊进程正在运行的程序,已经跑起来的程序。有些进程是自动创建的,有些进程是我们自己手动创建的。自动创建的就是你一开机操作系统中有些程序就跟着一起运行,下面这张图里的就是一个个正在运行的程序也就是我们的进程每个进程要想执行,会消耗一定的系统资源(硬件资源),可以这样理解就比如你要办一个生日那肯定需要钱才能办,所以进程执行也是一个道理,但是不同进程执行消耗的资源不一样,例如你现在要建一栋楼,那需要人力、财力等等的资源才行每个进程,都是操作系统资源分配
2024-06-25 21:49:40
1092
18
原创 计算机组成入门知识
操作系统"内核" 操作系统里面最核心的功能模块,内核本质上是一种特殊的软件(简单点说内核就是为操作系系统提供驱动、内存管理、网络、IO等功能的软件代码)。它是操作系统中最核心的部分,负责管理系统资源和提供基础服务(系统调用接口、设备驱动、进程管理、资源管理、内存管理一些底层资源的管理)
2024-06-23 21:46:38
1035
25
原创 MySQL JDBC编程
通过 java代码 操作 mysql数据库 统一所有操作数据库的接口 可以理解为这是java连接数据库的规范。数据库编程,是需要数据库服务器提供一些API(Application Programming Interface)应用程序编程接口供程序员去使用的,然后就能数据库进行交互,可以理解为一组已经实现的类和一组(函数或方法)或库
2024-06-08 19:06:47
1147
27
原创 MySQL索引与事务
索引 属于是针对 查询操作 引入的 优化手段 可以通过索引来加快查询的速度,避免针对表进行遍历,索引通过使用特殊的数据结构,可以快速查找和访问数据库表中的记录,从而避免全表扫描,提高查询效率,可以把索引所起的作用想象成书籍目录,可用于快速定位、检索数据
2024-06-04 15:21:51
984
20
原创 java17 新特性(实用)
顾名思义就是密封跟final的作用类似,但是呢又不完全类似,因为final修饰的类不能被继承,此时提高了一个新的关键字Sealed用来修饰密封类,废话不多说,直接上代码。java17对instance of进行了优化,在判断类型的时候,如果符合我们的条件直接创建一个符合类型的临时变量,老规矩看代码。这样大家应该能看的懂吧,这里再补充一下为什么最后一个map打印的是{1=17}首先java17引入了一个新的关键字var,它可以代替很多类型名,java17引入了一个新的类,java17引入了一个新的。
2024-06-03 21:25:49
1036
8
原创 MySQL CRUD进阶
上一章我们介绍了CRUD的一些基础操作,关于如何在表里进行增加记录、查询记录、修改记录以及删除记录的一些基础操作,今天我们学习CRUD(增删改查)进阶操作这一列不能填null值(相当于必填项),并且插入和修改都会被限制创建插入修改相当于填写的值不能重复,并且插入和修改都会被限制,且会让后续的 插入和修改数据 的时候,都会先触发一次 查询 的操作(通过这个查询,来确定当前这个记录是否已经存在)创建插入我们先插入一条数据,然后再插入一条数据但是id跟上一次插入的id一样,发现报错了,结合上面说的后续的插入和修改
2024-05-04 20:57:26
1142
26
原创 MySQL CRUD操作
上一章我们介绍了数据库的一些基础操作,关于如何去创建一个数据库啊,还有使用数据库啊,删除数据库以及对表进行的一些基础操作,今天我们学习CRUD操作俗称(增删改查)还是那句话要对数据库进行操作的时候,要先选中你要进行操作的数据库使用 单引号 或者 双引号 表示 字符串,SQL没有 字符 这个类型表记录展示这里的null是 成功插入这条语句的id 为null 表记录展示插入datatime类型获取当前时刻的时间 now()方法 表记录展示把表中的的 所有行 和 所有列 都查询出来 select * 操作,算
2024-04-29 13:40:00
1453
10
原创 MySQL基础操作
MySQL的本体是 服务器 在服务器这边来负责存储和管理数据 把数据存储在硬盘上的,数据库通过硬盘去存储数据 希望存储的数据量大 持久化存储,少数数据库用内存去存储数据,追求速度最大化 例如redis
2024-04-26 20:56:32
1121
9
原创 反射、枚举、lambda表达式的使用
Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制
2024-04-13 19:49:28
876
12
原创 java 数据结构 排序算法
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作,所有的排序默认都是从小到大排序稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。
2024-03-20 21:01:52
1179
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人