自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

My apologize的博客

热爱python的小朋友

  • 博客(102)
  • 资源 (2)
  • 收藏
  • 关注

原创 Django报错:SystemCheckError: System check identified some issues解决办法

观察errors:大概意思是blogs和books下都有相同文件,猜测问题可能出现在多个应用的 templatetags 文件夹中存在同名的模板标签模块。这导致 Django 无法确定要加载哪个模块,从而产生了冲突。,测试在blogs中创建模板使用自定义标签,于是直接把book/templatetags包直接赋值到blogs目录里。在页面里加载自定义标签。今天练习django自定义标签时,一开始在APP。测试成功,之后新建了一个APP。

2023-08-30 09:45:39 1626

原创 教你如何美化自己的Typora

很多朋友习惯使用Typora打字或电子笔记,虽然市面上有很多Markdown工具,但是我尤爱Typora。虽然它没有云存储不方便多设备同步,本地管理也不是很强大;可它简约的md语法和窗口界面,让我能够沉浸在码字的过程中,我愿称它为专为md而生的。可是日常使用中typora的默认配置不是很好用,今天我来如何修改美化你的typora,让他成为更趁手的码字工具。

2023-08-27 21:04:52 725

原创 最详细的Django安装与启动

Django 3.2支持的Python版本为3.6、3.7、3.8和3.9,而Django 4.1只支持Python 3.8、3.9和3.10。因为考虑到新的python版本更新和新的mysql数据库版本,由此使用python3.8和Django 4.1和MYSQL8.0。

2023-08-27 11:29:14 1484

原创 爬取boss直聘简单案例

以chrome自动化为例下载浏览器驱动查看chrome的版本大版本号要和驱动对应Scripts安装相关第三方库,在终端输入如下。

2023-08-27 11:16:56 477 1

原创 SpringBoot简单上手

spring boot 是spring快速开发脚手架,通过约定大于配置,优化了混乱的依赖管理,和复杂的配置,让我们用java-jar方式,运行启动java web项目。

2023-08-26 20:27:21 249

原创 手把手教你安装jdk8

我们口中说的Java8、JDK8、JDK1.8都是一个东西。选择如图链接下载:(win11,其他系统版本选择其他)在用户变量(或者系统变量)中点击新建,输入变量名。下载到自定义目录,双击点开exe文件。可选:修改默认安装位置(全英文目录)在用户变量中点击新建输入变量名。点击用户变量里的Path。安装完成,配置环境变量。

2023-08-26 10:44:04 322

原创 递归算法应用(Python版)

递归是一种解决问题的方法,其精髓在于将问题分解为规模更小的相同问题,持续分解,直到问题规模小到可以用非常简单直接的方式来解决。递归的问题分解方式非常独特,其算法方面的明显特征就是:在算法流程中调用自身。递归为我们提供了一种对复杂问题的优雅解决方案,精妙的递归算法常会出奇简单递归三定律递归算法必须有一个基本结束条件(最小规模问题的直接解决)递归算法必须能改变状态向基本结束条件演进(减小问题规模)递归算法必须调用自身(解决减小了规模的相同问题)

2023-08-24 13:31:17 255

原创 前端三剑客入门一文解决

文章目录HTML快速开发网站Flask页面结构标签基础标签超链接图片列表下拉框表格input系列多行文本form表单网络请求HTML案例CSSCSS盒模型CSS样式定义CSS选择器CSS样式使用1. 在标签上直接写2. 在head标签中写3.写到css文件中标签样式1. 高度和宽度2. 块级和行内标签3.字体设置4.文字对齐方式5.浮动6.内边距7.外边距CSS样式案例1.头部导航条2.二级菜单3.推荐区域CSS布局hover(伪类)after(伪类)displayposition1. fixed案例:返回

2023-08-24 13:22:34 528

原创 Python常用单词

1、birthday 出生日期2、year 年3、month 月4、day 日5、type 类型6、error 错误7、missing 丢失8、required 必须9、positional 位置。

2023-08-24 13:18:28 400

原创 线性结构:无序列表

列表List是一种简单强大的数据集结构提供了丰富的操作接口但并不是所有的编程语言都提供了List数据类型,有时候需要程序员自己实现。一种数据项按照相对位置存放的数据集称为“无序表unordered list”其中数据项只按照存放位置来索引,如第1个、第2个……、最后一个等。(为了简单起见,假设表中不存在重复数据项)无序表操作定义List():创建一个空列表add(item):添加一个数据项到列表中,假设item原先不存在于列表中。

2023-07-22 12:48:34 540

原创 线性结构:双端队列

双端队列Deque是一种有次序的数据集跟队列相似,其两端可以称作“首”“尾”端,但deque中数据项既可以从队首加入,也可以从队尾加入;数据项也可以从两端移除。某种意义上说,双端队列集成了栈和队列的能力但双端队列并不具有内在的LIFO或者FIFO特性如果用双端队列来模拟栈或队列需要由使用者自行维护操作的一致性双端队列定义操作Deque():创建一个空双端队列addFront(item):将item加入队首addRear(item):将item加入队尾。

2023-07-22 12:47:28 148

原创 线性结构:队列

队尾进,队头出队列是一种有次序的数据集合,其特征是新数据项的添加总发生在一端(通常称为“尾rear”端)而现存数据项的移除总发生在另一端(通常称为“首front”端)当数据项加入队列,首先出现在队尾,随着队首数据项的移除,它逐渐接近队首。新加入的数据项必须在数据集末尾等待,而等待时间最长的数据项则是队首这种次序安排的原则称为( FIFO:First-infirst-out)先进先出或“先到先服务first-come first-served”

2023-07-20 17:00:25 91

原创 Python基础:装饰器

装饰器自身时一个返回可调用对象的可调用对象,也就是返回了一个对象,当通过其最初名称调用被装饰函数的时候,将会调用这个对象—它可以时拦截之后调用的一个包装器对象,也可以是以某种方式扩展的最初函数。(装饰器可以是任意类型的可调用对象,并且返回任意类型的可调用对象。装饰器本身采取可调用对象的形式(如函数),并处理其他可调用对象。在不改变函数调用方式的前提下,实现身份的识别(扩展功能),需要使用装饰器(本质是闭包)值改回inner装饰之前的值,解决函数被装饰后名称改变的问题。可以将函数的运行结果赋给另一个函数。

2023-07-20 12:18:21 155

原创 线性结构:栈

栈顶进栈顶出一种有次序的数据项集合,在栈中,数据项的加入和移除都仅发生在同一端。这一端叫栈“顶top”,另一端叫栈“底base“距离栈底越近的数据项,留在栈中的时间就越长而最新加入栈的数据项会被最先移除这种次序通常称为==“后进先出LIFO”==:Last in First out这是一种基于数据项保存时间的次序,时间越短的离栈顶越近,而时间越长的离栈底越近栈的特性:反转次序进栈和出栈次序正好相反例如,浏览器后退按钮,最先back最近访问的网页;撤销按钮抽象数据类型Stack。

2023-07-20 12:11:07 71

原创 leetcode:定长字串中元音的最大数目

3、每个窗口判断当前元音个数tmp是否大于截止当前的最大值result,如果是则result = tmp 4、继续下一个窗口计算。如果是,则下一个窗口的元音个数就是m + 1,否则为m。有一个优化点:如果当前窗口的元音个数= k,其实就没必要再继续滑动了,直接return。如果当前窗口的起始位置是元音,那么传递到下一个窗口的元音个数m = n - 1。如果当前窗口的起始位置不是元音,那么传递到下一个窗口的元音个数就是m = n。示例: 1、假设当前窗口的元音个数是n,那么在滑动时。时间复杂度:O(n)

2023-07-16 18:36:04 379

原创 leetcode:独一无二的出现次数

如果每个数的出现次数都是独一无二的,就返回。,请你帮忙统计数组中每个数的出现次数。

2023-07-15 09:46:45 342

原创 leetcode:找出两数组不同

*注意:**列表中的整数可以按。,请你返回一个长度为。

2023-07-14 10:46:29 354

原创 一文搞懂python装饰器

装饰器自身时一个返回可调用对象的可调用对象,也就是返回了一个对象,当通过其最初名称调用被装饰函数的时候,将会调用这个对象—它可以时拦截之后调用的一个包装器对象,也可以是以某种方式扩展的最初函数。(装饰器可以是任意类型的可调用对象,并且返回任意类型的可调用对象。装饰器本身采取可调用对象的形式(如函数),并处理其他可调用对象。在不改变函数调用方式的前提下,实现身份的识别(扩展功能),需要使用装饰器(本质是闭包)值改回inner装饰之前的值,解决函数被装饰后名称改变的问题。可以将函数的运行结果赋给另一个函数。

2023-07-13 16:30:53 246

原创 leetcode:寻找数组的中心下标

其中 NNN 为数组 nums 长度。求和操作使用 O(N)O(N)O(N) 线性时间,遍历 nums 最差使用 O(N)O(N)O(N) 线性时间。,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为。如果数组不存在中心下标,返回。如果数组有多个中心下标,应该返回。

2023-07-13 10:39:09 147

原创 leetcode:找到最高海拔

有一个自行车手打算进行一场公路骑行,这条路线总共由。个不同海拔的点组成。

2023-07-12 09:49:44 283

原创 leetcode:递增的三元子序列

假设有如下示例:[2,5,1,2,6],在遇到1之后更新了one,后遇到2,2介于1和5(two)之间,更新two为2,后遇到6,由于6大于2,返回true。注意:two附带隐含信息——这之前有个数比two小 所以此时找到的递增子序列不是one、two、three的1 5 6,而是old one、two、three的2 5 6。需要注意的是,我们只更新one,原先的two不需要更改,因为子序列是从前往后的,只有当之后再出现比two小的数的时候再按照第二步那样更改。代表递增子序列的第一个数和第二个数。

2023-07-11 11:12:49 264

原创 leetcode:除自身以外数组的乘积

从上面的图可以看出,当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。综上所述,这个函数通过两次遍历数组,分别计算每个元素左侧和右侧所有元素的乘积,并将结果保存在。在这个循环中,我们从数组的最后一个元素开始,倒序遍历到第二个元素。在这个循环中,我们从数组的第一个元素开始,遍历到倒数第二个元素。列表中的每个元素表示当前元素左侧所有元素的乘积。列表中的每个元素表示当前元素右侧所有元素的乘积。

2023-07-10 10:31:39 249

原创 Python基础:面向对象编程

并且在父类中要在初始化后面加入万能参数来接受子类传入的参数传递。同时父类也需要去写一个super初始化方法来调用父类的初始化方法。总结:如果要用super关键字实现多继承的父实例属性的自动化构造方法,需要将给父类传入的参数变成万能参数的形式。关键字来定义一个方法,类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称:如。代表类的实例,而非类,self为类的方法调用时传送的参数。父类方法的功能不能满足需求,可以在子类重写父类的方法。的一个实例,然后通过该实例调用。

2023-07-09 20:36:21 285

原创 leetcode: 子数组最大平均数 1

然后使用两个循环来计算子数组的和和最大和。通过利用前缀和数组,可以在常量时间内计算任意子数组的和,从而将时间复杂度优化到 O(n)。的连续子数组,并输出该最大平均数。的答案都将被视为正确答案。首先创建了一个前缀和数组。个元素组成的整数数组。请你找出平均数最大且。

2023-07-09 10:45:10 300

原创 leetcode:判断子序列

si指向s的当前字符,ti指向t的当前字符。在while循环中,如果当前的t字符与s字符相等,si向后移动一位。首先,代码检查s的长度是否大于等于t的长度,如果是,则判断s和t是否相等,如果相等则返回True,否则返回False。这是因为如果s的长度大于等于t的长度,但s和t不相等,那么s肯定不是t的子序列。这段代码的时间复杂度是O(len(t)),其中len(t)表示字符串t的长度。最后,代码检查si是否等于s的长度,如果相等,则证明所有的s字符都在t中按顺序出现,返回True,否则返回False。

2023-07-07 20:39:18 269

原创 leetcode:移动零

我们创建两个指针 i 和 j,第一次遍历的时候指针 j 用来记录当前有多少 非0 元素。即遍历的时候每遇到一个 非0 元素就将其往数组左边挪,第一次遍历完后,j 指针的下标就指向了最后一个 非0 元素下标。第二次遍历的时候,起始位置就从 j 开始到结束,将剩下的这段区域内的元素全部置为 0。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。**进阶:**你能尽量减少完成的操作次数吗?,编写一个函数将所有。法2:双指针(效率高)

2023-07-06 20:57:40 419

原创 Python基础:模块

用户通过导入其他模块,可以使用该模块中定义的变量、函数和类,从而重用其功能。from*形式只是多了一个步骤,即把模块中所有名称复制到了进行导入的作用域中,本质上就是把一个模块的命名空间纳入另一个模块中。会把特定名称从一个文件复制到另一个作用域,所以它可以让我们直接在脚本中使用复制后的名称,而不需要通过模块。:是特殊的from形式,当我们用*代替特定的名称时,会取得模块顶层被赋值的所有名称的副本。客户端使用模块提高的函数时,无须了解其实现细节,模块和客户端之间遵循的契约称为API。,才能获取其中的名称。

2023-07-05 17:21:07 116

原创 Python基础:函数和函数式编程

在函数体中可以定义嵌套函数,在嵌套函数中如果要为定义在上级函数体的局部变量赋值,可以使用nonlocal语句,表明变量不是所在块的局部变量,而是在上级函数体中定义的局部变量。如果要为定义在函数外的全局变量赋值,可以使用global语句,表明变量是在外面定义的全局变量。在函数体中可以引用全局变量,但如果函数内部的变量名时第一次出现在赋值语句之前(变量赋值),则解释为定义局部变量。在函数体内使用return语句可以从函数中返回一个值并跳出函数的功能。优势:结构体简单,函数体简短场景适用,即用即弃。

2023-07-05 17:17:06 1014

原创 Python基础:错误与异常

​ 虽然Python库中提供了许多异常,但在应用程序开发过程中,有时候需要定义特定于应用程序的异常类,表示应用程序的一些错误类型。​。

2023-07-05 17:16:10 645

原创 Python基础:数据类型

也就是每个键对应的数值都是3。

2023-07-05 17:15:14 468

原创 Python基础:控制流

​ 当迭代对象完成所有迭代后且此时迭代对象为空,如果存在else子句则执行else子句,没有则继续执行后续代码;for语句用于遍历可迭代对象集合中的元素,并对集合中每个元素执行一次相关嵌入的语句。当集合中所有元素完成迭代后,控制传递给for 之和的下一个语句。如果while循环结构中的循环控制条件一直为真,则循环将无限继续,程序将一直运行下去,从而形成死循环。:用于将一个函数应用于一个可迭代对象的每个元素,并返回一个包含结果的迭代器。python提供了一套内置函数,可以在for循环中定制迭代。

2023-07-05 17:15:10 115

原创 leetcode:反转字符串中的元音字母

查找速度:集合是基于哈希表实现的,而列表是基于数组实现的。哈希表具有快速的查找速度,平均情况下查找元素的时间复杂度为O(1),而列表需要遍历整个列表才能找到元素,平均情况下查找元素的时间复杂度为O(n)。因此,在需要频繁进行查找操作的情况下,集合比列表效率更高。,仅反转字符串中的所有元音字母,并返回结果字符串。,且可能以大小写两种形式出现不止一次。

2023-07-05 10:58:59 198

原创 leetcode:种花问题

​ 【1】当遍历到index遇到1时,说明这个位置有花,那必然从index+2的位置才有可能种花,因此当碰到1时直接跳过下一格。【2】当遍历到index遇到0时,由于每次碰到1都是跳两格,因此前一格必定是0,此时只需要判断下一格是不是1即可得出index这一格能不能种花,如果能种则令n减一,然后这个位置就按照遇到1时处理,即跳两格;如果遍历结束n没有减到0,说明最多种入的花的数量小于n,则返回false。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。,能否在不打破种植规则的情况下种入。

2023-07-04 11:28:22 292

原创 leetcode:拥有糖果最多的孩子

除此之外,其他的变量和操作都是常数级别的,不会随着输入大小的增加而增加额外的空间。列表中的每个元素进行遍历,进行判断和运算。这一步同样需要O(n)的时间复杂度。列表的大小如何增长,函数的运行时间都会以线性的方式增长。列表,以找到最大值。这一步需要O(n)的时间复杂度。列表的长度相同,因此需要占用O(n)的额外空间。因此,整个函数的时间复杂度是O(n)。这个函数的时间复杂度是O(n),其中n是。这个函数的空间复杂度是O(n),其中n是。因此,整个函数的空间复杂度主要由结果列表。所占用的空间决定,是O(n)。

2023-07-03 10:33:42 219

原创 leetcode:字符串最大公因子

的任何前缀都应该成立。因此,我们可以不断将较长的字符串替换为其和较短字符串的差,即删除它的前缀,直到两个字符串相等,那么这个字符串就是 GCD,或者其中一个字符串变成空字符串,那么说明它们没有 GCD。​ 在这个问题中,我们应当使用欧几里得算法,它常用于计算两个整数的最大公约数,但也可以用于解决这个问题。空间复杂度也是 O(N),因为 Python 的字符串切片操作会创建新的字符串。最终,如果其中一个字符串变成空字符串,那么另一个字符串就是最大公共因子。开头,那么它们没有公共的因子,所以直接返回空字符串。

2023-07-02 18:30:05 381

原创 leetcode:交替合并字符串

开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。

2023-07-01 16:06:27 289

原创 leetcode02.无重复字符最长字串

遍历过程中,如果遇到的字符在字典中,就更新起点为当前字典中字符位置+1和当前起点的最大值,以此确保窗口中无重复字符。遍历过程中,用一个变量来保存最大的窗口大小,遍历完成后,这个变量就是最长的无重复字符的子串长度。因此,空间复杂度是 O(min(n, m)),其中 n 是字符串的长度,m 是字符集的大小。该算法遍历了整个字符串,对每个字符最多执行两次操作:一次是检查字符是否存在于字典中,另一次是将字符添加到字典中或更新字符的位置。​ 这个暴力解法的时间复杂度是 O(n^3),其中 n 是字符串 s 的长度。

2023-06-30 09:34:43 109

原创 leecode01:两数之和

然后,对于输入列表中的每一个数字,我们都计算目标和与它的差值,然后在字典中查找这个差值是否存在。如果存在,说明我们已经找到了两个和为目标的数字,所以我们就返回它们的索引。如果不存在,我们就将当前数字及其索引添加到字典中。这样,我们只需要遍历一次输入列表,所以时间复杂度是O(n)。这两个操作在Python列表中都需要线性时间复杂度,即O(n),其中n是列表的长度。但是,数组中同一个元素在答案里不能重复出现。**进阶:**你可以想出一个时间复杂度小于。整数,并返回它们的数组下标。,请你在该数组中找出。

2023-06-29 13:31:36 100

原创 Python每日一题:数字峰值

函数的输入是一个含有 n 个整数的列表(0 <= n <= 10^5),其中每个整数的范围为 -10^9 <= nums[i] <= 10^9。给你一个含有若干整数的列表,你的任务是编写一个函数,找出这个列表中所有的峰值。峰值定义为比其前后元素都大的元素。你需要返回所有峰值的索引。注意:在列表的两端,只需要比较一侧的元素。例如在上述示例中,最后一个元素1是一个峰值,因为它比前一个元素0大。函数需要返回一个列表,包含所有峰值元素的索引。在这个示例中,7、6和1都是峰值,它们在原列表中的索引分别为2、5和7。

2023-06-29 09:17:33 336

原创 每日一练:斐波那契数列

斐波那契数列是一个以递归的方法来定义的数列。数列的前两个数字是 0 和 1,后续的每一个数字都是它前两个数之和。

2023-06-27 12:30:05 71

四级单词词根词辍(整理自知乎)

四级单词词根词辍(整理自知乎)

2022-02-23

Linux知识点总结.docx

Linux基础入门知识总结(完整版) > **内容说明**:所有含命令行代码的截图纯本人电脑实验操作截图,部分知识点截图取自网络资源,本博客内容仅代表自己的理解,不是官方文档,有不正确的地方欢迎斧正 > **虚拟机版本**:VirtualBox-5.2.4-119785-Win > **镜像版本**:rhel-server-6.4-x86_64-dvd.iso > **远程工具**:xshell6 > **作者**:My apologiz > **转载请标注**:https://huaizhihua.blog.csdn.net/ 系统版本:Red Hat(64-bit)

2020-07-21

空空如也

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

TA关注的人

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