<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[旺仔的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kolbjbe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kolbjbe]]></copyright><item><title><![CDATA[dubbo整体设计整理]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/127949395</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/127949395</guid><author>kolbjbe</author><pubDate>Sun, 20 Nov 2022 15:18:10 +0800</pubDate><description><![CDATA[dubbo整体设计整理]]></description><category></category></item><item><title><![CDATA[RocketMQ核心链路图示]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/124560758</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/124560758</guid><author>kolbjbe</author><pubDate>Tue, 03 May 2022 20:23:45 +0800</pubDate><description><![CDATA[目录

nameServer主要功能及发送、消费者发送、消费的重平衡机制

普通、顺序、延迟消息主要流程

事务消息核心流程

broker主从相关

主从读取消息：

从节点同步topic、消费偏移量等信息

Dledger状态机基于RAFT一致性协议的选举流程




最近一直在结合着RocketMQ技术内幕学习rocketMQ源码，看完之后有了大概的认识，为了加深印象和树立大致的rocketMQ的运行流程，所以整理了几个MQ的核心流程图，包含了通常的消息的流转脉络，希望自己以后温故知新的同时，发出来给]]></description><category></category></item><item><title><![CDATA[Redis 持久化、复制、哨兵、集群随笔]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/123941389</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/123941389</guid><author>kolbjbe</author><pubDate>Sun, 03 Apr 2022 19:45:32 +0800</pubDate><description><![CDATA[目录



redis持久化

RDB

AOF

redis过期key：

redis复制：

redis哨兵模式：

服务下线、故障转移

故障转移细节

新的主服务器是怎样挑选出来的

redis clsuter 集群

重新分片

ASK错误

复制和故障转移

redis持久化

redis的持久化是分为AOF、RDB两种方式。

RDB

redis数据库生成时间点数据的快照文件。当需要执行save、bgsave操作时，会fork出子进程，子进程去根据当前内存数据生成RDB文件，在创建子进程时.]]></description><category></category></item><item><title><![CDATA[ReentrantLock流程图示及队列节点唤醒剔除解析]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/122293101</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/122293101</guid><author>kolbjbe</author><pubDate>Mon, 03 Jan 2022 22:46:46 +0800</pubDate><description><![CDATA[目录

简介

ReentrantLock加锁流程图示

ReentrantLock解锁流程图示

队列中node数据的流转

addWaiter

acquireQueued的shouldParkAfterFailedAcquire方法

release

扩展cancelAcquire方法

简介


ReentrantLock是一个可重入且独占式的锁，它具有与使用synchronized监视器锁相同的基本行为和语义，但与synchronized关键字相比，它更灵活、更强大，增加了轮询、超时、中断等..]]></description><category></category></item><item><title><![CDATA[EurekaServer集群同步源码解析]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/122161347</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/122161347</guid><author>kolbjbe</author><pubDate>Wed, 29 Dec 2021 23:17:51 +0800</pubDate><description><![CDATA[本文主要基于源码分析server集群间的数据同步，后续对部分server提供给client端续约、注册信息刷新等REST的接口进行简要分析。]]></description><category></category></item><item><title><![CDATA[EurekaServer基于源码的启动流程]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/122157763</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/122157763</guid><author>kolbjbe</author><pubDate>Mon, 27 Dec 2021 23:01:40 +0800</pubDate><description><![CDATA[EurekaBootStrap

Eureka-Server启动入口：该类实现了ServletContextListener，在 Servlet 容器( 例如 Tomcat、Jetty )启动时，调用#contextInitialized()方法。


    @Override
    public void contextInitialized(ServletContextEvent event) {
        try {
            // 初始化eureka-server配置环...]]></description><category></category></item><item><title><![CDATA[EurekaClient端启动源码流程详解]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/122158200</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/122158200</guid><author>kolbjbe</author><pubDate>Sun, 26 Dec 2021 21:14:09 +0800</pubDate><description><![CDATA[Client端是通过DiscoveryClient来实现对Server里注册的服务进行操作的，下面主要来解析DiscoveryClient这个类。


DiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs args,
                    Provider&lt;BackupRegistry&g]]></description><category></category></item><item><title><![CDATA[Spring Boot 基于源码的启动流程详解]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/121883309</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/121883309</guid><author>kolbjbe</author><pubDate>Sun, 12 Dec 2021 16:35:08 +0800</pubDate><description><![CDATA[SpringBoot在日常工作中带来了很多便利，通过application.properties即可替换默认属性值通过@SpringBootApplication和SpringApplication.run()即可完成Spring容器的启动，并自动为我们创建自动配置的bean，如下图，本文主要关注springboot启动时，自动创建过滤自动配置类、业务bean、加载资源文件的整体流程。




SpringBootApplication注解


@Target(ElementType.TYPE)
@Ret.]]></description><category></category></item><item><title><![CDATA[基于SpringMVC、Tomcat源码的请求链路图示解析]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/121184437</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/121184437</guid><author>kolbjbe</author><pubDate>Sat, 06 Nov 2021 20:25:36 +0800</pubDate><description><![CDATA[Spring启动时SpringMVC的组件初始化



发起请求的执行链路：

下图是在未配置DispatchServlet的load-on-startup属性时，调用情况，若配置load-on-startup大于、等于0，那么初始化servlet的流程会在tomcat启动或热部署时完成。



关于tomcat加载load-on-startup大于0的servlet可见下面代码：

tomcat源码的StandardContext类


public boolean loadOnStartup(Cont.]]></description><category></category></item><item><title><![CDATA[Tomcat 内部各个组件、启动、请求解析原理分析]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/121062429</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/121062429</guid><author>kolbjbe</author><pubDate>Sun, 31 Oct 2021 21:47:11 +0800</pubDate><description><![CDATA[Tomcat 组件简介

tomcat的各个组件

Http请求的执行图示：



tomcat启动源码时序图

tomcat接受请求源码时序图





Tomcat各个组件



Tomcat启动流程

启动时序图中，已经大致疏通了整体tomcat的启动流程，有些细节点还是需要关注，如：这些组件的关联关系，一个请求是如何被解析指定到具体的Wrapper，然后执行servlet方法的。

Tomcat的执行请求流程



tomcat类加载机制
...]]></description><category></category></item><item><title><![CDATA[对Spring IOC、AOP的认识及项目中应用场景]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/120794871</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/120794871</guid><author>kolbjbe</author><pubDate>Sun, 17 Oct 2021 15:57:34 +0800</pubDate><description><![CDATA[BeanFactory、applicationContext的容器区别

先从BeanFactory和applicationContext的源码，来大致看下这两个类



BeanFactory定义的是一个接口，具体的实现交给子类完成(DefaultListableBeanFactory成熟bean工厂等)，定义了些对bean最基本的操作， 主要是获取bean、判断IOC容器中是否存在该bean、判断bean是单例还是多例模式、bean的class类型匹配等，所以通常认为beanFactory是IOC的低级]]></description><category></category></item><item><title><![CDATA[【源码解析】Spring如何处理循环依赖?]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/114294067</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/114294067</guid><author>kolbjbe</author><pubDate>Tue, 21 Sep 2021 16:39:41 +0800</pubDate><description><![CDATA[在进入正题之前，抛出一个问题给大家思考下，这个是当时面试家有学霸时，二面提出的一个问题：当出现循环依赖时（A依赖B，B依赖A），此时A中的B对象有没有A，B中的A对象有没有B，大家可以想下，后面解答。

什么是循环依赖?


有两个或两个以上的引用相互指向，即A-&gt;B，B-&gt;A，更具体的说就是:


@Component
public class A {
    @Autowired
    private B b;
}


@Component
public class B {
    @Au]]></description><category></category></item><item><title><![CDATA[Spring Boot 通过监听器方式整合 RocketMq（基于模板方法的并发消费、局部顺序消息消费）]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/120098263</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/120098263</guid><author>kolbjbe</author><pubDate>Sat, 04 Sep 2021 13:28:48 +0800</pubDate><description><![CDATA[项目中有关rocketMq及相关类的Maven依赖


        &lt;dependency&gt;
            &lt;groupId&gt;org.apache.rocketmq&lt;/groupId&gt;
            &lt;artifactId&gt;rocketmq-spring-boot-starter&lt;/artifactId&gt;
            &lt;version&gt;2.1.1&lt;/version&gt;
        &lt]]></description><category></category></item><item><title><![CDATA[MYSQL锁机制详解、示例SQL演示及脏读、不可重复读、幻读探究]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/115383452</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/115383452</guid><author>kolbjbe</author><pubDate>Sat, 03 Apr 2021 16:50:34 +0800</pubDate><description><![CDATA[MYSQL锁机制

]]></description><category></category></item><item><title><![CDATA[基于反射机制的多种实现方式的自定义注解，来实现特定的功能]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/115266639</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/115266639</guid><author>kolbjbe</author><pubDate>Sat, 27 Mar 2021 17:36:25 +0800</pubDate><description><![CDATA[反射


反射的应用场景是非常多的，框架的底层大多都会涉及到反射，包括我们现在要谈的自定义注解，所以在开始之前，先对反射进行一个基础的介绍。


什么是反射？


官方解释：JAVA反射机制是在运行状态中，对于任意一个实体类，都能够知道这个类的所有属性和方法；对于任意一个对象，都能够调用它的任意方法和属性；这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制


详细原理，大家也看下这篇文章，在原理上面说的还是较为详细的Java反射的原理解析及使用

反射常用方法操作解析

直接上代码，我在]]></description><category></category></item><item><title><![CDATA[Java1.8新特性Optional和stream流操作的用法，为什么要用这些？]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/115023296</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/115023296</guid><author>kolbjbe</author><pubDate>Sat, 20 Mar 2021 15:25:36 +0800</pubDate><description><![CDATA[Java1.8新特性Optional和stream流操作的用法，为什么要用这些？
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章，了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持，除了标准的Markdown编辑器功能，我们增加了如下几点新功能，帮助你用它写博客：

全新的界面设计 ，将会带来全新的写作体验；
在创作中心设置你喜爱的代]]></description><category></category></item><item><title><![CDATA[RocketMQ常见问题及实现分布式事务时注意事项]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/114699611</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/114699611</guid><author>kolbjbe</author><pubDate>Sat, 13 Mar 2021 23:04:50 +0800</pubDate><description><![CDATA[RocketMQ常见问题及实现分布式事务时注意事项RocketMQ常见的一些疑问或问题1、如何防止消息丢失的问题2、如何防止消息的重复消费问题(幂等性问题)3、消息如何保证消费顺序的问题4、消息积压、阻塞怎么解决?5、如何保证消息不会丢失RocketMQ实现分布式事务时注意事项1、MQ半消息回查，若得不到该消息是提交还是回滚，会一直隔一段时间就查询一次吗？1、二阶段异常，需要回滚怎么处理？2、消费者消费失败后，会重试吗，多次重试后还是失败会怎么样？
RocketMQ常见的一些疑问或问题
1、如何防止消息丢失]]></description><category></category></item><item><title><![CDATA[基于RocketMQ的分布式事务解决方案（实操）]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/114653113</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/114653113</guid><author>kolbjbe</author><pubDate>Thu, 11 Mar 2021 13:45:42 +0800</pubDate><description><![CDATA[基于RocketMQ的分布式事务解决方案前言什么分布式事务？分布式事务产生的场景如何解决分布式事务RocketMQ 基本使用实操场景建表生产者消费者验证
前言
什么分布式事务？

​ 随着互联网的快速发展，软件系统由原来的单体应用转变为分布式应用，分布式系统会把一个应用系统拆分为可独立部署的多个服务，因此需要服务与服务之间远程协作才能完成事务操作，这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务，例如用户注册送积分事务、创建订单减库存事务，银行转账事务等都是分布式事务。

分布式]]></description><category></category></item><item><title><![CDATA[Redis如何保证与数据库的数据一致性?]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/114438117</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/114438117</guid><author>kolbjbe</author><pubDate>Sat, 06 Mar 2021 15:22:55 +0800</pubDate><description><![CDATA[Redis如何保证与数据库的数据一致性?前言前提先删除缓存数据，再修改数据库数据先修改数据库数据，再删除缓存数据双删延迟策略
前言
在我们日常开发中，随着数据的增长、请求量的增加，不可避免的要用到缓存相关的技术，Redis作为目前主流的作为缓存的非关系型数据库，功能十分强大。多种数据类型、支持持久化、快速读写、高可用、横向扩展是Redis的成为主流缓存技术的主要原因。火箭造完了，接下来搞点干货
当我们使用Redis来缓存数据时，某个需缓存的数据进行修改时(如：Redis缓存了商品信息，商家操作修改了昵称)，]]></description><category></category></item><item><title><![CDATA[String为什么要重写equals方法，你真的知道吗?]]></title><link>https://blog.youkuaiyun.com/kolbjbe/article/details/114228938</link><guid>https://blog.youkuaiyun.com/kolbjbe/article/details/114228938</guid><author>kolbjbe</author><pubDate>Sun, 28 Feb 2021 17:12:08 +0800</pubDate><description><![CDATA[String为什么要重写equals方法，你真的知道吗?前言涉及知识点==和equals的区别方法区(元数据区)存放什么数据String s ="a";和String s = new String("a");的区别
前言

前几天去一家上市公司面试的时候，技术问出了这个问题，这个之前还没有考虑过，其实面试中会有很多这种扩散性思维的问题出现，这个就需要我们有足够的知识储备和一定的思考能力。大家可以先自己想一下重写equals是什么原因，可能善于思考的朋友已经有一些自己的见解，话不多说，开始正题。

涉及知识点]]></description><category></category></item></channel></rss>