- 博客(43)
- 收藏
- 关注
原创 使用了Swagger的@ApiParam会发生无法正常传入参数的问题
在写一个需要传参验证功能时。public ResultBean verify(@ApiParam("手机号码")String phoneNumber, @ApiParam("验证码")String userCode)在没有使用ApiParam参数之前可以正常进行传参功能,但是使用了此注解后发现传参格式会自动变成json格式,然后就无法正常直接输入传参。会发生以下问题:也就是传输为null,传不进去。需要将代码写成这个格式:public ResultBean verify(@ApiParam("
2022-02-11 21:25:16 2388 1
原创 LeetCode236. 二叉树的最近公共祖先(需要理解后序遍历)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,6,2,0,8,null,nu
2022-02-09 00:41:52 224
原创 LeetCode151. 翻转字符串里的单词 使用栈解决
给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。翻转后的字符串中不应包含额外的空格。示例 1:输入:s = “the sky is blue”输出:“blue is sky the”示例 2:输入:s = " hello world "
2022-01-28 23:52:26 235
原创 LeetCode15. 三数之和 哈希or指针? 附详细解析
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.length <= 3000-105 <
2022-01-28 22:35:52 139
原创 Java注解究竟是如何起作用的及注解的基本概念
注解是如何实现的ps:由于时间有限来不及看太详细,所以只写个大概,后面有机会会进行详细补全。疑问的起点以前在写代码的时候就看过一些注解的源码,每次点进去看的时候发现都只有简简单单几行代码,但是为什么就可以实现一些非常复杂的功能呢?哪个时候还不太在意,今天在写代码的时候,看到了@Slf4j的注解,突然想看看它的源码是什么,然后点进去一看// // Source code recreated from a .class file by IntelliJ IDEA // (powered by F
2022-01-22 23:25:15 1709 2
原创 Zookeeper安装、概念、命令等初步学习
Zookeeper概述ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。分布式简介分布式应用正在运行的一组系统称为集群,而在集群中运行的每台机器被称为节点。分布式应用有两部分, Server(服务器) 和 Client(客户端) 应用程序。服务器应用程序实际上是分布式的,并具有通用接口,以便客户端可以连接到集群中的任何服务器并获得相同的结果。 客户端应用程序是与分布式应用进行交互的
2022-01-21 20:46:40 1397
原创 Java代理的基本概念和初步学习
关于Java中的代理静态代理在静态代理中,所有方法的增强都是我们自己手动完成的,并且接口一旦新增了方法目标对象和代理对象都需要进行修改,实际开发中一般是不会使用静态代理的,因为静态代理的实现机制来说,其在编译时就将接口、实现类、代理类这些都处理好,编译成了class文件。代理实现步骤:1 声明一个接口在这里用信来举例,首先声明一个东西叫做信。/** * @Description: 信的接口 * @author: Kowk */ public interface SmsSer
2022-01-21 00:52:33 489
原创 力扣142. 环形链表 II 实际上是一道数学题附带详细解析
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:
2022-01-18 23:18:00 165
原创 Netty中的基本概念和初步学习
重要概念Channelchannel是Netty的核心概念之一,它是Netty网络通信的主体,由它负责同对端进行网络通信、注册和数据操作等功能。每当Netty建立了一个连接之后,都会有一个对应的channel实例,并且还有父子channel的概念,服务器连接监听的channel ,也叫 parent channel。 对应于每一个 Socket 连接的channel,也叫 child channel。在服务端中,通常有两个线程组,监听器连接的父channel工作在一个独立的线程组,而客户端连接成功
2022-01-18 15:43:14 577
原创 记一次关于使用Netty进行远程通信的空指针错误
记一次简单异常排查在使用Netty进行远程传输的过程中,进行代码测试服务端测试代码如下:public class NettyServerTest { @Test public void testT(){ new NettyServer(9997).run(); } } 客户端测试代码如下:public class NettyClientTest { @Test public void clientT(){
2022-01-17 22:55:41 494
原创 LeetCode19. 删除链表的倒数第 N 个结点(容易进到一些小陷阱)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list分析:由于 题目要求在一次循环
2021-12-27 21:29:24 223
原创 LeetCode24. 两两交换链表中的节点(图解、简单易懂)
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs分析:根据题目要求,得知我们不可以只是简单是
2021-12-27 20:24:42 351
原创 关于MySQL储存过程中的游标cursor
一张表SC在储存过程中使用游标cursor,根据分数逐行更新rank。DELIMITER &&CREATE PROCEDURE ud()BEGIN DECLARE vsno CHAR(9); DECLARE vcno CHAR(4); DECLARE vgrade INT(11); DECLARE v_finished INT DEFAULT 0; DECLARE sc_cursor CURSOR FOR SELECT Sno,Cno,Gr
2021-12-19 18:24:30 716
原创 leetcode.209. 长度最小的子数 组滑动窗口题解
定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出:1示例 3:
2021-12-13 11:31:35 319
原创 leetcode 977. 有序数组的平方 简单易懂题解 复杂度O(n)
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.length <= 104-104 <= nu
2021-12-11 18:28:21 140
原创 (error) ERR invalid password关于Redis使用auth登陆密码失败的问题
在Redis官网下载了最新的安装包传到Ubuntu18进行解压下载。其中使用cp命令自己拷贝了一份redis.conf文件在这个配置中备份了密码为然后启动服务的时候也指定了相关配置但不论如何都是提示密码错误,网上查了很多办法也没办法解决,浪费了很多时间,最后发现即使是指定配置文件启动,实际的密码还是在这里使用这个密码进行登陆登陆成功。具体是由于什么原因希望有大神可以告知,感激不尽。...
2021-12-01 18:18:45 14447 6
原创 关于java中Date类型无法直接存入数据库,使用Timestamp将日期格式直接存入数据的模板
在使用java进行开发的过程中,我们经常会使用到数据库中的Date类型,但是Java中的Date是无法直接存入数据库的,所以针对这个问题我写了一个使用Timestamp的模板。 public Timestamp getTimeNow(){ Date d = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String
2021-11-30 11:54:24 3649 1
原创 Encoded password does not look like BCrypt的原因及解决办法
在使用spring security的时候遇到这个报错。查看代码为观察matches的源代码可以发现日志输出的那句话。知道问题发生原因基本问题就解决了80%。报错的原因是因为我们数据库里面的密码是没有使用BCrypt加密的,而解决办法有两种。第一种是在注册存入数据库时就直接存入加密后的密码。第二种更简单但是效率也比较低的办法就是在比较的时候再加密一次,如下:修改之后再次登陆,登陆成功并且不会再进行warn报错。...
2021-11-28 17:10:45 21456 1
原创 问题 D: DS串应用—最长重复子串
问题 D: DS串应用—最长重复子串时间限制: 1 Sec 内存限制: 128 MB题目描述求串的最长重复子串长度(子串不重叠)。例如:abcaefabcabc的最长重复子串是串abca,长度为4。输入测试次数tt个测试串输出对每个测试串,输出最长重复子串长度,若没有重复子串,输出-1.样例输入3abcaefabcabcszu0123szuszuabcefg样例输出43-1#include<iostream>#include<string>#
2021-04-13 22:11:34 962 2
原创 问题 C: 串应用- 计算一个串的最长的真前后缀
问题 C: 串应用- 计算一个串的最长的真前后缀时间限制: 1 Sec 内存限制: 128 MB题目描述给定一个串,如ABCDAB,则 ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA } ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB } 因此,该串的真前缀和真后缀中最长的相等串为AB,我们称之为该串的“最长的真前后缀”。 试实现一个函数string matched_Prefix_Postfix(string str),得到输入串str的最长的真前
2021-04-13 22:10:36 653
原创 问题 A: DS串应用--KMP算法
问题 A: DS串应用–KMP算法时间限制: 1 Sec 内存限制: 128 MB题目描述学习KMP算法,给出主串和模式串,求模式串在主串的位置算法框架如下,仅供参考输入第一个输入t,表示有t个实例第二行输入第1个实例的主串,第三行输入第1个实例的模式串以此类推输出第一行输出第1个实例的模式串的next值第二行输出第1个实例的匹配位置,位置从1开始计算,如果匹配成功输出位置,匹配失败输出0以此类推样例输入3qwertyuioptyuaabbccddcccaaaaba
2021-04-13 22:04:39 922
原创 问题 E: 键盘替换
#include<iostream>#include<cstring>#include<queue>#include<stack>using namespace std;queue<string> p;stack<string> st;int main(){ //char a[100003]; string a; while(cin>>a) { string
2021-04-09 22:39:58 197
原创 问题 C: DS队列--组队列
问题 C: DS队列–组队列时间限制: 1 Sec 内存限制: 128 MB题目描述组队列是队列结构中一种常见的队列结构,在很多地方有着广泛应用。组队列是是指队列内的元素分组聚集在一起。组队列包含两种命令:1、 ENQUEUE,表示当有新的元素进入队列,首先会检索是否有同一组的元素已经存在,如果有,则新元素排在同组的最后,如果没有则插入队列末尾。2、 DEQUEUE,表示队列头元素出队3、 STOP,停止操作建议使用C++自带的队列对象queue,编程更方便输入第1行输入一个t(t<
2021-04-06 21:58:18 847
原创 问题 B: DS队列+堆栈--数制转换
问题 B: DS队列+堆栈–数制转换时间限制: 1 Sec 内存限制: 128 MB题目描述对于任意十进制数转换为k进制,包括整数部分和小数部分转换。整数部分采用除k求余法,小数部分采用乘k取整法例如x=19.125,求2进制转换整数部分19, 小数部分0.12519 / 2 = 9 … 1 0.125 * 2 = 0.25 … 09 / 2 = 4 … 1 0.25 * 2 = 0.5 … 04 / 2 = 2 … 0 0.5 * 2 = 1
2021-04-06 21:57:29 1205
原创 问题 A: DS队列之银行排队
问题 A: DS队列之银行排队时间限制: 1 Sec 内存限制: 128 MB题目描述在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。编程实现它们的办理流程,请使用C++自带的queue必须使用队列实现,其他方法0分!队列queue的用法如下:1.包含头文件:#include 2.定义一个整数队列对象:queue myQe;3.
2021-04-06 21:55:56 967
原创 问题 E: DS栈—波兰式,逆波兰式
#include<iostream>#include<stack>#include<map>#include<cmath>#include<string.h>#include<algorithm>using namespace std;stack<char> opre,nums;bool isbigcmp(char b, char a){ if (a == '+'||a=='-') { if (
2021-03-31 01:55:41 2240
原创 问题 D: DS堆栈--括号匹配
#include<iostream>#include<stack>#include<map>#include<cmath>#include<string.h>#include<algorithm>using namespace std;stack<char> p;int main(){ int t; cin >> t; while (t--) { string str; ci
2021-03-31 01:51:43 662
原创 问题 A: DS堆栈--逆序输出(STL栈使用)
#include<iostream>#include<stack>#include<map>#include<cmath>#include<string>#include<algorithm>using namespace std;stack<char> p;int main(){ int t; cin >> t; while (t--) { string str; int
2021-03-31 01:49:43 341
原创 问题 C: DS双向链表—前驱后继
问题 C: DS双向链表—前驱后继时间限制: 1 Sec 内存限制: 128 MB题目描述在双向链表中,A有一个指针指向了后继节点B,同时,B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。对于给定的一列数据,按照给定的顺序建立双向链表,按照关键字找到相应节点,输出此节点的前驱节点关键字及后继节点关键字。输入第一行两个正整数n(代表节点个数),m(代表要找的关键字的个数)。接下来输入n个整数为关键字key(数据保证关键字在数列
2021-03-23 21:47:11 879 1
原创 问题 B: DS单链表—删除重复元素
问题 B: DS单链表—删除重复元素时间限制: 1 Sec 内存限制: 128 MB题目描述给定n个整数,按输入顺序建立单链表,删除其中的重复数字,输出结果链表。(要求不可以构建新结点,不可以定义新链表。在原链表上删除。)输入测试次数t每组测试数据一行:n(表示有n个整数),后跟n个数字输出对每组测试数据,输出删除重复数字后的结果链表表长和每个元素,具体格式见样例。样例输入310 1 2 3 4 1 2 10 20 30 205 1 1 1 1 16 20 22 22 22 2
2021-03-23 21:46:17 611
原创 问题 A: DS循环链表—约瑟夫环(Ver. I - A)
问题 A: DS循环链表—约瑟夫环(Ver. I - A)时间限制: 1 Sec 内存限制: 128 MB题目描述N个人坐成一个圆环(编号为1 - N),从第S个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2,S = 1。2号先出列,然后是1号,最后剩下的是3号。要求使用循环链表实现。输入第一行输入t,表示有t个测试用例;第二行起,每行输入一组数据,包括3个数N、K、S,表示有N个人,从第S个人开始,数到K出列。(2 <= N
2021-03-23 21:45:11 1003
原创 问题 A: DS单链表--类实现
问题 A: DS单链表–类实现时间限制: 1 Sec 内存限制: 128 MB题目描述用C++语言和类实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、查找注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据类定义参考输入n第1行先输入n表示有n个数据,接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除的位置第6行输入要查找的位置第7行输入要查找的位置输出n数
2021-03-16 21:41:28 1088
原创 问题 B: DS单链表--结点交换
问题 B: DS单链表–结点交换时间限制: 1 Sec 内存限制: 128 MB题目描述用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置。注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换交换函数定义可以参考:swap(int pa, int pb) //pa和pb表示两个结点在单链表的位置序号swap (ListNode * p, ListNode * q) //p和q表示指向两个结点的指针输入第1行先输入n表示有n个数据,接着输入n个数据
2021-03-16 21:40:13 543
原创 问题 D: DS顺序表之循环移位
问题 D: DS顺序表之循环移位时间限制: 1 Sec 内存限制: 128 MB题目描述顺序表的移位是循环移位,例如顺序表:1,2,3,4,5,6。如果左移1位,即原来的头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。同理,如果右移1位,即原来的尾元素移动到头,其它元素向右移1位,变成6,1,2,3,4,5。以下是移位的多个例子:原数据:1,2,3,4,5,6左移3位:4,5,6,1,2,3,与原数据对比右移4位:3,4,5,6,1,2,与原数据对比请编写程序实现顺序表的循
2021-03-09 21:15:17 340
原创 问题 C: DS顺序表--合并操作
问题 C: DS顺序表–合并操作时间限制: 1 Sec 内存限制: 128 MB题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序输入第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等输出顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开第1行输出创建后的顺序表内容
2021-03-09 21:13:57 553
原创 问题 B: DS顺序表--连续操作
问题 B: DS顺序表–连续操作时间限制: 1 Sec 内存限制: 128 MB题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)该类具有以下成员函数:构造函数:实现顺序表的初始化。插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。删除多个数据的multidel(int i, int n)函数,实现从第i个位置开始,连续删除n个数据,即从位置
2021-03-09 21:12:34 908
原创 问题 A: DS顺序表--类实现
问题 A: DS顺序表–类实现时间限制: 1 Sec 内存限制: 128 MB题目描述实现顺序表的用C++语言和类实现顺序表属性包括:数组、实际长度、最大长度(设定为1000)操作包括:创建、插入、删除、查找类定义参考输入第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除的位置第6行输入要查找的位置第7行输入要查找的位置输出数据之间用空格隔开第1行输出创建后的顺序
2021-03-09 21:09:47 401
原创 问题 F: 矩阵左转
问题 F: 矩阵左转时间限制: 1 Sec 内存限制: 128 MB题目描述输入一个2*3的矩阵,将这个矩阵向左旋转90度后输出比如现在有2*3矩阵 :1 2 34 5 6向左旋转90度后的矩阵变为:3 62 51 4要求:除了矩阵创建和数据输入可以使用数组和数组下标的方法,其他过程对矩阵的任何访问都必须使用指针提示:m行n列的二维矩阵,第i行第j列的元素与首元素的距离为i*n+j,序号从0开始计算输入第一行输入t表示有t个测试实例连续两行输入一个2*3的矩阵的数据依次输入
2021-03-02 20:53:46 2091
原创 问题 E: 动态数组
问题 E: 动态数组时间限制: 1 Sec 内存限制: 128 MB题目描述一开始未知数组长度,根据要求创建不同类型的指针,并且使用指针创建相应长度的数组,然后再完成不同的要求若要求创建整数数组,计算数组内所有数据的平均值若要求创建字符数组,找出数组内的最大字母若要求创建浮点数数组,找出数组的最小值要求程序整个过程不能使用数组下标,从数组创建、输入到搜索、比较、计算,到输出都必须使用指针提示:使用new关键字输入第一行输入t表示有t个测试实例第二行先输入一个大写字母表示数组类型,I表
2021-03-02 20:52:49 2757
原创 问题 D: Point_Array
问题 D: Point_Array时间限制: 1 Sec 内存限制: 128 MB题目描述上面是我们曾经练习过的一个习题,请在原来代码的基础上作以下修改:1、增加自写的拷贝构造函数;2、增加自写的析构函数;3、将getDisTo方法的参数修改为getDisTo(const Point &p);4、根据下面输出的内容修改相应的构造函数。然后在主函数中根据用户输入的数目建立Point数组,求出数组内距离最大的两个点之间的距离值。输入测试数据的组数 t第一组点的个数第一个点的 x 坐标
2021-03-02 20:51:44 927
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人