摘要:
1.配置文件类型 SpringBoot的配置文件application有两种文件格式,两种配置的内容是一致的,只是格式不一致。 1.application.properties 2.application.yml或者application.yaml 一:application的配置非常灵活,所有ap 阅读全文
摘要:
背景 当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下: spring: profiles: active: @project.profile@ #根据maven 动态配置profile spring: profiles: dev demo: lengleng_de 阅读全文
摘要:
Filter的位置相对比较尴尬,在MVC层之外,所以无法使用SpringMVC统一异常处理。 虽然SpringCouldGateway支持MVC注解,可以使用SpringMVC统一异常处理处理异常https://www.jianshu.com/p/6f631f3e00b9 但是对于Filter抛出的 阅读全文
摘要:
为什么需要全局异常处理 在传统 Spring Boot 应用中, 我们 @ControllerAdvice 来处理全局的异常,进行统一包装返回 // 摘至 spring cloud alibaba console 模块处理 @ControllerAdvice public class Console 阅读全文
摘要:
背景 关于Mybatis插件,大部分人都知道,也都使用过,但很多时候,我们仅仅是停留在表面上,知道Mybatis插件可以在DAO层进行拦截,如打印执 行的SQL语句日志,做一些权限控制,分页等功能;但对其内部实现机制,涉及的软件设计模式,编程思想往往没有深入的理解。 本篇案例将帮助读者对Mybati 阅读全文
摘要:
AMQP协议 核心概念 server:又称broker,接受客户端连接,实现AMQP实体服务。 connection:连接和具体broker网络连接。 channel:网络信道,几乎所有操作都在channel中进行,channel是消息读写的通道。客户端可以建立多个channel,每个channel 阅读全文
摘要:
1.自定义TaskExecutor (1)要想执行异步任务,还需要线程池,默认情况下Spring会在 ioc容器 中找唯一的org.springframework.core.task.TaskExecutor,或者一个 bean name 为"taskExecutor" 的java.util.con 阅读全文
摘要:
首先,我们先来看看一次查询/更新语句流程图 本文会将重点放在执行器<->存储引擎之间的交互。 mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存中,当一段时间后,再一次性将多个修改写到磁盘上,减少磁盘io成本,同时提高操作速度。 MySQL通过WAL(write-ahead 阅读全文
摘要:
问题: 平常使用的时候,redis的db是写死的,如何去动态的修改呢? 解决办法 新建一个RedisDBChangeUtil.java @Component public class RedisDBChangeUtil { @Autowired private StringRedisTemplate 阅读全文
摘要:
2018-08-29更新:由于pac4j 3.1 版本未支持单点登出,故升级到 4.0.0 版本,pac4j-cas 升级到 3.0.2版本,可以实现单点登出。 首先是 maven 配置。 <dependency> <groupId>org.apache.shiro</groupId> <artif 阅读全文
摘要:
SpringCloud的项目用JWT做身份验证,对于token过期时间的刷新策略整理如下图: 刷新策略 在登录接口中返回两个token,一个是用来请求业务接口验证身份信息的accessToken,一个是过期后用来获取新的token的refreshToken,refreshToken中不携带权限等信息 阅读全文
摘要:
Sentinel 触发限流的实现类为 FlowSlot。我们再来简单思考一下,要实现触发限流,至少需要完成如下几件事情: 收集实时调用信息。 设置触发限流规则 根据限流规则与调用信息来决定是否对请求进行限流等。 如何收集实时调用信息在前面的文章中已详细介绍,请带着上述问题开始本节的探讨。 1、初始 阅读全文
摘要:
前言 负载均衡是指在集群中,将多个数据请求分散在不同单元上进行执行,主要为了提高系统容错能力和加强系统对数据的处理能力。 在 Dubbo 中,一次服务的调用就是对所有实体域 Invoker 的一次筛选过滤,最终选定具体调用的 Invoker。首先在 Directory 中获取全部 Invoker 列 阅读全文
摘要:
1.调优的目的 1.控制GC的行为:GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为。 2.控制JVM堆栈大小:JVM在内存分配上不需要你修改,但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小,同时,还要需要控制总的JV 阅读全文
摘要:
SPI(Service Provider Interface) 本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。 在Java中SPI是被用来设计给服务提供商做插件使用的。基于策略模式 来实现动态加载的机制 。我们在程序只定义一 阅读全文