自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 springboot整合elasticsearch入门demo

本文是基于springBoot的elasticsearch入门demo,主要包含: (1)索引的增删改查 (2)文档的增删改查 先看项目结构: 1.创建maven工程,pom.xml文件如下: <?xml version="1.0" encodin...

2020-07-05 17:01:56 13 0

原创 springBoot整合rabbitmq入门demo

本文主要是基于springBoot,使用rabbitmq,主要包括: (1)fanout,发布与订阅模式 (2)routing,路由模式 (3)topics,通配符模式 先看看项目结构,一个生产者工程,一个消费者工程: 一、 fanout,发布与订阅模式 1. 生产者代码:...

2020-07-05 16:46:43 9 0

原创 mysql按周统计

按年、按季度、按月、按周统计数据,都是比较常见的需求,本文主要聊聊按周统计在mysql中是如何实现的: 现有操作记录表,operate_log,部分数据如下: 假设需要统计,每个用户每周的操作次数,可以这样写(这里是周一开始,周日结束): SELECT user_id, ADDDATE...

2020-06-07 23:21:53 42 0

原创 前后端分离,使用websocket刷新token

之前提到过刷新token的思路:关于刷新token的几点思考 现在,springBoot + vue的项目中,使用websocket刷新token,来解决token过期后如何刷新的问题。 思路也很简单,就是在出现token解析出现过期异常时,捕获它,重新生成token,一般会设置一个时间限制,...

2020-06-01 23:36:47 134 0

原创 基于springBoot+Vue的在线考试之数据库设计

接着上篇博客,基于springBoot+Vue的在线考试系统总体概述,现在聊聊数据库表的设计 简单说一下: (1)最下面的五张表,是用户-角色-权限表,包含两张中间表,因为是多对多的关系 (2)中间四张表,是题库表,四种类型的题目,各占一张表,这里,其实设计成一张总表,不用分成四...

2020-05-31 11:24:33 182 0

原创 基于springBoot+Vue的在线考试系统总体概述

这段时间,做了一个基于SpringBoot+Vue的在线考试系统,支持填空题、判断题、单选题、多选题 项目实现了基于url的访问控制,前端路由动态生成。目前包含3种角色(管理员,老师,学生),主要功能如下: (1)在线考试 (2)查看答题情况 (3)试卷管理 (4)题库管理 (5)用户...

2020-05-30 21:24:25 201 0

原创 springBoot整合websocket实现服务端向客户端推送消息

Http只能由客户端发起请求,服务端返回请求,这就导致如果服务端有新的消息需要发送给客户端就比较麻烦,所以websocket就应运而生了。下面是springBoot整合websocket,实现服务端推送消息到客户端的一个小demo,这里使用的是定时任务的方式来模拟这种推送,实际使用中,可以根据情况...

2020-05-30 15:03:25 123 0

原创 使用CSS :before 选择器追加内容

对于文本域,经常有这样的需求,显示:您还可以输入X字,公司的框架,也做了统一处理。但是,最近的项目,缺需要这样的提示:不超过XX个字,您还可以输入XX个字,也就是在此之前显示 “不超过XX个字,”。遇到这个问题的第一反应,就是操作dom,直接覆盖原有的内容,但是这样操作不免有些繁琐,发现可以使用c...

2020-05-28 16:03:53 45 0

原创 elementUI的select切换单选和多选,报错Cannot read property value of undefined

如题,在使用el-select时,发现切换单选和多选,会报错,单独使用是正常的,从多选切换到单选也是可以的,但是从单选切换到多选,就会报上述错误。 我是弹框里面要根据下拉来切换单选和多选的: <el-dialog :title="titleMap[curren...

2020-05-26 21:39:37 48 0

原创 关于fetch-registry.eureka.fetch-registry配置

关于eureka的两个配置: eureka.client.register-with-eureka //表示是否将自己注册到Eureka Server eureka.client.fetch-registry //表示是否从Eureka Server获取注册的服务信息 ...

2020-05-25 16:18:39 136 0

原创 关于刷新token的几点思考

前后端分离,使用token作为身份认证,会存在一些问题,如何刷新token,便是其中一个。 个人觉得可以分为两大类: (1)前端请求刷新token,可以是主动请求刷新,也可以是被动去请求刷新token (2)后端默默刷新token,无须前端请求 一、前端请求刷新token 这里又可以...

2020-05-11 23:09:52 167 0

原创 前后端分离,Excel导入

Excel的导入和导出也是比较常见的需求,Excel导入之前写过了,可参考:前后端分离,Excel导出实现,现在看看Excel导入如何实现,先大概说一下思路: (1)首先,最好限制Excel中输入的数据的,提供一个导入的模板(这里暂时没做) (2)读取Excel导入的数据,难点是怎样解析数据 ...

2020-05-04 13:14:50 280 0

原创 前后端分离,文件上传下载(springBoot+vue+elementUI)

文件上传与下载是比较常见的功能,比如上传附件和头像等等,本篇博客主要讲前后端分离的情况下,如何实现文件上传下载,写的是demo,完整功能可参考springBoot+shiro+vue的学生管理系统(二、总体功能及登录功能),新增文件上传下载的功能,都是在它的基础之上完成的。这里会用到element...

2020-05-04 13:02:46 801 0

原创 前后端分离,Excel导出实现

本篇博客主要记录一下,springBoot + vue前后端分离的项目,如何实现Excel导出功能,项目代码可以参考之前的一篇博文:springBoot+shiro+vue的学生管理系统(二、总体功能及登录功能) 1.添加POI依赖: <!-- excel导出需要的...

2020-04-24 23:11:09 1143 0

原创 LeetCode 771 宝石与石头

给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 示例 1: ...

2020-04-24 15:27:08 52 0

原创 在排序数组中查找数字(Java实现)

题目:统计一个数字在排序数组中出现的次数。注意,这里指的是升序数组。例如: 2,4,6,6,7,25 如果查找目标是 6,那么就应该返回2,因为6出现了2次 如果查找目标是9,那么就返回0,表示没有出现。 因为数组是有序的,而且是升序,那么很容易就想到了二分查找法来解决,但是,正常的二分...

2020-04-23 09:48:51 89 0

原创 关于nvl(sum())与sum(nvl())使用注意问题

在oracle数据库中,nvl(查找的值,默认值)和sum(),常常用来统计数据。但是,谁在里面,谁在外面,却是有区别的。 (1)当存在null值时,sum()返回空,但是nvl,可以指定默认值,这样就可以避免null带来的不利影响 (2)当没有匹配数据时,也就是一行数据的都没有,sum()同...

2020-04-22 15:57:47 162 0

原创 springSecurity实现基于资源的访问控制

通过自定义springSecurity的授权逻辑,参考上篇博客 :springSecurity授权简单分析 ,你会发现它的使用场景是 基于角色的访问控制,网上很多文章写的也是基于角色的权限控制。但是,我很觉得很诧异,为什么很少有人思考 基于资源的访问控制?毕竟,在shiro中是可以实现的。为什么要...

2020-04-17 21:33:37 268 0

原创 springSecurity授权简单分析

弄完了认证流程,当然要看看授权是怎样进行的了。这里,不会把每一步的代码都贴出来,完整的代码,已经放到了GitHub:https://github.com/qiuxinfa/springSecurity-study 当访问系统的某个接口时,比如http://localhost:8080/admin...

2020-04-16 22:26:03 82 0

原创 springSecurity表单登录认证流程分析

在上一篇博客springSecurity自定义认证逻辑 中,通过实现UserDetailsService接口自定义了认证逻辑。现在简单分析一下,它的认证流程是怎样的,个人理解,有错误的地方恳请指出。假设启动系统后,发出一个请求:http://localhost:8080/user/me (1)R...

2020-04-15 22:08:08 114 0

原创 springSecurity自定义认证逻辑

在springSecurity入门demo 中,用户信息是放在内存中的,而在真实的项目中,肯定是不会是这样的,一般是都是放在数据库中存储的。示例代码在GitHub中:https://github.com/qiuxinfa/springSecurity-study 。实现如下功能: (1)自定义用...

2020-04-14 22:58:06 87 0

原创 springSecurity入门demo

与shiro一样,springSecurity也是一个安全框架,核心也是认证和授权,本篇博客将使用springBoot做一个springSecurity的入门demo,完整代码已放到了GitHub:https://github.com/qiuxinfa/springSecurity-study 实...

2020-04-14 21:44:18 41 0

原创 springSecurity报错:Cannot pass a null GrantedAuthority collection

Cannot pass a null GrantedAuthority collection,意思是不能传递一个空的已授权的集合,这是因为在配置类中没有配置角色,也就是没有给用户授予权限,它的权限集合是空的: @Override protected void configure...

2020-04-11 08:32:49 223 0

原创 shiro授权流程分析

上一篇博客,写了shiro认证流程分析 ,shiro主要功能是认证和授权,接下来,看看授权是如何进行的,既然要授权,当然会执行我们自定义的授权方法,所以在授权方法打个断点看看情况,当访问需要角色或者权限的接口时,就会来到授权方法(这里暂时不考虑缓存的因素,可以看做是第一次请求): 我们看一下...

2020-04-05 14:00:38 59 0

原创 shiro认证流程分析

在上一篇博文springboot整合shiro入门 中,简单介绍了如何使用shiro进行认证和授权,下面通过debug的方式(示例代码还是上一篇博客使用的代码),分析一下shiro是如何进行认证的: 首先,回顾一下,处理登录的方法: @PostMapping("/do...

2020-04-05 12:55:21 39 0

原创 springboot整合shiro入门

shiro作为安全框架,使用还是比较多,而且相对来说,比较容易上手。下面将使用springboot来整合shiro,实现的功能如下: (1)实现访问控制,未登录时,只能访问登录接口 (2)实现角色和权限的访问控制 示例代码,已放在了GitHub上:https://github.com/qiu...

2020-04-04 22:02:22 21 0

原创 关于mysql8的时间字段和页面时间总是相差一天的问题

在做项目的时候发现mysql8的2个问题,不清楚是不是mysql8才有的,先记录一下。 数据库存储的时间字段的值和页面时间总是相差一天,分两种情况: (1)写入的时候,数据库存储少了1天。比如说,页面选的时间是2020年3月29日,传入到后台的时候,时间也是3月29,但是写入到数据库的时候,...

2020-03-29 18:06:18 134 0

原创 Spring的AOP实现原理源码解析

上一篇博客写了Spring IOC相关的内容,Spring的IOC实现原理源码解析,希望可以先看完IOC的相关原理,再看AOP的文章,因为Spring的AOP是建立在IOC的基础之上的。本文主要了解以下内容: (1)怎样获取增强器,在这里,也就是通知方法 (2)怎样创建代理对象 至于代理对象...

2020-03-20 23:58:33 36 0

原创 Spring的IOC实现原理源码解析

我们经常说IOC和AOP是Spring的两大核心,那么其IOC功能是如何实现的呢?本文将以xml配置的形式,通过debug的方式,追踪源码,一层层掀开Spring IOC的神秘面纱。至于为什么用xml的形式,而不是注解的形式,主要还是觉得xml的方式比较容易理解源码,虽然注解是现在的趋势。先看下配...

2020-03-18 00:25:11 54 0

原创 Spring入门(四)之AOP

Spring的AOP,即面向切面编程。aop,一般用于公共的代码的设置,比如日志记录、事务处理等,下面以日记记录为例,简单介绍下,如何配置aop。项目代码已放入GitHub上:https://github.com/qiuxinfa/spring-study。注解版AOP点这里。 1.pom.xm...

2020-03-12 22:49:24 23 0

原创 Spring入门(三)之DI

Spring的DI,即依赖注入,个人理解,就是给属性赋值。概念性的东西,不多说了。需要项目代码,点这里。 Spring给属性赋值,有2种方式,一是通过有参构造函数,二是通过set方法。 1.实体类:有两个构造函数 public class Person { private Stri...

2020-03-12 21:08:58 18 0

原创 Spring入门(二)之IOC

Spring的IOC,即控制反转,由Spring来创建对象。不知道,你会不会有这样的疑问:我们为什么需要Spring创建对象呢?明明可以自己通过new的方式来创建对象,何必多次一举呢?还要那么多配置!这就要结合多态这个东东来理解了。项目的代码,我会放在GitHub上:https://github....

2020-03-12 20:54:08 20 0

原创 Spring入门(一)之helloWorld

关于Spring的介绍有很多了,本篇文章旨在快速入门使用Spring。说起Spring,很多人都会脱口而出:IOC、DI、AOP等术语。简单说一下: (1)IOC,是控制反转。这里,就有两个疑问了: a)第一,控制什么? 这里的控制,主要是指控制对象的创建、销毁等 b)第二,反...

2020-03-12 20:19:56 29 0

原创 MyBatis进阶之插件开发(自定义分页插件)

mybatis的插件,实际上是拦截器,通过这些插件可以改变mybatis的默认行为。mybatis可以拦截的对象有: (1)Executor,执行的SQL全过程,包括组装参数、组装结果返回和执行SQL的过程等都可以拦截 (2)StatementHandler,执行SQL的过程,拦截该对象可以重...

2020-03-08 13:45:38 38 0

原创 MyBatis进阶之普通SQL执行流程

mybatis作为一款持久层框架,最为主要的职责,当然是执行我们在mapper映射文件中写的sql语句,但是sql语句也分两种: (1)普通sql语句 (2)动态sql语句,包含了<if | foreach | choose | when | otherwise | where | se...

2020-03-07 21:47:17 37 0

原创 MyBatis入门之二级缓存

mybatis的二级缓存是namespace级别的,不同于一级缓存,二级缓存是SqlSession共享的,并且默认是不开启的,如果要开启,需要在mybatis的配置文件中的settings节点下,手动设置: <!-- 开启二级缓存,默认是false --> ...

2020-03-05 21:41:13 17 0

原创 MyBatis入门之一级缓存

mybatis的一级缓存作用域是SqlSession的,所以,对于同一个SqlSession,相同的查询,只有在第一次查询的时候才会到数据库查询,其余都是从缓存中拿。但是,如果两次查询之间,发生了数据更新(包括增、删、改)操作,则会清除缓存。mybatis默认是开启一级缓存的。此外,如果: (1...

2020-03-05 20:58:42 39 0

原创 MyBatis入门之一对多、多对多查询

在生活中,一对多的例子更为普遍,例如:一个班级有多个学生,一个家庭有多个成员,一个部门有多个员工等等。下面,我将以一个作者有多个博客为例讲解,如何使用mybatis进行一对多关联查询。同样的,代码也会放在GitHub上,地址为:https://github.com/qiuxinfa/mybatis...

2020-03-04 23:19:53 42 0

原创 MyBatis入门之一对一查询

一对一的关系在生活中还是比较常见的,比如一本书有一个作者(暂时不考虑一本书多个作者的情况)、一个人对应一个身份证等待。此外,一对一查询也是比较简单的,下面将以一个人、一个身份证为例,说明如何使用mybatis进行关联查询。同样的,相关的代码,也会放在GitHub上,GitHub地址:https:/...

2020-03-04 21:43:36 23 0

原创 MyBatis入门之接口绑定与CRUD实例

前一篇博客写了MyBatis入门之HelloWorld,介绍了如何配置mybatis及使用。这一篇博客,将在上一篇学习的基础之上,学习如何使用接口绑定Mapper映射文件。毕竟,接口在开发中是比较常用的。项目代码,我会放到GitHub中,该项目的GitHub地址:https://github.co...

2020-03-04 20:23:56 38 0

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