自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java面向对象-final关键字

e、发现Math类中所有的属性和方法都被static修饰,那么不能创建对象去调用,只能通过类名.属性名、类名.方法名去调用。c、里面的属性全部被final修,方法也是被final修饰,只是省略不写,因为子类没有必要重写。a、使用Math类的时候无序导包,直接使用即可。b、Math类没有子类,不能被其他的类继承。d、外界不可以实例化对象。可以修饰变量、方法、类。

2024-06-17 06:00:00 388 2

原创 Java面向对象-接口

4、接口当作方法的返回值,返回的是具体的实现类的对象。定义规则:只是跟抽象类不同地方在哪?2、父类当作方法的返回值,返回的是具体的子类的对象。3、接口当作方法的形参,传入具体的实现类的对象。1、父类当作方法的形参,传入具体的子类的对象。接口定义好规则之后,实现类负责实现即可。案例:飞机、小鸟、风筝。

2024-06-16 22:00:00 723

原创 Java面向对象-抽象类和抽象方法

1、在一个类中会有一类方法,无需重写,直接使用2、在一个类中会有一类方法,会对这个方法进行重写3、一个方法的方法体去掉,然后被abstract修饰,那么这个方法就变成了一个抽象方法

2024-06-15 08:42:14 290 3

原创 Java面向对象-Object类的toString方法、equals方法

将一个类作为另一个类中的方法的形参将一个类作为另一个类中的属性//属性int age;//方法System.out.println("买");//构造器//属性//方法public void add(int a) { //todo 基本数据类型public void love(Boy b) { // todo 参数是引用数据类型System.out.println("name为:" + b.name + ",age为:" + b.age);b.buy();

2024-06-11 06:00:00 413 2

原创 Java面向对象-方法的重写、super

所有构造器的第一行默认情况下都有super括号,但是一旦你的构造器中显示的使用了super调用了父类的构造器,那么这个super()就不会给你默认分配了。在特殊情况下,当子类和父类的属方法名重名时,你要想使用父类的方法,必须加上修饰符super.,只能通过super.方法来调用,这种情况下,super就不能省略了。在子类的方法中,可以通过super.属性,super.方法的方式,显示的去调用父类中的提供的属性,方法。重写:在不同的类中,子类对父类提供的方法不满意的时候,要对父类的方法进行重写。

2024-06-10 23:00:00 563 1

原创 Java面向对象-[封装、继承、多态、权限修饰符]

1、继承关系:父类(基类)/子类(extends)子类继承父类一定在合理的范围继承2、好处:a、提高了代码的复用性b、便于代码的扩展c、多态的使用3、父类private修饰的内容,子类也继承过来了。4、一个父类可以有多个子类5、一个子类只能有一个直接父类,但是间接的可以继承其他类6、继承具有传递性Student——》继承Person——》继承Object。

2024-06-09 21:16:39 787 1

原创 Java筑基-面向对象

当属性名字和形参发生重名的时候,或者属性名字和局部变量重名的时候,都会发生就近原则,所以如果我要直接使用变量名字指的是离得近的形参或者局部变量。最先执行静态块,并且只在类加载的时候只执行一次,所以一般一九实战写项目:创建工厂、数据库初始化信息,一般用于执行全局性的初始化操作。调用构造方法的时候,如果你的类中没有写构造器,那么系统会默认分配一个构造器,只是我们看不到罢了。4、new关键字调用构造器,执行构造器方法,对对象的属性进行重新赋值。对象就是具体的事物,具体的实体,具体的实例,模板下具体的产品。

2024-06-03 06:00:00 1721 1

原创 Java筑基-集合[Set、Map、List、Stack、Queue]

准备一个Set集合指向HashSet对象,向该集合中添加元素"two"并打印,再向集合中添加元素"one"并打印,再向集合中添加元素"three"并打印,再向集合中添加"one"并打印。Map集合的主要实现类有:HashMap类、TreeMap类、LinkedHashMap类、Hashtable类、Properties类。List集合的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类。是Collection集合的子集合,与List集合平级。Queue集合的主要描述。

2024-06-02 06:00:00 1317

原创 Java筑基—iterator迭代器和forEach

Java中的迭代器是一种用于遍历集合类中元素的接口。迭代器提供了一种统一的方式来遍历不同类型的集合类,例如List、Set和Map。使用迭代器可以依次访问集合中的每个元素,并对其进行操作。在Java中,所有实现了Iterable接口的集合类都可以使用迭代器来遍历元素。迭代器提供了以下方法来实现遍历集合:hasNext()方法:判断当前是否还有元素可以遍历。next()方法:返回下一个元素并将迭代器的位置向后移动一个位置。remove()方法:删除当前遍历的元素

2024-06-01 23:39:08 584

原创 Java筑基—String类

注意:当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。忽略大小写比较:s1.equalsIgnoreCase(s2)trim():删除字符串2端的空白字符返回一个新的字符串。toLowerCase():所有字母小写的字符串。toUpperCase():所有字母大写的字符串。不能使用“==”运算符对两个字符串进行相等比较。equals(s1):将字符串与s1进行比较。空白字符:" ",、\t,\f,\n,\r。==:只能确定两个字符串是否指向同一个对象。不会比较字符串的内容是否相等。

2024-06-01 11:01:06 465

原创 Java—集合Collection(一)

集合中添加单个元素或者单个对象,使用add();集合中添加多个元素,使用addAll();Integer、String对应的java里面就是给重写equals方法,自定义的类没有重写equals方法。比较的是集合对象使用contains比较的是集合的每个元素containsAlladd(Object):添加的是集合对象contains(Object):比较的是集合的对象remove(Object):删除的是集合对象addAll(collection):添加的是集合的每个元素。

2024-05-27 05:00:00 635 4

原创 Java筑基(三)

方法不想被重新实现,写的时候什么样,最后不管谁继承都是什么样,那就final修饰。静态变量 变量值存在一个公共地址:方法区内,同一个类的所有的实例都可以去访问。私有方法、默认方法、受保护的方法、公共方法都可以被访问。final修饰的类不能有子类,但是可以有父类。static修饰的方法叫静态方法,也叫类方法。修饰的变量是一个常量,只能被赋值一次。在static代码块赋值进行初始化。final修饰的类不可以被继承。受保护的方法、公共方法可以被访问。调用方法时,给形参赋值。变量:不可被重新赋值。

2024-05-26 23:00:00 901 2

原创 Java—内部类

1、定义格式2、调用方式3、特点:普通内部类和普通类一样普通内部类权限修饰符都可以用创建调用普通内部类,需要外部类实例对象来创建内部类对象final可修饰内部类4、案例内部类访问外部类的成员变量:外部类类名.this.id内部类访问内部类的成员变量:this.id直接访问id:形参中传递的id//成员变量//定义普通内部类//内部类的成员变量System.out.println("普通内部类NormalInner的有参构造方法");

2024-05-26 18:57:27 484

原创 Java筑基(二)

当数组的值在定义的时候就已经确定了,那么就是静态数组数据类型 数组名称 = new 数据类型{值1,值2}数据类型 数组名称 = {值1,值2}t1();//静态数组。

2024-05-19 21:17:12 624 4

原创 Java筑基(一)

变量使用之前必须初始化;局部变量的定义格式:数据类型 变量名=变量值;赋值和初始化可以分开使用int i;//定义变量i=1;//初始化i2属性,会被默认赋值,int的默认值为0//i2属性,会被默认赋值,int的默认值为0。

2024-05-18 23:07:04 1015 2

原创 我的创作纪念日

一切都始于一次偶然的机会,当我在实战项目中遇到了一系列挑战。解决问题的过程不仅给了我深刻的技术见解,也激发了我想要分享这些经验的愿望。我意识到,每一行代码、每一个解决方案都不应该仅仅被埋藏在代码库中,它们有着被更多人看见、学习和讨论的价值。2021年创作了179篇文章、2022年创作了327篇文章、2023年创作了164篇文章,2024年到目前创作了86篇文章。提示:你过去写得最好的一段代码是什么?代码片获得8975次分享。总阅读量:1356248。内容获得7580次评论。

2024-05-02 10:03:52 559 24

原创 二叉树相关题目

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。给你一个二叉树的根节点 root , 检查它是否轴对称。节点的右子树只包含 大于 当前节点的数。叶子节点 是指没有子节点的节点。

2024-05-01 14:46:35 415 4

原创 数据结构与算法解题-20240427

给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]解释:调用函数后,输入的数组将被修改为:[1,2,3]输入:arr = [1,0,2,3,0,4,5,0]输出:[1,0,0,2,3,0,0,4]

2024-04-26 23:50:18 1081 35

原创 数据结构与算法解题-20240426

解释:6 是最大的整数,对于数组中的其他整数,6 至少是数组中其他元素的两倍。6 的下标是 1 ,所以返回 1。给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度。输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]解释:长度最长的公共子数组是 [3,2,1]。输入:nums = [3,6,1,0]输入:nums = [1,2,3,4]

2024-04-26 23:49:55 1059 43

原创 数据结构与算法解题-20240424

解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。根据以上规律可以得知,每递增一层,需要的硬币总数等于放满当前层之前的所有阶梯所需要的硬币总数加上当前的阶梯层数。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。-1:我选出的数字比你猜的数字小 pick < num。1:我选出的数字比你猜的数字大 pick > num。

2024-04-24 23:29:00 941 44

原创 数据结构与算法解题-20240422

循环即遍历链表 l1和l2, 每次把两个节点的值l1.val和l2.val与进位值carry相加,除以10的余数即为当前节点需要保存的数位,除以10的商即为新的进位值。给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。迭代的思路是,初始化答案为一个「空链表」,每次循环,向该链表末尾添加一个节点(保存一个数位)。4、当遇到【两个点】时,需要将目录切换到上一级,因此只要栈不为空,我们就弹出栈顶的顶目。

2024-04-22 23:09:23 997 54

原创 数据结构与算法解题-20240421

给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。2.当最后一步剩余元素小于2k,超过k时,因为循环的是i,而且都是处理i后元素,i在循环不满足条件结束之前,便处理了反转k个元素。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。

2024-04-21 23:28:35 1205 58

原创 docker容器服务器编排利器Docker-Compose

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

2024-04-19 23:33:09 1039 64

原创 python后端相关知识点汇总(十二)

C/S:客户端-服务端的架构,他需要安装一个客户端,才能使用这个软件,所以软件升级,除服务端升级以外,需要同步客户端,B/S:浏览器-服务器的架构,是不需要安装客户端,只需要浏览器就可以访问软件,软件升级只需要更新服务器就可以B/S与C/S软件测试思维是一致的,控件点击、数据库交互、后端服务器交互。但是客户端需要考虑安装、卸载、升级的测试。

2024-04-17 23:25:55 1029 50

原创 Django处理枚举(枚举模型)以及source的使用

定义模型类models.py;项目模型类、接口模型类、用例模型类name = models.CharField(help_text='项目名称', verbose_name='项目名称',desc = models.TextField(help_text='项目描述', blank=True, null=True)verbose_name = "项目表"CHOICES = [('1', '项目接口'),('2', '外部接口')]

2024-04-14 15:39:33 1203 42

原创 MySQL索引、B+树相关知识汇总

7、EXPLAIN select * from employees where deptid=“1002” and jobs=“测试” and empname=“张飞” 使用了索引。8、EXPLAIN select * from employees where deptid=“1002” or jobs=“测试” or empname=“张飞” 不使用索引。5、EXPLAIN select * from employees where jobs=“测试” and deptid=“1002”

2024-04-12 23:33:07 1391 37

原创 python知识点汇总(十一)

首先展示解封装将1,2,3封装到元组mytuple中,再将值解封装到变量x,y,zprint(x)print(y)print(z)a = 0b = 1print(a)func(8)

2024-04-12 21:42:06 1605 48

原创 计算机网络知识等汇总补充

注意:这时服务器到客户端的TCP连接并未被释放,客户端需要经过等待2MSL(MSL表示一个报文的来回时间)后才会进入CLOSED状态,这样做的目的是确保服务器收到自己的ACK报文,如果在规定时间没有收到客户端发的ACK,那么服务器会重发FIN,客户端再次收到FIN报文,就知道自己的ACK丢了,然后会重发ACK给服务器。2、第一次挥手:客户端向服务器发送FIN报文,发完进入FIN_WAIT_1状态,即主动关闭TCP连接,不再发送数据,但是可以接收服务器发来的报文,等待服务器回复。redis你使用的场景。

2024-04-11 23:43:55 1305 27

原创 python中字典的底层是怎么实现的?

python字典的底层实现的是哈希表。调用python内置的哈希函数,将键(key)作为参数进行转换(哈希运算+取余运算),得到一个唯一的地址(地址的索引),然后将值(value)存放到对应的地址中(给相同的键赋值会直接覆盖原值,因为相同的键转换后的地址时一样的)哈希表(Hash Table,又称为散列表)是一种线性表的存储结构。由一个直接寻址表 T (假设大小为m) 和一个哈希函数 h(k) 组成。对于任意可哈希对象,通过哈希函数(一般先进行哈希计算,然后对结果进行取余运算),将该对象映射为寻址表的索引

2024-04-11 10:09:36 957 53

原创 二叉树的前序遍历、中序遍历、后序遍历

2、确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。1、确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。递归遍历是深度优先遍历,一个方向上递归,当遇到空节点的时候,往上返回。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

2024-04-10 10:35:20 586 56

原创 Linux部署sonarqube+Gogs+Jenkins(二)

提交代码—通过Sonarqube进行扫描(前置条件:jdk必须是11)SonarQube属于静态测试和动态测试中的静态测试白盒测试和黑盒测试中的白盒测试SonarQube分为:介绍SonarQube工具:(分为两个模块)1.分析器(Web页面,是一个可视化的平台)——SonarQube2.扫描器(工具–对代码进行扫描之后提交到分析器上去)——SonarScanner。

2024-04-07 14:26:24 2305 85

原创 mysql知识点梳理

总是假设最坏的情况,每次读取数据的时候都默认其他线程会更改数据,因此需要进行加锁操作,当其他线程想要访问数据时,都需要阻塞挂起。乐观锁假设数据一般情况不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值。

2024-04-06 08:26:48 1842 29

原创 mysql中主键索引和联合索引的原理解析

联合索引:将数据库表中多个字段组成一个索引。bcd联合索引;bcd三个字段进行排序复合索引,也叫联合索引,用户可以在多个列上建立索引,这种索引叫做复合索引。当我们创建一个组合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。查询的字段正好在联合索引字段里面,不需要回表(不需要回表了,直接从联合索引字段中将该字段取出来)同样的也符合联合索引,也不需要回表,因为a字段(主键)在联合索引中。

2024-04-05 07:28:34 2895 92

原创 MySQL索引原理

餐馆,小黑本——》记录消费的金额——》不忙的的时候再把信息挪到记账本中。mysql中一页有16kb的数据,假设我插入了4条数据,一页占满了;1、B+Tree每个节点可以包含更多的节点,这个做的原因有两个,1、判断更新的数据是否在内存中,如果在内存中直接更新数据。一页有16kb,每一页包含页目录、用户数据区域、指针。2、如果不在内存中,需要把磁盘的数据加载到内存中。餐馆,记账本——》找到个人账单——》加上10元。当我插入第5条数据,如果一页满了会新增一页,数据结构——》哈希表、一堆树——》

2024-04-04 16:41:21 1550 41

原创 JMeter+Grafana+influxdb 配置出现transaction无数据情况解决办法

如下图所示出现application有数据但是transaction无数据情况。然后再进行后端监听器的设置 如下图所示。打开变量设置如下图打开两个选项。重新执行性能脚本即可。

2024-04-03 21:31:00 1095 16

原创 MQ消息队列详解以及MQ重复消费问题

现有ABCDE五个系统,最初的时候BCD三个系统都要调用A系统的接口获取数据,一切都很正常,但是突然,D系统说:我不要了,你不用给我传数据了,A系统无奈,只能修改代码,将调用D系统的代码删除,这时候还没删除呢,E系统发送了请求,但是A系统这时候还没处理完D系统的请求,A系统卒!看下图↓↓↓↓↓↓↓↓↓↓↓。用户发送请求到A系统耗时3ms,A系统发送三条消息到MQ,假如耗时5ms,用户从发送请求到相应3ms+5ms=8ms,仅用了8ms,用户的体验非常好。详情如下图↓↓↓↓↓↓。

2024-04-03 08:09:58 1673 62

原创 Jenkins执行策略(图文讲解)

1、定时任务表达式:Jenkins使用一种特定的表达式来定义定时任务的执行时间和频率。这个表达式被称为Cron表达式,它由5个或6个字段组成,分别表示分钟、小时、日期、月份和星期几。通过设置这些字段的值,可以实现各种不同的定时任务调度。【构建触发器】中勾选其他工程构建后触发,并输入关注的项目。名字随意命名,英文即可,例如testwebhook。【构建触发器】中勾选定时构建,并输入时间格式。星期几(0-7,其中0和7都表示星期日)一般情况下:勾选只有构建稳定时触发。

2024-03-31 08:33:51 3022 57

原创 Linux部署Sonarqube+Gogs+Jenkins(一)

提交代码—通过Sonarqube进行扫描(前置条件:jdk必须是11)SonarQube属于静态测试和动态测试中的静态测试白盒测试和黑盒测试中的白盒测试SonarQube分为:介绍工下SonarQube工具:(分为两个模块)1.分析器(Web页面,是一个可视化的平台)——SonarQube2.扫描器(工具–对代码进行扫描之后提交到分析器上去)——SonarScanner。

2024-03-30 21:49:17 3541 91

原创 python知识点总结(十)

当系统中存在大量的 CPU 密集型任务,会导致 CPU 处理线程变慢。:和处理进程类似,线程进行大量的 I/O 操作也会导致 CPU 处理线程变慢,因为线程需要等待 I/O 操作完成才能继续执行。当进程需要进行大量的输入输出操作时,CPU处理进程的速度会变慢,这是因为I/O操作相比于CPU处理速度较慢。操作:在栈中,数据的插入和删除都是在栈顶进行,压入数据称为入栈(push),弹出数据称为出栈(pop)。操作:在队列中,数据的插入是在队尾进行(enqueue),数据的删除是在队头进行(dequeue)。

2024-03-28 21:55:57 1981 61

原创 python知识点总结(九)

客户端发送请求,用send不用sendto,客户端知道服务器的ip和端口,服务器也知道客户端的端口和ip,因为是面向连接的。等待客户端的连接请求,当前函数是线程阻塞的函数,accept返回2个值,第一个:新的socket,第二个:客户端地址,新的字典为 : {‘age’: None, ‘name’: None, ‘sex’: None}新的字典为 : {‘age’: 10, ‘name’: 10, ‘sex’: 10}新字典为: {‘Name’: ‘Runoob’, ‘Age’: 7}

2024-03-26 10:03:41 1506 19

空空如也

空空如也

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

TA关注的人

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