<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[masteryourself]]></title><description><![CDATA[代码是一种信仰]]></description><link>https://blog.youkuaiyun.com/masteryourself</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; masteryourself]]></copyright><item><title><![CDATA[07.Spring Cloud 之 Hystrix]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/107433124</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/107433124</guid><author>masteryourself</author><pubDate>Sat, 18 Jul 2020 18:21:26 +0800</pubDate><description><![CDATA[1. 概述
1.1 服务熔断
1.1.1 雪崩效应
在复杂的系统中，经常会出现 A 依赖于 B，B 依赖于 C，C 依赖于 D，…… 这种依赖将会产生很长的调用链路，这种复杂的调用链路称为 1-&gt; N 的扇出。
如果在 A 的调用链路上某一个或几个被调用的子服务不可用或延迟较高，则会导致调用A 服务的请求被堵住。
堵住的 A 请求会消耗占用系统的线程、IO 等资源，当对 A 服务的请求越来越多，占用的计算机资源越来越多的时候，会导致系统瓶颈出现，造成其他的请求同样不可用，最终导致业务系统崩溃，这种现象]]></description><category></category></item><item><title><![CDATA[003.Spring Cloud Feign 使用 ApplicationListener 问题]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/106744581</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/106744581</guid><author>masteryourself</author><pubDate>Sun, 14 Jun 2020 12:35:28 +0800</pubDate><description><![CDATA[1. 场景前提
假设有这样一个场景：在一个 Spring Cloud Feign（Greenwich.SR6）应用中，希望在 Spring 容器启动之后对一些事件做监听，如接收到 ContextRefreshedEvent 事件后，需要做一次初始化操作。一般都是实现 ApplicationListener 接口来监听事件，然后在 onApplicationEvent() 方法里做相应的处理
此时可能会遇到两种情况，一个是监听器中的 onApplicationEvent() 方法被调用了多次，还有一个即是在监]]></description><category></category></item><item><title><![CDATA[002.Spring 使用 Async 导致循环创建异常]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/106730908</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/106730908</guid><author>masteryourself</author><pubDate>Sat, 13 Jun 2020 13:08:13 +0800</pubDate><description><![CDATA[1. 环境搭建

代码已经上传至 https://github.com/masteryourself/diseases ，详见 diseases-spring/diseases-spring-async-cycle 工程

假设有这样一个场景：在一个被 Spring 容器管理的 SomeService 类中定义了两个方法，一个叫 doSomething()，另一个方法叫 doAnotherThing()，其中 doAnotherThing() 是被 @Async 注解标识的，现在在 doSomething(]]></description><category></category></item><item><title><![CDATA[09.Spring Boot 之 Actuator]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105631744</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105631744</guid><author>masteryourself</author><pubDate>Mon, 20 Apr 2020 11:53:03 +0800</pubDate><description><![CDATA[1. 监控管理
通过引入 spring-boot-starter-actuator，可以使用 Spring Boot 为我们提供的准生产环境下的应用监控和管理功能。我们可以通过 HTTP，JMX，SSH 协议来进行操作，自动得到审计、健康及指标信息等





端点名
描述




autoconfig
所有自动配置信息


auditevents
审计事件


beans
所有 Bean 的信息...]]></description><category></category></item><item><title><![CDATA[08.Spring Boot 之自定义 starter]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105631732</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105631732</guid><author>masteryourself</author><pubDate>Mon, 20 Apr 2020 11:52:26 +0800</pubDate><description><![CDATA[1. 自定义 starter
通常来说，启动器只用来做依赖导入，没有任何代码，所以需要专门来写一个自动配置模块
如果是 Spring Boot 内部提供的组件，一般叫 spring-boot-starter-xxx，如果是第三方组件集成 Spring Boot，一般是叫 xxx-spring-boot-starter，如 mybatis-spring-boot-starter
2. 环境搭建

代...]]></description><category></category></item><item><title><![CDATA[07.Spring Boot 之启动原理]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105592185</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105592185</guid><author>masteryourself</author><pubDate>Sat, 18 Apr 2020 01:02:17 +0800</pubDate><description><![CDATA[1. SpringBoot 默认的错误处理机制

代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ，详见 tutorial-spring-boot-core/tutorial-spring-boot-errorhandler 工程

1.1 浏览器请求错误

浏览器发起的请求中，请求头是 text/html

1...]]></description><category></category></item><item><title><![CDATA[06.Spring Boot 之 web 容器装配原理]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105592146</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105592146</guid><author>masteryourself</author><pubDate>Sat, 18 Apr 2020 00:51:01 +0800</pubDate><description><![CDATA[1. 扩展 Spring Mvc

代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ，详见 tutorial-spring-boot-core/tutorial-spring-boot-web 工程

编写一个配置类（@Configuration），是 WebMvcConfigurer 类型，不能标注 @Enab...]]></description><category></category></item><item><title><![CDATA[05.Spring Boot 之错误处理机制]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105592085</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105592085</guid><author>masteryourself</author><pubDate>Sat, 18 Apr 2020 00:46:24 +0800</pubDate><description><![CDATA[1. Web 自动配置原理
前文已经分析过，@EnableAutoConfiguration 这个注解会给容器中导入 AutoConfigurationImportSelector 组件，AutoConfigurationImportSelector 实现了 DeferredImportSelector 接口，所以这里会延时导入，之前版本没有实现这个接口，那么就会调用 selectImports(...]]></description><category></category></item><item><title><![CDATA[06.Spring Framework 源码解析之 web 启动原理]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105547977</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105547977</guid><author>masteryourself</author><pubDate>Thu, 16 Apr 2020 00:05:29 +0800</pubDate><description><![CDATA[1. 环境搭建

代码已经上传至 https://github.com/masteryourself/spring-framework，工程是 tutorial-spring-web

2. 源码解析

详细的源码注释可参考 https://github.com/masteryourself/spring-framework

2.1 Spring 父子容器构造
2.1.1 流程分析

基于 se...]]></description><category></category></item><item><title><![CDATA[05.Spring Framework 源码解析之事务]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105547974</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105547974</guid><author>masteryourself</author><pubDate>Thu, 16 Apr 2020 00:04:15 +0800</pubDate><description><![CDATA[1. 环境搭建

代码已经上传至 https://github.com/masteryourself/spring-framework，工程是 tutorial-spring-tx

2. 源码解析

详细的源码注释可参考 https://github.com/masteryourself/spring-framework

2.1 组件导入
2.1.1 流程分析

@EnableTransact...]]></description><category></category></item><item><title><![CDATA[04.Spring Framework 源码解析之 AOP]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105547948</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105547948</guid><author>masteryourself</author><pubDate>Thu, 16 Apr 2020 00:03:16 +0800</pubDate><description><![CDATA[1. 环境搭建

代码已经上传至 https://github.com/masteryourself/spring-framework，工程是 tutorial-spring-aop

2. 源码解析

详细的源码注释可参考 https://github.com/masteryourself/spring-framework

2.1 组件导入
2.1.1 流程分析

@EnableAspectJ...]]></description><category></category></item><item><title><![CDATA[10.Spring Framework 之 Log]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105547843</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105547843</guid><author>masteryourself</author><pubDate>Wed, 15 Apr 2020 23:54:34 +0800</pubDate><description><![CDATA[1. Spring4 日志
在 Spring4 中使用 log4j 日志框架，只需要引入 log4j jar 包即可
1.1 环境搭建

代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ，详见 tutorial-spring-framework/tutorial-spring-framework-log 工程

...]]></description><category></category></item><item><title><![CDATA[09.Spring Framework 之 Lookup]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105547831</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105547831</guid><author>masteryourself</author><pubDate>Wed, 15 Apr 2020 23:53:27 +0800</pubDate><description><![CDATA[1.  Method Injection

详见文档 https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-method-injection

In most application scenarios, most beans in the co...]]></description><category></category></item><item><title><![CDATA[04.Spring Boot 之 MVC 装配原理]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105016470</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105016470</guid><author>masteryourself</author><pubDate>Sat, 21 Mar 2020 20:21:58 +0800</pubDate><description><![CDATA[1. Java 日志体系
1.1 市面上常用的日志框架


日志门面技术有 JCL（Jakarta  Commons Logging）、SLF4j（Simple  Logging Facade for Java）、jboss-logging，它们都不提供具体的日志实现


日志实现技术有 Log4j、JUL（java.util.logging）、Log4j2、Logback ，它们都提供了不同的 ...]]></description><category></category></item><item><title><![CDATA[03.Spring Boot 之日志体系]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105016454</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105016454</guid><author>masteryourself</author><pubDate>Sat, 21 Mar 2020 20:20:21 +0800</pubDate><description><![CDATA[1. profile

代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ，详见 tutorial-spring-boot-core/tutorial-spring-boot-profile 工程

1.1 多 profile 环境


在编写配置文件时，文件名可以是 application-{profile}.p...]]></description><category></category></item><item><title><![CDATA[02.Spring Boot 之配置文件]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105016435</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105016435</guid><author>masteryourself</author><pubDate>Sat, 21 Mar 2020 20:19:43 +0800</pubDate><description><![CDATA[1. 配置文件


SpringBoot 使用全局的配置文件，配置文件名是固定的：application.properties 或者 application.yml


这两个配置文件可以同时存在，如果配置相同的属性，properties 会覆盖 yml


2. yml 语法
2.1 基本语法


k: v：表示一对键值对，注意 value 前面必须要有空格


以空格的缩进来控制层级关系；只要...]]></description><category></category></item><item><title><![CDATA[01.Spring Boot 之 HelloWorld]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/105016378</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/105016378</guid><author>masteryourself</author><pubDate>Sat, 21 Mar 2020 20:17:49 +0800</pubDate><description><![CDATA[1. 环境搭建

代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ，详见 tutorial-spring-boot-core/tutorial-spring-boot-helloworld 工程

1.1 配置文件
1. pom.xml
&lt;dependencies&gt;
    &lt;dependenc...]]></description><category></category></item><item><title><![CDATA[08.Spring Framework 之自动装配模式]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/104269114</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/104269114</guid><author>masteryourself</author><pubDate>Tue, 11 Feb 2020 20:20:51 +0800</pubDate><description><![CDATA[代码已经上传至 https://github.com/masteryourself/study-spring.git ，分支是 master，工程是 study-spring-framework
1. Event
1.1 ApplicationListener


监听容器中发布的事件，事件驱动模型开发


监听 ApplicationEvent 及其子类的事件


1.2 @EventListe...]]></description><category></category></item><item><title><![CDATA[06.Spring Framework 之 Web]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/104269100</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/104269100</guid><author>masteryourself</author><pubDate>Tue, 11 Feb 2020 20:20:21 +0800</pubDate><description><![CDATA[代码已经上传至 https://github.com/masteryourself/study-spring.git ，分支是 master，工程是 study-spring-framework
1. Spring 中的事务
1.1 并发问题





并发问题类型
产生原因和效果




第一类丢失更新
两个事务更新相同数据，如果一个事务提交，另一个事务回滚，第一个事务的更新会被回滚


脏读
...]]></description><category></category></item><item><title><![CDATA[02.ActiveMQ 源码解析之发送消息]]></title><link>https://blog.youkuaiyun.com/masteryourself/article/details/104127268</link><guid>https://blog.youkuaiyun.com/masteryourself/article/details/104127268</guid><author>masteryourself</author><pubDate>Fri, 31 Jan 2020 19:42:48 +0800</pubDate><description><![CDATA[1. 环境搭建


代码已经上传至 https://github.com/masteryourself/activemq.git ，分支名称是 masteryourself-activemq-5.15.9


producer 是 activemq-example 工程，启动类是 QueueProducer


2. 源码解析
2.1 流程预览

// 1. 创建 ActiveMQConnecti...]]></description><category></category></item></channel></rss>