自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 概念篇:软件测试

1. 软件测试就是验证软件产品特性是否满足用户的需求2. 产品特性:功能,性能,界面,易用性。

2025-06-01 16:18:58 702 10

原创 Java 异常

如果要写一个自定义异常,一定要继承一个异常,并且自定义异常都是继承Exception或者是RunTimeException的extends Exception 编译时异常(受查异常)extends RuntimeException 运行时异常(非受查异常)例子:用户名和密码的登录private String userId = "一";if(!System.out.println("用户名错误");if(!System.out.println("密码错误");

2025-05-31 19:02:12 1278 15

原创 Java String的使用续 -- StringBuilder类和StringBuffer

String的内容是不可以修改的,每次拼接都会产生一个新的对象(StringBuilder),StringBuilder和StringBuffer的内容是可以修改,每次对当前对象进行修改。StringBuilder是未采用同步处理的,是线程不安全的,StringBuffer是采用了同步处理的,是线程安全的。String,StringBuilder,StringBuffer函数是相似的。2. reverse(),对字符串进行逆置。

2025-05-30 21:05:35 1022 22

原创 Java String函数的使用

转变为大写不是在原有字符串的基础上转换,而是转变为大写是一个新的对象,不会改变原有的字符串。4. 空指针异常和空字符串,isEmpty()判断是否为空字符串。小写转大写:toUpperCase。4. 把所有的ab都替换为123。3. 替换第一个ab。

2025-05-27 21:25:37 1500 58

原创 Java 内部类

【代码】Java 内部类。

2025-05-25 20:36:13 1085 66

原创 Java 接口

抽象类不能被private修饰,不能被static和final修饰,被static和final,private修饰的不能重写,而抽象类可以重写。d. 接口中不能有被实现的方法,只能有抽象方法,除了两个方法:一个是static修饰的方法,一个是default修饰的方法。5. 可以在一个包下,写一个接口,很多个类实现这个接口,最后使用这些类实例化对象,调用实现的方法,达到多态的效果。,第一种使用抽象类实现这个接口,后续继承的类还要实现接口中的抽象方法,第二种实现接口中的抽象方法。

2025-05-25 19:11:00 1212 19

原创 Java 多态

不能调用子类特有的方法,只能调用父类的方法,重写啦才调用子类的方法(而且是同一个名字的方法,比如eat())多态主要就是下图中的三点向上转型有什么用?动态绑定有什么用?

2025-05-21 19:49:30 1921 60

原创 Java 继承

c. 构造方法中:this用来调用本类的构造方法,super用来调用父类的构造方法,两种方法不能同时在构造方法中出现,因为他们都要在第一句。3. 如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。2. 若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的 super()调用,即调用父类构造方法,如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。2. super();

2025-05-19 22:34:22 1788 24

原创 Java 类和对象

包一般是小写,通常会用公司的域名的颠倒形式 (com.baidu.www)新建一个包在包下面新建一个类4. 包名要和代码路径相匹配 . 例如创建 com.baidu.www 的包 , 那么会存在一个对应的路径 com/baidu/www 来存储代码 .5. 如果一个类没有 package 语句 , 则该类被放到一个默认包中(例如src就是一个默认的包)

2025-05-17 17:06:37 2544 59

原创 Java 常用的Arrays函数

二维数组的每个元素都是一个一维数组。

2025-05-16 21:47:03 618 16

原创 笔试强训(十七)

2. 如果有重叠部分,每次选择右端点较小的,可以尽可能多的选择区间个数,如果没有重叠部分,选择下一个区间的右端点为基准,重复刚刚的操作。2. 把题目中数出现的频次放入一个小根堆中,每次取两个数相加放入堆中,然后此时也计算最短长度,直到堆中仅剩一个元素时,得到最短长度。1. 哈夫曼编码,利用字符出现的频次构建一个二叉树,每次选择频次最小的两个数构建二叉树,根据最优二叉树编码。求2 ^ x - 1 <= n中x的最大值就是最后剩下的数。2. 可以看出每次删除的第一个数是2^n - 1,

2025-05-13 22:07:35 471 4

原创 MySQL 事务(二)

比如说小王要把tom的工资重3200改到4500,而小张负责工资表发放奖品的任务,小张要进行查询的任务,当事务运行到3000到4000奖品的查询时,查到了tom,之后小王提交了事务,在4000到5000奖品的查询时,又查到了tom,这在公司就出现了问题。两个事务都同时启动,一个事务提交了(关闭了),另一个运行的事务(查询)看到第一个事务的提交结果是不合理的,两个事务都应该是原子的。2. 全局的隔离级别对所有的事务都影响,全局的改了,当前会话的和另一个事务的都会改变(在重新登入后更改)

2025-05-13 19:55:47 1882 53

原创 MySQL 事务(一)

事务是一条或者多条sql语句构成的集合体来处理各个任务的逻辑,比如转账这件事,有update add 和 update sub两条sql共同执行,这两条sql就叫一个事务要在使用者的角度看待事务一个完整的事务,绝对不是简单的 sql 集合,还需要满足如下四个属性:原子性一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。一致性。

2025-05-12 19:44:52 1547 23

原创 MySQL 索引(二)

正式因为有序,在查找的时候,从头到后都是有效查找,没有任何一个查找是浪费的,而且,如果运气好,是可以提前结束查找过程的。B树节点,既有数据,又有Page指针,而B+,只有叶子节点有数据,其他目录页,只有键值和Page指针。页内部存放数据的模块,实质上也是一个链表的结构,链表的特点也就是增删快,查询修改慢,所以优化查询。和页内目录不同的地方在于,这种目录管理的级别是页,而页内目录管理的级别是行。4. 最底层的叶子节点的目录页存的是用户的数据,中间的节点存的是目录页的地址。

2025-05-11 14:27:43 1884 43

原创 MySQL 索引(一)

你怎么保证,用户一定下次找的数据,就在这个Page里面?---->我们不能严格保证,但是有很大概率再一个Page当中或者是周围的,因为有局部性原理。数据库文件,本质其实就是保存在磁盘的盘片当中,就是一个一个的文件,找到一个文件的全部,本质,就是在磁盘找到所有保存文件的扇区。为了减少IO的次数,提高IO的效率,在单个page中,不在单个page中,会进行多次IO操作。花了6.17秒,就你一个人就花了6秒,如果公司人很多,会死机的。先整一个海量表,在查询的时候,看看没有索引时有什么问题?普通索引(index)

2025-05-10 11:16:04 1718 38

原创 笔试专题(十六)

出窗口的时候我们是不确定left指针是否符合窗口,可能让left多次出窗口,第一个窗口中间的数依旧合法,因为一个大的数减一个小的数合法,依旧是这个大的数减比原先更大的数肯定也是合法的,所以不需要回退right指针,因此用滑动窗口。= s2[j],那么可能是s1的[0,i-1]和s2的[0,j]中的最长公共子序列和s1的[0,i]和s2的[0,j-1]的最长公共子序列中的最大值。因为max-min <= k,求这个区间内的数最多,不定长的滑动窗口,可能中间的数最多,两边的数最多,所以让区间移动。

2025-05-08 17:35:35 664 33

原创 MySQL 表的内外连接

对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来。select 字段 from 表名1 right join 表名2 on 连接条件;select * from 表名1 left join 表名2 on 连接条件。查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来。左外连接,左侧表的数据完全保留,右侧如果没有数据,对应的右侧就全为空。右外连接,右侧表的数据完全保留,左侧如果没有数据,对应的左侧就全为空。显示SMITH的名字和部门名称。

2025-05-06 15:05:21 796 21

原创 MySQL 复合查询

合并多个select的执行结果,可以使用集合操作符 union,union all。

2025-05-05 22:56:21 2272 47

原创 笔试专题(十五)

2. 1 2 3 2 2 应该是有两个排列子序列的,所以i == n-1时ret++2. 第一次必须减1,a = 1,之后的数如果是a的2倍,那么a乘2,每次ret++3. 把水平的位置和上升部分,水平位置和下降部分分为一个排列子序列。3. 贪心:如果这个数模2*a == 0就一直贪心。3. 动态规划的时间复杂度:O(N^2)2. 时间复杂度:O(N*logN)1. 贪心 + 模拟。1. 贪心 + 数学。1. 贪心 + 二分。

2025-05-05 16:48:49 490 18

原创 LeetCode刷题链表

画图 = 直观 + 形象 + 便于理解引入虚拟头节点,便于处理边界情况,方便我们对链表进行操作3. 大胆去定义变量,不要吝啬空间,可以简单化链表链接快慢双指针,判断环,找链表中环的入口,找链表中倒数第n个节点链表中的常用操作:创建一个新节点 new尾插头插,使用虚拟头节点,例题逆序链表,如下图。

2025-05-04 17:16:48 1228 40

原创 MySQL 内置函数

11. 去除空格的作用:可以限制用户前面不能加空格,后面不能加空格,只能中间加空格,第二就是网络传输过程中多出了空格,并把它加到了数据库中,不做去除空格的话,用户是登入不了的。1.虽然current_date()只显示时分秒,但是所有的时间函数都是有年月日时分秒的,所以插入当前时间和时间戳是可以当成日期插入的,可以理解隐式类型的转换。4. md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串(用户密码不能在数据库表里面明文保存!在公司中,可以用当前时间减去入职时间等于你的工龄。

2025-05-03 11:58:21 1123 15

原创 MySQL基本查询(二)

很有可能我这个目录有很多文件包括正在操作的这个文件正在被外部的网站或者各种语言正在访问,所以我们不能着急动这个表而是应该先把这个表先传到临时目录然后再统一move过去,这是一种比较推荐的做法。3. 跟在select 后面的必须是分组的列属性或者是聚合函数,因为这些属性有相同的,而下图中名字是每个人都不同的属性,无法分组。1.只属于某一个人的信息是无法聚合的,比如名字和平均分在一起聚合就不行。4. 统计我们班数学的总分和平均成绩,英语的平均成绩。指定列名,实际分组,使用该列的不同行数据进行分组的。

2025-05-02 20:55:46 1839 33

原创 笔试专题(十四)

2. 可以分解为子问题,求每条路径的最大单链和,为什么是单链和呢?因为不能走回头路,一个节点只能包含一次,那么可以求左子树的最大单链和,右子树的最大单链和。2. 画出一颗决策树比什么都重要,一定要画图,然后仔细想,返回条件,剪枝,pos位置,每个位置枚举几个点啊,题目要求的剪枝等等。3. 空间优化:只需要考虑等于’s’,‘sh’,'shy’的情况,因为等于的情况,前面会保存起来,不需要统计。3. 返回值是以我为根节点的最大单链和,要么是我自己,要么是我自己加上右子树,要么是我自己加上左子树。

2025-05-02 12:08:30 643 18

原创 笔试专题(十三)

3. 然后先把第一个端点加入堆中,从第二个点比较,第二个点的左端点如果比第一个点的右端点大就可以更新堆,把第二个点的右端点入堆,不需要加新的主持人,否则有重叠部分,第二个点的左端点跟最小的右端点比都小,就要新加入主持人,入堆。2. 先把区间按照左端点排序,左端点排序后可以确保当前是该活动是最早开始的,如果不排序就有活动可能错误地加上主持人。2. 每次乘完之后对109取模。1. 优先级队列,小根堆+排序。1. bfs其实都是一个模版。1. 数学-排列组合。

2025-05-01 15:36:43 864 20

原创 MySQL 基本查询(一)

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)

2025-04-30 22:18:01 2324 39

原创 笔试专题(十二)

2. 先枚举温度,最小的温度到最大的温度,再写出该温度的范围是k+p和k-p是符合要求的区间,再用二分查找找到左端点的下标和右端点的下标+1即是此次温度的最多人数,最后求最多的人数。温度的范围是[t - p,t + p],那么一定存在一个区间内的最大数 - 最小数 <= 2 * p,求区间的最长的长度。2. 先按左端点的大小进行排序,保证时间是连续的,如果后一个点的左端点大于等于前一个点的右端点就是和法的,否则就不合法。2. 最短就是2或者3的情况,其他情况的子集也是2或者3。1. 排序 + 二分。

2025-04-29 18:13:05 631 9

原创 MySQL 表的约束(二)

6. 索引的简单介绍:可以类比于一本书的目录,通过目录可以找到你需要内容的页码,增加了目录也相当于牺牲了空间换取了时间,达到高效查找的目的。2. 虽然这个田七插入到了3号班级,但是不存在3号班级,这在逻辑上是不对的,又比如把一个班级删除,但是这个班级下还有学生,这也是不对的。5. 唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。3. 手动插入一个值,从这个值的后面开始自增,如果没有插入值,默认从1开始自增。2. 自增长,不用管,自己可以解决冲突的问题。我们可以简单理解成,

2025-04-28 20:33:47 1477 43

原创 MySQL 表的约束(一)

1. 主键是用来衡量一行一行表中的信息是唯一的,主键是唯一的2. 复合主键两个合起来是唯一的。

2025-04-27 21:04:09 931 10

原创 MySQL 数据类型

1. MySQL规定了数据类型不会发生截断,保证了数据的完整性和确定性,也就是在规定的范围内才可以插入数据2. 数据类型本身也是一种约束3. 什么是约束呢?让程序员正确地插入,约束使用者,保证插入的合法性和可预期性4. mysql表中建立属性列的规则:列名称 类型在后注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。

2025-04-26 17:37:15 1694 49

原创 MySQL表的操作 -- 表的增删改查

1. 轻易不要做表的修改和删除2. 这些删除,修改,增加都是定义表结构,是对表结构的修改,是ddl,select是对表内容的修改,是对数据内容的修改,是dml。

2025-04-25 20:59:56 810 18

原创 MySQL 库的操作 -- 增删改查,备份和恢复,系统编码

总结5. 也可以在Linux层创建数据库和删除数据库,但是一定不要这么干6. 用if not exitsts选项 创建一个已经存在的数据库(我们会发现它报警告warning)

2025-04-25 17:54:53 2043 39

原创 数据结构图论基础知识(一)

3. E = {(x,y)|x,y属于V}或者E = {<x, y>|x,y属于V && Path(x, y)}是顶点间关系的有穷集合,也叫做边的集合。并且要求两个节点之间的路径不是很好求,不适合查找一个顶点所连接的所有边O(N),比如查找3这个顶点的所有边,要看0,1,2,3是否为1,也就是要查找N次。树是一种特殊的(无环联通图)图,但是图不一定是树,再者树关心的是节点中存的值,图关注的是顶点和边的权值。2. 边:城市之间的关系(比如它们之间的距离,到达的时间,)3. 权值:可以表示两个人之间的亲密度。

2025-04-22 20:01:38 1148 52

原创 数据结构并查集详解

1、8号同学和1号同学成为了好朋友,那么它们的根节点就连在了一起,让0成为新的队长,1成为它的队员,先让1下标的人数加到0位置上,1位置的下标存的数变为0,它的父亲是0下标。5. 总结一下:6,7,8都是0号小分队的,包括队长0,总共4个人,1,4,9都是1号小分队的,包括队长1,总共3个人,2,3,5都是2号小分队的,包括队长2,总共3个人。这样做是不对的,让4变为8的父亲,8下标里就存4根节点的下标,4下标里存的是2个人,这样8的父亲不是0了,相当于这个人不在原来的朋友圈,而到另一个朋友圈了。

2025-04-19 22:28:45 907 12

原创 笔试专题(十一)

2. 计算联通块的数量,一次dfs,标记走过的数值为1的点标记为true,ret++,然后找下一个值为1的点继续遍历,最终统计出所有的联通块。2. 固定b串的位置,a串每次从0开始枚举,统计不相等的字符个数,求不相等字符个数的最小值,其他位置都可以添加为相等的字符。1. 环形的区域不需要统计,在字符串中间的区间如果是符合要求的,那么统计的次数加2,不在字符串中间的区间,那么统计次数加1。2. 统计区间为字符串长度的一半,如果这一半的0的个数和1的个数等于另一半0的个数和1的个数,那么就是符合要求的区间。

2025-04-19 12:02:45 1118 46

原创 mysql数据库基础

1.mysql是数据库服务的客户端2.mysqld是数据库服务的服务端3. mysql本质上是基于CS模式的一种网络服务4. 它是基于tcp协议,端口号是3306。

2025-04-18 17:55:56 1486 41

原创 Mysql的安装

1. 一定要下载和你的版本一致的mysql,否则会有版本不兼容的问题, cat /etc/redhat-release:查看你的版本,下载到你的本地,然后上传到你的Linux服务器。卸载mysql的安装包:rpm -qa | grep mysql | xargs - y yum remove。用来查询mysql的命令:ps axj | grep mysql。查询mysql的安装包:rpm -qa | grep mysql。关闭mysql的命令:systemctl stop mysql。

2025-04-17 21:19:04 905 17

原创 笔试专题(十)

2. 细节处理:dp[0]映射为0,返回dp表里面子数组的最大和,如果dp[i-1] + arr[i] 和 arr[i] 表示dp[i] 中的最大值,如果dp[i-1] 小于0的话,那么最大值是arr[i],如果dp[i-1]大于0的话,那么最大值是dp[i-1] + arr[i]1. 细节处理:初始化要[i+1][j],[i+1][j-1],[i,j-1]这三个点,i > j 的点都初始化为0,i = j的点都初始化为1。2. 填表顺序:从下往上,从左往右填,每次都要用到下面的和左边的数。

2025-04-17 14:59:33 755 38

原创 算法差分详解 + 总结

2. 如果要让区间内的数+d,比如[l,r]内+d,那么r+1区间-d可以达到这样的效果,原数组[l,r]区间就+d了,只需要让差分数组第一个数加d,前缀和后后面的数都加上了d,所以让r+1以及后面的数-d,恢复原来的情况。1. 先预处理一个差分数组,对差分数组,区间[l,r]修改,l下标的数加上d,r+1下标的数减去d,[l,r]区间就加上了d,最后求下前缀和数组就达到了修改原数组的目的。1. 先预处理一个差分数组,cre[i] = a[i] - a[i-1],对差分数组求前缀和可以还原为原数组。

2025-04-13 23:05:01 448 19

原创 笔试专题(九)

3. 在输入的时候就预处理每一行的和和每一列的和,可以在后面输出的时候直接用,row[i] + col[j] - a[i][j],注意一个细节就是当前点会加两次,减去一次。3. 可以枚举每组的人数,从小到大枚举,统计每个声部可以分成的组数,这些组数相加,如果小于等于m,就是合法的,hmax是某种声部人数最多的,可以分成一组的最大人数。优先级最高的就是快乐值多的,其次就是快乐值相同,羞耻度小的优先,快乐值和羞耻度都相等是不用判断的,因为在前面判断的有一个这种值,后面也不更新,不就是最早的了。

2025-04-13 22:54:59 1335 54

原创 笔试专题(八)

2. 先让left和right都指向起点,如果right+1位置的数不等于right位置的数,或者是right的下一个位置的数越界了,更新字符串,再让right += 1,left = right,继续上面的操作。1. 先将x开根号,开完根号会去掉小数点后面的数,开完根号后的数乘开完根号后的数,和x相减,开完根号后的数加1翻倍,和x相减,比较相减后的数哪个数小,就选那个最近的数。3. 甜度不同时,比较甜度,甜度大的在前。2. 进窗口,判断,出窗口,更新结果。甜度相同时,比较酸度,酸度小的在前。

2025-04-13 11:25:11 721 37

空空如也

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

TA关注的人

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