自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vue项目工程化创建

当我们想要关掉项目时,回到命令行按ctrl + c 即可强制停止项目。我们来到想要创建项目的目录,之后创建的项目就会在这个目录下。然后到浏览器中,输入地址:localhost:5173。版本在16版本之后都行,我是20版本的,之前下载的。然后输入code . 通过vscode打开当前目录。然后依次执行绿色的前两个命令来下载依赖。引号中的路径是你安装的目录。来进入目录,注意有个空格。找到我们想要创建项目的目录。其余全部回车采用默认值。在项目目录下打开命令行。能正常展示出页面,成功。来到vscode,找到。

2025-04-04 14:24:59 412

原创 vue入门

我们一般只需要用mounted,一般用于发送请求,拿到页面展示的数据,方便将数据渲染到页面上展示数据。哪个元素要出现多次,v-for就添加到哪个指令上。on中要使用的函数要定义到methods中去。两者效果一样但是原理不一样。

2025-03-02 10:00:24 197

原创 Redis实现登录优化

向 浏览器 和 Redis 发送令牌,当浏览器携带令牌访问其他资源时,在拦截器中,我们不仅要对令牌的合法性进行校验,还要和Redis的令牌比较,二者的令牌一模一样才能通过。之前的登录逻辑,如果在修改密码后,我们会得到新的令牌,但是没有删除旧的令牌,导致用旧的令牌依然能够登录访问,所以我们在更新密码后应该要。发现我们用更新后的密码可以登录成功,更新前的密码不能登录。然后我们再去redis,看看我们的键值对是否成功存入。在用户更新完密码后,删除redis中对应的token。在用户登录成功时,我们。

2025-02-18 09:04:12 503

原创 文件上传功能(四)——项目集成

我们发现:endpoint、ACCESS_KEY_ID、ACCESS_KEY_SECRET、bucketName的值不会变,我们设置成全局变量,并修改endpoint、bucketName变量名。来到apifox的稳健上传接口,我们再测试一下,上传一个新的图片。我们要将入门程序改为一个工具类。将Demo中的代码复制过来。

2025-02-16 11:03:11 419

原创 文件上传功能(三)——编写入门程序

由于下载的代码和视频里代码版本不一样,没有办法照着写,我去问了一下Deepseek,对下面的代码进行了修改。修改存储对象的名字,可以是图片、文本等等,这里用001.png(将下一行代码注释掉,我们先直接用两个变量代替,不设置环境变量。,没有集成到项目中,想看集成到项目中 看下一个博客。往下翻,找到安装SDK,选择maven项目方式,然后将我们之前设置的id和secret粘贴进去。对象/文件——上传文件——简单上传。我的服务器就在华东,所以代码没变。来到我们的Bucket,点击。再检查一下图片是否上传成功。

2025-02-16 09:56:10 711

原创 文件上传功能(二)——云存储

用于存储对象(Object)的容器。可以将 Bucket 理解为一个顶层文件夹或命名空间,用于组织和存储文件(即对象)如果一直存到本地磁盘,时间久了磁盘空间就不够用了,所以我们将资源存到云存储器中。创建一个AccessKey,这个ID和密码好像只能看一次,记得保存好。地域可以选一个离自己所在地比较近的,上传下载速度会快一点。这里可以去阿里云,免费试用3个月的 对象存储OSS。修改为公共读 这个权限,点击保存。Bucket名称,自己取一个。把这个关了,然后来到读写权限。点击创建AccessKey。

2025-02-02 17:24:54 476

原创 文件上传功能(一)

是因为我们上传的是原始文件名,所以我们要保证文件的名字要是唯一的,从而防止文件名被覆盖。但是存在一个bug,同一个文件上传会覆盖,而不是2个文件。同时在我们的目标路径下,我们可以看到图片已经传进去了。在桌面创建一个文件夹,命名files。在contoller层,创建一个。这样就解决了文件覆盖问题。图片随便上传一个即可。

2025-01-31 20:12:58 655

原创 文章分类列表查询功能

之前我们用注解写的sql语句,这里我们用映射配置文件来写。在resources目录下创建目录,结构和上面的一样。由于要用PageHelper插件,来到。

2025-01-28 19:41:45 690

原创 新增文章功能

创建一个新目录anno在这个目录下写一个注解State,如下图:@Documented //元注解,用于描述注解的元数据@Target({ElementType.FIELD}) //元注解,用于描述注解的适用范围,这里只用在属性上,只留field@Retention(RetentionPolicy.RUNTIME)//元注解,用于描述注解的生命周期,这里只保留在运行时。

2025-01-28 16:27:48 864

原创 更新文章分类

categoryName和categoryAlias都属于Default分组了,而Add分组和Update分组都继承了Default分组的内容,所以都包含了categoryName和categoryAlias。由于我们添加参数校验是直接添加到pojo里的,由于实体类是共用的,在pojo的字段上面直接添加参数校验,可能会影响到其他接口的正常使用。在刚刚的更新操作中,我们对id的参数校验不为空,但是我们之前的添加操作不需要传入id,id自增长,但是不传入id无法进行下一步了。在pojo中,定义不同分组项目。

2025-01-28 11:40:13 554

原创 获取文章分类详情功能

写一个根据类别的唯一id 查找 改类别的所有信息的接口。

2025-01-15 18:58:44 567

原创 获取文章列表功能

JsonFormat注解,一般都是用来规定参数格式,最常用的就是规定时间格式,也可以用来规定数字的格式、时区控制等等,用到的时候可以搜一下。就是写一个根据用户id,返回这个用户的所有分类的接口。我们发现,输出的时间的格式是这样的。我们想在他转成json时指定格式。可以通过在pojo层添加注解实现。

2025-01-15 18:40:41 589

原创 新增文章分类功能

我看视频代码中,添加分类的时候没有查询数据库中是否已经有这个分类,这样可能导致同一个名字的分类被添加多次,我自己添加了查重功能。我们上一节学习的更新密码时,可能把登录的那个用户的密码改了,导致token对不上,然后测试的时候就一直401。类似于用户注册时查重的写法,写一个根据分类名categoryName查找的接口即可。然后登录获得token,修改一下apifox的全局变量,然后再测试这个接口。就是往数据库中添加一个category类,类似于前面写的注册用户操作。要补充创建时间、更新时间、创建者id。

2025-01-15 17:35:48 497

原创 更新用户密码功能

博客仅记录过程,可能解释不详细,因为我也有点一知半解。只能说一边学习一边补充。需要输入旧密码oldPwd、新密码newPwd、重复新密码rePwd。破案了,挂的梯子占用9090端口了,我真的服了。又是写了一半开始懒散不想写了,9天没写了。old_pwd注意看你的数据库中的原密码。检验新密码和确认密码是否一致。之后修好后会改回9090的。本次实现更新密码功能。检验三个参数是否为空。

2025-01-15 15:07:58 547

原创 更新用户头像功能

存储用户头像,我们实际存放的是图像的访问地址,是个字符串。

2025-01-06 12:29:30 484

原创 更新用户信息功能

过程参考。

2025-01-05 14:28:44 304

原创 获取用户信息功能

我们发现每次测试一个接口,都要去登录一下获得token,再手动添加Authorization,非常麻烦,可以添加相同的请求头。由于我们之前测试的时候,将用户的所有信息都返回了包括密码,这是不安全的,所有我们要设置一下不返回密码。所以,我们先通过登录接口,登录一下,账号还是admin 123456(数据库中已有的)如果显示401,可能是token过期了,因为我们之前设置的是12小时,解决办法是。接口时,又解析了一遍token,但是在拦截器中,我们已经解析过了。根据以上,我们可以对我们的代码进行优化。

2025-01-05 10:58:46 861

原创 登录功能实现

通过jwt令牌技术实现,用户在通过用户名、密码登录后,服务器返回一个jwt令牌给浏览器,后续在每次请求时浏览器都要在请求头header中携带这个令牌,如果检测到用户是未登录,则显示401。我们其他功能的接口,都应该在用户登录之后才能让用户访问,所以我们需要一个登录认证,检查用户是否登录。既然我们每一个controller可能都需要验证用户是否登录,那我们就可以写一个拦截器。能正常返回数据,则表示我们拦截器在用户登录后放行,能正常访问其他接口。我们先修改一下登录接口,让他在登录后给我们返回它的token值。

2025-01-03 11:07:32 920

原创 注册接口实现

注册接口开发和接口测试

2024-12-30 08:39:21 636

原创 项目基本配置

本节主要记录修改配置文件、连接mysql数据库、git连接。

2024-12-29 11:29:04 570

原创 SpringBoot项目创建

创建一个springboot项目

2024-12-28 11:39:26 293

原创 倍增与ST表

我们规定:f[i][j]表示:从i开始向后,长度为$$2^j$$区间中的最大值如果我们想求f[i][j],我们可以把区间均分为2部分2部分区间长度为2^(j - 1),第二个区间的起点就是:我们预处理完之后,我们改如何查询?如图假设我们要求[L, R]区间的最大值,区间长度为len,则我们能找到一个最大的k,使得:即:则有如图:中间虽然有重复,但是由于我们求的最大值,就算重复比较但是并不会改变结果具体到转移方程如下:至此,我们就学习完了。

2024-07-20 21:57:45 688

原创 最近公共祖先问题

最近公共祖先的倍增法、Tarjan算法等等

2024-07-20 21:06:12 986

原创 区间合并算法

常见类型是给我们n个区间,每个区间都符合性质,区间之间可能有交集,我们有时需要把相交区间合并,方便后续统计和计算。P1496 火烧赤壁 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)本题就是给了n个区间,让你统计总着火长度,由于总距离给的很大,如10^9,我们不能直接开一个数组,这里也用到了一些离散化的知识,把每个区间存下来,按左端点从小到大排序。由于区间之间可能有重复,所以想到了区间合并,合并时候每两个区间之间不会相交,之间遍历所有区间然后把区间长度相加即可。

2024-07-16 19:54:01 409

原创 离散化学习

当数据范围在10^6以内时,我们通常开一个数组就能直接映射,如:让值为i存到a[i]位置当数据范围很大时,如1~10^9、1~10^18次方,但是数据量很少,如10^5个数,此时我们就不能直接映射。以数据范围10^18,数据量10^5为例。一是内存不够,不可能开一个a[10^18]的数组。二是就算能开,遍历一遍时间复杂度也是10^18。此时我们就需要一个辅助数组,把所有数字紧挨着放到一个数组中,就能压缩到10^5,就能支持后续操作。

2024-07-01 11:47:49 1103

原创 springboot中thymeleaf与jsp的使用

在之前的实训学习的javaweb项目,前端主要使用的是jsp,今年实训使用springboot时,发现不支持jsp格式,但是我们可以通过添加依赖项和配置实现。Spring Boot 推荐使用 FreeMarker、Groovy、

2024-06-20 23:23:58 1274 1

原创 数据库设计和连接数据库

使用idea连接mysql数据库,还有数据库设计与sql语句

2024-06-13 00:15:12 1321 1

原创 Gitee基本使用

介绍了git的下载,如何创建仓库,如何在idea中使用

2024-06-11 23:48:59 888

原创 线段树学习

线段树是一种能把一些对于区间(或者线段)的修改、维护,从O(n)的时间复杂度变为O(logn)的工具。线段树是一个完全二叉树,我们可以用堆来存,可以用一维数组来存。对于一个长度为8的线段,可以这样表示每一个线段[L, R],代表区间[L, R]的和,如[1,4]就代表1~4的和如果用一维数组来存,下标(蓝色)如下:由此我们可以知道,对于下标为x的线段,有以下性质以数组a为例:父节点:a[x/2] 或者 a[x >> 1]左儿子:a[2 * x] 或者 a[x

2024-04-23 22:04:09 1556

原创 线性 DP

acwing学习。常见线性dp题型,已完成 数字三角形模型,待更新

2024-04-14 18:35:09 336 1

原创 区间dp问题

k的左边合成一堆就是f[l][k],合并的费用就是s[k]-s[l-1]k的右边合成一堆是f[k+1][r],合并的费用就是s[r]-s[k]总费用就是。

2023-09-19 18:11:35 107

原创 树状数组原理

241. 楼兰图腾 - AcWing题库。

2023-09-18 16:40:23 245

原创 背包问题合集

01、完全、多重、分组、背包路径

2023-09-12 12:20:55 117

原创 双指针算法

给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式:第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式:共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围:1≤n≤100000输入样例:51 2 2 3 5输出样例:3。

2023-09-12 10:35:05 58

原创 CF895(div.3)

ABCD题

2023-09-10 17:07:49 116 1

原创 前缀和与差分

当我们需要频繁求区间的所有元素和的时候,如果每次都遍历一遍,时间复杂度会非常糟糕但如果我们用一个数组s,记录下从每个位置的前i项和,这时我们就可以用的时间求出的和,即。

2023-09-03 17:51:30 76

原创 高精度——加减乘除

高精度加法一般都是由于所需要加的数字位数过大,如1e6位,想要实现,我们需要开数组来存储每一位,然后依次对每一位相加,同时进行进位,具体看代码展示逆序输入是为了方便进位。

2023-09-03 16:37:10 71

原创 排序与二分

通过分治法,假设有n个数需要从小到大排序,l,r分别为当前序列的左右边界点,我们每次取中间位置(l+r)/2的值x做为依据,将序列分为2部分,左边的=x,然后分别对左右2个序列进行排序,以次类推,一直递归下去。时间复杂度为O(nlogn),最坏情况为n^2当然,也可以直接使用sort排序。实现过程1、每次确定分界点,q[l],q[r],q[(l+r)/2]

2023-09-03 09:20:24 217

原创 CF894 Div.3

题目链接800菜鸡,第一次写题解。。

2023-08-29 11:21:53 129

空空如也

空空如也

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

TA关注的人

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