- 博客(37)
- 收藏
- 关注
原创 大事件项目记录13-登录优化-redis
原有代码中在修改密码在产生新令牌后并未将旧的令牌主动失效,旧的令牌依然可以使用 ,会产生安全隐患,所以需要对其进行优化。
2025-06-30 14:06:55
217
原创 大事件项目记录13-接口开发-补充
使用本地的方式,暂时存储文件,测试上传文件接口无误: FileUploadController.java: 使用Postman测试: 阿里云对象存储OSS(0bject Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。具体使用方式如下:2.新建工具类AliOssUtil.java:3.在FileUploadControlle
2025-06-29 22:34:53
246
原创 大事件项目记录10-文章分类接口开发-更新文章分类
1.如果某个校验项没有指定分组,默认属于Default分组;2.分组之间可以继承,那么A中拥有B中所有的校验项。
2025-06-28 21:37:03
295
原创 大事件项目记录3-用户接口开发-获取用户详细信息
此时创建时间与更新时间仍有问题,查找问题发现数据库字段命名与实体类命名不同,数据库为下划线方式,而实体类为驼峰命名法,两者不一样导致的数据为。后需要及时关闭,防止内存泄漏。修改拦截器LoginInterceptor.java。进行测试,发现运行无误,说明修改没问题。中进行配置即可,开启驼峰命名和下划线命名的自动转换。再次测试,发现此问题也解决。存储的数据:线程安全,线程隔离。
2025-06-27 11:11:00
393
原创 大事件项目记录2-用户接口开发-登录
(头),记录签名算法、令牌类型等。例如:{"alg":"HS256","type":"JWT"}(签名),防止Token被篡改、确保安全性。(https://iwt.io/)定义了一种简洁的、自包含的格式,用于通信双方以json数据格式安全的传输信息。(有效载荷),携带一些自定义信息、默认信息等。例如:{"id":"1","username":"Tom”)是一种基于64个可打印字符(A-Z a-z 0-9 + /)来表示二进制数据的编码方式。在Web开发中最常用的令牌为。令牌验证:令牌就是一段字符串。
2025-06-26 20:37:00
695
原创 大事件项目记录2-接口开发-注册
使用lombok工具在编译阶段可自动创建settergettertoString实体类。若使用此工具,需要在pom文件中引入依赖,在实体类上添加注解@Data进行使用。
2025-06-26 18:56:16
951
原创 大事件项目记录1-开发模式和环境搭建
本文介绍了基于SpringBoot和MyBatis的后端开发流程。采用前后端分离模式,通过接口文档协调开发。首先搭建环境:创建数据库,建立用户表、分类表和文章表;使用Maven引入SpringBoot、MyBatis和MySQL驱动等依赖;配置application.yml数据库连接。接着创建实体类(User、Category、Article)对应数据库表结构。最后完成启动类设置并测试运行。整套流程涵盖了从数据库设计到后端框架搭建的关键步骤,为后续业务开发奠定了基础。
2025-06-13 15:43:35
425
原创 自定义Starter
1)创建dmybatis模块,提供自动配置功能,并自定义配置文件 META-INF/spring/xxx.imports。dmybatis此命名主要是为了与原有的mybatis进行区别2)创建dmybatis-spring-boot-starter 模块,在starter中引入自动配置模块。新建两个maven工程,命名为dmybatis-spring-boot-autoconfigure和dmybatis打开Spring Boot整合Mybatis。
2025-06-12 09:59:04
561
原创 Spring Boot自动配置原理
摘要:Spring Boot的自动配置通过约定大于配置原则实现,引入起步依赖后相关Bean会自动注入IOC容器。以spring-boot-starter-web依赖为例,启动时会自动注册DispatcherServlet。自动配置的核心在于@EnableAutoConfiguration注解
2025-06-10 22:54:28
1042
原创 Bean管理
本文介绍了Spring/SpringBoot中Bean的扫描与注册方式。在Spring中通过XML或@ComponentScan指定扫描路径,而SpringBoot通过@SpringBootApplication默认扫描启动类所在包。Bean注册可使用@Component及其衍生注解(@Controller、@Service等),第三方Bean则需用@Bean或@Import方式注册。
2025-06-10 16:33:20
776
原创 Spring Boot整合Mybatis
本文详细介绍了SpringBoot整合MyBatis的完整流程,包括:依赖配置:需添加MyBatis-spring-boot-starter和MySQL驱动依赖数据库配置:在application.yml中设置数据源参数项目结构:创建controller、service、mapper、entity等标准分层案例演示:通过查询User表数据的完整示例,展示了从浏览器请求到数据库操作的全流程
2025-06-09 15:54:48
996
原创 Windows安装MySQL数据库
本文介绍了MySQL社区版在Windows系统下的安装步骤。首先从官网下载完整版安装包,推荐选择离线安装方式。安装时只需勾选Server组件,按需配置账号密码和端口信息。完成安装后,通过MySQL控制台输入预设密码验证安装是否成功。
2025-06-09 11:10:18
310
原创 Spring Boot的yml文件配置信息书写及获取
假定一个项目需要连接某个服务器,在配置时直接在代码内部引入配置参数,诸如授权码,服务器域名一类,在代码编写完成时,将代码进行打包后,一旦需要修改其配置信息,会产生诸多不便,可能需要重新在代码里进行修改,打包等一系列操作。为了解决这个问题,我们可以将配置信息编写在外部的配置文件内,并且在代码中对配置信息进行获取即可,即使工程编写完成,已经打包完成,在后期对于配置文件的修改,我们只需要修改外部的配置文件,不需要关注代码本身的修改问题。
2025-06-05 18:22:00
681
原创 关于Spring Boot的配置文件
SpringBoot提供两种配置文件:properties和yml格式。properties文件通过key=value形式配置参数(如server.port=3001),而yaml采用层级缩进结构(如server:port:3002),具有代码简洁、结构清晰的优点。两种方式均可修改服务器端口和上下文路径等配置,经测试均能正确生效。实际开发中推荐使用yml格式(.yml/.yaml),因其省略重复前缀,更直观地展现配置数据的层次关系,提升配置文件的可读性和维护性。
2025-06-05 16:46:14
1231
原创 手动创建一个Spring Boot工程
摘要:创建SpringBoot项目的主要步骤包括:1)创建Maven工程;2)在pom.xml中继承spring-boot-starter-parent并添加起步依赖;3)编写带@SpringBootApplication注解的启动类。具体实现时,需在IDEA中初始化Maven项目,配置父工程和Web依赖,创建启动类并添加resources目录。项目验证可通过复制Controller类并访问localhost:8080/hello来实现。手动创建与框架创建的核心流程相似,主要涉及Maven工程创建、依赖引入
2025-06-04 18:39:03
274
原创 第一个Spring Boot程序
本文介绍了使用IntelliJ IDEA开发SpringBoot的HelloWorld程序。主要步骤包括:创建Maven工程(JDK17+),导入Spring Web依赖;编写带@RequestMapping("/hello")注解的Controller类返回"HelloWorld~";通过@SpringBootApplication启动类运行项目;访问localhost:8080/hello即可看到输出。该示例展示了SpringBoot开发的基本流程:创建项目→添加依赖→编写Controller→启动应用
2025-06-04 16:11:47
301
原创 Spring Boot概述
SpringBoot是简化Spring应用开发的框架,解决了传统方式依赖导入繁琐、配置复杂等问题。其核心特性包括:起步依赖整合所有必需组件,通过单一Maven坐标导入;自动配置功能免去手动声明bean的麻烦;提供内置Tomcat服务器、外部化配置支持以及无XML配置等特性,实现快速项目构建和便捷部署。这些改进显著提升了Spring应用的开发效率和部署灵活性。
2025-06-03 16:42:09
281
原创 C语言选择排序法
C语言for循环应用小程序实例选择排序法#include <stdio.h>#define N 4int main(){ int a[N],i,j,k,t; //输入数组元素 for(i=0; i<N; i++) { printf("请输入a[%d]\t",i); scanf("%d",&a[i]); } //插入排序 for(i=0; i<N-1; i++) {
2021-12-07 23:24:18
190
原创 C语言利用结构体判断年月日
C语言利用自定义结构体,设计函数,并且判断是今年的第几天。#include<stdio.h>struct { int year; int month; int day;}date; int main (){ int days(int year, int month, int day); //调用函数days int day_sum; puts("\t**********时间计算****
2021-12-07 23:22:40
1222
原创 C语言冒泡排序
C语言自定义函数,冒泡排序#include <stdio.h>#include <string.h>void pop(int str[100]) { int i,j,t; for(i=1;i<strlen(str);i++) for(j=0;j<strlen(str)-i;j++) if(str[j]>str[j+1]) { t=str[j];str[j]=str[j+1];str[j+
2021-12-07 23:20:48
170
原创 C语言利用函数验证哥德巴赫猜想
C语言自定义函数小程序(三)利用C语言的自定义函数完成哥德巴赫猜想#include <stdio.h>#include <math.h>int prime(int n) { int i; if(n==2) return 1; for(i=2; i<=sqrt(n); i++) { if(n%i==0) return 0; } return 1;}int main(){ int N,n,i; puts("\n
2021-12-07 23:18:30
991
原创 C语言递推计算年龄问题
C语言自定义函数小程序(二)利用递推思想计算年龄问题#include <stdio.h>int age(int i);int age(int i){ int num; if(i==1) { num=10; } else if(i>1 && i<=5) { num=age(i-1)+3; } else if(i>5) { puts("请输入1至5的整数,系统将帮助您计算该名同学的年龄!"); } return nu
2021-12-07 23:16:25
920
原创 C语言利用指针倒序输出
C语言指针应用(一)利用指针完成操作:输入一串字符并且倒序输出#include <stdio.h>#include <string.h>#include <windows.h>int main(){ char str[80],*p; int i,j; puts("请输入一串字符,并且以Enter结束!"); gets(str); puts("您输入的字符为:"); puts(str); puts("系统正在转换中。。。请
2021-12-07 23:14:13
2680
原创 C语言输出菱形
C语言自定义函数小程序(一)设计一个输出菱形的函数,并且输出验证其正确性。#include <stdio.h>void diamond(int n);int main(){ int n,i; puts("游戏规则如下:请输入5至15内的奇数,系统将输出一个菱形。如果你不遵守游戏规则,你将会受到惩罚!!!\n\n"); puts("**********请输入菱形的层数,为5至15内的奇数**********"); scanf("%d",&n); if(n<15
2021-12-07 23:11:10
783
原创 C语言比较三个数的大小
C语言入门基础小程序(一)输入3个数,并且比较大小#include <stdio.h>void main(){ float a,b,c,t; printf("请输入三个数:"); scanf("%f,%f,%f",&a,&b,&c); if (a>b) { t=a;a=b;b=t; } if (a>c) { t=a;a=c;c=t; } if (b>c) { t=b;b=c;c=t; } printf("%
2021-12-07 22:50:01
2838
原创 C语言1到n while语句
C语言入门基础循环语句(二)while语句#include<stdio.h> void main(){ int i=1,n; int sum=0; printf("请输入一个数:"); scanf("%d",&n); while(i<=n) { sum+=i; i++; } printf("结果:%d\n",sum); }...
2021-12-07 22:46:54
536
原创 C语言1到n do while语句
C语言入门基础循环语句(一)do while语句#include<stdio.h> void main(){ int i=1,n; int sum=0; printf("请输入一个数:"); scanf("%d",&n); do { sum+=i; i++; } while(i<=n); printf("结果:%d\n",sum); }...
2021-12-07 22:44:00
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人