自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

积跬步以至千里

积跬步以至千里

  • 博客(51)
  • 收藏
  • 关注

原创 Junit单元测试框架【基础篇】

junit的默认执行顺序是不确定的。官方文档没有明确给出,我们仍然可以使用junit里提供的方法来手动设置用例的执行顺序。@Parameterizedtest标注方法类型为参数化﹐不需要再添加@Test注解,如果添加了,该用例会多执行一遍。@MethodSource(“”) 参数为数据来源的方法名,如果不指定数据来源,则默认找跟用例同名的静态方法。指定包,添加到套件中并执行(执行包下面所有以Test命名的文件中的所有@Test注解的用例)文档中给出的排序方法非常多:诸如方法的排序、标签的排序…

2023-01-26 20:41:25 909 12

原创 自动化测试Selenium【基础篇二】

不能够在前端代码定位到元素需要使用Selenium中提供的Alert接口来处理Alert alert = driver. switchTo().alert()提示弹窗可能由于没有快速弹出,alert没有捕捉到,会报错,所有我们会进行隐式等待或者强制等待。通过sendKey()方法输入我们想要上传的文件路径以及文件名,就能够达到文件上传的一个操作。(1)前进driver. navigate().forward ()(2)后退driver. navigate (). back()

2023-01-22 13:36:11 994 2

原创 自动化测试Selenium【基础篇一】

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程自动化测试包括UI自动化,接口自动化,单元测试自动化按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI),可以用较少的投入获得很好的收益图片来源百度驱动的工作原理是:汽车有驱动,两轮驱动、四轮驱动可以让汽车跑起来计算机里也有驱动程序,可以驱动计算机和设备工作起来打开浏览器也需要驱动。

2023-01-20 09:11:02 1805 1

原创 Spring AOP【统一异常处理与统一数据格式封装】

我们发现在我们处理异常时,需要手动处理多处不同异常情况,这样会使我们消耗大量时间,并且还有些不可控的异常。以上⽅法表示,如果出现了异常就返回给前端⼀个 HashMap 的对象,其中包含的字段如代码中定义的那样。所有我们可以在处理完特殊异常后,在统一使用Exception 来进行处理。这时我们就可以通过异常处理来返回一个JSON对象给前端了。1、给当前类添加@ControllerAdvice。所有我们要进行统一异常处理返回给前端。,添加异常返回的业务代码。

2023-01-17 08:05:06 1325 5

原创 Spring AOP【用户登陆统一验证功能】

对于以上问题 Spring 中提供了具体的实现拦截器:HandlerInterceptor,拦截器的实现分为以下两个步创建⾃定义拦截器,实现接⼝的preHandle(执⾏具体⽅法之前的预处理)⽅法将⾃定义拦截器加⼊实现接口类的,重写⽅法中具体实现如下:/*** 自定义登陆用户登陆拦截器/*** 返回 ture 表示拦截判断通过, 可以访问后面的接口, 如果返回false 表示拦截未通过,直接返回结果给前端= null) {// 表示已经登陆 return true;

2023-01-14 08:41:29 1105 7

原创 Selenium【Selenium环境搭建与Junit5】

Selenium【Selenium环境搭建与Junit5】🍎一. 自行下载谷歌浏览器或者火狐浏览器🍒1.1 安装好之后需要去掉谷歌(火狐)浏览器自动更新(建议)🍒1.2下载谷歌(火狐)驱动🍎二.Selenium下载与配置🍒2.1Selenium下载🍒2.2Selenium4 与 Junti 5配置🍎一. 自行下载谷歌浏览器或者火狐浏览器🍒1.1 安装好之后需要去掉谷歌(火狐)浏览器自动更新(建议)任务管理器⸺服务🍒1.2下载谷歌(火狐)驱动注意:⾕歌驱动需要跟⾕歌浏览器版本⼀致(1)查看个⼈的

2023-01-11 08:43:35 635 2

原创 Spring AOP【AOP的基本实现与动态代理JDK Proxy 和 CGLIB区别】

在介绍 Spring AOP 之前,⾸先要了解⼀下什么是 AOP?AOP(Aspect Oriented Programming):面向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽐如⽤户登录权限的效验,没学 AOP 之前,我们所有需要判断⽤户登录的⻚⾯(中的⽅法),都要各⾃实现或调⽤⽤户验证的⽅法,然⽽有了 AOP 之后,我们只需要在某⼀处配置⼀下,所有需要判断⽤户登录⻚⾯(中的⽅法)就全部可以实现⽤户登录验证了,不再需要每个⽅法中都写相同的⽤户登录验证了我们之前的处理⽅式是每个 Control

2023-01-08 18:24:44 715 9

原创 MyBatis【多表查询与动态SQL使用】

我们在进行多表查询的时候,我们需要在数据库创建两个表(作者表,文章表)::在项目中创建的对象:在userinfo配置文件mybatis.xml配置信息在aricleinfo配置文件mybatis.xml配置信息🍒1.1 一对一查询创建一个ArticleMapper接口方法:创建一个ArticleMapper接口对应 aricleinfo 和 userinfo 在maybatis.xml配置文件ArticleMapper.xml

2023-01-05 10:08:22 765 10

原创 MyBatis【MyBatis的增删改查操作与单元测试】

单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试单元测试是开发者编写的⼀⼩段代码,⽤于检验被测代码的⼀个很⼩的、很明确的(代码)功能是否正确。执⾏单元测试就是为了证明某段代码的执⾏结果是否符合我们的预期。如果测试结果符合我们的预期,称之为测试通过,否则就是测试未通过(或者叫测试失败)Spring Boot 项⽬创建时会默认单元测试框架 spring-boot-test,⽽这个单元测试框架主要是依靠另⼀个著名的测试框架 JUnit 实现的,打开 pom.xm

2023-01-02 08:35:26 2153 6

原创 复习篇【类的构造方法与代码块的执行】

注意事项:● toString 方法会在 println 的时候被自动调用.● 将对象转成字符串这样的操作我们称为 序列化.● toString 是 Object 类提供的方法, 我们自己创建的 Person 类默认继承自 Object 类, 可以重写 toString 方法实● 现我们自己版本的转换字符串方法. (关于继承和重写这样的概念, 我们后面会重点介绍).● @Override 在 Java 中称为 “注解”, 此处的 @Override 表示下面实现的 toString 方法是重写了

2022-12-31 08:22:27 494 4

原创 复习篇【时间复杂度与空间复杂度】

算法效率分析分为两种:第一种是时间效率,第二种是空间效率时间效率被称为时间复杂度,而空间效率被称作空间复杂度时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

2022-12-29 08:15:00 163 2

原创 MyBatis【创建与使用】

MyBatis 是⼀款优秀的`持久层框架`,它⽀持⾃定义 SQL、存储过程以及`⾼级映射`。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录

2022-12-28 16:55:31 1834 3

原创 Spring MVC【返回数据与请求转发和重定向】

请求转发(Forward):发生在服务端程序内部,当服务器端收到一个客户端的请求之后,会先将请求,转发给目标地址,再将目标地址返回的结果转发给客户端请求重定向(Redirect):请求重定向指的是服务器端接收到客户端的请求之后,会给客户端返回了一个临时响应头,这个临时响应头中记录了,客户端需要再次发送请求(重定向)的 URL 地址,客户端再收到了地址之后,会将请求发送到新的地址上,这就是请求重定向。

2022-12-24 09:54:37 1525 7

原创 Spring MVC【参数的获取与数据返回】

我们在Windos 和 Linux系统上传的文件所保存的地址是不能一样的所有我们需要通过配置文件来进行开发和上线时进行分割,所有我们需要在创建一个application,yml配置文件 分别设置储存位置application-dev.yml(Windows),application-prod.yml(LInux)当我们与前端约定参数的value值时认为不适合自己代码的编写时,我们就可以将前端设置好的代码进行自定义,但是还是以前端约定好的代码进行交互的,我们只需要在方法获取参数的内容里。

2022-12-21 08:48:38 1135 4

原创 Spring MVC【创建与使用】

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring MVC” .Spring MVC 是⼀个Web 框架Spring MVC 是基于Servlet API 构建的MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为 模型、视图和控制器。

2022-12-18 08:46:55 1330 5

原创 SpringBoot【配置文件】

properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。

2022-12-16 15:43:24 1332 8

原创 SpringBoot【创建与使用】

●快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架(不需要在Maven中央仓库去下载依赖)●内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序(不需要在启动项目时下载Tomcat 等 Web 容器或者下载该类似的插件)●快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬(不需要在启动项目时部署Tomcat 等 Web 容器或者使用该类似的插件)●可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。

2022-12-12 10:44:22 1336 7

原创 SpringBoot【日志文件的打印与输出】

●在程序中得到⽇志对象使⽤⽇志对象的相关语法输出要打印的内容注意:Logger 对象是属于 org.slf4j 包下的,不要导⼊错包。到问题类private final static Logger log = LoggerFactory . getLogger(类名 . class)⽇志⼯⼚需要将每个类的类型传递进去,这样我们才知道⽇志的归属类,才能更⽅便、更直观的定位@Controller @ResponseBody //动态页面 public class UserController {

2022-12-08 21:01:54 5486 31

原创 Spring【Bean的作用域与生命周期】

限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。⽽ Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀个⼈读取到的就是被修改的值。

2022-12-05 21:02:07 1294 16

原创 Spring【五大类注解的存储和读取Bean方法注解】

在 Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解,也就是我们接下来要学习 Spring 中的相关注解,来存储和读取 Bean 对象。我们会在前面的存储和获取对象时发现,为什么在getBean方法获取Bean对象时要将Bean对象的属性名输入为小驼峰型?,不同的窗口,然后进行相应的工作人员办理业务!我们先创建一个班级类。

2022-12-02 21:07:22 1318 34

原创 Spring【Spring的创建与使用】

继承关系和功能⽅⾯来说:(BeanFactory 和ApplicationContext父类)Spring 容器有两个顶级的接⼝:BeanFactory 和ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持从性能⽅⾯来说\

2022-11-27 20:57:23 972 65

原创 Spring【Spring的概述与设计思想】

框架相当于从“⼩作坊”到“⼯⼚”的升级,⼩作坊什么都要⾃⼰做,⼯⼚是组件式装配,特点就是⾼效框架更加易⽤、简单且⾼效容器是⽤来容纳某种物品的(基本)装置● List/Map -> 数据存储容器● Tomcat -> Web 容器Spring 也是⼀个容器,Spring 是什么容器呢?Spring 是⼀个 IoC 容器什么是 IoC?

2022-11-23 21:37:56 230 22

原创 JVM【类加载与GC垃圾回收机制】

JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统常见的虚拟机:JVM、VMwave、Virtual BoxVMwave与VirtualBox是通过软件模拟物理CPU的指令集,物理系统中会有很多的寄存器JVM则是通过软件模拟Java字节码的指令集,JVM中只是主要保留了PC寄存器,其他的寄存器都进行了裁剪JVM 是一台被定制过的现实当中不存在的计算机。

2022-11-18 21:46:27 1202 70

原创 Linux【搭建环境与基本指令】

Linux 是一个操作系统. 和 Windows 是 “并列” 的关系.Linux 严格意义来说只是一个 “操作系统内核”.一个完整的操作系统 = 操作系统内核 + 配套的应用程序.由于 Linux 是一个完全开源免费的内核, 因此有些公司/开源组织又基于 Linux 内核, 提供了不同的配套程序. 这就构成了不同的 "发行版。

2022-11-17 21:30:00 1109 44

原创 Servlet【 ServletAPI中的会话管理Cookie与Session】

服务器同一时刻收到的请求是很多的. 服务器需要清除的区分清楚每个请求是从属于哪个用户, 就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系.在上面的例子中, 就诊卡就是一张 “令牌”. 要想让这个令牌能够生效, 就需要医院这边通过系统记录每个就诊卡和患者信息之间的关联关系.默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系.但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的.●Cookie 是客户端的机制. Session 是服务器端的机制.

2022-11-15 21:31:56 1461 77

原创 Servlet【方法使用】

Servlet是属于上层建筑,它处在应用层,它的下层有传输层,网络层,数据链路层,硬件,属于“经济基础”,毕竟下层经济基础决定上层建筑。前面说过,Servlet是一组操作HTTP的API,Tomcat可作为HTTP服务器来处理请求**,这个处理请求的关键就是调用Servlet来操作HTTP给客户端做出响应

2022-11-14 21:06:01 561 38

原创 Tomcat【调用Servlet与执行逻辑】

Servlet是一组操作HTTP的API,Tomcat可作为HTTP服务器来处理请求,这个处理请求的关键就是调用Servlet来操作HTTP给客户端做出响应

2022-11-12 22:51:25 1127 18

原创 Tomcat的安装与Maven依赖Servlet的使用

Tomcat 是一个 HTTP 服务器.前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式.同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端.HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是被广泛使用的 HTTP 服务器.

2022-11-09 21:49:51 3542 62

原创 计算机网络【HTTP请求构造与HTTPS】

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层.HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况.臭名昭著的 “运营商劫持”下载一个 天天动听未被劫持的效果, 点击下载按钮, 就会弹出天天动听的下载链接.由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等), 那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改.

2022-11-07 21:30:00 930 55

原创 计算机网络【HTTP协议】

HTTP/HTTPS协议是应用层的网路协议目前大多数情况HTTP在传输层是基于TCP(HTTP1/2 是基于TCP,最新的HTTP协议是基于UDP协议,但是我们目前常用的HTTP应用层协议是HTTP1.0)

2022-11-04 21:11:18 4564 106

原创 HTML【基础篇】

重要] dl (总标签) dt (小标题) dd (围绕标题来说明) 上面有个小标题, 下面有几个围绕着标题来展开的注意:元素之间是并列关系ul/ol 中只能放 li 不能放其他标签, dl 中只能放 dt 和 ddli 中可以放其他标签.列表带有自己的样式, 可以使用 CSS 来修改. (例如前面的小圆点都会去掉)

2022-10-31 22:20:59 2766 68

原创 计算机网络【IP协议与以太网】

如果整个IP协议数据太长超过了64k的大小,IP协议就会将数据分成多分进行传输(大小不超过64k),通过标识来标识判断来这个是那一份的IP协议里的数据报,通过片偏移来判断在这个IP报文里是那个层(进行排序),通过标志位来辨别出是否后面还有没有有需要传输的分层数据,如果是0就代表还有,如果是1就代表这个分层数据就已经传输完毕了。

2022-10-28 21:53:26 10233 110

原创 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

UDP是User Datagram Protocol的缩写,该协议不需要连接,不稳定传输,面向数据报,全双工,简单且高效,但是它的数据载荷较小,一般适用于以下场景:●包总量较少的通信(DNS、SNMP等)●视频、音频等多媒体通信(即时通信)●限定于LAN等特定网络中的应用通信●广播通信(广播、多播)

2022-10-27 08:05:28 3072 94

原创 计算机网络原理【网络初识与TCP/IP四层模型和OSI七层模型的概念】

一.独立模式独立模式:我们的最早的计算机之间是相互独立二.网络互连随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连网络互连:将多台计算机连接在一起,完成数据共享数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信,根据网络互连的规模不同,可以划分为局域网和广域网概念协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。

2022-10-24 12:48:56 1158 67

原创 Java多线程案例【线程池】

线程池和字符串常量池一样,都是为了提高程序运行效率而提出的效率,程序中每创建一个线程就会把该线程加载到一个“池子”中去,其实这个池子就是List,当程序下次需要调用该线程的时候,可以直接从线程池中去取,而不用花费更大的力气去重新创建和销毁线程,从而使程序的运行效率提高,线程池也是管理线程的方式之一,因为使用线程池调度线程是在用户态实现的,而线程的创建是基于内核态实现的**。为什么说用户态比内核态更加高效呢?

2022-10-23 17:20:22 1533 34

原创 Java多线程【锁优化与死锁】

死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。

2022-10-22 08:00:00 1236 60

原创 多线程【锁策略与CAS的ABA问题】

CAS: 全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。比较 A 与 V 是否相等。(比较)如果比较相等,将 B 写入 V。(交换)返回操作是否成功。CAS 伪代码下面写的代码不是原子的, 真实的 CAS 是一个原子的硬件指令完成的. 这个伪代码只是辅助理解CAS 的工作流程.}

2022-10-20 08:00:00 1638 56

原创 Java多线程案例【定时器】

定时器也是软件开发中的一个重要组件. 类似于一个“闹钟”. 达到一个设定的时间之后, 就执行某个指定好的代码1.比如网络通信中, 如果对方 500ms 内没有返回数据, 则断开连接尝试重连2.比如一个 Map, 希望里面的某个 key 在 3s 之后过期(自动删除)以上类似于这样的场景就需要用到定时器。

2022-10-19 08:00:00 2092 26

原创 Java多线程案例【阻塞队列】

阻塞队列特性:一.安全性二.产生阻塞效果:阻塞队列是一种特殊的队列. 也遵守 “先进先出” 的原则.阻塞队列能是一种线程安全的数据结构, 并且具有以下特性:当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素.当队列空的时候, 继续出队列也会阻塞, 直到有其他线程往队列中插入元素.阻塞队列的一个典型应用场景就是 “生产者消费者模型”. 这是一种非常典型的开发模型.

2022-10-17 19:30:32 1642 28

原创 Java多线程案例-单例模式【饿汉模式,懒汉模式】

设计模式好比象棋中的 “棋谱”. 红方当头炮, 黑方马来跳. 针对红方的一些走法, 黑方应招的时候有一些固定的套路. 按照套路来走局势就不会吃亏.软件开发中也有很多常见的 “问题场景”. 针对这些问题场景, 这是在一些互联网大佬们总结出了一些固定的套路. 按照这个套路来实现代码, 我们来学习一些模式,简单的实现一下。

2022-10-16 12:45:00 939 44

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除