自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 循环单链表

以带头结点的循环单链表为例:普通的单链表的尾指针指向的是NULL;而循环单链表的尾指针指向的是头节点;这就要求循环单链表在定义的时候出现的一些不同:初始化时,需要将头结点的next指针指向它自己判空条件,L->next==L;判断p是否为尾节点的条件:p->next==L...

2021-11-28 16:31:04 3159

原创 C语言中的switch语句

switch语句的一般形式:switch (表达式){ case 常量表达式1: 语句1 case 常量表达式2: 语句2 ┇ case 常量表达式n: 语句n default: 语句n+1}说明:==switch 后面括号内的“表达式”必须是整数类型。==也就是说可以是 int 型变量、char 型变量,也可以直接是整数或字符常量,哪怕是负数都可以。但绝对不可以是实数,float 型变量、double 型变量、小

2021-11-09 16:20:30 3761

原创 二叉树的非递归遍历

// 先序遍历的非递归实现void pre_order(BinTree b){ InitStack(S); while(b!=null||!IsEmpty(S)) { if(b!=null) { visit(b); Push(S,b); b=b->lchild; } else { Pop(S,b); b=b->rchild; } } } // 中序遍历的非递归实现 void in_order(BinTree b)

2021-11-08 14:49:50 178

原创 试给出二叉树自下而上、自左而右的遍历算法

//试给出二叉树自下而上、自左而右的遍历算法void order(BinTree b){ InitQueue(Q); //初始化一个队列 InitStack(S); //初始化一个栈 EnQueue(Q,b); //入队列 while(!Empty(Q)) //循环条件为队列非空 { DeQueue(Q,b); //队头元素出队 Push(S,b); //将出队元素放入栈中 if(b->lchild!=NULL) EnQ

2021-11-08 14:16:56 430

原创 判断二叉排序树

//判断是不是二叉排序树int pre_data=0; //当前遍历节点的前驱节点的数据,是一个全局变量 int jugdge(BinTree b){ int b1,b2; if(b==null) return 0; else{ b1=judge(b->lchild); //对左子树进行递归判断 if(b1==0||pre_data>=b->data) // 对根节点进行递归判断 return 0; pre_data=b->d

2021-11-08 14:04:03 207

原创 循环链式队列

//定义结点typedef struct QNode{ ElemType data; struct QNode *next; }QNode,*QNodeptr; //该结构体含有两个结点指针变量typedef struct{ QNodeptr front;//队头指针 QNodeptr rear;//队尾指针 }LinkQueue;//初始化循环链式队列Status Init_LQueue(LinkQueue *L){ L->rear=L->front.

2021-11-02 18:32:46 675

原创 元素循环后移

题目:有n个整数,施前面各数顺序向后移动m个位置,移除的数再从开头移入。算法分析;在不考虑空间复杂度情况下,我们可以定义一个容量较大的数组。先将所有元素都直接向后移动m个单位,再将符合条件的元素移动到最前面:# include<stdio.h>int main(){ int a[100],j,n,m; scanf("%d%d",&n,&m); for(j=0;j<n;j++) { scanf("%d",&a[j]);//将n个

2021-10-21 15:48:53 255

原创 关于*p++、*++p、(*p)++

假设 p 是指向数组 arr 中第 n 个元素的指针,那么 p++、++p、(*p)++ 分别是什么意思呢?*p++ 等价于 *(p++),表示先取得第 n 个元素的值,再将 p 指向下一个元素,上面已经进行了详细讲解。*++p 等价于 *(++p),会先进行 ++p 运算,使得 p 的值增加,指向下一个元素,整体上相当于 *(p+1),所以会获得第 n+1 个数组元素的值。(*p)++ 就非常简单了,会先取得第 n 个元素的值,再对该元素的值加 1。假设 p 指向第 0 个元素,并且第 0 个元素

2021-10-21 07:46:01 1230

原创 求最近公共祖先

要求:一棵顺序存储的二叉树,按顺序存储方式进行,设计一个算法,求编号为i和j的两个节点的最近公共祖先:int min_parent(int i,int j){ while(i!=j) { if(i>j) //主要操作就是将编号较大的元素不断取一半 i=i/2; else j=j/2; } return i;}...

2021-10-19 20:12:20 169

原创 删除单链表中节点值为x的节点

这里用了两种方式实现://这一种方式用来三个指针,一个用来遍历的p指针,一个指向p的前驱的pre指针,还有一个标识目标节点的q指针while(p!=null){ if(p->data==x) { q=p; p=p->next; pre->next=p; free(q); } else { pre=p; p=p->next; } } //这一种方式用来两个指针,一个用来遍历的p指针,一

2021-10-19 08:26:47 1951

原创 C语言中的直接引用

C语言两个基础的语句:int a;a=5;就这样一个简单的操作,程序内部是怎样运行的呢?第一句代码:系统会为变量a分配一块连续空间。因为int类型大小为2B,实际分配的也就是一个2B大小的内存空间第二句代码:系统会自动将变量a转化为变量的存储地址,根据地址找到变量a的存储空间,然后将数据10以二进制的形式放入变量a的存储空间中。这种通过变量名直接引用变量,由系统自动完成变量名和其存储地址之间转换的方式,称为变量的“直接引用”(直接访问)方式;...

2021-10-18 19:37:30 420

原创 C语言中的#define有什么作用

#define 定义一个标识符来表示一个常量。其特点是定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。用 #define 定义标识符的一般形式为:#define 标识符 常量 //注意, 最后没有分号#define 和 #include 一样,也是以“#”开头的。凡是以“#”开头的均为预处理指令,#define也不例外。扩展资料:宏定义 #define 一般都写在函数外面,与 #include 写在一起。当然,写在函数里面也没有语法错误,但通常不那么写。#defi

2021-07-11 23:29:22 2261 2

原创 函数的形参与实参

定义:形参(形式参数)在函数定义中出现的参数,可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。实参(实际参数)函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。形参和实参的区别与联系:形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用实参可以是常量、变量、表达式

2021-07-11 23:16:23 2041 1

原创 使用信号量机制实现独木桥问题

题目:有一个独木桥,过桥时,同一方向的行人可连续过桥;当某一方向有人过桥时,另一方向的人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。试用信号量机制解决:解决思路:将独木桥的两个方向分别标识为A和B。用整型变量countA和countB分别表示A、B方向上已在独木桥上的人的个数。初始值都设为0;同时,需要设置三个初始值都为1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现对独木桥的互斥使用。(SA、SB两个互斥信号量的使用可以使得

2021-04-12 20:22:36 6408 2

原创 路由汇聚和路由查找

路由汇聚是用来解决路由表内容永于问题,使用路由聚合能够缩小路由表的规模,减少路由表的内存。提高路由器数据转发的效率。例题:假设有4个路由:172.18.129.0/24、172.18.130.0/24、172.18.132.0/24、172.18.133.0/24。问:能覆盖这4个路由的是:解法: 首先根据将4个路由展开为2进制: 因为前两个字节都相同,我们只需要关注第三个字节: 129=> 01000001 130=> 10000010 132=> 10000

2021-03-23 11:38:31 778

原创 vue侦听器

前言:Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。 data:{ name:'', obj:{ name:' '} }vue侦听data中普通对象watch: { name: function (newQuestion, oldQuestion) { console.log('name改变了') } },vue侦听路由的变化: watch:{

2021-01-10 19:26:07 99 1

原创 Js词法作用域

作用域分为词法作用域和动态作用域Jscript中用到的是词法作用域词法作用域:词法作用域意味着作用域是由书写代码时函数声明的位置来决定的作用域是什么呢?通俗的讲,作用域是查找变量的地方举一个简单的例子://在这个代码片段中,有i两个作用域。一个是函数内部的函数作用域,一个是函数外部的全局作用域。 var b = 'programmer';function foo() { console.log(b); // 输出"programmer"}foo();在定义的foo

2021-01-10 13:43:14 148

原创 @ConfigurationProperties与EnableConfigurationProperties

首先呢,我们需要知道@ConfigurationProperties注解的作用。@ConfigurationProPerties注解实现了配置文件和实体类的属性注入。举例说明:application.yml文件:student: name: 小明Student.java:@ConfigurationProperties(prefix = "student")public class Student { private String name; public Stud

2020-12-29 18:11:44 1226 2

原创 用Gitee实现版本管理

准备工作下载Git配置公钥(这是为了减少在以后的操作中重复输入密码带来的不便)将git添加到我们的开发软件中管理过程创建一个空的仓库将需要添加项目加入到git中将项目添加到缓存区和分支区(先Add , 后 Commit Directory)4.将项目添加到远程仓库:5.将远程仓库的地址复制到URL栏中,由于之前我们已经配置了.ssh公钥,地址前面选项也为SSH6.在远程仓库编辑。push之后,刷新网页,会发现项目已经添加到了远程仓库中。7.将远程库编辑

2020-12-27 21:49:33 414

原创 JS中数组相关操作

list:[1,2,3,4],判断数组是否包含某"1":list.includes(1); 返回值为true获取“1”在数组中的下标:list.indexOf(1) ;返回值为0删除下标为0的值,list.splice(0,1); 第一个参数为所要删除的下标,第二个参数为删除长度向数组中添加一个“6”,list.push(6)...

2020-12-23 23:32:04 103

原创 将vue项目打包进springboot中

在vue.config.js中配置:module.exports = { publicPath: ''}终端运行npm run build ,打包后会在项目目录下生成dist文件夹将dist文件夹下内容复制到springboot项目的static文件夹下

2020-12-23 23:13:58 1033

原创 Springboot使用logback日志记录数据库操作

springboot默认的日志抽象层框架是:SLF4jspringboot默认的日志实现框架是: LogbackSpring框架默认是用JCL(commons-logging)作为日志抽象层框架;springboot在集成spring、mybatis等框架的过程中,已经帮我们排除了其他框架的原本默认日志,因此我们不需要再进行依赖排除上面是springbootr日志的一些转化,下面来说如何使用logback日志记录数据库操作:application.yml文件中进行两个配置:logging:

2020-12-19 14:38:58 989 2

原创 Js如何将数字转化为百分数

定义一个方法, toPercent: function (point) { var str = Number(point*100).toFixed(1); str += "%"; return str; },测试:toPercent(.0.01)结果为 1%;

2020-12-17 23:44:10 9097

原创 用axios结合element的upload进行文件上传

这里来说一下用upload提交文件的两种方式:用action='url’方式用:http-request方式提交,element官方的解释:http-request 覆盖默认的上传行为,可以自定义上传的实现第一种体提交方式,直接在action属性中写出后台地址即可,但是这种方式无法获取后台响应结果要想提交后获取后台的相应结果,应该用第二种方式:<el-upload class="upload-demo" action="string" :http-request="upload

2020-12-17 23:41:35 2750 3

原创 Js中的Async

mdn官网Js中定义一个方法有两种方式:function 函数名 ([参数列表]){…… }var 函数名 =function ([参数列表]) {……}两种函数定义方式区别:第一种称为定义式,第二种称为变量式。在实际应用中二者没有区别,但在调用中顺序上差异:定义式可以在调用之后再定义,而变量式则不可以。异步:await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。Promise 对象 用于表示一个异步操作的最终完成 (或失

2020-12-05 18:04:29 470 1

原创 Javascript函数

ES5中:正常函数:function 函数名 ([参数列表]){…… }函数表达式:将声明的函数赋值给一个变量,通过变量完成函数的调用和参数的传递var 变量名=function 函数名(参数列表) {……}函数调用时,只能采用“变量名()”的方式,不能采用函数名称调用。 var fn=function ha(){… …}; fn();匿名函数:匿名函数指的是没有名称的函数,可以有效地避免全局变量的污染以及函数名的冲突问题。下列两种写法:var 函

2020-12-05 12:38:13 180

原创 对象序列化

1. 首先需要导入依赖 ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency> ```- 进行转换(

2020-12-02 21:39:59 83

原创 后台获取路径

后台路径: System.out.println("服务器:"+request.getServerName()); //获取服务器IP System.out.println("端口号:"+request.getServerPort()); //获取端口号 System.out.println("项目名称: "+request.getContextPath()); //获取应用名称 System.out.println("服务器根目录:

2020-12-02 16:24:16 551

原创 匿名内部类

在java中:接口可继承接口,但是接口不能直接实例化,需要通过创建接口的实现类或子接口的实现类。抽象类不能直接实例化,需要通过创建抽象类的子类。如果某个局部类你只使用一次,那么你就可以使用匿名内部类。举个例子:public interface Iexample{ void haha(){ }}public class IexampleImple{ public void haha(){ System.out.println("哈哈哈"); }}public class T

2020-12-01 13:11:51 95 2

原创 @ControllerAdvice

@ControllerAdviece是一个全局组数据处理组件,主要用来处理全局数据。一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用

2020-11-28 22:51:05 186

原创 axios的传参问题

1.axios.get:字符串拼接法:前端传送数据: data: { message:'' //当然,message也可以为其他类型的变量,如:int,array }, axios.get("/haha?message="+this.message).then((response)=>{ console.log("发送成功"); },

2020-11-18 19:08:52 2013

原创 复合主键

复合主键的是使用情景:当只有一个字段作为主键时,不能作为唯一标识,仍会有重复的情况。这时需要有2个(以上)的字段共同作为主键,也就是作为记录的唯一标识。create table mykey ( name varchar(20), id number , primary key (name,id) ) 这个时候,就是name属性和id属性共同作为复合主键,作为唯一标识。...

2020-11-16 18:33:12 1937

原创 Spring

spring的作用:spring的主要作用就是解耦,即降低代码间接耦合度;spring将应用程序中的代码根据功能分为了两部分:主业务逻辑与系统服务;spring的特点:非侵入式编程容器IoCAOPIoc :          将原本有代码操纵的对象操控权,交由第三方容器,即反转给了第三方容器。这种对象的依赖关系的管理方式称为IoC;    &

2020-11-12 14:05:37 153 1

原创 Mybatis映射器

Mybatis映射器的定义:映射器是Mybatis中最复杂,最重要的一个组件。Mybatis映射器构成:Mybatis映射器的组成有两张形式:映射器接口+xml文件映射器接口+注解Mybatis映射器的作用:将SQL 查询到的结果映射为一个 POJO,或者将 POJO 的数据插入到数据库中,并定义一些关于缓存等的重要内容。...

2020-11-12 12:54:54 280

原创 @RequestParam注解

@RequestParam注解作用范围:@RequestParam主要用于将请求参数区域的数据(url中参数)映射到控制层方法的参数上public class Controller { public void select(@RequestParam(required =false,defaultValue = "0",value = "page")String Numpage){ }首先我们需要知道@RequestParam注解主要有哪些参数1.value:请

2020-10-28 22:31:33 174

原创 Mybatis的一级缓存、二级缓存

为什么要用缓存?将数据存放在程序内存(缓存)中,用于减轻数据查询的压力,提升读取数据的速度,提高性能。一级缓存Mybatis一级缓存实际上就是一个依赖于SqlSession的缓存对象。具体来说就是将查询到的结果以Map(K,V)的形式存在于缓存区中。public class PerpetualCache implements Cache { private final String id; private Map<Object, Object> cache = n

2020-10-23 17:28:55 111

原创 Spring boot配置log4j2日志

Spring Boot工程t默认的日志框架Logback,所以我们在引入log4j之前,需要先排除该包的依赖,再引入log4j的依赖。需要注意的是Spring Boot 只有1.3.x和1.3.x以下版本才支持log4j的日志配置,1.3.x以上版本只支持log4j2。Spring Boot 1.3.x以下版本的pom.xml文件如下:<dependency> <groupId>org.springframework.boot</groupId>

2020-10-21 23:27:53 225

原创 Mybatis延迟加载

5h 什么是延迟加载呢?通俗的讲就是按需加载,我们需要什么的时候再去进行什么操作。5h 什么时候会用到延迟加载呢?多表单独查询的时候。而且先从单表查询,需要时再从关联表去关联查询,能大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。延迟加载分为两种:深度延时加载,侵入式延迟加载5h 如何开启延时加载?mybatis.xml中进行配置<settings><!--延迟加载总开关,打开后,默认的是深度延时加载 --><setting name="la

2020-10-21 19:32:34 206

原创 @Mapper注解

@Mapper 这个注解的定义如下:@Documented@Inherited@Retention(RUNTIME)@Target({ TYPE, METHOD, FIELD, PARAMETER })public @interface Mapper { // Interface Mapper}@Mapper接口一般用在接口上:@Mapperpublic interface t_tempDao { List<Start> selectAll();}使用 @M

2020-10-19 15:30:52 4340

原创 Mybatis多表查询

首先。我们需要知道,表与表之间存在的几种关系:一对一一对多(多对一)多对多一对多:举例:班级与学生: class表: CREATE TABLE `class` ( `id` int NOT NULL, `classid` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8students表:CREATE TABLE `students` ( `id` in

2020-10-13 15:51:04 121

空空如也

空空如也

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

TA关注的人

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