自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis密码失效

今天在服务器部署项目的时候,redis缓存中的数据删除不掉,所有把docker中的redis重启了一下,结果项目启动后访问直接报错了Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379....大概意思就是没法连接到redis了,往下翻错误记录(记不太清了,当时没有截图)说defaultpass is nul

2021-06-11 21:48:52 440

原创 缓存快速上手并集成到项目

一、缓存为了系统性能的提升,我们都会将一部分数据存入缓存中,加速访问速度。数据库只承担数据的存储工作。二、哪些数据适合放入缓存即时性要求不高,数据一致性要求不高访问量巨大,且更新频率不高的数据,一般读多,写少可以简单把缓存理解为一个map类型的数据结构,存入的是一个个KV对,其实在没有redis等缓存中间件之前,人们确实是使用map当做缓存使用,因为map是以散列表的形式存在内存中的,能够提供系统的性能。但这样得到的只是本地缓存,只适合在单体应用中,在分布式系统下,每个服务器都用各自的本地缓存

2021-06-11 10:41:32 149

原创 PageHelper简单使用

之前看mybatis的时候用过,有段时间没用,最近写分页发现有点忘了,就当做个简单的回顾主要参考pagehelper官方文档1.引入依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId></dependency>2.代码中引用 @GetMapping("/test")

2021-06-05 17:29:01 219

转载 Git使用规范

主要参考:Git使用规范那些事https://www.cnblogs.com/lazyegg/p/12835038.html写的很详细也很实用,可以学习参考

2021-05-15 10:55:36 108

原创 使用BCryptPasswordEncoder进行加密

Spring Security中自带的加密方法,采用SHA-256算法 +随机盐+密钥的犯法对密码进行加密可以,无需在数据库中存储盐,每次加密的结果都不一样,保证数据的安全性。1 、加密直接new 一个BCryptPasswordEncoder,使用encode方法加密即可。 @Test void contextLoads() { BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); String

2021-05-08 17:01:15 923

原创 addViewController的使用

在spring中,可能会有仅仅需要页面跳转而没有具体的业务逻辑的代码,如下所示我们点击前端某处的时候跳转到登录或者注册的HTML页面,但是controller方法都是空的,仅仅return了一个页面 @GetMapping("/login.html") public String loginPage(){ return "login"; } @GetMapping("/reg.html") public String regPage(){

2021-05-07 17:20:57 7437

原创 缓存失效及解决方法

1.缓存穿透如果缓存和数据库中都不存在的数据,比如数据库某个物品编号只到8000,而有人恶意的访问一个不存在的编号,一直访问10000编号,那么在数据库和缓存中都不存在,在高并发情况下,会不停查询数据库,造成数据库压力大。2.缓存雪崩雪崩是指在某一时间,在缓存中我们放置的大量的key同时失效,则大量的请求全部直接到达数据库,造成数据库压力过大。3.缓存击穿缓存击穿 指 并发查同一条数据。缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又

2021-04-22 17:07:15 1027

原创 Navicat定时备份数据库

1.点击计划2.新建一个批处理作业3.左侧选择你要备份的数据库,双击可用任务,在下方会显示已选择的任务4.点击保存并命名5.设置计划任务,点击新建6.设置每天定时备份时间7.设置里一定要取消掉这个钩,默认是打钩的,超出72小时停止任务,不取消的话,只能在72小时内运行。8.备份还原默认的备份位置与数据库的连接地址一致,右键数据库,选择连接属性,可以看到设置位置,按照顺序,选择你要恢复的数据库,选择备份文件,即可恢复。...

2021-04-18 20:35:47 1074

原创 spring前后端的输入校验

在做前后端分离项目的时候,涉及到需要用户输入的内容时,需要分别在前后端加入输入校验。一、前端校验主要是给普通用户提示所用,可谓防君子不防小人,例如一段提示用户输入首字母必须是英文的vue代码,使用正则匹配的方式firstLetter: [ { validator: (rule, value, callback) => { if (value === '') { callback(new Erro

2021-04-05 16:54:43 396

原创 redis-cli: 未找到命令...的解决方法

今天在centos上安装完redis并且启动后发现,redis-cli无法使用看了很多资料,各种目录下敲这个命令都不行。最后参考这个文章https://www.cnblogs.com/xiaostudy/p/12485183.html输入redis-cli的所在的绝对路径就可以正常了。解决。...

2021-03-15 11:02:48 2388 2

原创 centos7下chkconfig: 未找到命令..

今天在安装完redis并设置开机自启动的时候发现chkconfig redis_init_script on报错bash: chkconfig: 未找到命令...网上好多方法试了,都没有效果,依然报这个错误。最后找到了个文档systemctl命令systemctl list-units ##列出当前系统服务的状态systemctl list-unit-files ##列出服务的开机状态systemctl status sshd ##查看指定服务的状态systemctl stop s

2021-03-14 22:16:10 4188

原创 Required String parameter ‘xxx‘ is not present

今天写完接口进行测试的时候发现了错误测试是在swagger2生成的api网站进行的,页面如下从数据库复制参数过来进行测试的时候发现,会报错 Required String parameter 'XXX' is not present]就是后端没有接收到需要的参数。这里在后端的controller是用的 @RequestParam String XXX,按理说不应该有错误,检查了pom,清理缓存重启IDEA都不行,最后想了想是不是swagger2生成的api文档网站传入的参数会有问题。立马

2021-03-08 10:55:21 177

原创 pagehelper使用

首先在pom中引入依赖<!--pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.12</version></dependency>在application.yml配置文件

2021-03-05 21:05:15 112

原创 @RequestParam和@RequestBody

今天在写post controller的时候复制了get的方法,忘了改参数里面的@RequestParam,启动项目用postman传入json参数的时候一直报错,说没有找到xxxjson对象,当时没想明白为什么,后来才想起来是这里的问题,因此在这里做个记录。@RequestParam注解@RequestParam接收的参数是来自HTTP请求体或请求url的参数RequestParam可以接受简单类型的属性,也可以接受对象类型。@RequestParam有三个配置参数:required 表示是否

2021-03-03 09:23:01 241

原创 Failed to configure a DataSource: ‘url‘ attribute is not specified

spring项目报错Failed to configure a DataSource: 'url' attribute is not specified and no em翻译一下就是没有找到数据库连接的设置方法一:在application启动类上面的注解后面追加后面的内容,但是这个方法是忽略数据库的配置然后启动项目,但是如果后面需要读写数据库的时候就会出现某个bean无法加入到springfactory的错误信息。因此这个方法只适用于暂时需要进行项目测试时适用,治标不治本@SpringBoot

2021-03-01 19:46:49 746

原创 maven项目install出现程序包xxx不存在

[ERROR] com/edu/api. 程序包com.edu.pojo不存在实际情况是,按住control鼠标左键可以进入目标文件内,说明导入成功了,但是install的时候会不停报错,clean也试了重启也试了都不行查了好多资料得到spring-boot-maven-plugin用这个插件打包的Jar包可以直接运行,但是不可依赖!!!所以interface自始至终就没有依赖,自然会说找程序包不存在或者找不到类 <build> <plugins>

2021-03-01 17:16:39 855 1

原创 深入理解依赖注入DI

DI可以理解为IOC的一种具体实现方式下面具体代码表示DI的好处具体代码的关系结构如下假设在业务逻辑中,A对C会有依赖关系产生Container类是我们手动编写的一个容器,其中包括了DI注入的两种最常见的方式:属性注入和构造函数注入public class A { // 这里A也是面向C的接口编程而不是之间new一个C private IC ic; public A() { } public A(IC ic) { } public void

2021-02-06 22:38:19 101

原创 数组

数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标对应的数。数组下表都是从0开始的。数组内存空间的地址是连续的正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址二维数组二位数组其实是一个线性数组存放着 其他数组的首地址。所以二维数据在内存中不是 3*4 的连续地址空间,而是四条连续的地址空间组成!...

2021-01-19 10:28:26 80

原创 Linux指令集(1)

关机、重启shutdownshutdown -h now : 表示立即关机shutdown -h 1 : 表示 1 分钟后关机shutdown -r now: 立即重启reboot 就是重启系统。syn把内存的数据同步到硬盘当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失。切换用户用su - xps15来切换成管理员身份mkdir指令mkdir 指令用于创建目录(make directory)mkdir [选项] 要创建的目录

2020-11-23 15:42:04 101

原创 Linux简介

因为Linux的安全性更好,更加开源和自由,绝大多数软件和服务都是部署在Linux服务器上的。我见过的和用过的只有centos和Ubuntu,他们的指令有些许不同,但是大同小异,学会一个别的可以很快上手Linux的目录结构Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。xshell5配置XShell5 远程登录到 Linux 后,就可以使用指令来操作 Linux 系统xftp配置连接完成后可以进行文件互传...

2020-11-23 14:59:27 73

原创 Docker镜像加速设置

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:1.先再阿里云注册账号,不需要绑定什么,直接注册就可以了,有账号的直接登录就好。地址:https://cr.console.aliyun.com搜索 容器镜像服务2.创建镜像仓库3.创建好之后点到这个选项卡在终端输入vim /etc/docker/daemon.json1将"registry-mirrors": [“https://…com”

2020-11-22 20:52:33 153

原创 Docker入门与安装

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。一、Docker 的优点Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助

2020-11-22 20:47:22 86

原创 JAVA学习第一个小程序--酒店管理系统

房间类public class Room { private int roomId; private String roomType; private boolean roomAvailable; //构造方法 public Room() { } public Room(int roomId, String roomType, boolean roomAvaiable) { this.roomId = roomId;

2020-07-23 21:23:55 289

原创 JAVA中数组实现栈的结构

public class Mystack{ int[] elements = new int[5]; int index = -1; public Mystack(int i) { } public void push(int a){ if(index < elements.length-1) { index++; elements[index] = a; System.

2020-07-23 12:13:48 91

原创 JAVA学习之Object类

一、toString方法关于Object类中的toString()方法 1、源代码长什么样? public String toString() { return this.getClass().getName() + "@" + Integer.toHexString(hashCode()); } 源代码上toString()方法的默认实现是: 类名@对象的内存地址转换为十六进制的形式 2、SUN公司设计toString()方法的目的是什么? toString()方法的作

2020-07-19 11:49:17 128

原创 JAVA学习之接口

一、基础语法1、接口也是一种引用数据类型,编译之后也是一个class字节码文件2、接口是完全抽象的(抽象类是半抽象的)3、接口的定义 [修饰符列表] interface 接口名{ }4、接口支持多继承,一个接口可以继承多个接口interface C extends A, B{}5、接口中只包含两部分内容,一部分是常量,一部分是抽象方法。除此之外,接口中没有其他内容了6、接口中所有的元素都是public修饰的(都是公开的)7、接口中的抽象方法定义时,public abstract可以

2020-07-15 21:59:26 167

原创 JAVA学习之抽象类

一、什么是抽象类类到对象是实例化,对象到类是抽象。抽象类无法new对象:抽象类是类与类之间有共同特征,将这些共同特征的类进一步抽象成了抽象类。由于类本身是不存在的,所以抽象类不能创建对象。抽象类和抽象类之间可能还有共同特征,还可以进一步抽象二、抽象类属于什么类型抽象类也属于引用数据类型三、抽象类怎么定义语法: [修饰符列表] abstract class 类名{ 类体; }四、抽象类无法实例化1.抽象类无法创建对象,所以抽象类是用来被子类继承的2.final和abstrac

2020-07-14 22:31:21 189

原创 JAVA学习之super关键字

一、回顾thisthis能出现在实例方法中和构造方法中this的语法是:this. 、this()this不能使用在静态方法中this.大部分情况下可以省略的,在区分局部变量和实例变量的时候不能省略public void setName(String name){ this.name = name;}this() 只能出现在构造方法的第一行,通过当前的构造方法去调用“本类”中其他的构造方法,目的是:代码复用二、super对比thissuper能出现在实例方法中和构造方法中sup

2020-07-14 17:01:01 126

原创 JAVA学习之final关键字

关于final关键字:1、final是一个关键字,表示最终的,不可变的2、final修饰的类无法被继承3、final修饰的方法无法被覆盖4、final修饰的变量一旦赋值后,不可被重写赋值【不可二次赋值】5、final修饰的实例变量必须手动赋值,不可以使用默认值6、final修饰的引用一旦指向某个对象之后,不能再指向其他对象【但是所指向对象内部的内存是可以被修改的】7、final修饰的实例变量是不可变的,这种变量一般和static联合使用,被称为“常量”–常量定义的语法格式:public s

2020-07-10 16:53:38 85

原创 JAVA学习之多态

关于多态中的几个概念:* 向上转型(upcasting)* 子类型–>父类型* 又被称为自动类型转换* 向下转型(downcasting)* 父类型–>子类型* 又被称为强制类型转换【需要强制类型转换符】* 需要注意的是无论是向上还是向下转型,两者之间需要有继承关系public class Animal{ public void move(){ System.out.println("动物在移动

2020-07-10 12:01:36 152

原创 JAVA学习之继承和方法覆盖

一、继承1.继承是面向对象的三大特征之一,三大特征分别是:封装、继承、多态2.继承的基本作用:代码复用,但是继承最重要的作用时,有了继承后才有了以后的“方法覆盖”和“多态机制”3.继承语法格式:[修饰符列表] class 类名 extends 父类名{ 类体= 属性 + 方法}4.java语言中的继承只支持单继承,一个类不能继承很多类,仅能继承一个类。C++中支持多继承。5.关于继承的一些术语:B类继承A类,其中:A类称为:父类、基类、超类、superclassB类称为:子类、派生

2020-07-08 21:23:05 262

原创 JAVA学习之this关键字

1.this是一个关键字,翻译为:这个2.this是一个引用,是一个变量,this变量中保存的内存地址指向了自身,this存储在JVM堆内存java对象的内部。创建100个java对象,每个对象都有this,也即有100个不同的this3.this可以出现在“实例方法”当中,this指向当前正在执行这个动作的对象(this代表当前对象)。4.this不能使用在带有static的方法当中5.用来区分局部变量和实例变量的时候this不可以省略6.this可以用在构造方法中,通过当前的构造方法调用其他构

2020-07-07 16:01:26 188

原创 JAVA学习之构造方法

一、构造方法1.构造方法又称构造函数/构造器/Constructor2.构造方法的语法结构:[修饰符列表] 构造方法名(形式参数列表){ 构造方法体;}3.回顾普通方法的语法结构:[修饰符列表] 返回值类型 方法名(形式参数列表){ 方法体;}4.对于构造方法来说,“返回值类型”不需要指定。也不能写void,只要写了void,这个方法就成为普通方法了。5.对于构造方法来说,构造方法的方法名必须和类名保持一致6.构造方法的作用::构造方法存在的意义是,通过构造方法的调用,可以

2020-07-05 21:54:45 486

原创 JAVA学习之对象的创建和使用

一、回顾public class Student{ //类体=属性+方法 //属性【存储数据采用变量的形式】 //由于变量定义在类体中,方法体之外,这种变量称为成员变量 //每个学生都有学号,但每个学生的学号不同 //所以要访问这个学号必须先创建对象,通过对象去访问学号信息 //学号信息不能直接通过类去访问,所以这种成员变量又被叫做实例变量 //对象又被称为实例,实例变量又被称为对象变量【对象级别变量】 //不创建对象,no变量的内存空间不存在 int no; St

2020-07-02 20:45:29 357

原创 JAVA学习之面向对象

JAVA学习之面向对象一、面向过程和面向对象的区别1.面向过程的开发中没有独立体的概念,使用因为所以(因果关系)去完成项目的开发。2.面向对象不关心底层的实现原理,只关心某个独立的个体可以实现什么功能。面向对象更符合人类的思维过程。比如电脑主机中的内存条,独立显卡等等可以替换掉,只要完成其功能即可。3.对比-面向过程:主要优点是 实现的具体过程,因果关系【集成显卡的开发思路】*优点:对于业务逻辑比较简单的程序,可以达到快速开发的目的,前期投入成本比较低。*缺点:采用面向过程的方式开发很难解决非

2020-06-30 21:54:24 109

原创 JAVA学习之方法递归

JAVA学习之方法递归代码引出:public class RecursionTest { public static void main(String[] args) { System.out.println("main begin"); doSome(); System.out.println("main over!"); } public static void doSome() { System.out.pr

2020-06-30 17:03:31 179

原创 JAVA学习方法之方法重载

JAVA学习方法之方法重载一、方法重载的引出sumInt, sumDouble, sumLong方法虽然功能不同,但是功能是类似的,都是求和,分别起了三个不同的名字,对于程序员来说方法使用和记忆不方便。二、方法重载就是这样一种机制:功能虽然不同,但是功能类似的时候,可以让程序员使用这些方法的时候就像在使用同一个方法一样,这样程序员以后编写代码就比较方便,也无需记忆更多的方法名,代码也会很美观。调用方法的时候就像在使用一个方法一样,参数类型不同则调用的方法不同,区分方法不在依靠方法名,依靠的是参

2020-06-30 11:27:28 145

原创 JAVA方法学习之二(内存分析)

从图中可以看到,方法之间传送的是数据,而不是变量,仅仅把数据跨方法传送。在方法内部,代码按照自上而下的顺序依次执行方法之间相互调用,是在栈内存(主要存储局部变量)的完成的,因此需要满足先入后出的原则进行。方法中的局部变量在方法弹出后会被销毁。...

2020-06-29 22:17:48 97

原创 JAVA关于方法的学习

JAVA关于方法的学习一、一个小想法Q:Java中是不是每一个类都需要一个main函数A:不是的,main是程序的入口,一个项目中可以只有一个main,但是我们在写不同的类的时候可以先给他们编写main入口,方便我们进行测试。二、方法的结构方法:[修饰符列表public static] 返回值类型(int…) 方法名(形式参数列表){//方法体}三、方法执行过程中的内存分配方法区存储代码片段,方法开始运行则进入栈内存,遵循先入后出的原则...

2020-06-29 22:02:16 109

图的基本操作

图的建立插入删除

2016-11-16

二叉树递归C语言版

二叉树的递归算法,注释详细

2016-11-16

约瑟夫问题C语言版

自己写的约瑟夫问题的解决办法,内的注释十分详细

2016-11-16

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

TA关注的人

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