- 博客(39)
- 收藏
- 关注
原创 Redis基础知识
Redis是一个基于内存的key-value结构数据库基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛。
2024-08-08 10:04:09
923
原创 Maven高级
聚合是将多个模块组织成一个整体,同时进行项目的构建聚合工程是一个不具有业务功能的“空”工程(有且仅有一个pom文件)用来快速构建项目(无需根据依赖手动构建,直接在聚合工程上构建即可)
2024-07-29 17:38:06
336
原创 Springboot原理相关
在springboot中优先级application.properties>application.yml>application.yaml虽然支持多种格式配置文件,但是在项目开发中,推荐统一使用一种格式的配置(
2024-07-29 15:51:51
185
原创 AOP-Springboot
AOP就是面向特定方法编程在实现的时候,动态代理是切面编程最主流的实现,而SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。
2024-07-29 10:02:49
269
原创 登录校验(会话跟踪、JWT令牌、Filter、Interceptor、全局异常处理器)
会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间。登陆成功后生成令牌,后续每个请求,都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后,再处理。用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。如果JWT令牌解析校验时报错,则说明JWT令牌被篡改或者失效了,令牌非法。JWT校验时使用的签名密钥,必须和生成的JWT令牌时使用的密钥时配套的。请求-->放行前逻辑--> 放行--> 资源--> 放行后逻辑。
2024-07-25 11:18:20
662
1
原创 文件的上传
阿里云对象存储服务(Object Storage Service,简称OSS)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。阿里云OSS将数据文件以对象(object)的形式上传到存储空间(bucket)中。SDK:软件开发工具包,包括辅助软件开发包的依赖(jar)包,代码示例等。通过修改存储空间或文件的属性或元信息来设置相应的访问权限。通过获取已上传文件的地址进行文件的分享和下载。避免文件名重复覆盖文件的情况。
2024-07-22 16:08:51
206
原创 力扣--225.用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop和empty实现MyStackint pop()int top()truefalsesizeis empty。
2024-07-20 17:27:31
435
原创 力扣--232.用栈实现队列
若循环执行 A 元素出栈并添加入栈 B ,直到栈 A 为空,则 A = [] , B = [3,2,1] ,即栈 B 元素为栈 A 元素倒序。利用栈 B 删除队首元素:倒序后,B 执行出栈则相当于删除了 A 的栈底元素,即对应队首元素。因此,可以设计栈 A 用于加入队尾操作,栈 B 用于将元素倒序,从而实现删除队首元素。否则: 将栈 A 元素全部转移至栈 B 中,实现元素倒序,并返回栈 B 的栈顶元素。当栈 B 不为空: B中仍有已完成倒序的元素,因此直接返回 B 的栈顶元素。弹出 B 的栈顶元素。
2024-07-19 17:55:41
663
原创 MYSQL数据库
关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数库是由多张能相互连接的二维表组成的数据库不是表类型的数据库就不是关系型数据库1.都是使用表结构,格式一致,易于维护2.使用通用的SQL语言操作系统,使用方便,可用于复杂查询对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,称为“方言”SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准SQL通用语法1.SQL语句可以单行或多行书写2.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
2024-07-14 10:37:20
785
原创 web后端开发--请求响应
请求:获取请求数据响应:设置响应数据BS架构 Browser/Server,浏览器/服务器架构模式,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端(CS架构 Client/Server,客户端/服务器架构模式(
2024-07-10 15:07:17
1336
1
原创 栈的算法总结
计算机科学中,stack是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为栈顶,另一端不能操作数据的称之为栈底,就如同生活中的一摞书栈是限定仅在表尾(top)进行插入或者删除操作的线性表允许插入和删除的一端称为栈顶(top,表尾),另一端称为栈底(bottom,表头)特点:后进先出是栈的顺序存储结构,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素指针top指向栈顶元素在顺序栈种的下一个位置base为栈底指针,指向栈底的位置先提供一个栈接口/**
2024-07-09 10:01:48
201
原创 栈的基础知识
栈是限定仅在表尾(top)进行插入或者删除操作的线性表允许插入和删除的一端称为栈顶(top,表尾),另一端称为栈底(bottom,表头)
2024-07-08 21:12:18
276
原创 web开发--HTTP,Tomcat,SpringBootWeb入门
就是请求数据和响应数据应该遵守的格式HTTP协议特点:安全,一次一个,没有记忆能力,多次请求不能共享数据,每次请求响应都是独立的,所以要用到会话技术,速度快基于TCP协议:面向连接,安全,基于请求响应模型,一次请求对应一次响应。
2024-06-05 19:49:38
774
原创 环形链表力扣--142
定义一个快指针一个慢指针,让快指针一次走两个结点,慢指针一次走一个结点,如果有环的话快指针会先进入,然后满指针也进入,快指针走的快,一直在环里,所以一定会和慢指针相遇,所以这个可以用来判断是否有环。所以我们在相遇的点处设置一个l1,在头的部分设置l2 ,让他们移动相同距离,最终他们相遇的位置就是环的入口。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。因为要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。,返回链表开始入环的第一个节点。
2024-04-09 09:46:11
580
原创 python基础笔记
def 函数名(传入参数):函数体return 返回值调用:函数名(参数)如果参数和返回值不需要的话可以省略函数必须先定义后使用def 函数名(传入参数):函数体return 返回值变量=函数(参数)lambda 传入参数:函数体(一行代码)lambda 是关键字,表示定义匿名函数传入参数表示匿名函数的形式参数,如:x, y 表示接收2个形式参数只能写一行,无法写多行代码test(lambda x,y:x+y) #结果为3#定义字典字面量#定义字典变量#定义空字典。
2024-04-09 08:53:59
994
原创 链表相交面试题
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。若两链表 有 公共尾部 (即 c>0 ) :指针 A , B 同时指向「第一个公共节点」node。他是链表尾部相交,所以我们需要先得到两个链表的长度。后面为了方便分析判断,链表长的我们让他都为A。若两链表 无 公共尾部 (即 c=0) :指针 A , B 同时指向 null。在 B 中,相交节点前有 3 个节点。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。如链表A+链表B=链表C1。
2024-04-09 08:47:23
850
原创 删除链表的倒数第n个结点力扣--19
应该使用双指针,首先创建一个虚拟头节点,然后再设置两个指针都指向这个虚拟头节点。移动fastnode,直到它找到第n个元素的后一个结点,此时同时移动fastnode和slownode,当dastnode指向末尾。假如让快指针移动n步的话,到最后slow指向的是要删除元素的前一个,所以为了方便,我们让fastnode移动n+1。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。
2024-04-09 08:08:34
220
原创 两两交换链表中的节点力扣--24
在while循环中,如上图,这个是一个偶数的链表,然后进行完这一轮以后就temp就指向了4,然后由于是两个交换,这样就正好完成,我们发现这种情况的特征是它后面的指针是null,然而如果是奇数的话,相当于4后面还有一个5,但是5是单独的,没有人和他交换了,所以是第二种情况。经过步骤一以后,cur和1之间的箭头断了,无法表示1,所以我们想到用临时变量来存储它的值,即firstnode,同理,当2指向1以后,和3之间的箭头就断了,所以还需要另外一个变量temp去存储。while的两个条件能否交换?
2024-04-08 21:28:59
433
原创 反转链表力扣--206
一直移动一直移动直到最后curr指向null了,pre指向尾指针,此时就不用继续了,因为我们不需要让这个null空指针再指向头指针了。首先需要定义一个curr,用来指向头指针,反转之后头指针就变成尾指针了,尾指针会指向null,所以在头指针的前面我定义了一个pre,让他初始化等于null。如果3,4互换位置的话,相当于curr先等于了它原来next的值,此时curr已经改变了,他改变以后才动pre,这是错误的。此时curr的next就是指向了pre的位置,所以这是第二步。改变指针next的指向就可以了。
2024-04-08 20:38:09
266
1
原创 设计链表力扣--707
首先对于插入,要先创建一个新的节点,然后再把这个节点添加到链表当中,在添加的过程中,要先进行这个连接操作,就是先进行右边连接的箭头,再让左边的指向箭头指向这个新建的链表。然后进行操作的关键是找清楚到底是要curr还是curr.next这个问题。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。这道题都是链表的基础操作,需要多加练习。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。
2024-04-08 19:45:00
135
原创 链表--移除链表元素--力扣203
假如这个链表是1 1 1 1 1 1,然后恰好要删除元素的值也为1,如果是if的话就进行一次,而我们需要的是一直删除,所以while更合适。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]情况二较为简单,直接遍历找到要删除的元素,使要删除元素的前一个值的下一个元素直接等于要删除的后一个元素。示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]分为两种情况:1.被移除的是头元素 2.被移除的不是头元素。
2024-04-08 18:25:43
343
2
原创 螺旋矩阵--力扣54
这个四个角的元素其实加进去两次,但是数组中不能有重复元素(?i++ : 先用a的原值,然后i加1;++i :先给a加1,然后用i的新值。,返回矩阵中的所有元素。和之前一样也是转圈圈得到。
2024-04-03 14:33:07
323
1
原创 螺旋矩阵--力扣59--螺旋矩阵||
想法遵循二分法的循环不变量原则。我们选择第一行从左到右,接着从上到下,再从右到左,最后从下到上;一层循环结束后进行第二层......这里采用左闭右开,就是有四个角,每一行都是包含开头那个角,另外一个角等处理旁边那条边的时候再进行,这样有一个规则就不会弄混了。相当于是一个绕正方形,首先弄明白环绕方式,然后它的关键在于正方形四个角的处理。所有元素,且元素按顺时针顺序螺旋排列的。同一个颜色代表同一次处理。
2024-04-02 21:28:14
283
1
原创 滑动窗口--力扣209--长度最小的子数组
假如给出:1 1 1 1 100,这一串数字,然后目标值是100,终止位置直接移动到了最后一位,此时num=104,就要开始移动初始位置了。先移动一位变成103,还是比100大,需要再次移动,变成102,101...所以滑动窗口的精髓在于一直移动,一直往后移,如果写成if的话,他就会第一次104符合条件然后直接结束,找到的不是符合要求的最小长度。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。个正整数的数组和一个正整数。
2024-04-02 19:53:54
969
1
原创 力扣977--有序数组的平方
数组平方后进行排序,非负的部分的顺序不会改变,会改变的其实就是负数部分,所以在数组开头和结尾各一个指针,让他们相互逼近,然后定义一个新的数组的索引,把排好的放进去。平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]组成的新数组,要求也按。
2024-04-02 18:52:18
232
1
原创 力扣844--比较含退格的字符串
给定s和t两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回true。代表退格字符。如果对空文本输入退格字符,文本继续为空。
2024-04-02 18:20:58
117
1
原创 力扣283--移动0
移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。和之前不同的地方在于它把0加到了后面。本题的关键在于数组长度不会改变。,编写一个函数将所有。
2024-04-02 11:47:53
146
1
原创 二分法--力扣34--在排列数组中查找元素的第一个和最后一个位置
请你找出给定目标值在数组中的开始位置和结束位置。给你一个按照非递减顺序排列的整数数组。你必须设计并实现时间复杂度为。如果数组中不存在目标值。
2024-04-02 11:42:50
171
1
原创 删除元素--力扣26--删除有序数组中的重复项
返回删除后数组的新长度。非严格递增:即有可能相等,双指针方便。删除重复出现的元素,使每个元素。
2024-04-02 09:39:31
181
1
原创 数组--移除元素--力扣27
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。
2024-04-02 09:25:58
273
1
原创 力扣367.--有效的完全平方数
是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。不能使用任何内置的库函数,如。是一个完全平方数,则返回。
2024-04-02 08:57:03
179
2
原创 力扣69--x 的平方根
遗留问题:为什么if那里的数据类型要强转一下,转成long呢?请你找出给定目标值在数组中的开始位置和结束位置。给你一个按照非递减顺序排列的整数数组。你必须设计并实现时间复杂度为。如果数组中不存在目标值。
2024-04-02 08:43:23
239
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人