<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[一剪梅的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Run_by_Wind</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Run_by_Wind]]></copyright><item><title><![CDATA[RocketMQ 启动命令分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/127061082</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/127061082</guid><author>Run_by_Wind</author><pubDate>Mon, 26 Sep 2022 21:09:15 +0800</pubDate><description><![CDATA[autoCreateTopicEnable=true]]></description><category></category></item><item><title><![CDATA[关于 Nacos 任务执行引擎的设计]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117969040</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117969040</guid><author>Run_by_Wind</author><pubDate>Wed, 16 Jun 2021 22:49:30 +0800</pubDate><description><![CDATA[说明：本篇文章部分内容参考了网上的文章(在下文已给出原文链接)，由于本人能力有限，如果有书写错误的地方，欢迎各位大佬批评指正！我们互相交流，学习，共同进步！
该项目的地址：https://github.com/xiaoheng1/nacos_read
关于 Nacos 任务执行引擎的设计
// 任务的抽象.
public interface NacosTask {
/**
 * Judge Whether this nacos task should do.
 *
 * @return true means]]></description><category></category></item><item><title><![CDATA[一致性协议的抽象]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117637236</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117637236</guid><author>Run_by_Wind</author><pubDate>Sun, 06 Jun 2021 21:43:37 +0800</pubDate><description><![CDATA[一致性，即多个副本之间是否能保持一致的特性. 而副本的本质就是数据，对数据的操作，不是获取就是修改. 同时，一致性协议其实是针对分布式情况的，所以必然会涉及多个节点. 因此，需要有相应的接口能够调整一致性协议的协同工作节点.
所以，一致性协议其实更加关注的是读、写在集群间的一致性.
ConsistencyProtocol
public interface ConsistencyProtocol&lt;T extends Config, P extends RequestProcessor&gt; exten]]></description><category></category></item><item><title><![CDATA[Nacos NamingServer 再分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117431581</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117431581</guid><author>Run_by_Wind</author><pubDate>Mon, 31 May 2021 22:35:30 +0800</pubDate><description><![CDATA[说明：本篇文章部分内容参考了网上的文章(在下文已给出原文链接)，由于本人能力有限，如果有书写错误的地方，欢迎各位大佬批评指正！我们互相交流，学习，共同进步！
该项目的地址：https://github.com/xiaoheng1/nacos_read
Nacos NamingServer 再分析
NamingServer 先从 @CanDistro 这个注解说起吧.
1.按服务名选择 nacos 节点，即一个服务的实例增删改，只由特定的 nacos 节点负责.
上面的描述如何理解了？
先看下如下的注解：
/]]></description><category></category></item><item><title><![CDATA[Nacos 事件模型补充]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117406249</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117406249</guid><author>Run_by_Wind</author><pubDate>Sun, 30 May 2021 21:39:47 +0800</pubDate><description><![CDATA[说明：本篇文章部分内容参考了网上的文章(在下文已给出原文链接)，由于本人能力有限，如果有书写错误的地方，欢迎各位大佬批评指正！我们互相交流，学习，共同进步！
该项目的地址：https://github.com/xiaoheng1/nacos_read
Nacos 事件模型补充：
在 Nacos 中，事件模型模块，出镜最高的是 NotifyCenter. 我们先从这个入手，看下其是如何设计的.
NotifyCenter 代码注释第一行：统一事件通知中心.
其中有一个很重要的属性：
private static]]></description><category></category></item><item><title><![CDATA[Client-NacosConfigService 再分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117233396</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117233396</guid><author>Run_by_Wind</author><pubDate>Mon, 24 May 2021 21:42:19 +0800</pubDate><description><![CDATA[先看下 Client 端 NacosConfigService 的核心组件：

两大核心组件：ServerHttpAgent 和 ClientWorker.
需要注意的是，在 ServerHttpAgent 中，有一个 ServerListManager 成员变量. 这个类就是为了获取 nacos server 服务列表.
现在支持两种方式，一种是固定 ip 的，另一种是从服务器获取 nacos server 列表.
需要注意的是，在 ServerHttpAgent 中，有一个 ServerListMana]]></description><category></category></item><item><title><![CDATA[nacos-client源码分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117134962</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/117134962</guid><author>Run_by_Wind</author><pubDate>Fri, 21 May 2021 21:00:41 +0800</pubDate><description><![CDATA[说明：本篇文章部分内容参考了网上的文章(在下文已给出原文链接)，由于本人能力有限，如果有书写错误的地方，欢迎各位大佬批评指正！我们互相交流，学习，共同进步！
该项目的地址：https://github.com/xiaoheng1/nacos_read
nacos-client 源码分析
IConfigRequest 的作用，我理解是配置请求.
void putParameter(String key, Object value);
Object getParameter(String key);
IConf]]></description><category></category></item><item><title><![CDATA[EventDispatcher 的原理]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116954129</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116954129</guid><author>Run_by_Wind</author><pubDate>Mon, 17 May 2021 23:24:59 +0800</pubDate><description><![CDATA[先说下 EventDispatcher 的原理：
EventDispatcher 核心功能：
1.管理 listener
2.触发事件
Entry 是说将 event 分组，因为每个 event 可能有多个不同的 listener 关注.
AbstractEventListener 表征感兴趣的事件，子类需要重写 interest 和 onEvent 方法.
再说下 listener 在 nacos 中的实现类:
1.LongPollingService
1.1ClientLongPolling 对客户端长]]></description><category></category></item><item><title><![CDATA[NacosConfigServer 初始化流程]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116464514</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116464514</guid><author>Run_by_Wind</author><pubDate>Thu, 06 May 2021 22:11:01 +0800</pubDate><description><![CDATA[说明：本篇文章部分内容参考了网上的文章(在下文已给出原文链接)，由于本人能力有限，如果有书写错误的地方，欢迎各位大佬批评指正！我们互相交流，学习，共同进步！
该项目的地址：https://github.com/xiaoheng1/nacos_read
NacosConfigServer 初始化流程.
1.NacosConfigService 的构造
1.1初始化 namespace
1.2初始化 HttpAgent(一个关于发起 http 请求的代理，httpAgent 有关于 token 续期的处理)
1]]></description><category></category></item><item><title><![CDATA[NACOS 设计]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116310521</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116310521</guid><author>Run_by_Wind</author><pubDate>Fri, 30 Apr 2021 23:29:21 +0800</pubDate><description><![CDATA[说明：本篇文章部分内容参考了网上的文章(在下文已给出原文链接)，由于本人能力有限，如果有书写错误的地方，欢迎各位大佬批评指正！我们互相交流，学习，共同进步！
该项目的地址：https://github.com/xiaoheng1/nacos_read
NACOS 设计
1.首先明白如下概念：
namespace 命名空间 —— 环境
group 分组 —— 项目
dataId 配置集 —— 工程
首先 Nacos 数据是存储在数据库的，不管是内置数据库，还是外置的.
参考：com.alibaba.nacos]]></description><category></category></item><item><title><![CDATA[Nacos Auth 模块分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116245819</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/116245819</guid><author>Run_by_Wind</author><pubDate>Wed, 28 Apr 2021 23:29:23 +0800</pubDate><description><![CDATA[关于安全如何设计：
@Retention(RetentionPolicy.RUNTIME)
public @interface Secured {
/**
 * The action type of the request.
 *
 * @return action type, default READ
 */
ActionTypes action() default ActionTypes.READ;

/**
 * The name of resource related to the request.]]></description><category></category></item><item><title><![CDATA[Kafka 索引设计]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/115288329</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/115288329</guid><author>Run_by_Wind</author><pubDate>Sun, 28 Mar 2021 21:36:33 +0800</pubDate><description><![CDATA[先看下索引的类图设计：








abstract class AbstractIndex(@volatile private var _file: File, val baseOffset: Long, val maxIndexSize: Int = -1,

val writable: Boolean) extends Closeable {

import AbstractIndex._







// Length ...]]></description><category></category></item><item><title><![CDATA[Dubbo Monitor 分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/111187488</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/111187488</guid><author>Run_by_Wind</author><pubDate>Mon, 14 Dec 2020 22:34:40 +0800</pubDate><description><![CDATA[DubboRCP调用次数和调用时间的监控，以 Statistics 为中心，扩展接口为 MonitorFactory、Monitor、MonitorService.









MonitorService 主要提供两个接口，收集和查找监控数据.


/**

* Collect monitor data

* 1. support invocation count: count://host/interface?application=foo&amp;method=foo&...]]></description><category></category></item><item><title><![CDATA[JVM参数优化及OOM故障分析步骤]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/107732366</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/107732366</guid><author>Run_by_Wind</author><pubDate>Sat, 01 Aug 2020 16:09:43 +0800</pubDate><description><![CDATA[关于 JVM 参数优化步骤
1.上线前：先合理评估自己系统的压力，合理设置参数
2.上线后：通过 jstat 命令监控显示系统的 eden 区增长速度，ygc 频率和耗时，老年代增长频率，耗时，然后优化参数
关于 GC 问题定位排查
1.通过 jstat 分析新生代、老年代对象增速，耗时和频率
2.分析代码逻辑，也可以转存堆内存快照，使用 MAT 工具进行分析.
OOM 分析解决
1.看是那块内存抛出异常，比如堆、栈、Metaspace 区域
2.如果是栈内存溢出的话，通过日志，定位栈内存溢出的地方，然后分]]></description><category></category></item><item><title><![CDATA[一次 gc 日志分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/106988256</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/106988256</guid><author>Run_by_Wind</author><pubDate>Sat, 27 Jun 2020 21:19:32 +0800</pubDate><description><![CDATA[/**
* -XX:NewSize=5242880
* -XX:MaxNewSize=5242880
* -XX:InitialHeapSize=10485760
* -XX:MaxInitialHeapSize=10485760
* -XX:SurvivorRatio=8
* -XX:PretenureSizeThreshold=10485760
* -XX:+UseParNewGC
* -XX:+UseConcMarkSweepGC
* -XX:+PrintGCDetails
* -XX:+PrintG]]></description><category></category></item><item><title><![CDATA[Mybatis PagerHelper 实现原理]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105803319</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105803319</guid><author>Run_by_Wind</author><pubDate>Tue, 28 Apr 2020 00:07:22 +0800</pubDate><description><![CDATA[首先说下使用.
@Override
public PageInfo selectDocByPage1(int currentPage, int pageSize) {
PageHelper.startPage(currentPage, pageSize);
List docs = docMapper.selectByPageAndSelections();
PageInfo pageInfo = ...]]></description><category></category></item><item><title><![CDATA[Mybatis # 和 $ 的区别及参数如何对应]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105697599</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105697599</guid><author>Run_by_Wind</author><pubDate>Thu, 23 Apr 2020 01:00:57 +0800</pubDate><description><![CDATA[调试 ParamNameResolver.
final Annotation[][] paramAnnotations = method.getParameterAnnotations();
二维数组，第一维是参数长度，第二维是注解个数.
1.看参数上是否有 @Param 注解，有就读取该注解中的值.
2.如果第1步不成立，则看能否获取实际参数名.
3.如果还不行，则是第几个参数(排除特殊参数，例...]]></description><category></category></item><item><title><![CDATA[SpringMVC工作流程]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105354172</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105354172</guid><author>Run_by_Wind</author><pubDate>Mon, 06 Apr 2020 23:11:44 +0800</pubDate><description><![CDATA[DispatcherServlet 为 SpringMVC 处理 servlet 的入口.
在 doService 方法中调用 doDispatcher 方法，也就是说业务逻辑主要是在 doDispatcher 中实现.
HandlerMapping 抽象了请求 URL 到请求处理器之间的映射. 当一个请求过来时，DispatcherServlet 会轮询 HandlerMapping 那个请求...]]></description><category></category></item><item><title><![CDATA[Mybatis 插件原理]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105315274</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105315274</guid><author>Run_by_Wind</author><pubDate>Sat, 04 Apr 2020 19:17:20 +0800</pubDate><description><![CDATA[MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下，MyBatis 允许使用插件来拦截的方法调用包括：
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setPa...]]></description><category></category></item><item><title><![CDATA[Mybatis启动流程分析]]></title><link>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105088744</link><guid>https://blog.youkuaiyun.com/Run_by_Wind/article/details/105088744</guid><author>Run_by_Wind</author><pubDate>Wed, 25 Mar 2020 10:18:58 +0800</pubDate><description><![CDATA[1.解析配置文件，包括 mybatis-config.xml、mapper.xml 文件.
2.获取 xxxMapper.
直接定位到 RegisterMapper 类中.
public  T getMapper(Class type, SqlSession sqlSession) {
final MapperProxyFactory mapperProxyFactory = (MapperPr...]]></description><category></category></item></channel></rss>