- 博客(34)
- 收藏
- 关注
原创 软件测试工程师从入门到进阶一(概念篇)
需求即满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。大多数公司在进行软件开发的时候会把用户需求转化为软件需求,开发人员和测试人员工作的直接依据就是软件需求。需求是测试人员开展软件测试工作的依据。过程如下,业务需求—>软件功能需求点—>测试需求点—>测试用例。
2024-07-12 09:29:23
750
原创 【算法篇】三道题理解算法思想——认识BFS
宽度优先遍历和深度优先遍历组成了大家熟悉的搜索算法,这两种算法也是蓝桥杯之类竞赛题的常考思想,正巧马上蓝桥杯临近,博主也是刷了很多BFS相关的题型,在这篇文章中会从力扣上选取三道简单的宽搜题型,带大家了解BFS的模板以及对他有个初步认识。本篇文章题目较为简单,大家可以根据第一题的模板,自己先去力扣上做题然后回来看题解,稍后我们继续更新难度更高的宽搜题目,希望大家能给个关注👍。文章顺序:题目链接-》算法思路-》代码呈现。
2024-04-07 21:44:25
690
3
原创 【算法题】三道题理解算法思想——二分查找算法
题目链接算法思路⽤的还是⼆分思想,就是根据数据的性质,在某种判断条件下将区间⼀分为⼆,然后舍去其中⼀个区间,然后再另⼀个区间内查找;为⽅便叙述,⽤x表⽰该元素,resLeft表⽰左边界,resRight表⽰右边界。寻找左边界思路:1.寻找左边界:。我们注意到以左边界划分的两个区间的特点:▪左边区间都是⼩于x的;▪右边区间(包括左边界)都是⼤于等于x的;2.因此,关于mid的落点,我们可以分为下⾯两种情况:。当我们的mid落在。
2024-03-30 21:00:00
2623
10
原创 【计算机工作原理】带大家科普计算机是如何工作的。
这个专题中并不会出现非常抽象的cpu核心概念,而是以一种科普的方式带大家了解计算机是如何工作的,我的主要目的就是希望大家在进行编程时能理解计算机是如何将逻辑代码进行实现的,帮助大家打破计算机的神秘感。通信方式有:管道,共享内存,文件,网络,信号量,信号等。有人曾经这么评价CPU,它是迄今人类历史上科技巅峰的存在,除了需要复杂的技术之外,更需要精良的制作工艺,综合考虑制造顶尖性能的CPU难度堪比造核弹。其中门电路是由与门,或门,非门,异或门组成的,CPU的构成非常抽象和复杂,上面只是帮助大家了解,并不严谨。
2024-03-30 15:33:08
1675
10
原创 【算法题】三道题理解算法思想--滑动窗口篇
本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法题,我从力扣上筛选了三道题,难度由浅到深,会附上题目链接以及算法原理和解题代码,希望大家能坚持看完,绝对能有收获,大家有更好的思路也欢迎大家在评论区交流啊!欢迎大家交流!!!欢迎大家交流!!!欢迎大家交流!!!文章顺序:题目链接-》算法原理-》代码呈现思想总结:滑动窗口可以理解为是快慢双指针的一个分支,也是利用双指针一个在前一个在后,通过判断条件使两个指针形成一个大小不断变化的窗口,不断向前移动。
2024-03-28 22:25:06
696
4
原创 哈希冲突解决的几种方式
对于开放定址法,在我们设计的哈希表中我们需要严格监控负载因子的大小,应该严格限制在0.7-0.8以下,比如Java的系统库限制了负载因子的大小严格为0.75,当负载因子过高时我们可以通过增大哈希表的数组大小来调整负载因子。我们将降低冲突率的方式大概分为两大类,一类是通过前期合理的设计,尽可能的避免哈希冲突的发生,一类是在哈希冲突发生后想办法去存储原来的数值减少哈希冲突带来的危害。我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数。,先通过哈希函数计算哈希地址,下标为。
2024-03-26 15:10:53
1043
16
原创 【算法篇】逐步理解动态规划1(斐波那契数列模型)
学过算法的应该知道,动态规划一直都是一个非常难的模块,无论是状态转移方程的定义还是dp表的填表,都非常难找到思路。在这个算法的支线专题中我会结合很多力扣题型,由简单到复杂,带大家深度剖析动态规划类的题型,欢迎大家关注啊。顺序:题目链接-》算法思路-》代码呈现。
2024-03-24 20:46:01
1415
14
原创 【数据结构】Java中Map和Set详解(含二叉搜索树和哈希表)
在Java中Map和Set最常见到下面四个实现类,HashMap/TreeMap/HashSet/TreeSet,他们分别与两种数据结构相关,二叉搜索树和哈希表,下面的文章中我会详解这两种数据结构,以及Java是怎样对这两种数据结构进行实现的。
2024-03-24 20:06:00
1162
3
原创 【JDBC编程】Java连接MySQL的五个步骤
这里可以看到Java使用数据库的代码非常多,而且每次连接都需要重复这个过程,于是就有大佬写了数据库框架Mybatis,把上面的代码都封装了起来,用的时候只需要一条注解就可以了。里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以复用的,每次使用完数据库连接,释放资源调用connection.close()连接,是无法重复利用的,每次使用完以后释放资源。方法提供了对这些行中数据的访问。
2024-03-22 17:34:24
1222
22
原创 【算法题】从0培养算法思想——双指针篇
在这个专栏里我会收集一些很经典的算法题,并分享算法原理和题解,这里面每一道题或者带给了我新的思路,或者是代码简洁高效,或者题目在面试中出现的频率很高。我想把它们记录下来,大家有更好的思路也欢迎大家在评论区交流啊!欢迎大家交流!!!欢迎大家交流!!!欢迎大家交流!!!
2024-03-22 16:26:34
844
2
原创 【MySQL数据库】数据类型和简单的增删改查
平时我们使用的操作系统都把数据存储在文件中,但是文件存储数据有以下几个缺点:1.文件的安全性问题,2.文件不利于数据查询和管理,3.文件不利于存储海量数据,4.文件在程序中控制不方便。增删改查即CRUD,新增数据,查询数据,修改数据,删除数据。数据库的增删改查操作将会是我们在今后操作中遇到的最频繁的工作内容,也是最基础最核心的业务,所以我们必须熟练掌握数据库的增删改查相关代码。现在比较知名的关系型数据库有甲骨文的Oracle,MySQL,微软的SQL Server等。这是当前我电脑已经存在的数据库。
2024-03-22 15:10:47
2267
1
原创 【算法篇】七大基于比较的排序算法精讲
根据排序算法是否基于排序,可以将算法分为两种,而在基于排序的算法中最常见的算法有七种,分别是:直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序。快速排序是在二叉树的前序遍历的基础上改进的一个算法,取基准值时要尽量保证左右两个区间的大小相等,这样的时间复杂度最低,在构建代码的时候我们尽量依据这一点来优化代码。:假设在待排序的序列中,有多个相同的关键字,经过排序后,这些关键字的先后顺序不发生改变,我们称这种排序算法是稳定的,否则是不稳定的。
2024-03-16 15:26:42
1439
17
原创 【数据结构七】堆与PriorityQueue详解
堆的概念:堆能把它的所有元素按照完全二叉树的方式存储在一个一维数组中,并保证每次出队列的元素都是这些元素中的最大值或最小值。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆中某个节点的值总是不大于或不小于其父节点的值;
2024-03-13 09:52:55
1212
16
原创 【数据结构六】图文结合详解二叉树(五千字)
树是一种的数据结构,它是由n个结点组成的具有层次关系的集合,,看起来像一颗倒挂的树。二叉树是一种最多只有两个节点的树型结构。这篇文章会用Java代码手撕二叉树的实现,从概念到实现,到oj题训练,你不仅能学会二叉树,还能加深对它的理解和运用。
2024-03-09 12:32:57
1054
12
原创 【JavaSE】时间类相关API以及使用
日历类有三个:LocalDate表示年,月,日 LocalTime表示时,分,秒 LocalDateTime表示年,月,日,时,分,秒。可以发现JDK8新增时间类中对时间的增删改查方法类似,均是使用get,with,minus,plus开头的方法,我们也可以凭借这方便记忆。JDK8的时间日期对象都是不可变的,解决了这个问题。Calendar代表了系统当前时间的日历对象,可以单独修改,获取时间中的年,月,日,非常便利。get,set方法,均用long类型表示时间,可以用来获取时间,或者赋值时间。
2024-03-02 23:08:43
1006
2
原创 【数据结构五】队列和Queue详解
双端队列(deque)是指允许两端都可以进行入队和出队操作的队列,deque 是 “double ended queue” 的简称。其中物理结构即顺序结构和链式结构,因为队列的使用情况多为增加和删除,很少查询,所以我们使用链表来实现一个自己的队列。:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。在java中,Queue是个接口,底层是通过链表实现的,下面是Queue提供的方法。在基于顺序结构实现的队列中,数组头部排出数据后,空间便不能在被使用,来自力扣的两道算法题。
2024-02-29 20:16:18
1081
2
原创 【数据结构四】栈与Stack详解
一种特殊的线性表,其。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO)的原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。特点是:后进先出。如图所示。
2024-01-24 21:03:35
944
2
原创 【数据结构二】手撕顺序表与ArrayList源码详解
对于任意一个继承list接口的数据结构我们都应该实现增删改查获取长度清空等方法,以及相应类的构造方法,我们知道Java中为了提高代码的复用,都是通过类继承接口的方式来进行代码试现,下面让我们写这样一个接口。思路: 通过泛型内在放一个顺序表类的方法实现二维列表,然后再利用循环先将每一层的数值填入numRows个顺序表中,再把这numRows个顺序表填入另一个顺序表中,最后这个顺序表就包含了我们想要的结果。注意:我们自己的顺序表没有实现泛型机制,而java提供的ArrayList是实现了泛型的。
2023-12-28 21:14:28
939
12
原创 【JavaSE】Java进阶知识一(泛型详解,包括泛型方法,协变,逆变,擦除机制)
语法格式如下:泛型类变量名;//定义一个泛型类引用new 泛型类(构造方法实参);//实例化一个泛型类对象一般用作为占位符 ,表示当前类是一个泛型类。Java中的泛型参数只能是引用类型,不能是基本类型,这与Java的泛型擦出机制有关。*裸类型(Raw Type) (这是一个泛型类但没有带着类型实参)裸类型是为了兼容老版本的API保留机制,我们不要轻易使用。
2023-12-24 13:14:22
1448
24
原创 【数据结构一】初始Java集合框架(前置知识)
数据结构是计算机中存储,组织数据的方式。我们现在学习的数据结构都是历史中总结出来的典型的优良的程序结构,在开发中多利用这些数据结构能显著提高你的代码质量。我们需要学习的数据结构有:线性表,链表,堆,栈,队列,哈希表,二叉树,图等。
2023-12-23 21:55:49
2278
9
原创 【JavaSE】Java入门九(异常详解)
在实际应用中,异常的出现具有不确定性,那就导致了在try语句中异常出现位置之后的剩余代码面临着一个问题,如果该异常抛出了,剩余代码就不执行,没抛出就执行,写程序时有些代码我们希望无论程序是否发生异常都需要被执行,因此Java引入了finally语句。Exception异常的子类可以分为两种,一种是RunTimeException类,我们称为是运行时异常,其余的异常我们都称为是编译时异常。Java中可以说是把所有的异常体系都封装了起来,在程序中遇到各种问题时,JVM会直接定位异常情况并在控制台提示。
2023-12-19 13:45:06
1018
16
原创 【JavaSE】Java入门八(Object类详解)
下面是JDK1.6中的object方法摘要,一共有11种方法。本篇文章会详细介绍这11种方法该如何去使用。object类中的toString方法实现:该方法的主要作用是打印对象的内容,我们在使用中一般通过在继承类中重写该方法来自定义实现对具体对象的打印。该方法的作用是比较对象内容该方法用于计算对象的哈希值,源码如下:这是一个native方法,底层代码是用C/C++实现的。该方法一般在具有哈希功能的Collection中使用。该方法负责把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制(浅拷
2023-12-18 19:33:59
432
6
原创 【JavaSE】Java入门七(抽象类和接口详解)
被abstract// 抽象类:被abstract修饰的类// 抽象方法:被abstract修饰的方法,没有方法体// 抽象类也是类,也可以增加普通方法和属性// 面积抽象类中可以包含被abstract修饰的抽象方法,抽象方法在抽象类中仅仅被声明,具体的实现代码可以在继承他的类中被实现。注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法Java中类不能实现多继承,为了让一个类继承多个类型,Java中引入了接口,接口也是一种引用数据类型,可以把他当做比抽象类更抽象的引用数据类型。
2023-12-14 11:13:39
1128
10
原创 【JavaSE】Java入门五(面向对象 2——继承)
继承机制:是面相对象程序设计实现代码复用最重要的手段,它允许程序员在保持原有结构特性的基础上进行扩展,增加新功能,从而产生新的类(派生类Java中通过接口,抽象类和类来实现继承关系,本章主要介绍类与类之间的继承关系。下面是类之间的继承语法:修饰符class子类extends父类// ...int age;System.out.println(name + "正在吃饭");System.out.println(name + "正在睡觉");
2023-12-05 21:46:03
1030
10
原创 【Java实战】Java实现坦克大战(韩顺平版)
该坦克大战运用了JavaGUI图形库,多线程,文件IO,反射等Java高级编程中的知识,用来巩固Java语法非常合适。我在韩老师原版的设计上做了一些改变,敌方坦克会永远保持三个,你每杀死一辆敌方坦克,并会在屏幕内随机生成一个敌方坦克以此来增加游戏乐趣,其他内容与原版无异。下面是展示图:该项目总共九个类,包含近1000行代码。
2023-12-04 22:34:24
2982
8
原创 【JavaSE】Java入门四(面向对象 1——四千五百字详解)
目录 类和对象1.什么是类2. 对象的初始化及使用(this关键字)3.封装的概念及应用(含Java中常见的包)4.static关键字5.代码块6.内部类在面相对象的思想中,我们需要把各种事物抽象成对象(也可以说是一个实体),类是用来对一个实体(对象)来进行描述的,在java中定义类时需要用到class关键字。在下面这段代码中,我们定义了一个洗衣机类:这里面包含的内容成为类的成员,其中成员变量称为类的属性,成员方法称为类的行为。tips:在Java中定义了一个类,就相当于在计算机中定义了一个新的引用类
2023-12-04 21:52:01
902
2
原创 【JavaSE】Java入门三(数组详解三千字)
为了方便大量同种类型数据的存储和输出,Java中引入了数组的概念。数组:可以看成相同类型元素的一个集合,在内存中一段连续的空间。数组的创建形式如下:T[] 数组名 = new T[N];//T表示数组中存放的数组类型,N表示数组的长度T[]数组名称数组在创建时有两种选择,我们成为动态初始化和静态初始化。动态初始化:创建数组时,直接指定数组中元素的个数。静态初始化:在创建数组时不直接指定数据元素的个数,而直接用具体的数据内容进行指定。!!
2023-12-03 22:19:54
978
6
原创 【JavaSE】Java入门二(方法详解)
定义一个方法的语法格式如下://方法定义修饰符 返回值类型方法名称([参数类型 形参...]){方法体代码;return返回值对于没有返回值的方法,类型处写void。需要特别注意,与C语言不同的是Java中的方法只能定义在类中,类外使用的时候可以通过定义对象来调用,要在入口方法(main)中使用需要在在定义方法的返回值前加上static关键字,直接比如下面这段例子// 方法的定义调用方法---传递参数---找到方法地址---执行被调方法的方法体---被调方法结束返回---
2023-12-02 22:32:00
383
5
原创 【JavaSE】Java入门一(包含数据类型,运算符,逻辑控制语句七千字详解)
2009年Sun公司被Oracle收购,并由Oracle公司发布了JDK 7及之后的版本,如今虽然JDK版本已经更新至JDK 21,但JDK 8依旧占据着市面上的主流地位,但听说这周idea(当下Java最流行的IDE集成开发环境)最新一次的更新中,Java当下最流行的框架SpringBoot已经不在支持JDK 8版本,预测今后流行的版本可能会是JDK 17。Java语言结合了C++语言的面相对象,舍弃了C++的指针,并有了自己独特的编译方式通过JDK中自带的JVM虚拟机来编译执行并以此实现可移植性,
2023-11-30 19:27:36
1008
6
原创 #C语言 深度剖析整型在数据中的存储
10000000 00000000 0000000 00000010 (-2)明显不符合正常情况,又为了避免分情况讨论(避免添加额外的硬件电路),计算机大佬们发明了原,反,补码。有符号型和无符号型:char在C语言中没有明确的规定,(和编译器有关,VS中为无符号型char a=unsigned char a),其他类型都默认为有符号型。指数据的低位(个,十,百,千;低->高)存储在内存的高地址中,而数据的高位,存储在内存的低地址中。低->高)存储在内存的高地址中,而数据的低位,存储在内存的低地址中。
2023-05-30 23:36:03
148
5
原创 一个可以对每天努力进行记录的网站Gitee
众所周知,Patience is a key in life任何一件事坚持做1000小时便能成为专家,做10000小时便能成为行业中的佼佼者,编程更是如此在入门到成为大牛的路上可能要坚持数年,其中更离不开数以万计的代码支持,如果能有一个网站能将每天我们费尽心思写出来的代码进行托管和保存就像发朋友圈一样不仅可以作为我们平时生活的记录,也可以。,多一分筹码,所以Gitee被大家所喜爱,此文章中我将为大家简单概述Gitee网站的使用方法,五分钟便可从不认识Gitee到学会代码提交操作。多出来的五个可操作步骤。
2023-04-02 13:13:10
700
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人