自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java筑基(二)

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

2024-05-19 21:17:12 594 3

原创 Java筑基(一)

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

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

原创 我的创作纪念日

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

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

原创 二叉树相关题目

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

2024-05-01 14:46:35 410 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 1071 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 1045 43

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2024-04-17 23:25:55 1019 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 1130 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 1377 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 1594 47

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

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

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

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

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

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

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

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

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

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

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

2024-04-07 14:26:24 2192 84

原创 mysql知识点梳理

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

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

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

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

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

原创 MySQL索引原理

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

2024-04-04 16:41:21 1544 41

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

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

2024-04-03 21:31:00 1068 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 1600 62

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

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

2024-03-31 08:33:51 2587 56

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

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

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

原创 python知识点总结(十)

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

2024-03-28 21:55:57 1948 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 1495 19

原创 python知识点总结(八)

2、大小固定:数组的大小在创建时就被确定了,无法动态改变大小,如果需要扩容,通常需要重新分配一块更大的内存空间,将原有的数据拷贝过去。如果是可变对象,在函数体内的修改回影响到实际参数的值,arg2的修改,append(10),回影响到n2的值。如果是不可变对象,在函数体的修改不会影响到实际参数的值,arg1的修改为100,不会影响到n1的值。3、插入和删除效率低:由于数组的内存连续存储,插入和删除元素时需要移动后面的元素,效率较低。2、该方法只能删除开头或者是结尾的字符,不能删除中间部分的字符。

2024-03-24 10:55:35 1849 12

原创 python知识点总结(七)

如果是可变对象,在函数体内的修改回影响到实际参数的值,arg2的修改,append(10),回影响到n2的值。如果是不可变对象,在函数体的修改不会影响到实际参数的值,arg1的修改为100,不会影响到n1的值。:程序员需要手动管理堆内存的分配和释放,如果分配了内存但没有释放,可能造成内存泄漏。:栈内存的分配和释放是由编译器自动完成的,效率高,不会涉及内存管理算法的处理。:堆内存的动态分配和释放需要进行内存管理算法的处理,会比较耗时。真与真 真 ——》结果有假则假。字符串与数字相加:报错。

2024-03-22 10:48:48 1214 22

原创 python知识点总结(六)

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;3,copy模块的copy()函数}深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变),因此,新对象和原对象没有任何关联。2” 而言, Python 是允许连续比较的,“1 < 2==2” 相当于 ”(1 < 2) and (2。3、模块和包解决了Python中命名冲突的问题,不同的包下可以有同名的模块,不同的模块下可以有。

2024-03-21 10:08:43 1349 8

原创 python知识点总结(五)

而search()则不同,扫描整个字符串,如果产生了一个匹配正则模式就寻找到这个位置,返回相关匹配的对象。findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。1、协程是一种用户态的轻量级线程,协程的调度完全由用户控制;线程是进程中执行任务的基本单位(执行指令集),一个进程中至少有一个线程,当只有一个线程时,称为主线程。输出:1,2,3,12,13,23,123(组合数,不考虑顺序,所以12和21是等价的)

2024-03-20 10:29:12 1378 61

原创 python知识点总结(四)

Python中有四种作用域,分别是局部作用域(Local)、嵌套作用域(Embedded)、全局作用域(Global)、内置作用域(Built-in),搜索一个标识符时,会按照LEGB的顺序进行搜索,如果所有的作用域中都没有找到这个标识符,就会引发NameError异常。例如,可以使用cache.get(key)方法从缓存中获取数据,使用cache.set(key, value, timeout)方法将数据存入缓存,并指定过期时间。要使用Django的缓存功能,首先需要在项目的设置文件中配置缓存后端。

2024-03-18 23:08:44 1817 55

原创 python知识点总结(三)

由于内存是有限的,当计算机内存中存在大量的相互(循环)引用计数时,会占用大部分的内存;当新的变量进来时,但是内存不够用了,所以不会去开辟新的内存地址。4、使用内存分析工具:使用内存分析工具memory_profiler可以帮助我们分析内存使用情况,找到内存占用较大的部分,并进行优化。因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果。3、及时释放不再使用的对象:手动解除对不再使用的对象的引用,可以加速垃圾回收并释放内存。遍历在新的列表操作,

2024-03-18 10:22:29 1287 44

原创 python知识点总结(二)

编译型语言特点:编译成二进制文件;一次编译,多次执行;执行速度快(只需要翻译一次),跨平台型比较弱翻译成C代码,再翻译成二进制,再执行;每次编译每次执行;执行速度慢(多次执行、多次编译),跨平台型比较强。

2024-03-17 16:48:56 1127 34

原创 python知识点总结(一)

WSGI:是python web应用程序与web服务器之间的通用标准接口。它定义了web服务器和python应用程序之间的通信协议,使得不同的web服务器和python框架可以无缝集成。WSGI允许开发者使用统一的方式编写web应用程序,而不用关心底层的服务器实现细节。为什么需要wsgi呢?当请求时Web服务器需要和web应用程序进行通信,但是web服务器有很多种啊,例如最新的是nginx,专门提供http服务的;

2024-03-16 21:19:40 2076 40

原创 【数据结构与算法】解题20240313

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。从理论上讲,数组中如果有重复的数,那么就会产生多对一的映射,这样,形成的链表就一定会有环路了,假设 nums 只有 一个重复的整数 ,返回 这个重复的数。输入:nums = [1,3,4,2,2]输入:nums = [3,1,3,4,2]输入:nums = [3,3,3,3,3]

2024-03-13 21:08:25 986 10

原创 【数据结构与算法】解题20240312

具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1。将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。由于 “-42” 在范围 [-231, 231 - 1] 内,最终结果为 -42。

2024-03-12 14:00:15 853 2

原创 【数据结构与算法】贪心算法题解(一)

按照左边界从小到大排序之后,如果 intervals[i][0]

2024-03-11 15:06:39 774 8

原创 【数据结构与算法】二分查找题解(二)

例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4]。运用二分查找,从范围[1,n][1,n][1,n]开始,不断的折半,调用guessguessguess,如果midmidmid高了,就往左半折,如果低了就往右半折,直到找到了。调用预定义的接口guess来得到高了还是低了的信息,数字 范围是[1,n][1,n][1,n],直到猜中题目pick的数字。输入:nums = [2,5,6,0,0,1,2], target = 0。

2024-03-08 11:05:35 1088 30

原创 python高级之元类

1、当我们不写MyType类时,Type中已经帮我们定义好了__init____new____call__方法了当我定义了MyType类时,__init____new____call__方法是我们自己定义的2、这就是为什么实例化对象的时候,先去创建对象再去初始化对象,Type类中已经实现了先 __new__()再__init__()3、代码从上到下执行,当执行到时先创建这个类,去MyType中的__new__()创建方法__init__()实例化方法,类在内存中创建好了,

2024-03-06 23:04:27 1990 57

空空如也

空空如也

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

TA关注的人

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