自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot整合分布式Shiro

Spring Boot整合分布式Shiro1. shiro基础知识Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都是做一个权限的安全框架,但是与Spring Security 相比,在于 Shiro 使用了比较简单易懂易于使用的授权方式。shiro属于轻量级框架,相对于security简单的多,也没有security那么复杂。Subject:主体,代表了当

2020-07-29 19:38:58 1179

原创 关于Sentinel1.7.2 报错“最小请求数目需大于0”

由于此前使用过Sentinel1.8.0,然后再使用Sentinel1.7.2,就报这个错。清除掉浏览器缓存就行了。折腾一下午。。。

2020-11-08 19:02:15 336

原创 Spring Cloud About OpenFeign

Spring Cloud OpenFeign一、Feign和OpenFeign简介Feign是一个Netflix开源的声明式HTTP Client,它使得编写Web服务更加容易。在使用Ribbon+RestTempla时,里用RestTemplate请求的封装处理,形成了一套模板化的调用方法。但是在实际开发中,对于服务依赖的调用可能有多处,因此通常会针对每个微服务自行封装一些客户端类来包装这些服务依赖调用。所以,Feign就在此基础上进行了包装(所以Feign是集成Ribbon的),Feign只需要定义

2020-11-01 22:54:34 250

翻译 幂等性原理

什么是幂等性HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the s

2020-09-14 22:49:01 883

原创 静态代理、动态代理和反射

静态代理、动态代理和反射一、解析代理的含义要讲清楚代理,最好想说一下比喻。代理类就像是中介,委托类就是客户,中介直接跟房主沟通(相当于委托类的原始方法操作,原始方法就是客户跟房主沟通的),中介顺便抽一下油水(相当于代理类的增强操作,所谓增强操作就是附加在原始方法前后的操作,让原来的操作得到增强),然后中介就代客户完成了买房沟通的操作,这就是代理的意思。二、静态代理静态代理就是代理类和目标类实现同一个接口,让代理类持有目标类对象,在代理类中执行目标类方法,实现增强。比如有个Student接口,Stud

2020-08-20 18:24:35 340

原创 关于java异常及全局异常处理实现

关于java异常一般来说,当程序遇到错误,应该尽量处理错误,然后按照正确的姿势退出程序。否则,你可以想象一下当客户使用系统的时候,突然系统异常,直接报了一堆用户不知道的代码提示,这是多么难堪的局面。一、异常的结构异常有一个共同的祖先Throwable,其关系结构如下如图所见,Throwable有两个重要的子类,Error和Exception。ErrorError代表的错误是程序无法处理的,这表示程序中出现了严重的问题,比如OutOfMemoryError、ThreadDeath,当出现这些

2020-08-19 16:36:32 1216

原创 使用shiro时发生的报错处理

1.Unable to evaluate the expression Method threw 'org.hibernate.LazyInit no SessionHibernate 懒加载在查询实体的时候,不立即加载关联属性,但是在一次主体查询完成后立即关闭Session。比如说user和role多对多关联采用懒加载,在查询user的时候就不会立即查询加载user的role,但是查询完user后Session就关闭了。想要避免这种错误就要保持操作的事务性,即在查询user时一直保持session。只需

2020-07-29 11:36:17 531

原创 JPA+MySQL详解

JPA+mySQL详解首先明确两个端的关联关系,在java实体类定义中,含有mappedBy属性的时关系被维护端,含有关联字段的是关系维护端。一、OneToOne关联关系假设有实体People和Address,他们的关系是一对一,再设定People实体是关系的维护端,应有如下设计//People.java@Entity@Table(name = "people")public class People { @Id @GeneratedValue(strategy = Gener

2020-06-28 23:45:56 3640

原创 Spring Boot Maven profile

Spring Boot Maven profile一、配置pom.xml配置与pom文件中与dependencies属性同级的profile<profiles> <profile> <id>dev</id> <properties> <!-- 自定义字段,这里用来代表当前环境 --> <profiles.active>dev<

2020-06-28 10:08:04 1229

原创 mongo aggregate聚合出现没有配置游标问题:The cursor option is required

应该是由于mongodb的版本问题,据说升级版本就OK了。如果非要不换版本,请参靠一下代码使用聚合操作。List<JSONObject> result = new ArrayList<>(); DBCollection collection = mongoTemplate.getCollection("dc_core_report"); List<DBObject> items = new ArrayList<>(); DBObject un

2020-05-11 21:00:59 904

原创 mongotemplate聚合操作 - Specified class is an interface

这是我在使用MongoTemplate时使用管道操作unwind发生的,一开始我以为是返回的对象有问题,无法映射上去。实际上,使用unwind确实是带来数据结构的变化,例如:{ "_id" : ObjectId("5951ca15567ebff0d5011fbb"), "name" : "陈晓婵", "address" : "北京朝阳", "lunch" : [ ...

2020-04-03 13:13:34 393

原创 数据库、数据源、数据库连接、数据库连接池的关系

数据库、数据源、数据库连接、数据库连接池的关系数据库数据库就是包含了很多数据的容器,当然这些数据可能存在不同的小容器(表)里面,总之,如果用水来形容数据,那么数据可就是水库。数据源数据源是连接到数据库的一类路径,它包含了访问数据库的信息(地址、用户名、密码)。数据源就像是排水管道。数据库连接数据库连接是根据数据源产生的实际连接上数据库的路径,数据库连接就像是管道里面的水管,这些水管都按...

2020-02-07 15:18:01 2669

原创 关于SpringBoot 2.x的@Autowire注解的问题

关于SpringBoot 2.x的@Autowire注解的问题1. 为什么@Autowire最好注解在接口而不是实现类Spring中使用了大量的AOP技术,默认使用的是JDK动态代理,JDK动态代理只能对实现接口的类生成代理,而不能针对类,得到的代理类是实现类的增强(也就是多了一些功能)。如果注解在实现类上将不能使用JDK动态代理技术。并且,当注解在接口上的时候才会按@Autowire的注入B...

2019-12-19 15:37:47 728

原创 浅谈Redis分布式锁

Redis分布式锁为什么需要分布式锁在java代码中,synchronized关键字和一些java类型锁都是线程级别的,只能对同一个JVM中的线程有效。假如在同一个操作系统中有两个不同的进程中的两个线程对共享资源进行访问,线程锁是不起作用的。但是现代软件系统在很多情况下更为复杂,不仅是在同一操作系统中的不同进程的不同线程可能对共享资源进行访问,在分布式系统环境下,不同操作系统的中不同进程的不同...

2019-11-20 10:37:41 141

原创 Spring Boot JPA

Spring Boot JPAJPA(Java Persistence API)意即Java持久化API,主要包括三方面的技术ORM元数据API:操作实体对象进行CRUD操作查询语言:通过面向对象的JPQL查询数据JPA与Hibernate、Spring Data JPAJPA是一种ORM规范,提供了一些API接口,并不是ORM实现。Hibernate Jpa则是Hibernat...

2019-11-18 11:34:01 276

原创 面向切面编程AOP

面向切面编程AOPAOP的理念AOP(Aspect Orientd Programming)面向切面编程,是指将分散在各业务逻辑代码中相同代码块抽取出来,在业务流程执行需要时,再将这段代码块注入到业务流程的指定位置。AOP的实现关键是AOP代理,AOP代理分为静态代理和动态代理。AOP静态代理AOP静态代理的代表是Aspect,与Spring AOP的主要区别是其基于字节码操作。Aspec...

2019-10-10 22:33:35 114

原创 自己整理的Spring Boot的注解

Spring Boot注解注解解析@MapperScan@MapperScan加在应用程序类上,通过指定路径表明对该路径所有的接口都具有@Mapper注解@Mapper可以不用再写mapper的xml映射文件,自动生成@Mapper标注的接口的实现类,生成的实现类自带@Component注解@RequestBody接收的参数来自requestBody,通常用...

2019-09-27 15:58:00 170

原创 Spring Boot 定时任务和邮件任务

Spring Boot 定时任务和邮件任务Spring Boot真是一个贴心的快速开发框架,你还在为设置Linux定时任务烦恼吗,你还在为寻找合适的邮件插件烦恼吗,对不起,我没有这些烦恼,因为我使用spring boot定时任务首先要在主程序类加上启用定时任务的注解@EnableScheduling@EnableScheduling @SpringBootApplicationpu...

2019-09-27 11:25:27 259

原创 Spring Boot消息队列之RabbitMQ

消息队列什么是消息队列(message queue)消息队列是应用系统之间通信的方法,本质是队列,具有先进先出(FIFO)的特点,队列的元素是消息,所以叫消息队列,是一种中间件。应用场景场景说明:用户注册后,需要发送邮件和短信,然后返回客户端完成验证,传统方式有串行和并行方式。(异步处理)串行方式:将注册信息写进数据库后,再发送邮件,然后发送短信,三个操作完成后才返回客户端,很慢。...

2019-09-26 17:31:51 700

原创 BeanNotOfRequiredTypeException: Bean named 'consumerServiceImpl' is expected to be of type

在测试Spring Boot功能代码的时候,出现了这个错误Unsatisfied dependency expressed through field 'consumerService';nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'consu...

2019-09-26 17:05:05 6978

原创 Java 多线程 初阶

Java 多线程 初阶并发与并行并发:多个线程在一段时间内交替运行,某一时刻只有一个线程在运行并行:多个线程在某一时刻同时运行进程和线程进程:是拥有系统资源的基本单位,有独立的地址空间,切换开销较大线程:是系统调度的基本单位,线程本身不拥有系统资源,同属一个进程的多个线程共享进程中的资源,没有独立的地址空间,只是进程的不同执行路径,切换开销较小多线程的优缺点优点:多线程可...

2019-09-20 16:51:28 125

原创 Spring Boot集成MongoDB

Spring Boot集成MongoDB关于MongoDBMongoDB是由C++编写的,基于分布式文件存储的NoSQL数据库。它将数据存储为一个文档,文档的数据结构由key-value组成,因而MongoDB文档类似JSON对象。MongoDB支持海量存储,性能很高,查询很快。MongoDB可以快速并且安全的实现故障节点转移,具有高可用性;MongoDB支持地理位置、二维空间索引;当数据规模...

2019-09-18 18:05:29 176

原创 Spring Boot集成redis(redsiTemplate操作Value,List,Set,Hash,缓存注解,事务,流水线)

Spring Boot集成redis(redsiTemplate,缓存注解,事务,流水线,redis分布式锁)redis是一个高性能的NoSQL的key-value内存数据库,主要被用作缓存,支持丰富的数据结构如String、List、Set、ZSet、Hash。Spring Boot对于redis集成有两种使用方式:一种是手动操作RedisTemplate,另一种是使用redis缓存注解。...

2019-09-06 15:20:01 856

原创 关于cookies、session、token(JWT)的浅薄理解

关于cookies、session、token(JWT)的浅薄理解无状态的HTTPWeb应用程序是使用HTTP协议传输数据的,而HTTP是无状态的,在一次数据通信完成后,客户端和服务器端的连接就会关闭,再一次需要通信交换数据就需要重新建立新的连接。也就是说,当前HTTP通信无从得知历史的HTTP通信交换过什么数据,这就是无状态。Cookies由于现在大部分的应用中需要前后的操作具有关联性,...

2019-08-06 11:33:19 267

原创 JAVA == 和 equal() 详细解释

关于 ==当使用 == 判断两个主数据类型(byte,int,double … )的变量时, == 号判断的是两个变量的值是否相等。当使用 == 判断除了两个引用类型的两个变量时, == 号判断的是两个引用变量所指向的地址是否相等。关于 equals()equals()方法是超类Object的一个方法(),所有JAVA的类都继承于Object,意味着所有JAVA的类都有equals(...

2019-07-24 11:40:33 3880

原创 JDK安装和环境变量配置

安装JDK网址:https://www.oracle.com/technetwork/java/javase/downloads/index.htmlJava SE就是Java Standard Edit,翻译过来就是Java的标准版,点击DOWNLOAD。这个是JDK8,翻译过来是Java标准版开发者工具包第8版,要先选择接受证书条款才能下载,下载完直接安装,可以自己指定安装JDK的文...

2019-02-19 15:31:24 127

原创 Head First JAVA 读书笔记

一JAVA程序执行过程:源代码(.java) 经过编译形成字节码组成的 .class文件,启动JAVA虚拟机(JVM)来运行.class文件。JVM会将字节码转换成平台所能理解的形式来运行,所以JAVA是平台无关的。二JAVA中所有东西都会属于某个类,源文件.JAVA会被编译为类文件.class,真正被执行的是类文件。main()函数是程序的起点。三...

2018-12-20 00:18:22 180

原创 伸展树

伸展树提出的想法基于计算机基础概念的时间局部性原理和空间局部性原理:当某一个节点被访问,那么在不久之后它很有可能被访问,而且它的相邻节点也很有可能被访问。所以当访问一棵二叉查找树的一个比较深的节点时,如果能够使这个被访问的节点移动到根上使得它下次最快被访问并且能保持平衡的性质,再如果不仅使得被访问的节点下次被更快访问,而且能使得访问路径上所有节点下次能更快被访问,那这种数据结构就很有意思了。实...

2018-10-30 00:18:20 3449 1

原创 ALV树与树的平衡

ALV树,是指带有平衡条件的二叉查找树。这个平衡条件,就是左子树和右子树的高度差的绝对值小于等于1.然而,在对ALV树进行插入结点时,就有可能破坏了这种平衡。于是,为了使被破坏平衡的AVL树恢复平衡,就需要对这棵树进行旋转。根据实际,可以分为四种情况:情况1:在树B的左子树(L)的左子树(L)的位置上插入节点E(即LL)插入后:在树B的左子树的左子树的位置上插入节点E后,树A的左子树高度...

2018-10-05 23:51:50 1272

原创 树的一些基础概念

树的一些基础概念简单介绍树的一些概念简单介绍树的一些概念1.树叶:没有儿子的结点叫树叶。2.兄弟:具有相同父节点的结点。3.路径:沿着树的层次,从一个结点到另一个结点经过的是路径。4.路径的长:设路径经过的节点数为K,则经过的路径的长是K-1。5.结点的度:子节点的个数是结点的度。6.树的度:所有结点的度的最大值。7.结点的深度:设节点X,从根到X的路径的长就是结点的深度。8.结...

2018-10-05 20:05:17 200

原创 数据结构之树(Tree)

树(Tree)Q:为什么要用树?对于大量的数据,使用链表的线性访问的时间消耗很大。于是提出了树的概念。树的应用十分广泛,操作系统的文件目录就是典型的树形结构。大部分对树的操作的时间复杂度可以被干到O(LogN)。树的一般实现或表示方法这里介绍树的孩子兄弟表示法,另外还有别的表示方法,有兴趣可以自己查一下清华大学的教材。这里的数据域使用int类型方便测试,更一般的抽象数据结构...

2018-08-05 17:32:56 937

原创 数据结构之队列(Queue)

关于队列队列,顾名思义,也就是一条队伍,进入队伍的时候,只能从队尾排队,离开队伍的时候,只能从队首离开。队列也有数组实现和链式实现。队列的数组实现用一般数组实现队列的时候,入队,则在队尾插入一个元素,出队,则将队首的元素出队。那么,由于数组的长度是固定的,入队只能从队尾入队,因此经常性的出队会使得队首越来越靠近队尾,队首前面的数组空间不能被利用,导致大量的数组空间被浪费,显然这不是...

2018-07-15 19:19:04 492

原创 数据结构之栈(Stack)

栈栈有先进后出(FILO)的特点,就像叠放盘子,先放的盘子最后才能拿出来,要拿盘子总是从上面的盘子开始拿。栈就是这样一种东西。数组实现(ArrayStack)有一个TOP指针,这个指针是个整型值,当指针为-1时表示栈空,为0时表示有一个元素在栈中,为StackSize-1时表示栈满。代码太简单就不写解释了。#include&lt;iostream&gt;using names...

2018-07-09 23:28:24 557 1

原创 数据结构之链表(Linked-List)及操作

一、 数据结构之链表(Linked-List)线性表是最常用的存储结构,线性表的每个单元称为元素,元素拥有一个数据及一个地址线性表有两种物理存储方式:顺序存储方式和链式存储方式数组是具有代表性的顺序存储方式的线性表,单链表是具有代表性的链式存储方式的线性表。1.数组数组的内存是连续分配的,可以通过数组的索引直接获取对应的数据,其索引就是线性表中所说的元素的“地址”,但索引不是地...

2018-07-07 21:39:56 4036 3

原创 算法的时间复杂度

算法的时间复杂度常数级O(1) &amp;lt; 对数级O(log(n)) &amp;lt; 次线性级O(n^d),0

2018-05-21 16:47:20 100

空空如也

空空如也

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

TA关注的人

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