- 博客(23)
- 收藏
- 关注
原创 springboot拦截器无法注入StringRedisTemplate Cannot invoke “org.sprin...StringRedisTemplate.opsForHash()“
在 WebMvcConfigurer 里注入 StringRedisTemplate,并把 StringRedisTemplate 作为 LoginInterceptor 的一个属性,然后用有参构造函数传递到 LoginInterceptor 里去,也是黑马视频教程的用法。这里一个问题,拦截器里使用Redis时,自然需要使用 StringRedisTemplate ,然而发现不能在拦截器类 LoginInterceptor 注入 StringRedisTemplate。
2025-02-28 10:41:19
244
原创 用@Resource注解注入类型为StringRedisTemplate属性名为redisTemplate的对象时报错
注意,它是被默认装配进Spring的IoC的,即我们可以直接使用@Autowired或@Resource使用它。除此之外,还提供了一个StringRedisTemplate来操作redis,同样的,StringRedisTemplate也是被默认装配进IoC的。我们知道resource注解注入对象是根据bean的id和对象属性名是否相同注入的,如果不同就按照类型注入。用@Resource注解注入类型为StringRedisTemplate属性名为redisTemplate的对象时报错。
2025-02-27 10:21:19
314
原创 测试类中运行了一次代码,却插入了两条相同的数据
可以看到主类方法也添加了一条数据,可我们并没有在主类方法写代码,主类方法却运行了测试类的代码。结果发现主类代码和测试类代码都可以生成target文件,并且target文件还有测试类的代码还有生成的jar包。综上所述,所以当我们在测试类点击运行按钮时会执行我们测试类的方法还有进行maven打包操作,而maven打包操作由于生命周期原因会执行maven的test操作,test操作又执行了一次测试类的方法,所以总共加了两条数据。由此可知我们点击主类或者测试类的运行按钮时会自动进行maven的打包功能。
2025-02-15 18:39:26
225
原创 MybatisPlus报错Invalid bean definition with name ‘userMapper‘ defined in file
经过反复排查,发现是mybatis-plus的起步依赖和SpringBoot父工程的起步依赖版本不兼容。我当前的springboot工程,看pom.xml中的parent里面是3.3.2的。先看报错IllegalState无法加载ApplicationContext。但是我却使用的是3.5.7的mybatis-spring-boot整合。无效的bean被定义 名为userMapper的对象。
2025-02-15 17:24:50
454
5
原创 SpringBoot整合redis报No qualifying bean of type ‘org.springframework.data.redis.core.RedisTemplat
大致意思是没有与RedisTemplate<String, Object>匹配的bean。今天在学习Spring Boot整合redis的过程中遇到个问题,在使用。2、使用@Resource注解代替@Autowired,如。这么一大串看的是不是有点懵,其实咱们看一句可以了。注入时,启动项目会报异常。
2025-02-13 21:11:57
485
原创 6.3 n后问题
n后问题:1.问题描述:在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。2.算法设计:用n元组x[1:n]表示n后问题的解。其中,x[i]表示皇后i放在棋盘的第i行的第x[i]列。由于不允许将2个皇后放在同一列上,所以解向量中的x[i]互不相同。2个皇后不能放在同一斜线上时问题的隐约束。若两个皇后放置的位置分别是(i,j)和(k,l)
2022-05-29 18:52:02
102
原创 6.2哈夫曼树编码与解码
哈夫曼树相关的几个名词路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。图 1 中从根结点到结点 c 的路径长度为 3。结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。例如,图 1 中结点 a 的权为 7,结点 b 的权为 5。结点的带权路径长度:指的是从根结点到
2022-05-29 18:49:12
708
原创 6.1: 二叉树的构建与遍历
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分[1]。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点二叉树有四种遍历方...
2022-05-24 19:30:15
81
原创 压缩矩阵的转置
详见:http://data.biancheng.net/view/97.html拿图 1 中的矩阵 A 和 B 来说,其各自用三元组顺序表表示(分别用 a 和b 表示),如下图所示:图2 矩阵 A、B的三元组顺序表在三元组表的存储形式下,求稀疏矩阵 A 的转置矩阵 B ,实际上就是求由 a 得到 b:由 a 的行数、列数以及非 0 元素数可以直接得到 b 的列数、行数和非 0 元素数。 由 a 中的数据得到 b 中的数据,可采用两种方法实现:对 a 中的数据进行遍历,.
2022-05-19 17:12:27
112
原创 5.1二维数组与矩阵乘法
1.动态二维数组typedef struct TwoDArray{ int rows; int columns; int** elements;}TwoDArray, * TwoDArrayPtr;2.静态二维数组typedef struct TwoDStaticArray{ int rows; int columns; int elements[ROWS][COLUMNS];}TwoDStaticArray, * TwoDStaticArrayPtr;3.总代码.
2022-05-19 17:05:29
87
原创 数据结构3.6链队列,3.7循环队列
3.6链队列转载:链队列与链表相似,不同的是它具有对列的运算方法,存储结构和链表相同,下面是其结构示意图:这里的*Q类似于链表的头节点*head;它包含两个指向队列节点的指针front和rear;当front和rear都为NULL时队列为空;front指向队列第一个节点,rear指向最后一个节点,当两者指向同一个节点说明队列只有一个节点;还有不设头指针的链队列表示形式,这里不予说明;代码部分:#include<stdio.h>#include<malloc.h&g.
2022-05-16 19:32:31
331
原创 3.4累加求值 3.5汉诺塔问题
利用递归的思想实现累加求值#include<stdio.h>//函数从0加到nint addTo(int paraN){ if (paraN <= 0) { return 0; } else return addTo(paraN - 1) + paraN;}void addToTest() { int n, sum; printf("---- addToTest begins. ----\r\n"); n = 5; sum = addTo(n)
2022-05-12 11:12:58
87
原创 3.3表达式求值
表达式求值要创建2个栈还不会写c++,临摹学长c++代码//202031061018 刘知鑫#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <unordered_map>using namespace std;stack<int> num;stack<char> op;void
2022-05-10 21:08:19
210
原创 数据结构3.2栈---括号匹配
3.2栈的应用---括号匹配1. 介绍2.代码部分,判断括号是否匹配3.测试4.全部代码5.测试结果1. 介绍3.2栈的应用—括号匹配 现在,有一行括号序列,里面只包含()[]{}六种符号,请你检查这行括号是否配对。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的2.代码部分,判断括号是否匹配bool bracketMatching(char* paraString, int paraLength){ //1.初始化一个栈,把'#'压入栈 CharStackPt
2022-05-09 20:05:29
500
原创 数据结构C语言:3.1栈
3.1栈 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。1.创建结构体2.输出栈3.初始化栈4.添加元素5.弹出元素,并返回被弹出元素的值6.添加弹出元素测试7.总代码8.运行结果1.创建结构体typedef struct CharS
2022-05-09 18:15:38
129
原创 2.4多项式相加
2.4多项式相加1.定义结构体2.初始化3.打印链表4.打印结点5.构造多项式6.计算多项式相加7.测试8.全部代码9.运行结果思路:根据多项式相加的运算规则:对两个多项式中所有指数相同的项,对应系数想加,若其和不为零,则作为“和多项式”中的一项插入到“和多项式”链表中去;对于两个多项式中指数不相同的项,则将指数较小的项插入到“和多项式”链表中去。 “多项式”链表中的节点无需生成,而应该从两个多项式的链表中摘取1.定义结构体typedef struct LinkNode { int coeffici
2022-05-05 17:31:52
435
1
原创 2.3双向链表
2.3双向链表1.定义结构体2.初始化3.打印4.插入5.删除6.插入删除测试7.地址测试8.完整代码9.运行结果1.定义结构体typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode* previous; struct DoubleLinkedNode* next;}DLNode,*DLNodePtr;2.初始化DLNodePtr initLinkList(){ DLNodePtr temp
2022-05-05 15:25:27
81
原创 静态链表实现
1.定义结构体typedef struct StaticLinkedNode { char data; int next;}*NodePtr;typedef struct StaticLinkedList { NodePtr nodes; int* used;} *ListPtr;2.初始化ListPtr initLinkedList(){ //分配空间 ListPtr tempPtr = (ListPtr)malloc(sizeof(StaticLinkedList))
2022-05-02 20:26:53
685
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人