<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wb_snail的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wb_snail</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wb_snail]]></copyright><item><title><![CDATA[深入理解依赖反转原则(DIP)]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/135161967</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/135161967</guid><author>wb_snail</author><pubDate>Fri, 22 Dec 2023 22:32:53 +0800</pubDate><description><![CDATA[依赖反转原则从定义上看是要依赖于抽象，不要依赖于细节， 这个听起来很简单，好像加个接口就完事了，大家的service都是一个接口配一个实现类，是不是依赖倒置呢？很显然不是，不然今天就不用讲了]]></description><category></category></item><item><title><![CDATA[你觉得ACID别扭吗？]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127712074</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127712074</guid><author>wb_snail</author><pubDate>Sun, 06 Nov 2022 08:22:29 +0800</pubDate><description><![CDATA[不知道大家在看ACID定义时，有没有感觉疑惑或者别扭。一个疑惑是：AID的定义是很清晰的，看了就能明白是什么意思，但是C的定义似乎不太清晰；另一个疑惑是：难道原子性隔离性持久性不是为了满足一致性吗？他们好像并不是正交的，放在一起合适吗？]]></description><category></category></item><item><title><![CDATA[分布式系统原理-分布式事务方案那么多，到底该选哪一个]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127711974</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127711974</guid><author>wb_snail</author><pubDate>Sun, 06 Nov 2022 08:10:41 +0800</pubDate><description><![CDATA[不存在完美的分布式事务方案，只有不断地trade off。而且不一定非要用分布式事务，对账也挺香的]]></description><category></category></item><item><title><![CDATA[分布式系统原理-BASE，可用性高于强一致性]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127707379</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127707379</guid><author>wb_snail</author><pubDate>Sun, 06 Nov 2022 07:21:58 +0800</pubDate><description><![CDATA[BASE的核心思想是在分布式系统中，可用性的重要程度应该是普遍高于强一致性的，这其实也更符合分布式系统的初衷]]></description><category></category></item><item><title><![CDATA[分布式系统原理-CAP定理，说起来一句话，实际坑不少]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127707285</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127707285</guid><author>wb_snail</author><pubDate>Sat, 05 Nov 2022 19:10:46 +0800</pubDate><description><![CDATA[CAP定理说起来就是一句话的事情哦，但是里面其实有不少值得注意的点。首先是CAP定理的讨论范围，范围很重要，脱离了这个范围再谈CAP那就是耍流氓了]]></description><category></category></item><item><title><![CDATA[分布式系统原理-分布式共识算法，分布式系统的奠基原理(2/2)]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127707134</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127707134</guid><author>wb_snail</author><pubDate>Sat, 05 Nov 2022 19:02:48 +0800</pubDate><description><![CDATA[很多中文资料把 共识Consensus翻译为一致性，也就是"分布式一致性算法"，听起来就很像是保证数据一致性的算法，就很让人迷惑。共识（Consensus）与一致性（Consistency）是有区别的：

分布式一致性我们之前说过，指的是协调数据在不同副本之间的差异。而共识的重点是让多个节点达成一致，这和多副本数据差异完全不是一回事，大家以后看到分布式一致性算法就要知道它的重点是达成共识。本文重点介绍了分布式共识算法的起源于他要解决的问题]]></description><category></category></item><item><title><![CDATA[分布式系统原理-分布式共识算法，分布式系统的奠基原理(1/2)]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127706751</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127706751</guid><author>wb_snail</author><pubDate>Sat, 05 Nov 2022 18:28:59 +0800</pubDate><description><![CDATA[大家经常看到各种分布式工具的架构图中都有个zookeeper(比如hdfs、Hbase、kafka)，然后它们的架构说明里都会说zk承担保存元数据和协调工作。这里的协调工作中的一个核心任务就是指选举(就是在主从架构里，通过它选择Master，master挂了就再选一个，保证高可用)，那问题来了，为什么一定要是zk，换成关系数据库可不可以？比如要选举时大家都往数据库插入一条数据,谁成功谁当leader]]></description><category></category></item><item><title><![CDATA[分布式系统原理-副本与一致性]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127680601</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127680601</guid><author>wb_snail</author><pubDate>Sat, 05 Nov 2022 17:35:52 +0800</pubDate><description><![CDATA[因为可靠性、吞吐量、低延时方面的需求，我们为数据设置了一些副本，即将一份数据的多个拷贝存放到不同地方。如果多个副本同时提供读服务，就引发了一致性问题。本文首先介绍了副本一致性的背景，随后对"一致性"的含义加以说明(ACID里的C、CAP里的C、以及本文的一致性他们分别是何含义)，最后引出一致性级别，并对各个一致性级别作出了详细解释。相信大家读完后会对一致性有更深的认识]]></description><category></category></item><item><title><![CDATA[分布式系统原理-分布式系统的麻烦]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/127660576</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/127660576</guid><author>wb_snail</author><pubDate>Thu, 03 Nov 2022 23:00:33 +0800</pubDate><description><![CDATA[所谓分布式系统顾名思义就是利用多台计算机协同解决单台计算机所不能解决的计算、存储等问题，这个大家都明白 分布式系统解决了单机无法解决的问题，但是也引入了一些问题、或者说在建设分布式系统时，会有一些麻烦。在分布式系统里面我们得意识到这些问题的存在，否则它们可能会发生一些让你很迷惑的问题]]></description><category></category></item><item><title><![CDATA[从演化的角度看云原生，其实并不抽象]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/122973840</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/122973840</guid><author>wb_snail</author><pubDate>Wed, 16 Feb 2022 23:10:47 +0800</pubDate><description><![CDATA[云原生其实是很具体的，只是由于宣传等原因，各种场合都往上蹭热点，以至于目前有点混乱，本文从架构演进的角度为你阐述云原生的真正含义]]></description><category></category></item><item><title><![CDATA[微服务业务与技术特征]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121895623</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121895623</guid><author>wb_snail</author><pubDate>Sat, 15 Jan 2022 22:35:53 +0800</pubDate><description><![CDATA[Microservices说起微服务，就不不提Martin Fowler 和 James Lewis 合写的文章“Microservices: a definition of this new architectural term”，这篇文章虽然不是最早提出“微服务”这个概念的，但却是真正丰富的、广为人知的和可操作的微服务指南。也就是说，这篇文章才是微服务的真正起源
这篇文章里给出了微服务的定义，并列举了微服务的九个核心的业务与技术特征，我们可以以此作为微服务设计的指导性原则]]></description><category></category></item><item><title><![CDATA[泛型，好像没那么简单]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/122516840</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/122516840</guid><author>wb_snail</author><pubDate>Sat, 15 Jan 2022 22:04:08 +0800</pubDate><description><![CDATA[泛型广泛用于各类框架中，日常开发、或是源码阅读时，泛型的的曝光率都很高，搞懂泛型很有必要。泛型的基础使用场景比较简单，但在复杂场景下往往并不容易理解
本文首先介绍了java泛型基础概念，随后列举了泛型的一些复杂使用场景，最后介绍了spring中强大易用的泛型API，希望帮你更深入的理解泛型，也可以在日常开发工作时更好的利用泛型进行通用设计]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IOC-实现通用功能的利器(PostProcessor机制)]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/122373202</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/122373202</guid><author>wb_snail</author><pubDate>Fri, 07 Jan 2022 22:04:36 +0800</pubDate><description><![CDATA[撸一撸Spring Framework-IoC系列文章目录

IoC概述
BeanFactory
ApplicationContext
BeanDefinition
BeanWrapper
资源管理利器(Resource与ResourceLoader)
配置管理(Environment与PropertySource)
不简单的泛型(ResolvableType)


考虑下下面这个使用文件服务上传文件的简单程序，要把它正常运行起来，Spring要做哪些事情呢？



public class Appli..]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IOC-配置管理(Environment与PropertySource)]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121619040</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121619040</guid><author>wb_snail</author><pubDate>Mon, 06 Dec 2021 00:07:01 +0800</pubDate><description><![CDATA[Environment集成了两个关键特性，配置管理和profiles管理(本质上还是配置相关的东西)，profile：用于决定一个类是否会被装载到spring容器中，对应用来说，配置管理无疑是很重要的，包括配置的增、删、改、查，比如通过@PropertySources和@PropertySource引入properties，通过@Value将配置项注入到bean的属性中，通过environment.getPropertySources().replace方法mock系统环境变量，这都属于配置管理的范畴]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IoC-资源管理利器(Resource、ResourceLoader、ResourcePatternResolver)]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121709035</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121709035</guid><author>wb_snail</author><pubDate>Fri, 03 Dec 2021 23:26:23 +0800</pubDate><description><![CDATA[我们经常需要读取外部资源到应用中，比如文本文件、properties文件、图片文件等。这些资源可能位于不同的位置，比如文件系统、classpath下的资源、或者远程服务器上的资源。通常，我们需要通过不同的API分别加载不同类型路径的资源，有诸多不便之处

Spring提供了Resource、ResourceLoader、ResourcePatternResolver系列接口解决上述问题，API非常友好、强大]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IoC-ApplicationContext]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121665341</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121665341</guid><author>wb_snail</author><pubDate>Wed, 01 Dec 2021 21:33:53 +0800</pubDate><description><![CDATA[从UML关系上看，ApplicationContext与BeanFactory既有继承关系、又有关联关系。很多ApplicationContext的实现中，都引用了一个DefaultListableBeanFactory对象，并将bean管理操作都委托给它。以下是从GenericApplicationContext及其父类中摘录的一段代码，主要是为了让你感受下它与DefaultListableBeanFactory的关系]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IoC-BeanFactory]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121665171</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121665171</guid><author>wb_snail</author><pubDate>Wed, 01 Dec 2021 21:28:42 +0800</pubDate><description><![CDATA[BeanFactory是Spring IoC中最核心的接口，它承担IoC最基本的职责，即创建并管理各种类的对象。BeanFactory接口只定义了最基础的IOC容器功能，它的扩展接口众多，继承体系设计优雅，堪称经典]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IoC-概述]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121637237</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121637237</guid><author>wb_snail</author><pubDate>Tue, 30 Nov 2021 16:57:52 +0800</pubDate><description><![CDATA[Spring Framework中最核心的模块就是IoC容器(Inversion of Control，控制反转)，其他模块如aop、aspectjs、Data Access等都在此基础上展开，我们就从IoC开始旅程
IoC也称为依赖注入(DependeccyInjection,DI)，注意，这二者是替代关系，并不是网上广泛传播的、极具迷惑性的"思想和实现"的关系]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IoC-BeanWrapper]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121570120</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121570120</guid><author>wb_snail</author><pubDate>Mon, 29 Nov 2021 00:10:59 +0800</pubDate><description><![CDATA[在BeanDefinition一文中我们说过，InstantiationStrategy实例化出的bean只是一个半成品，Spring将半成品的bean交给BeanWrapper，让其负责bean的属性填充工作

通过xml定义bean时，不论bean的属性是什么类型，xml中只能使用字符串字面量来对属性赋值，BeanWrapper首先要将字符串字面量转换为bean属性实际对应的类型，然后通过反射的方式给bean赋值。BeanWrapper的继承结构如下：






PropertyEditor：Pro.]]></description><category></category></item><item><title><![CDATA[撸一撸Spring Framework-IoC-BeanDefinition]]></title><link>https://blog.youkuaiyun.com/wb_snail/article/details/121315081</link><guid>https://blog.youkuaiyun.com/wb_snail/article/details/121315081</guid><author>wb_snail</author><pubDate>Fri, 26 Nov 2021 21:53:58 +0800</pubDate><description><![CDATA[BeanFactory会从配置元信息中加载beanDefinition，并将其注册到BeanDefinitionRegistry中，之后创建、管理bean的工作，都要依赖于beanDefinition。容器启动过程中加载beanDefinition，注册beanDefinition，从容器获取bean时(getBean)，容器如何使用beanDefinition完成bean的创建工作]]></description><category></category></item></channel></rss>