自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

masteryourself

代码是一种信仰

  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 07.Spring Cloud 之 Hystrix

1. 概述1.1 服务熔断1.1.1 雪崩效应在复杂的系统中,经常会出现 A 依赖于 B,B 依赖于 C,C 依赖于 D,…… 这种依赖将会产生很长的调用链路,这种复杂的调用链路称为 1-> N 的扇出。如果在 A 的调用链路上某一个或几个被调用的子服务不可用或延迟较高,则会导致调用A 服务的请求被堵住。堵住的 A 请求会消耗占用系统的线程、IO 等资源,当对 A 服务的请求越来越多,占用的计算机资源越来越多的时候,会导致系统瓶颈出现,造成其他的请求同样不可用,最终导致业务系统崩溃,这种现象

2020-07-18 18:21:26 162

原创 003.Spring Cloud Feign 使用 ApplicationListener 问题

1. 场景前提假设有这样一个场景:在一个 Spring Cloud Feign(Greenwich.SR6)应用中,希望在 Spring 容器启动之后对一些事件做监听,如接收到 ContextRefreshedEvent 事件后,需要做一次初始化操作。一般都是实现 ApplicationListener 接口来监听事件,然后在 onApplicationEvent() 方法里做相应的处理此时可能会遇到两种情况,一个是监听器中的 onApplicationEvent() 方法被调用了多次,还有一个即是在监

2020-06-14 12:35:28 1148 2

原创 002.Spring 使用 Async 导致循环创建异常

1. 环境搭建代码已经上传至 https://github.com/masteryourself/diseases ,详见 diseases-spring/diseases-spring-async-cycle 工程假设有这样一个场景:在一个被 Spring 容器管理的 SomeService 类中定义了两个方法,一个叫 doSomething(),另一个方法叫 doAnotherThing(),其中 doAnotherThing() 是被 @Async 注解标识的,现在在 doSomething(

2020-06-13 13:08:13 325

原创 09.Spring Boot 之 Actuator

1. 监控管理通过引入 spring-boot-starter-actuator,可以使用 Spring Boot 为我们提供的准生产环境下的应用监控和管理功能。我们可以通过 HTTP,JMX,SSH 协议来进行操作,自动得到审计、健康及指标信息等端点名描述autoconfig所有自动配置信息auditevents审计事件beans所有 Bean 的信息...

2020-04-20 11:53:03 194

原创 08.Spring Boot 之自定义 starter

1. 自定义 starter通常来说,启动器只用来做依赖导入,没有任何代码,所以需要专门来写一个自动配置模块如果是 Spring Boot 内部提供的组件,一般叫 spring-boot-starter-xxx,如果是第三方组件集成 Spring Boot,一般是叫 xxx-spring-boot-starter,如 mybatis-spring-boot-starter2. 环境搭建代...

2020-04-20 11:52:26 152

原创 07.Spring Boot 之启动原理

1. SpringBoot 默认的错误处理机制代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ,详见 tutorial-spring-boot-core/tutorial-spring-boot-errorhandler 工程1.1 浏览器请求错误浏览器发起的请求中,请求头是 text/html1...

2020-04-18 01:02:17 191

原创 06.Spring Boot 之 web 容器装配原理

1. 扩展 Spring Mvc代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ,详见 tutorial-spring-boot-core/tutorial-spring-boot-web 工程编写一个配置类(@Configuration),是 WebMvcConfigurer 类型,不能标注 @Enab...

2020-04-18 00:51:01 260

原创 05.Spring Boot 之错误处理机制

1. Web 自动配置原理前文已经分析过,@EnableAutoConfiguration 这个注解会给容器中导入 AutoConfigurationImportSelector 组件,AutoConfigurationImportSelector 实现了 DeferredImportSelector 接口,所以这里会延时导入,之前版本没有实现这个接口,那么就会调用 selectImports(...

2020-04-18 00:46:24 237

原创 06.Spring Framework 源码解析之 web 启动原理

1. 环境搭建代码已经上传至 https://github.com/masteryourself/spring-framework,工程是 tutorial-spring-web2. 源码解析详细的源码注释可参考 https://github.com/masteryourself/spring-framework2.1 Spring 父子容器构造2.1.1 流程分析基于 se...

2020-04-16 00:05:29 364

原创 05.Spring Framework 源码解析之事务

1. 环境搭建代码已经上传至 https://github.com/masteryourself/spring-framework,工程是 tutorial-spring-tx2. 源码解析详细的源码注释可参考 https://github.com/masteryourself/spring-framework2.1 组件导入2.1.1 流程分析@EnableTransact...

2020-04-16 00:04:15 152

原创 04.Spring Framework 源码解析之 AOP

1. 环境搭建代码已经上传至 https://github.com/masteryourself/spring-framework,工程是 tutorial-spring-aop2. 源码解析详细的源码注释可参考 https://github.com/masteryourself/spring-framework2.1 组件导入2.1.1 流程分析@EnableAspectJ...

2020-04-16 00:03:16 238

原创 10.Spring Framework 之 Log

1. Spring4 日志在 Spring4 中使用 log4j 日志框架,只需要引入 log4j jar 包即可1.1 环境搭建代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ,详见 tutorial-spring-framework/tutorial-spring-framework-log 工程...

2020-04-15 23:54:34 267

原创 09.Spring Framework 之 Lookup

1. Method Injection详见文档 https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-method-injectionIn most application scenarios, most beans in the co...

2020-04-15 23:53:27 137

原创 04.Spring Boot 之 MVC 装配原理

1. Java 日志体系1.1 市面上常用的日志框架日志门面技术有 JCL(Jakarta Commons Logging)、SLF4j(Simple Logging Facade for Java)、jboss-logging,它们都不提供具体的日志实现日志实现技术有 Log4j、JUL(java.util.logging)、Log4j2、Logback ,它们都提供了不同的 ...

2020-03-21 20:21:58 180

原创 03.Spring Boot 之日志体系

1. profile代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ,详见 tutorial-spring-boot-core/tutorial-spring-boot-profile 工程1.1 多 profile 环境在编写配置文件时,文件名可以是 application-{profile}.p...

2020-03-21 20:20:21 169

原创 02.Spring Boot 之配置文件

1. 配置文件SpringBoot 使用全局的配置文件,配置文件名是固定的:application.properties 或者 application.yml这两个配置文件可以同时存在,如果配置相同的属性,properties 会覆盖 yml2. yml 语法2.1 基本语法k: v:表示一对键值对,注意 value 前面必须要有空格以空格的缩进来控制层级关系;只要...

2020-03-21 20:19:43 167

原创 01.Spring Boot 之 HelloWorld

1. 环境搭建代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ,详见 tutorial-spring-boot-core/tutorial-spring-boot-helloworld 工程1.1 配置文件1. pom.xml<dependencies> <dependenc...

2020-03-21 20:17:49 114

原创 08.Spring Framework 之自动装配模式

代码已经上传至 https://github.com/masteryourself/study-spring.git ,分支是 master,工程是 study-spring-framework1. Event1.1 ApplicationListener监听容器中发布的事件,事件驱动模型开发监听 ApplicationEvent 及其子类的事件1.2 @EventListe...

2020-02-11 20:20:51 175

原创 06.Spring Framework 之 Web

代码已经上传至 https://github.com/masteryourself/study-spring.git ,分支是 master,工程是 study-spring-framework1. Spring 中的事务1.1 并发问题并发问题类型产生原因和效果第一类丢失更新两个事务更新相同数据,如果一个事务提交,另一个事务回滚,第一个事务的更新会被回滚脏读...

2020-02-11 20:20:21 342

原创 02.ActiveMQ 源码解析之发送消息

1. 环境搭建代码已经上传至 https://github.com/masteryourself/activemq.git ,分支名称是 masteryourself-activemq-5.15.9producer 是 activemq-example 工程,启动类是 QueueProducer2. 源码解析2.1 流程预览// 1. 创建 ActiveMQConnecti...

2020-01-31 19:42:48 199

原创 01.ActiveMQ 源码解析之创建连接

1. 环境搭建代码已经上传至 https://github.com/masteryourself/activemq.git ,分支名称是 masteryourself-activemq-5.15.9producer 是 activemq-example 工程,启动类是 QueueProducer2. 源码解析2.1 流程预览// 1. 创建 ActiveMQConnecti...

2020-01-31 19:41:58 269

原创 01.分布式之序列化

1. 序列化Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中,就可能要求在 JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能简单来说序列化是把对象的状态信息转化为可存储或...

2020-01-04 15:25:30 198

原创 07.Dubbo 源码解析之服务调用

1. 环境搭建代码已经上传至 https://github.com/masteryourself/dubbo ,分支名称是 masteryourself-2.7.3-releaseprovider 是 dubbo-demo-xml-provider 工程,启动类是 Applicationconsumer 是 dubbo-demo-xml-consumer 工程,启动类是 Appl...

2020-01-01 18:46:22 212

原创 06.Dubbo 源码解析之服务引用

1. 环境搭建代码已经上传至 https://github.com/masteryourself/dubbo ,分支名称是 masteryourself-2.7.3-releaseprovider 是 dubbo-demo-xml-provider 工程,启动类是 Applicationconsumer 是 dubbo-demo-xml-consumer 工程,启动类是 Appl...

2019-12-29 22:45:56 133

原创 05.Dubbo 源码解析之服务暴露

1. 环境搭建代码已经上传至 https://github.com/masteryourself/dubbo ,分支名称是 masteryourself-2.7.3-releaseprovider 是 dubbo-demo-xml-provider 工程,启动类是 Applicationconsumer 是 dubbo-demo-xml-consumer 工程,启动类是 Appl...

2019-12-29 22:43:11 336

原创 04.Dubbo 源码解析之 ExtensionLoader

1. 环境搭建代码已经上传至 https://github.com/masteryourself/dubbo ,分支名称是 masteryourself-2.7.3-releaseprovider 是 dubbo-demo-xml-provider 工程,启动类是 Applicationconsumer 是 dubbo-demo-xml-consumer 工程,启动类是 Appl...

2019-12-29 22:42:17 178

原创 03.Dubbo 应用之扩展机制

1. Java SPI1.1 配置文件1. META-INF/services/pers.masteryourself.study.java.spi.Carpers.masteryourself.study.java.spi.BlackCarpers.masteryourself.study.java.spi.RedCar1.2 代码1. Carpublic interface C...

2019-12-29 22:41:07 141

原创 05.Spring Cloud 之 OpenFeign

1. 概述1.1 Zuul 是什么Zuul 包含了对请求的路由和过滤两个最主要的功能其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。Zuul 和 Eureka 进行整合,将 Zuul 自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获得其他微服务...

2019-11-16 19:29:39 96

原创 04.Spring Cloud 之 Eureka Server 源码解析

1. 概述1.1 分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。如果某个微服务的调用响应时间过长或者不可用,对微服务的调用就会占用越来越多的系统资源,进而引起系统崩溃,这就是所谓的“雪崩效应”1.2 Hystrix 是什么Hystrix 是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可...

2019-11-16 19:24:10 238

原创 03.Spring Cloud 之 Eureka Client 源码解析

1. 概述1.1 Feign 是什么Feign 是一个声明式 WebService 客户端。使用 Feign 能让编写 Web Service 客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持 JAX-RS 标准的注解。Feign 也支持可插拔式的编码器和解码器。SpringCloud 对 Feign 进行了封装,使其支持了 Spring MVC 标准注解和 Htt...

2019-11-16 19:16:13 153

原创 02.Spring Cloud 之 Eureka

1. 概述1.1 Ribbon 是什么SpringCloud Ribbon 是基于 Netflix Ribbon 实现的一套 客户端负载均衡的工具简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Nerflix 的中间层服务连接在一起。Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出...

2019-11-16 19:09:14 156

原创 01.Spring Cloud 之概述

1. 概述1.1 Eureka 是什么Eureka 是 Netflix 的一个子模块,也是核心模块之一。Eureka 是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务与发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于 dubbo 的注册中心,比如 zooke...

2019-11-16 19:05:38 94

原创 02.Dubbo 应用之 2.7.3 版本

1. 环境搭建参考 02.Dubbo 之扩展机制代码2. 源码解析2.1 ExtensionLoader2.1.1 ExtensionLoader#getExtensionLoadercom.alibaba.dubbo.common.extension.ExtensionLoaderpublic static <T> ExtensionLoader<T>...

2019-10-08 21:10:48 321

原创 01.Dubbo 应用之 2.6.5 版本

1. Dubbo 中的一些概念1.1 URL1. 标准的 URL 格式protocol://username:password@host:port/path?key=value&key=value2. Dubbo 中的 URL服务dubbo://192.168.1.6:20880/com.luban.HelloService?timeout=3000注册中心zo...

2019-10-08 21:05:58 359

原创 05.Spring Framework 之扩展机制

1. Spring Aop 与 AspectJ1.1 AOP 的一些术语1. 连接点(Joinpoint)程序执行的某个特定位置:如类开始初始化前、类初始化后、类某个方法调用前、调用后、方法抛出异常后。一个类或一段程序代码拥有一些具有边界性质的特定点,这些点中的特定点就称为 “连接点”。Spring 仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛出异常时以及方法调用前后这些程...

2019-09-08 22:10:01 143

原创 07.Spring Framework 之 AOP

1. BeanPostProcessorbeanFactory 的后置处理器,在 BeanFactory 标准初始化之后调用,来定制和修改 BeanFactory 的内容所有的 bean 定义已经保存加载到 beanFactory,但是 bean 的实例还未创建@Componentpublic class MyBeanFactoryPostProcessor implement...

2019-09-08 22:08:42 148

原创 01.Spring Framework 之组件注册

1. 生命周期1.1 创建单实例:在容器启动的时候创建对象多实例:在每次获取的时候创建对象1.2 BeanPostProcessor.postProcessBeforeInitialization1.3 初始化对象创建完成,并赋值好,调用初始化方法1.4 BeanPostProcessor.postProcessAfterInitialization1.5 销毁...

2019-09-08 22:06:41 2797

原创 02.Spring Framework 之 Bean 生命周期回调

1. 生命周期1.1 创建单实例:在容器启动的时候创建对象多实例:在每次获取的时候创建对象1.2 BeanPostProcessor.postProcessBeforeInitialization1.3 初始化对象创建完成,并赋值好,调用初始化方法1.4 BeanPostProcessor.postProcessAfterInitialization1.5 销毁...

2019-09-08 22:06:31 3167

原创 03.Spring Framework 之组件赋值

1. @Value & @PropertySource1.1 使用方式@PropertySource:读取外部配置文件中的 k/v 保存到运行的环境变量中;加载完外部的配置文件以后使用 ${} 取出配置文件的值@Value:赋值基本数值可以写 SpEL,#{}可以写 ${};取出配置文件【properties】中的值(在运行环境变量里面的值)1.2...

2019-09-08 22:05:38 3274

原创 001.Spring Boot 整合 Dubbo 使用 war 包部署报错

1. Spring Boot 项目打成 war 包网上提供的思路一般都是如下方式,然后就可以成功启动了,但是对于 Spring Boot + Dubbo 是会报错的,具体请往下看1.1 修改 pom.xml1. 修改 packaging<packaging>war</packaging>2. 修改 dependency<dependencies&gt...

2019-08-28 10:54:56 477

lombok-IDEA插件

lombok-IDEA插件,下载后,直接打开 IDEA,选择 plugins,然后选择 install plugins from disk,选择下载后的文件即可

2018-11-29

基于redis的sso单点登录系统

下载此项目前,最好有以下这些知识,内置部署和说明文档 - maven 聚合工程 - springboot - redis - lombok - HandlerInterceptor - thymeleaf - 域名解析知识 - LocaleResolver(非必需)

2018-09-05

基于jdk1.8的中英文参考手册

基于 java8 的中文和英文 API,中文翻译部分不准确,建议对照英文一起参考

2018-08-27

空空如也

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

TA关注的人

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