自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 selenium 自动化测试 —— webdriver 常见API

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。其中对象的定位是自动化测试的核心。

2022-10-05 17:05:31 448 1

原创 UI 自动化测试 —— selenium的简单介绍和使用

selenium 是 web 应用中基于 UI 的自动化测试框架,支持多平台、多浏览器、多语言。提到 UI 自动化就先了解什么是自动化测试?

2022-10-01 18:01:15 7587

原创 多线程中的锁 —— synchronized

在 JVM 层面,synchronized 同步锁是依靠==监视器 monitor== 实现的。synchronized 同步代码块的实现是通过 monitorenter 和 monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit 指令则指明同步代码块的结束位置。当 jvm执行到 monitorenter 指令时,当前线程试图获取monitor 对象的所有权,如果未加锁或者已经被当前线程所持有

2022-08-20 21:59:43 564

原创 线程安全问题以及 volatile 的使用和原理

在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。也就是多个线程访问同一个对象时,如果不用其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。

2022-08-19 15:42:40 559

原创 File 类和 IO 流

在编程中,数据是存储在内存中的,但为了长久保存数据,就要使用文件(File)的形式存储,将数据存储在 I/O 设备上。 File类的对象代表操作系统的文件,File 类在 java.io.File 包下。File类提供了诸如:创建文件对象代表文件,获取文件信息、删除文件、创建文件等功能。2. File 类的使用2.1 创建 File 类public File(String pathname) // 根据文件路径创建文件对象public File(String pare

2022-08-16 22:09:20 738

原创 优先级队列 —— 堆

堆在逻辑上是一棵完全二叉树,物理上是保存在数组中的。满足任意节点的值都大于其子树中节点的值,叫做大根堆,任意节点的值都小于其子树中节点的值叫做小根堆。堆的基本作用是快速找集合中的最值。...

2022-08-14 08:15:00 437 1

原创 MySQL 优化

设计数据表时应尽量遵循范式理论的规约,尽可能的减少冗余字段,让数据库设计看起来精致、优雅。表的规范化程度越高,表和表之间的关系越多,需要连接查询的情况也就越多,性能也就越差。通过建立中间表,将需要通过联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询。对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。注意:冗余字段的值在一个表中修改了,就要想办法在其他表中更新,否则就会导致数据不一致的问题。...

2022-08-13 20:36:18 150 1

原创 二叉树的练习题

思路1:二叉树的递归,则是将某个节点的左子树、右子树看成一颗完整的树,那么对于子树的访问或者操作就是对于原树的访问或者操作的子问题,因此可以自我调用函数不断进入子树。思路2:使用辅助栈来存放每次遍历的根节点,弹出栈顶元素,然后判断该元素是否有左右子节点,有的话的加入栈中,优先加入右节点。给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)给定的二叉树是{3,9,20,#,#,15,7},给定一个二叉树,返回他的后序遍历的序列。输入:{1,2,#,#,3}输入:{1,#,2,3}.....

2022-08-12 22:14:51 521

原创 【MySQL】锁

死锁是指两个或多个事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象,如果没有外力作用,事务都将无法推进下去。

2022-08-12 21:26:09 287 1

原创 MySQL 执行查询流程

解析 SQL 语句的语义,进行关键字(select/update/delete/whiere 等)和非关键词的提取、解析,组成一个解析树。当判断缓存是否命中时,MySQL 不会进行解析查询语句,而是直接使用 SQL 语句和客户端发送过来的其他原始信息。此阶段主要是进行SQL语句的优化,会根据具体情况进行最优的选择,判断是否使用索引,以及选择合适的索引,生成执行计划。,调用存储引擎的 API 将数据保存到结果集中,同时会逐步将数据缓存到查询缓存中,最终将结果集返回给客户端。...

2022-08-09 22:55:07 642

原创 初识二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的节点,称为根节点,除根结点外,其余节点被分成 m (m > 0)个互不相交的集合,每个集合又是一棵与树类似的子树。...............

2022-08-08 21:12:23 138

原创 Java 中的栈和队列

在顺序队列中,当下标走到队尾后,不能再往后走插入元素,但其实数组中还有位置,这叫做“假溢出”,为了解决这个问题提高数组利用率,就出现了循环队列。队列是一种仅支持在表尾进行插入操作、在表头进行删除操作的线性表,插入端称为队尾,删除端称为队首,因整体类似排队的队伍而得名。front:指向循环队列的第一个元素下标,rear:指向循环队列的最后一个元素的下一个下标。,元素入队即将新元素加在队列的尾,元素出队即将队首元素取出,它后一个作为新的队首。,使之成为新的栈顶元素;,使其相邻的元素成为新的栈顶元素。...

2022-08-06 18:30:24 2670

原创 【MySQL —— 事务】四大特性、隔离级别

事务诞生的目的就是为了把若干个独立的操作打包成一个整体,这样的一组操作,要么全都执行,要么都不执行。事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位。

2022-08-06 09:20:06 889

原创 栈和队列的练习题

第一个栈 push 元素时,当另一个栈中没有元素时将当前插入的元素 push 进去,然后每一次插入元素时两个栈中的栈顶元素进行比较。如果当前插入的元素小于第二个栈的栈顶元素,就将当前元素 push 到第二个栈中,否则就将第二个栈中的栈顶元素重新入栈。处理括号问题,就是将括号中的部分看成一个整体,每次遇到左括号,将括号放入栈中,直到遇到右括号,再计算括号中的部分。所以就可以使用栈来完成,遇到左括号就将相应匹配的右括号加入栈中,后续如果是合法的,右括号的顺序就是栈中弹出的顺序。队列中的元素为int类型。....

2022-08-04 19:21:13 907

原创 【MySQL —— 索引】

MySQL 中的内部原理和机制非常多,前面的 sql 属于操作层面,后面的索引、事务就属于 MySQL 原理层面。如果之后要实现一个数据库,那么就必须懂得 MySQL 的运行机制和它的内部原理,所以索引、事务是面试这块必考的点。索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。索引是一种数据结构,数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中的数据。...

2022-08-03 22:38:40 1074 2

原创 初始 List 接口

​List 是 Java 中线性表定义的接口,是有序集合(也称为序列 ),是实现接口中的一个接口。该接口中可以精确控制列表中每个元素的插入位置。用户可以通过索引访问元素,并搜索列表中的元素。......

2022-08-03 20:40:26 299

原创 【MySQL —— 数据库约束】

表约束是在创建表的时候,设计一些表的约束条件用来保证数据的合法性和数据的正确性。

2022-08-02 21:01:42 183

原创 初始 Java 集合框架

Java集合框架JavaCollectionFramework,又被称为容器container,是定义在java.util包下的一组接口interfaces和其实现类classes。表现为将多个元素放在一个集合中,方便对这些元素进行增删改查CRUD。举例一组牌的集合(一副扑克牌)JCFJava集合框架黄色方框代表的是接口,蓝色方框代表的是抽象类,棕色方框代表的是普通类。上图中,Iterator是一种迭代器,用来遍历集合。Java集合框架分为两大种。............

2022-08-01 23:13:17 263

原创 MySQL 中出现的字符编码错误 Incorrect string value: ‘\x\x\x\x‘ for column ‘x‘

在MySQL数据库中,它的默认编码方式是拉丁文,所以它不能识别中文,就需要把数据库给配置成支持中文的编码方式,也就是配置成utf8编码方式。2.5重启服务器后,记得把之前建立的不能支持中文的库删掉,重新建库,因为旧的数据库没有收到影响,依然还是不能支持中文。,只需要修改配置文件,之后的数据库都会支持中文编码,比较方便。2.2找到my.ini文件,使用记事本打开,保险起见可以先备份然后进行修改。2.4修改完配置文件后,一定要记得。右击属性,找到存放配置文件的地址。修改完后记得一定要保存!...

2022-08-01 15:49:33 12253

原创 Java 中的常见排序算法 —— 七大基于比较的排序算法

排序方法最好一般最坏空间复杂度稳定性直接插入排序O(n)O(n^2)O(n^2)O(1)稳定希尔排序O(1)不稳定选择排序o(n^2)o(n^2)o(n^2)O(1)不稳定堆排序O(1)不稳定冒泡排序O(n)O(n^2)O(n^2)O(1)稳定快速排序O(n^2)不稳定归并排序O(n)稳定httpshttpshttpshttpshttpshttpshttps。...

2022-07-24 23:29:27 807 1

原创 泛型和包装类

我们在实现顺序表时,在声明阶段不能确定这个顺序表到底实际存的是什么类型的元素,所以我们将顺序表的元素类型定义成Object类型,这样就可以很自由的存储指向任意类型对象的引用到我们的顺序表了。//保存顺序表的元素,即Object类型的引用//保存顺序表内数据个数publicvoidadd(Objecto){尾插}publicObjectget(intindex){获取index位置的元素}...}但是有时候我们就会遇到一些问题,比如泛型。...

2022-07-19 23:09:40 129

原创 Java 内部类总结

嵌套在其他类内部的类,根据出现的位置和关键字可以分为以下四种内部类:成员内部类、静态内部类、方法内部类、匿名内部类。成员内部类的用法和成员方法差不多.代码示例:1. 创建内部类的语法:a. 在外部类内部创建内部类对象 内部类名 inner = new 内部类名();b. 在外部类的外部创建内部类对象(前提内部类不是 private)外部类.内部类 inner = new Outter().new Inner();2. 内部类可以变相的解决 Java 单继承局限。上述例子中 InnerExtend 类没

2022-07-13 12:19:48 265

原创 认识 Java 中的异常 看这篇

目录1. 初始异常2. 防御式编程3. 异常的基本用法3.1 基本语法3.2 为什么要处理异常3.3 关于异常的处理方式3.4 异常处理流程3.5 捕获异常的注意点3.6 抛出异常3.7 关于finally4. Java 异常体系4.1 Java 内置的异常类之间的继承关系图4.2 受查异常和非受查异常的区别5. 自定义异常类异常指的是程序在运行时出现错误时通知调用者的一种机制。“运行时”指的是程序已经编译通过得到 class 文件了,再由 JVM 执行过程中出现的错误。而有些错误是编译过程中就会出错,这是

2022-07-12 17:18:29 1341

原创 Java 中的接口以及常见的 Cloneable 接口

接口在 Java 中是一个抽象类型,是抽象方法的集合,是抽象类的更进一步。接口通常以 Interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。在打印图形的示例中(可以看上一篇),父类中没有 Shape 没有包含别的非抽象方法,所以也可以将它设计成一个接口。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。接口中只能包含抽象方法。对于字段来说, 接口中只能包含静态常量(final static)。小结:....

2022-07-10 20:34:43 1019 1

原创 Java 中的抽象类

目录1. 概念2. 理解抽象类3. 总结在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类使用 abstract 定义,并且抽象类是普通类的超集,除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类只是比普通类多了一些抽象方法而已。在上面代码中可以发现父类 Shape 类中的 draw 方法并没有实际的内容,绘制图形都是由 Sh

2022-07-10 11:54:11 775

原创 Java 三大特性之多态

目录1. 多态实现的三个必要条件1.1 继承1.2 向上转型1.2.1 向上转型发生的时机1.3 重写2. 理解多态(多态示例)3. 使用多态的好处3.1 类调用者对类的使用成本进一步降低3.2 简化性 3.3 可扩展能力更强4. 多态的实现方法5. 向下转型 多态是指同一个行为具有多个不同表现形式或形态的能力。当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。向上转型就是子类对象转换为父类的引用,是天然发生的。代码示例: 上面的代码中,我们有

2022-07-09 21:11:27 286 1

原创 Java 中的关键字(一)—— static 关键字 看这篇就够了

目录关键字 static1. 😊修饰变量2. 😊修饰方法3. 😊修饰代码块4. 😊修饰类作用:Java 中的静态变量和类相关, 和具体的实例无关。代码示例:从上面代码可以看出 count 被 static 所修饰,同一个类的不同实例共用同一个静态属性。且不属于对象,访问方式为:类名 . 属性。小结:例题:假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?()public class A{ public int i; static ....

2022-07-08 15:29:48 1914 2

原创 什么是方法递归?过程分析及练习

举例:求 N 的阶乘转化为递归问题:用数学归纳法来看:起始条件: N = 1 的时候, N! 为 1。这个起始条件相当于递归的结束条件。递归公式: 求 N! , 可以把问题转换成 N! => N * (N-1)。代码示例:执行过程图:执行过程图:4.3 写一个递归方法,输入一个非负整数,返回组成它的数字之和例如,输入 1729, 则应该返回1+7+2+9,它的和是19.4.4 求斐波那契数列的第 N 项4.5 求解汉诺塔问题汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower

2022-07-07 16:28:35 161 3

原创 Spring 是什么?了解 Spring 的核心以及设计思想

Spring 指的是 Spring Framework(Spring 框架),它是一个开源框架,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。Spring 是包含了众多工具方法的 IoC 容器。IoC (Inversion of Control)翻译成中文就是“控制反转”,也就是说 Spring 是一个“控制反转”的容器。也就是当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。IoC 容器相当于一个仓库,将对

2022-07-06 23:14:50 597 1

原创 重载和重写的区别总结

目录1. 什么是重载2. 什么是重写3. 二者的区别 重载的规则:代码示例:重写的规则:访问权限由大到小:public > protected > default > private代码示例:ps:推荐在代码中进行重写方法时显式加上 @Override 注解 。运行结果:......

2022-07-06 20:08:57 741

原创 Java 中的八大基本数据类型、类型转换

目录1. ♥常见的数据类型2. ♥引用数据类型3. ♥类型转换4. ♥数值提升5. ♥int 和 String 之间的相互转换八大基本数据类型:除了常见的八种数据类型还有一些引用数据类型:String类(字符串类型)、数组、类、接口等。总结:Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验。4.1 小范围提升大范围当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来接收结

2022-07-05 17:13:30 1731 3

原创 Java 是什么?Java 的特性、编程环境

Java 是一门面向对象的编程语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java 还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。Java语法是 C++ 语法的一个“简易版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java 开发环境远远超出大多数其他编程语言的开发环境。什么是面向对象? 就是做饭时,食材是对象,烹饪食材

2022-07-05 16:09:53 65332

原创 SpringBoot 概念、优点以及网页版创建

目录1. 什么是 SpringBoot ?2. SpringBoot 的优点3. 网页版创建(之前有一篇IDEA版创建看这篇)SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于 Spring 框架的框架,服务范围是简化配置文件。学习 SpringBoot 就是为了简化 Spring 框架,更加快速开发 Spring 框架,被称为 Spring 的“脚手架”。网页版创建项目先访

2022-07-04 23:00:03 409

原创 如何在云服务器上部署 Servlet 项目

目录1. 购买云服务器。2. 安装 FinalShell (连接云服务器的 App)2.1 下载安装包 FinalShell2.2 使用 FinalShell 连接远程服务器3. 在 Linux 上安装 Java 环境3.1 查看所有的 Java 安装包3.2 安装 jdk1.84. 安装 MySQL4.1 下载并安装 MySQL4.2 启动 MySQL 4.3 修改 MySQL 默认密码 4.4 为 root 授予远程管理权限4.5 输入 exit 退出数据库5. 安装 Tomcat5.1 下载 Tom

2022-07-03 17:11:58 612 2

原创 使用 Maven 方式来创建 Spring 项目

点击下一步File下的 Settings 中搜索 maven 检查配置 在 pom.xml 文件中添加 Spring 依赖,注意保持网络畅通,大多数加载失败的情况是网络不给力/(ㄒoㄒ)/~~。加载完成后就没有红色报错。上述配置中添加了一个 spring-context (spring上下文模块)以及 spring-beans (管理对象模块)。在 java 文件夹下创建启动类,包含 main 方法 在 Java 语言中对象也叫做 Bean,Bean 就是一个普通对象,实现代码如下。 在创建好的项目中添加

2022-07-02 14:52:42 3840 6

原创 在 IDEA 中如何创建 SpringBoot 项目

1.1 打开 IDEA 新建项目。1.2 在左侧找到 SpringAssistant ,点击;如果没有 SpringAssistant,需要下载插件,本文中使用的是 IDEA 社区版。在设置中下载插件:1.3 等待插件加载完成。ps:插入完成橙标变蓝标。2.1 在项目中添加控制类。ps:1. 注意添加类时是在 main 目录下的 java 文件夹中添加,而不是 test 目录下的 java 文件夹中,两者的直观区别是正确的图标应该是蓝色。2. SpringBoot 项目的一大特点就是一

2022-07-01 23:06:53 3622 10

原创 JVM 中的垃圾回收以及垃圾回收器

上篇讲了 Java 运行时内存的各个区域,对于程序计数器、虚拟机栈、本地方法栈这三部分,其生命周期与相关线程有关,随线程生而生,随线程灭而灭。并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回收了。因此本篇主要介绍 java 堆和方法区这两个区域的垃圾回收。在 Java 中,所有的对象都是要存在内存中的,因此我们将内存回收,也可以叫做死亡对象的回收,也可以叫做垃圾回收。使用场景:在 Python 语言中采用引用计数法进行内存管理。缺点:在主流的 JVM 中没有选用

2022-06-17 18:12:25 238

原创 简单认识 JVM —— 了解类加载机制和双亲委派模型

JVM 是 Java Virtual Machine 的简称,Java 虚拟机。虚拟机是指通过软件模拟具有完整硬件功能、运行在一个完全隔离的环境中的完整计算机系统。JVM 是主流虚拟机,其他常见的虚拟机还有:VMwave, Virtual Box.JVM 是 Java 运行的基础,也是实现一次编译到处执行的关键。一个 java 文件从编译到执行需要经过以下四个阶段。JVM 结构图:总结来看,JVM 主要通过四个部分来执行程序。分别是:类加载器(ClassLoader)、运行时数据区(Runntime D

2022-06-13 14:13:16 668 3

原创 网络层协议和数据链路层协议

协议首部格式4位版本号:指定 IP 协议的版本,IPV4 就是4,IPV6 就是6.4位首部长度:IP 首部的长度是 n 个32 bit,也就是 length * 4 的字节数。8位区分服务:4位 TOS 字段和1位保留字段(必须置零)。4位 TOS 字段分别是:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突只能选择一个。16位总长度:IP 数据报整体占多少个字节。16位标识:唯一的标识主机发送的报文。3位标志字段:第一位保留;第二位置为1表示禁止分片;第三位表示“更多分片”,如果

2022-06-13 10:08:24 963

原创 传输层两大重要协议之TCP 协议

确认应答机制是一种安全机制。这种机制和序号,确认号,ACK 标志位有关。因为 TCP 报文将每个字节的数据都进行了编号,即序号。每一个 确认报文段ACK 都有对应的确认号,当主机A发送一段数据到主机B时,数据的序号是1~1000,为了确保主机B接收到了数据,主机B会回应主机A序号1001也就是 ACK 加一。意思是告诉主机A已经接收到了 1001 之前的数据,下次从1001 开始发送。这样当发送多段数据时,如果有一段数据丢失,主机B就会回应最小接收的数据段末值来告诉主机A哪段数据没有接收到。比如主机A发送序

2022-06-06 23:08:16 872 5

空空如也

空空如也

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

TA关注的人

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