自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 问答 (5)
  • 收藏
  • 关注

原创 前后端分离最佳实践:搭建一个复习算法题的网站ReviseCode(一)

前言:很多人学完SSM就直接学SpringBoot,几乎没有试过整合SSM框架,导致仅仅是学会了SpringBoot使用,并不知道为什么是这样配置。另一方面,有的人整合了SSM框架,并且配置完后完成了简单的CURD,但是大多数人没有用前后端分离,而是还在用JSP、thymeLeaf等模板技术,这又导致后面学习SpringBoot与Vue脱节。因此,这一系列的文章目的是后端特意使用SSM框架,前端使用Vue,并使用RESTful风格API搭建一个用于复习刷过的算法题的网站——名为ReviseCode1..

2021-08-31 01:15:23 6143 19

原创 C++总结了回溯问题类型 带你搞懂回溯算法(搜索篇,题目不断更新)

在上一篇题解中,我总结了回溯算法的三种类型,以及什么时候用回溯算法,怎么写回溯算法,如果没看过的,强烈建议先看:C++ 总结了回溯问题类型 带你搞懂回溯算法(大量例题)这一节,我们就来解析“搜索”类型的回溯问题。为什么要单独分出一种“搜索”类型?其实,“搜索”类型的题解中都能看到“子集”、“排列”类型题目的影子,只要你搞懂前面两种类型问题的本质,就很容易联想到了。“搜索”类型的问题最难的就是...

2020-05-05 16:44:06 532 1

原创 C++ 总结了回溯问题类型 带你搞懂回溯算法(排列篇)

在上一篇题解中,我总结了回溯算法的三种类型,以及什么时候用回溯算法,怎么写回溯算法,如果没看过的,强烈建议先看:C++ 总结了回溯问题类型 带你搞懂回溯算法(大量例题)下面就来讲解第二种类型——排列类型(ABCD四道例题),先上回溯六步走①画出递归树,找到状态变量(回溯函数的参数),这一步非常重要※②根据题意,确立结束条件③找准选择列表(与函数参数相关),与第一步紧密关联※④判断是否...

2020-05-05 16:28:26 1680 1

原创 C++ 总结了回溯问题类型 带你搞懂回溯算法(大量例题)

1.DFS和回溯算法区别DFS是一个劲的往某一个方向搜索,而回溯算法建立在DFS基础之上的,但不同的是在搜索过程中,达到结束条件后,恢复状态,回溯上一层,再次搜索。因此回溯算法与DFS的区别就是有无状态重置2.何时使用回溯算法当问题需要"回头",以此来查找出所有的解的时候,使用回溯算法。即满足结束条件或者发现不是正确路径的时候(走不通),要撤销选择,回退到上一个状态,继续尝试,直到找出所有解...

2020-05-03 15:25:12 3910 4

原创 SpringMVC获取请求参数的各种方法

SpringMvc获取请求参数方法全解析!!

2022-06-06 01:56:06 1729

原创 Pyinstaller 逆向时报 bad marshal data

pyinstaller反编译报错

2022-06-04 19:01:49 1961 1

原创 SpringMVC中jackson自定义实体类中的字段名

1. 前言jackson默认使用的是小驼峰命名法,如果实体类有如下字段public class Order { private Integer id; private String chainId; private String orderNumber; private String SF;}在@RestController中会被转化为{ "id":"121323", "chainId":"13223", "orderNumber":"xxx", "sf"

2022-05-22 21:18:15 1278

原创 jackson自定义反序列化器JsonDeserializer

1.JSON的序列化与反序列化JSON序列化:将实体类对象转为JSON字符串JSON反序列化:将JSON字符串转为实体类2.jackson和gsonjackson作为Spring MVC和Spring Boot默认的JSON解析器,其与gson的工作原理不一样。jackson通过调用实体类每个属性get/set方法进行注入,而gson则是通过设置每个属性为可访问后注入。jackson工作原理大致如下//获取Class对象Class<Order.OrderStatus> order

2022-05-19 16:16:42 11649

原创 vue解决在template标签中使用组件,数据更新了,但组件不重新渲染问题

1. 问题复现使用elementUI中的el-table,想要在每一个el-table-column中使用同一个组件组件Status,那么代码如下<el-table-column min-width="8%" label="状态" :index="9"> <template slot-scope="scope"> <Status :row="scope.row"></St

2022-05-16 23:12:53 1832

原创 Python使用mysql-connector连接数据库

Pyhton版本mysql-connector的使用

2022-05-11 02:33:44 9034

原创 Spring Boot 2学习笔记(二):容器管理

上一节简单使用SpringBoot完成了HelloWorld,这一节深入介绍如何使用SpringBoot进行容器管理,比如在容器中注册组件、读取资源等2. 容器管理2.1 使用配置类注册组件在Spring中,我们使用Spring的xml配置文件注册bean,往容器里面添加组件<bean id="person" class="com.lin.pojo.Person"> <property name="name" value="Mike"/></bean&gt.

2021-09-02 19:50:31 267

原创 Spring Boot 2学习笔记(一):快速使用——HelloWorld工程

1.快速入门HelloWorld1.1系统要求Java8 使用java -version查看Maven 3.3+ 使用mvn -v查看必须查看idea中使用maven版本,因为idea自己默认绑定了一个maven31.2 创建maven工程引入依赖<!--引入父项目用于版本控制--><parent> <groupId>org.springframework.boot</groupId> <artifactI

2021-09-01 19:28:34 167

原创 maven编译 Process terminated

Maven报错如下:点击工程名查看报错信息:错误原因:进入文件找到对应行数,发现是xml文件没对齐/缩进不同调整xml文件,删掉空格,就可以了。推荐:以后格式化xml在复制粘贴(推荐 ????XML 在线格式化)...

2021-09-01 18:37:27 78

原创 解决Vue重复点击导航,跳转相同路由出现Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation

问题描述:重复点击导航时,控制台出现报错 ,虽然不影响功能使用,但也不能视而不见。Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location:解决方法:$router上有一个history属性记录着路径:所以在点击跳转前,进行判断,比较当前路径是不是跟新的路径相同 methods: { homePage(){ if(this.$r

2021-08-31 21:56:39 547

原创 Vue打包使用npm run build后资源路径问题

执行命令打包后,打开dist文件夹下的html文件,资源全部爆红!!!原因是打包后的文件使用了相对路径解决方法:网上的方法都是vue2:比如修改config/index.js的assetsPublicPath在Vue3中,没有了 build 目录,webpack.base.config.js、webpack.dev.config.js 、webpack.prod.config.js 等配置文件。而是需要自己在工程目录下创建一个vue.config.js(与package.json)同级,写入:

2021-08-28 14:27:00 1752

原创 Spring整合MyBatis详细教程

1. 为什么需要Spring?Spring可以带来哪些变化?将对象创建这个过程交给Spring(IOC),不再需要硬编码在程序中,配置xml文件或注解即可;另外Spirng还提供了数据库的事务管理、日志等功能(AOP)。最直观的变化就是:可以不再使用MyBatis配置文件以及不用再手动new SqlSessionFactory、SqlSession等对象2. 回顾MyBatis首先来回顾在MyBatis中如何操作数据库。以操作的数据库名为mybatis,表名employee为例,employee表中拥

2021-08-18 02:24:33 671

原创 MyBatis传入多参数问题

1.情景再现想通过传入的id修改表中对应数据的lastName字段值1.1Dao接口public interface EmployeeDao { public void updateEmployeeById(Employee employee,Integer id);}1.2映射文件EmployeeMapper.xml<mapper namespace="com.dao.EmployeeDao"> <update id="updateEmployee" >

2021-08-14 21:27:34 149

原创 Java SE教程(一)——基本认识

1.运行第一个java程序在idea中新建一个Test类,输入以下代码public class Test{ public static void main(String[] args) { System.out.println("Hello"); }}运行输出下面是初学者关于上述程序的几点疑惑2.为什么类名Test与文件名Test必须相同?如果不同会出现下面报错Java规定代码中的public类就必须和文件名一致,且仅有一个public类,否则编译报错,但是如果没有publi

2021-05-08 17:23:46 125 1

原创 Pyecharts V1 快速入门(二):柱形图与双Y轴折线图的创建

在上一节Pyecharts V1 快速入门(一):配置参数传递及示例 介绍了图表和快速创建及配置项参数设置及传递。这节将会在前面的基础上,创建柱形图和双Y轴折线图,并且使用overlap将两条折线叠加在同一个图表上1.全局配置项set_global_options()bar=Bar(init_opts=opts.InitOpts(bg_color='rgba(255,249,196,0.2)',width='1000px',height='600px',page_title='Test',theme=

2020-11-21 01:22:59 3868 1

原创 Pyecharts V1 快速入门(一):配置参数传递及示例

1.如何安装默认安装V1版本$ pip install pyrcharts或使用源码$ git clone https://github.com/pyecharts/pyecharts.git$ cd pyecharts$ pip install -r requirements.txt$ python setup.py install# 或者执行 python install.py2.关于版本分为 v0.5.X 和 v1 两个大版本,v0.5.X 和 v1 间不兼容!!v1 是一个全

2020-11-20 01:19:03 1454 2

原创 Pyinstaller打包pyecharts和pyqt程序 生成exe错误解决

1.安装pyinstaller$ pip install pyinstaller2.pyinstall命令参数解析pyinstaller [参数] [图标文件.ico][要打包的程序.py]参数说明:–i 选择.ico图标文件-F 打包成一个exe文件-w exe使用窗口,无控制台,建议调试完全正常后再使用-c exe使用控制台,无窗口,建议先使用控制台,打开exe之后可以看到错误信息-D 创建一个目录,里面包含exe以及其他一些依赖性文件pyinstaller -h 来查看参数

2020-11-19 00:14:57 1580 10

原创 Linux环境编程(2) cp命令

1.两个系统调用①创建/重写文件:create②将数据写入文件:write以及 Linux环境编程(1) who命令 中提到的三个系统调用 open、read、close那么如何编写代码呢?2.具体实现 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<fcntl.h> 4 #include<unistd.h> 5 void oops(const char* s1,const c

2020-06-25 20:02:58 144

原创 Linux环境编程(1) who命令

开头先介绍man命令常用用法,以后会经常使用:注:man手册分为多个section,每个section用一个字符表示。这里的section可以理解为类别,例如:man 1 passwd 和 man 5 passwd是不一样的类别(详细见表一)。通常我们使用man passwd,这个时候man就按照预先设置的搜索路径和顺序去搜索passwd,当搜索到一个就停止继续搜索并将结果显示出来,如果我们指定了section,那么man只会在指定的section里去查找man帮助页。1.who命令能做什么如

2020-06-25 13:42:14 362

原创 C++ 返回值优化详解 RVO与NRVO

先举一个简化的类,该类只有一个private成员,并且有无参构造函数、有参构造函数、拷贝构造函数、移动构造函数、析构函数//Str.hclass Str{private: int size;public: Str() { cout << "调用无参构造函数"; } Str(int n) :size(n) { cout << "调用有参构造函数"; } Str(const Str& s) :size(s.size) { cout << "调用拷贝构

2020-06-19 23:10:12 806

原创 C++ 辨析常量指针、指针常量与常量引用、引用常量

1.常量指针与指针常量的区分A、常量指针(const int* p)常量指针本质上是一个指针,是一个指向“常量”的指针,即不能通过指针改变指向对象的值(不能解除引用),但可以更改指向。用法如下int a=3,b=4;const int *p=&a; /初始化指向ap=&b; /可以更改指向,现在指向b*p=5; /不可以通过指针改变对象的值B、指针常量(int* const p)指针常量本质上是一个常量,const是修饰p的,即指针的值自身是一个常量,不可改变,始

2020-05-28 18:35:53 2119

原创 C++ 辨析指针与引用 点破引用的本质

1.本质上的区别①指针拥有自身的一块内存空间,存储的是指向的对象的地址;而引用是被引用对象的一个别名注:从汇编的角度看,引用与指针其实没有区别,引用实际上被解释为一个指针常量②从上面的注就引出了第二个区别:指针可以初始化为NULL,并且可以在任何时候初始化;而引用被创建时,就必须进行初始化,并且不能为空,必须绑定已有对象③指针可以有多级;而引用只有一级④指针在初始化后可以指向其他对象;但引用在初始化后就不能更改⑤指针和引用的自增运算不一样(指针的自增1是其指向的地址增加一个对象类型大小

2020-05-27 23:30:57 161

原创 Linux环境下,利用g++编译C++程序

Windows下我们用VS等IDE编译运行C++程序,那么在Linux下用什么工具来编译代码呢?常用的有两个:g++和gcc,先说如何编译运行程序,再说二者区别创建cpp文件打开终端,先使用vim命令创建cpp文件[centos_1@localhost ~]$ vim compile_test.cpp进入后长按键盘上的字母i,直到进入编辑模式,并编写代码编写完成后,按ESC键退出编辑模式,同时按住shift+:(输入冒号),当左下角出现冒号输入wq(保存并退出),按下回车,就会回到开始的终

2020-05-25 23:26:11 600

原创 C++实现 利用前序序列和中序序列构建二叉树

前言:已知一个二叉树的中序序列和前序序列,或者中序序列和后序序列就可以唯一确定一个二叉树(必须知道中序序列),只知道前序和后序是不能创建唯一的二叉树。1.引例已知下列某二叉树(8个结点)的两个序列,如何确定一棵唯一的二叉树呢?①前序序列的第一个结点,就是根结点②在中序序列中,找到根结点,记录根结点前的结点,即为左子树结点,图中为3(4,7,2),根结点后的结点,即为右子树结点,图中为(5...

2020-04-01 21:39:07 4157 3

原创 C++详解 二叉树的层序遍历(BFS)

上一节讲了二叉树的三种基本遍历方法:先序、中序、后续,C++详解 二叉树的三种遍历方式,这三种方法都是利用栈,DFS(深度优先遍历)的方法,那么我们最后来讲最后一种遍历方法——层序遍历,BFS(Breadth First Search)宽度优先遍历1.二叉树遍历的核心问题二叉树是二维结构。遍历二叉树,就是为了产生一个一维的线性序列,不同的遍历方法就产生不同的一维序列。访问了左结点后,如果把根结...

2020-04-01 14:56:17 1501 3

原创 C++详解 二叉树的三种遍历方式

上一篇文章,讲了二叉树的创建——C++实现 链表存储二叉树接下来讲解二叉树的三种遍历方式:先序(前序)遍历、中序遍历、后序遍历,三种方式都是DFS(Depth First Search)深度优先搜索,核心思想都是函数的递归(栈),如果你能理解上面这篇文章中创建二叉树的具体过程,那么遍历就轻而易举1.先序遍历Former_Order_Traversel(BinTree_Node* p){ ...

2020-03-28 18:44:02 4688

原创 C++实现 链表存储二叉树

前言:国内很多教材,讲完二叉树的结构,就直接开始讲二叉树的遍历,我就觉得很奇怪,你连个完整的二叉树都没创建,遍历什么,于是我写了下面这篇文章,详细介绍了创建过程,然后再说遍历,循序渐进1.什么是二叉树?什么是完美二叉树和完全二叉树?直接上图可以看到,图中的根结点拥有左右两个结点,同时左右两个结点,又是一棵独立的、互不相交的树,分别称为左子树、右子树,这就是二叉树名字的由来完美二叉树:又...

2020-03-27 20:16:00 2147 2

原创 C++链表(不带头结点)实现 多项式加法

开始之前,若对线性表的链式存储不了解,请看关于链表的具体讲解C++ 实现数据结构中的线性表1.如何创建一个不含头结点的链表(这一部分非常关键,而且非常有用,建议可以动手跟着画示意图,帮助理解)下面是存储多项式的单个节点的结构体代码:struct Node{ int coef;//系数 int expon;//指数 Node* next;};那么我们如何,用一个个节点构建起一...

2020-03-24 23:01:39 309

原创 C++ 常用的三种获取输入字符串方法辨析 cin 与 cin.getline 与 cin.get

我们最常用的获取输入字符串的方法肯定是cin了,但是如果我们要获取含有空格的字符串时应该怎么办呢,也许你第一时间想到了cin>>string,,用一个string对象去保存输入的字符串,如英文名等等如果我们不用string去处理,那么我们又该怎么办呢?1.cin.getline()该函数接受一个字符数组的首地址和个数,如char a[10];cin.getline(a,10)...

2020-03-24 00:17:56 662

原创 C++ 实现线性表的顺序存储(顺序表)

关于数据结构中的 线性表(队列、栈)的相关讲解,请看[C++ 实现数据结构中的线性表](https://blog.csdn.net/weixin_43335392/article/details/104956785)1.线性表的顺序存储的结构代码typedef int ElementType;#define Maxsize 10struct Sequence{ElementType ...

2020-03-21 17:40:36 557

原创 C++ 实现数据结构中的线性表

建议用上面这张图,把关于线性表的知识联系起来进行学习1.什么是线性表?答:零个或多个元素组成的,有序的、有限的序列,称为线性表。注意:这里的有序是指:第一个元素前面没有元素(无前驱),最后一个元素后面没有元素(无后继),中间的元素有且只有一个前驱和后继,是一种承前启后的关系如一个数组[1,2,3,4]是一个线性表,因为他是有序的,元素个数为4的一个序列如班上的成绩表是一个线性表,因为他...

2020-03-19 00:56:13 584

原创 C++实现 栈的顺序存储(通过动态数组)

前面讲解了通过静态数组,实现顺序栈C++实现 栈的顺序存储(通过静态数组)那么如果我们不想使用定长的数组,转而使用动态数组又该怎么编写呢?强烈建议与上面这篇文章,对比着学习,注重二者不同的地方,这样更能深刻掌握栈的顺序存储1.栈的结构定义typedef int ElementType#define Maxsize 10;struct Sqstack{Element_type *P;...

2020-03-18 01:59:02 348

原创 C++实现 栈的顺序存储(通过静态数组)

1.什么是栈?答:只在表尾进行插入和删除和操作的线性表,我们把允许插入和删除的一端称为栈顶,另一端称为栈底。必须记住栈是先进后出的具体实现过程如下图:你可以想象成是叠碟子,一个个碟子往上叠,那么你拿的时候就只能从最顶上的开始拿,不然就全碎了2.栈的结构定义typedef int ElementType;#define Maxsize 10struct Sqstack{Eleme...

2020-03-18 00:11:49 321

原创 C++ 在类的继承中使用virtual定义虚函数,实现多态

1.概念首先要搞清楚什么是多态:多态:函数的行为取决于调用该函数的对象。多态分为:静态多态(静态联编)和动态多态(动态联编)静态多态的体现:函数重载,运算符重载,即在编译过程中实现联编动态多态的体现:虚函数,即在程序运行过程中才动态的确定操作对象其次还要明白,在C++中,派生类和基类之间的一种特殊关系:基类指针和引用可以在不进行显示转换的情况下指向派生类对象,称为向上强制转换,这在实现...

2020-03-17 01:36:21 566

原创 C++ 函数参数应该传递对象还是对象引用?函数应该返回对象还是对象引用?

在初学C++的时候,学到引用结合函数运用的部分,一直有一个疑惑:函数的参数应该是对象还是对象的引用?返回值选择返回对象还是对象的引用?二者又有什么区别?首先来看,函数参数方面:记住:编写使用对象作为参数的函数时,应按引用而不是按值来传对象,原因如下1.提高效率,按值传递(直接传递对象)涉及到生成了临时拷贝,即调用复制构造函数,然后调用析构函数,调用这些函数需要时间,比起直接传递对象的引用花费...

2020-03-15 16:07:48 990

原创 C++实现 线性表的链式存储(单链表)

链式存储(单链表):由多个节点串联而成,每一个节点不仅有数据信息,最重要的还存储了后继节点的地址,所以只要知道某一个节点的位置,就能遍历后续节点,结构如下图注意:若不带头结点的链表,增加了程序的复杂性和出现bug的机会,因此,通常在单链表的开始结点之前附设一个头结点。节点的组成:存储数据元素信息的域称为数据域;存储后继位置的域称为指针域,代码如下struct Node{int dat...

2020-02-28 23:51:21 560

空空如也

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

TA关注的人

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