- 博客(77)
- 问答 (1)
- 收藏
- 关注
原创 杀死进程的有效方法
Window下 netstat -ano | findstr 端口号 taskkill /pid PID /f Linux下 netstat -tunlp|grep 端口号 kill -9 PID
2022-03-13 21:38:24
399
原创 Unnecessary use of boolean literals in conditional expression解决方法
问题描述 Vue中使用v-show隐藏/显示代码块,用计算属性返回true或false,返回三目运算符,出现Unnecessary use of boolean literals in conditional expression return show ? true : false 原因 返回值是文字类型,返回的是相当于是‘true’或‘false’ 解决方法 使用双重否定,迫使结果变成一个布尔类型 return !!show ...
2022-02-22 16:59:40
3991
原创 springboot集成邮箱完成注册功能
功能:发送激活链接,在邮箱中点击链接即可激活 (可以在业务层结合数据库实现链接激活失效时长,本文不详述) springboot(后端) 项目依赖pom.xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version&
2022-02-16 14:53:13
1081
原创 springboot集成JWT
项目依赖pom.xml <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.10.3</version> </dependency> 拦截器拦截token JwtInterceptor.java package com.example.oj.common;
2022-02-16 14:20:34
768
1
原创 webpack打包图片多生成空白图片且图片不能正常加载
我用的是webpack的V5.66.0版本,下面是正确的配置方法 //配置图片的loader { test: /\.(gif|png|jpe?g)$/, use: { loader: 'file-loader', options: { name: '[name].[ext]',
2022-01-16 20:49:54
783
1
原创 图的遍历(BFS和DFS)c语言纯手写
考研ing,以防考试限制使用STL等工具,c语言纯手写图和队列 /* 注意: 1、顶点编号与邻接点下标都是从0开始 2、代码没有设置容错处理,请确保输入数据无误 */ #include <stdio.h> #include<stdlib.h> typedef enum {false,true} bool; #define ERROR -1 /* 最大顶点数 */ #define MaxVertexNum 10 /* 邻接点的定义 */ typedef struct AdjVNo
2021-09-09 21:18:11
493
原创 快速安装python包
Python pip安装的原理就是从Python的官方源下载到本地安装 但是使用官方源速度较慢(有时候非常慢…),经常安装超时从而导致安装失败,浪费大量的时间。现在国内也有很多xx源,从他们那里下载是非常快的,我个人推荐的是豆瓣源 豆瓣源地址https://pypi.douban.com/simple/ 使用豆瓣源安装:pip install -i https://pypi.douban.com/simple/ pymysql # pymysql替换成你想安装的包名 ...
2020-09-25 19:39:35
396
原创 最容易理解的KMP算法讲解
对于字符串的匹配问题,我们最先想到的肯定是BF(Brute Force)暴力算法 BF算法的思路就是:遍历模板串,判断模板串的当前字符是否与子串的第一个子串相等,如果相等的话,那么子串和模板串同时往后移动一位再次进行判断,当全部相同(子串匹配成功)或者匹配的某一个字符不相同,那么结束匹配。匹配成功或者某一个字符不相同,我们需要将子串复原,模板串后移一位,我们则判断模板串的下一个字符与子串的首字符是否相等,相等再继续往后判断,不相等则模板串往后移动一位。 以落谷题目给出的样例为例: ABABABC (模板串
2020-09-20 18:52:05
320
原创 next_permutation全排列函数
首先这个函数的位于头文件< algorithm > next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序 参考链接 因此,这个函数的使用方法只适用于有序的数组 力扣题目为例:第K个排序 class Solution { public: string getPermutation(int n, int k) { if(!n) return ""; vector<char> ch;
2020-09-08 13:12:35
244
原创 130. 被围绕的区域
力扣2020/8/11打卡题目 这个题目类似走迷宫那样,如果走不到地图边界的话,把可以走的线路都标记一下,可以走到边界的话不用处理。这很明显就是搜索了(dfs和bfs都可) O代表通路,X代表墙 爆搜的话多半RE,图的大小也不知道。如果一个点一个点判断的话肯定很慢,题目说了,走到边界,这是重点,我们可以把边界作为起点,然后只需要把所有边界作为起点,将可以走到的路径都做标记即可! class Solution { public: int dx[4]={1,0,-1,0}; int dy[4]=
2020-08-11 10:43:08
235
原创 696. 计数二进制子串
这题属于一看就会,一做就废的 字符串的长度是5w,因此我们需要线性或者nlogn的时间复杂度,偏偏我在最开始的时候用了n^2的方法,直接RE… 正常来说肯定是把每一个点作为起点,往后查找,但是这么就RE了(V-V) 这里推荐一种比较好的思路:我们可以统计出每段0(1)的长度,然后累加相邻长度最小的即可。以题目的示例1为例得到每段的长度序列: [2,2,2,2] 那么,结果就是2+2+2=6 再看一组数据"00100": [2,1,2] 那么,结果就是:1+1=2 相邻两段的最小长度是多少,就能够组合成多少.
2020-08-10 11:53:08
224
原创 力扣初级算法(数组篇)
个人觉得这个模块还是很不错的,适合像我一样初学算法的童鞋入门,我一般使用c++做题的(c和java也会 ) 下面会简单介绍一下我的对每个题目的想法,之后可能会录制讲解视频放到B站供童鞋们参考! 删除排序数组中的重复项 给出一个升序数组,用O(1)的空间复杂度实现求得数组去重后数组,数组去重的话时间复杂度比较高,代价太大,因此需要换一种思考方向,那么我们可以从前往后覆盖这个数组,看下面的例子: 给定 nums = [0,0,1,1,1,2,2,3,3,4] 首先我们需要设定一个变量用来记录去重后数组的长
2020-08-10 11:34:39
861
原创 二分函数模板
裸二分函数模板,是力扣的一道题 就是需要注意一下边界问题就行,不然容易死循环 二分查找题目链接 下面代码实现的是返回target出现的第一个位置,若没找到则返回-1 class Solution { public: int search(vector<int>& nums, int target) { int l=0,r=nums.size()-1; while(l<r) { int mid=l+r&g
2020-06-27 19:33:18
269
原创 八数码
求最短路径,bfs可以解决 看题目的意思就是给出一个3*3的矩阵,要求通过x的位置变化,然后让矩阵变的有序,即下面的矩阵 1 2 3 4 5 6 7 8 x 如果能够得到上面的矩阵,则输出x移动最少的次数,如果不能得到那么就输出-1 对于这个问题的话我们可以把矩阵变成一个长度为9的字符串,然后bfs,每次都得找到x的位置,然后再转化成坐标(x,y)来进行判断上、下、左、右四个方向,哪个方向可以走(肯定是不能超出3*3矩阵的范围),然后再判断一下新的状态是否到达过,如果没有,那么到达这个新的状态x移动次.
2020-06-27 19:09:17
434
原创 树与图的广度优先遍历
板子题 所有边的长度都相同的话就可以用bfs求最短路径,图的存储的话使用邻接表,因为数据太大的话使用邻接矩阵会爆。链式前向星实现邻接表。 链式前向星实现:设置三个数组,一个数组h用来存节点,一个数组e用来存值,一个数组ne用来存下一个节点。我们需要设置索引idx来实现ne的查找,不然没法链接起来 void add(int a,int b) { e[idx]=b,ne[idx]=h[a],h[a]=idx++; } 这个可以看成多个带头结点的单链表,h表示单链表个数,h[i]存的实际是索引idx,ne代
2020-06-27 11:04:18
281
原创 数独(通俗易懂)
通俗易懂的方法就是dfs简单爆搜,本文介绍的是最简单粗暴的方法,直接暴力搜索,没有进行任何优化。 数独又称为9宫格(如下图所示) 每一行的数字都不能重复 每一列的数字都不能重复 每一个小9宫格(方阵)数字都不能重复 可以看做上面三个分别是一个包含1-9的集合 因此我们可以设置三个二维数组来记录每一行、每一列、每一个方阵1-9的数字,从而确定每个点可以填哪些数。一维分别表示第几行、第几列、第几个方阵,然后二维用来记录哪些数字已经存在,1表示存在,0表示不存在。 假定我们输入的数据如下: 8 0 0 0
2020-06-26 12:24:04
2299
6
原创 学生成绩管理系统(c++链表)
下面是程序实现的功能: 程序中将5门课程定为:语文、数学、英语、物理、化学 下面是程序的运行截图: 话不多说!直接上代码!!! #include <iostream> #include <string> #include <iomanip> #include <fstream> #define MAX 1005 using namespace std; class stud { private: typedef struct Node { str
2020-06-13 21:34:15
2321
6
原创 回文串(两种方法)
回文串:一串正着读和反着读都是一样的一种特殊字符串 例如:level、abba 这两个字符串就被称为回文串 判断回文串,我推荐两种方法:反转比较法和中分比较法(名称是自己起的哈,有些丑陋) 一、反转比较法 对于c++的同学这个就十分简单了 我们输入的字符串类型定位string型,然后使用reverse函数就可以,然后我们直接比较str1与str2是否相等,相等的话那么就表示输入的字符串为回文串。 reverse(str2.begin(), str2.end()); 当然,输入char、int数组也是
2020-06-11 17:36:56
8587
原创 单调栈模板
单调栈 顾名思义就是栈里的元素是单调的。 但是这个怎么使用呢?怎么就能是单调的呢?看下面的例题 题目 给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。 输入样例: 5 3 4 2 7 5 输出样例: -1 3 -1 2 2 题目意思很容易理解 那么我们先来看暴力做法,每次取一个数,与前面的数比较 for(int i=0;i<n;i++) { for(int j=1;j=i;j++) { if(a[j]>=a[j-1]) { break;
2020-06-09 09:27:16
325
1
原创 前缀和模板
前缀和:用来快速求区间的和 输入一个长度为n的整数序列。 接下来再输入m个询问,每个询问输入一对l, r。 对于每个询问,输出原序列中从第l个数到第r个数的和。 1≤l≤r≤n, 1≤n,m≤100000, −1000≤数列中元素的值≤1000 我们如果每次都把l到r区间的数加起来,那么在数据最大的情况下,时间复杂度就达到了O(1e10+),这样我们显然是不能接受的 这时候就用到的前缀和思想 我们定义一个数组a用来存放输入的元素,然后再定义一个数组存放前i个元素的和(包括第i个元素),那么,如果我们求l到
2020-05-24 10:27:35
283
原创 二分模板
模板题目 二分的话就是要注意边界问题!!! 对于这个题目的话我们取左边界的话 mid=(l+r)/2 当a[mid]>=x,那么我们就继续往左边界走,[l,mid] 当a[mid]<x,那么我们判断右半部分,[mid+1,r]; 结束条件就是l与r重合 取右边界的话 mid=(l+r+1)/2 当a[mid]<=x,那么我们就继续往右边界走,[mid,r] 当a[mid]>x,那么我们判断左半部分,[l,mid-1]; 结束条件就是l与r重合 为什么取左边界就是(l+r),右边界就是
2020-05-15 11:14:07
207
原创 高精模板
以下给出的仅仅是模板哈~ 没有进行压位,加法和减法都大数,乘法是一个大数乘一个整数,除法是大数除以一个非零整数,只有加法没有处理前导零,模板假定输入符合正常输入。 思路的话就是vector逆序存数据,设置一个变量表示进位 A+B #include<iostream> #include<string> #include<vector> using namespace std; vector<int> a,b; vector<int> add(vect
2020-05-15 10:48:56
368
原创 快速排序
荒废了好多天,终于又要开始学习了~ sort谁换不会用,是吧! 接下来的几天,记录一下基础算法的实现与个人想法 快速排序题目 快排的思路: 第一步: 找一个数tmp。 一般都是找数组中间位置那个值,平时也可能见到取左边界、右边界,再有就是随机取值。 第二步: 然后把数组中的所有数字按这个数字分成两部分 (从小到大排序(升序)为例) 左面就是小于等于tmp的数,右面就是大于等于tmp的数(为什么与tmp等值的元素既可以出现在左半部分,又可以出现在有半部分呢,这个就是快排的精髓了,后面解释) 第三步: 划分成
2020-05-13 18:50:47
243
原创 Ubuntu下强制关闭进程
首先:Alt+Ctrl+t打开终端 然后输入:top,查看进程的PID 我的这里PID就是5700,对应的程序就是mysql-workbench 之后输入:q,返回终端 最后输入:sudo kill PID 窗口就会关闭,进程也被杀死了 ...
2020-04-12 16:52:09
2716
原创 Linux下mysql的可视化工具安装
这里我推荐使用MYSQL Workbench 为什么用这个呢,因为不用破解(不用消费),安装快,分分钟就安装完了!!! 只需一行安装命令 sudo apt-get install mysql-workbench 当然您要是为了使用更方便可以安装Navicat(这个是超级好用) 但是!破解太难了v_v ...
2020-04-10 13:57:40
1132
原创 Ubuntu下mysql与qt连接
按照我之前的安装mysql与qt的教程,直接使用qt和mysql是会报错的 这里附上一段代码,供检查使用 #include "mainwindow.h" #include <QApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { ...
2020-04-10 13:42:25
616
1
原创 ERROR1698(28000):Access denied for user root@localhost解决方案
昨天安装完mysql没有问题,然后今天打开虚拟机发现了这个问题 我们直接用linux的超级用户强制进入 sudo mysql -uroot -p 然后使用mysql这个数据库 use mysql; 然后查看用户和插件 select user,plugin from user; 然后我们更改插件就行(我的密码是:111111,你们填自己的密码就行) update user set authen...
2020-04-09 10:25:32
340
原创 Ubuntu下安装qt
我的Ubuntu版本是16.04,安装的是Qt5.12.2,下面是安装包 提取码是:hp17 https://pan.baidu.com/s/1lk7k1BctKNYXnrXDR296ew 记得给文件夹最高权限,建议在root用户下操作 然后安装依赖库即可 sudo apt-get install build-essential sudo apt-get install libqt4dev sud...
2020-04-09 10:18:37
825
原创 Ubuntu下安装mysql
安装过程十分粗暴简单(安装的匆忙,有些步骤忘记截图了) 执行三条命令即可(建议在root用户下操作) 出现Y/N那就肯定输入Y回车 出现ok的那个界面直接点ok,那个是让设置root密码,我们稍后设置 sudo apt-get install mysql-server 到这里的话有些童鞋的不能够安装,出现下面的报错 Could not get lock /var/lib/dpkg/lock 主要...
2020-04-08 22:11:17
237
原创 vs2017连接Mysql数据库
看到网上一些教程需要安装3个程序用来建立连接,个人觉得没什么必要,这里的话介绍一种不需要下载多余的插件就能成功连接的方法(亲测有用~,我的mysql版本是8.0.19,vs版本是2017 community)。 只需要有mysql和vs2017即可 第一步 首先,我们先把解决方案平台改为x64,见图一 图一 第二步 我们要连接mysql就肯定要用到mysql里的一些头文件,所以我们要添加一下附加...
2020-04-01 22:34:07
6527
11
原创 ORA-01017:invalid username/password;logond denied 解决办法
问题:ORACLE用SYS和SYSTEM默认密码登录提示 ORA-01017:invalidusername/password;logond denied 我们都知道,system的默认密码是manager,为什么使用默认密码都无法正常登录呢?刚安装好后可以正常运行,久了没用反而用不了。这就很迷。不过可以使用下面的解决办法 解决: Win +R或开始菜单-运行→输入以下命令进入超级账户: sqlp...
2020-03-30 17:14:09
3043
原创 ORA-28000: the account is locked 账户被锁
一般都是密码输入多次错误就会锁,我碰到的问题是scott可以正常登录,但是sys账号无法登录,显示ORA-28000: the account is locked 解决: Win +R或开始菜单-运行—>输入以下命令: sqlplus / as sysdba 进到超级管理员账户下执行解锁 alter user sys account unlock; 执行完解锁记得提交一下 commit; 之...
2020-03-30 17:02:40
1594
原创 Win10 新建响应慢甚至卡死的解决方案
每次新建一个文件或则文件夹,点击右键,把鼠标托到新建那里,就会卡半天,真的是超级烦,今天就解决了这个问题,希望对大家有所帮助!!! 首先查看windows的版本 win+r 打开“运行”对话框,输入 winver 查看windows版本 一般出现问题的话版本是1809,我原先的版本就是1809,这是升级之后的版本:1909(据说1903版本也不存在卡顿的问题),现在完全解决了这个问题。 如...
2020-03-23 13:24:07
2191
原创 1086 Tree Traversals Again (25分)
我们以这个题目来说一下: 已知前序和中序求后序 已知后序和中序求后序 已知前序和后序求中序(蒟蒻认为这个应该是没办法实现的吧) 后面的博客会更新怎么求层序 我们先看这个题目,题目的意思就是入栈的顺序就是先序遍历,出栈的顺序就是后序遍历(个人认为比赛最好用递归,建树的话常常会碰到RE,指针用的不是很好会出现野指针,oj是过不了的) 用样例来验证一下: 先序遍历为:1 2 3 4 5 6 中序遍历为:...
2020-03-13 11:59:07
282
原创 求解递归式时间复杂度
方法一:代换法(代入法) 这种方法分为两个步骤: 1、猜答案,我们只需要猜一下大致的形式 比如 T(n)= 4T(n/2) +n 通过观察该递归式,注意到当n加倍时,输出增加4倍,于是猜测该递归式时间复杂度为O(n2),即T(n) = O(n2) 。 2、数学归纳法证明 我们用带常数系数的展开 T(k) ≤ c1k2-c2k(k<n) T(n) ≤4[c1(n/2)2-c2(n/2)]+n=...
2020-03-06 20:52:57
2756
原创 P1809 过河问题
题目描述 有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸。而东岸边有一条小船。 船太小了,一次只能乘坐两人。每个人都有一个渡河时间T,船划到对岸的时间等于船上渡河时间较长的人所用时间。 现在已知N个人的渡河时间T,Oliver想要你告诉他,他们最少要花费多少时间,才能使所有人都过河。 注意,只有船在东岸(西岸)的人才能坐上船划到对岸。 这道题是去年天梯赛...
2020-03-04 14:04:40
632
原创 螺旋矩阵
从左上角填上 1 开始,顺时针方向依次填入数字 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 大一的时候助教出的这道题目,当时我感觉好难呀,~~这是人做的题目呀,~~那时刚学二维数组,对这道题目手足无措,也是想了好久才想出来。最近刷题还能碰到这个题目,以及变形题目,看来这个题还是比较普遍的,那么今天就写一下题解。 题目倒是很好理解呀,就是顺时针从...
2020-03-02 15:58:49
451
1
原创 动态规划的背包问题
传说中的背包有9讲,这里我们就介绍一下最基础的3讲 01背包 完全背包 分组背包 这三种背包是最经典的,也是我们经常碰到的,也是初学dp经常容易蒙圈的题目类型。 01背包 最经典的题目就是: 有n件物品,每件物品的重量为w[i],价值为v[i]。现有一个容量为V的背包,问如何选取物品放入背包,使得背包内物品的总价值最大。(其中每种物品都只有一件) 我们设一个二维数组dp[i][j]来记录放入i...
2020-03-01 20:06:10
298
空空如也
两颗二叉树深度比较出问题了!!!
2019-10-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅