<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[雨剑的博客]]></title><description><![CDATA[一起嗨！]]></description><link>https://blog.youkuaiyun.com/csdn_20150804</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csdn_20150804]]></copyright><item><title><![CDATA[动态规划步骤]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/126272810</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/126272810</guid><author>csdn_20150804</author><pubDate>Wed, 10 Aug 2022 22:41:47 +0800</pubDate><description><![CDATA[使用拼硬币的案例：面值为2元、5元、7元的3种类型硬币，最少可以使用多少枚硬币拼出27元钱？]]></description><category></category></item><item><title><![CDATA[一文彻底理解各种排序算法]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/122635647</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/122635647</guid><author>csdn_20150804</author><pubDate>Mon, 24 Jan 2022 16:02:35 +0800</pubDate><description><![CDATA[排序算法种类繁多，每一种复杂度都不一样，差异较大，我们不禁有个疑问：我们为什么要记那么多种算法，为什么不直接使用最好的一种排序算法呢？答案是，这个要看具体的待排序数据，没有一种排序算法在任何场景下性能都是最优的。

这就需要我们真正的理解每种算法的特性，本文针对各种算法进行统一整理比对，彻底理解它们。

]]></description><category></category></item><item><title><![CDATA[mybatisPlus之自动填充工具MetaObjectHandler使用demo及注意点]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/121584855</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/121584855</guid><author>csdn_20150804</author><pubDate>Mon, 10 Jan 2022 15:27:15 +0800</pubDate><description><![CDATA[文章目录一. 使用场景二. 使用姿势1.实现MetaObjectHandler接口2. 实体类上添加注解三. 不生效的场景1. 试试2. dad
一. 使用场景
MetaObjectHandler是元对象字段填充控制器抽象类，实现公共字段自动写入。
比如通常，我们在建表时，会设置几个公共字段：创建人（creator）、更新人（uptater）、创建时间（create_time）、更新时间（update_time）。
每次将实体对象新增入库时，都要设置创建人和创建时间；每次更新实体对象时，都要设置更新人和更新]]></description><category></category></item><item><title><![CDATA[线程池ThreadPoolTaskExecutor实战]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/121065270</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/121065270</guid><author>csdn_20150804</author><pubDate>Sat, 27 Nov 2021 17:52:00 +0800</pubDate><description><![CDATA[文章目录1. ThreadPoolTaskExecutor是什么2. 为什么使用ThreadPoolTaskExecutor2.1直接使用ThreadPoolExecutor2.2 使用ThreadPoolTaskExecutor3. 如何使用ThreadPoolTaskExecutor3.1 配置3.2 业务中使用3.3 TaskDecorator
1. ThreadPoolTaskExecutor是什么
ThreadPoolTaskExecutor是Spring基于java本身的线程池ThreadPoo]]></description><category></category></item><item><title><![CDATA[Mysql系列（四）彻底理解MVCC+行锁+表锁+间隙锁]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/119766846</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/119766846</guid><author>csdn_20150804</author><pubDate>Sun, 29 Aug 2021 12:09:52 +0800</pubDate><description><![CDATA[文章目录一. 什么是MVCC二.什么是行锁、表锁、间隙锁三. MVCC与各种锁的关系四. MVCC的实现原理4.1 多版本4.2 undo log4.2 readview
一. 什么是MVCC
MVCC（Multi-Version Concurrency Control），即多版本并发控制。不使用锁，主要是用来提高数据库的并发性能；算是一种概念，不同的数据库有不同的实现方式，本文主要介绍mysql的innodb引擎中的实现方式。
在mysql的innodb中，前面我们有篇文章《Mysql系列（二）Mysql]]></description><category></category></item><item><title><![CDATA[springboot2.x +RedisCacheManager + CacheManager +@Cacheable 实现注解化缓存管理]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/118859232</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/118859232</guid><author>csdn_20150804</author><pubDate>Sat, 17 Jul 2021 18:25:22 +0800</pubDate><description><![CDATA[文章目录一. 环境准备1.1 引入redis starter依赖1.2 配置CacheManager1.2.1 springboot2.x1.2.2 springboot1.x二. 具体使用2.1 @Cacheable2.2 @CachePut2.3 @CacheEvict三. RedisCacheConfiguration参数说明
实际业务开发中，免不了会使用redis作为缓存，加快接口响应速度。一个典型的场景：前端请求到后端服务时，后端服务先查询redis缓存，如果查到则使用缓存数据，否则再查mysql]]></description><category></category></item><item><title><![CDATA[分库分表神器sharding-jdbc在springboot中的全场景使用demo]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/118252213</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/118252213</guid><author>csdn_20150804</author><pubDate>Sun, 27 Jun 2021 19:00:06 +0800</pubDate><description><![CDATA[文章目录一.概述1.1 sharding-jdbc身份介绍1.1.1实现原理1.1.2 适用范围1.2 sharding-jdbc版本二.sharding-jdbc分表2.1 项目环境准备2.1.1 maven依赖2.1.2 数据库2.1.3 项目结构2.2 application.properties文件配置2.3 分表测试demo2.3.1 数据插入2.3.2 查询数据2.3.3 关联查询二.sharding-jdbc分库
一.概述
我们知道，如果你的业务表，比如商品表数据达到千万级别甚至更高，数据库的]]></description><category></category></item><item><title><![CDATA[Nacos系列（一）docker安装单机版nacos服务]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/117296075</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/117296075</guid><author>csdn_20150804</author><pubDate>Sat, 05 Jun 2021 16:18:53 +0800</pubDate><description><![CDATA[文章目录一.概述二.部署步骤2.1 下载demo文件2.2 安装并启动2.3 Nacos 控制台2.4 服务注册与发现2.5 配置发布与获取
一.概述
2018 阿里巴巴将Nacos开源，nacos是开源后的名字，是基于阿里内部Configserver（注册中心）、Diamond（持久化配置中心）、Vipserver（类似Configserver的注册中心，提供路由信息）的核心代码整合而成，目标是打造全球最牛逼的服务注册以及配置中心。
本文简单部署一个nacos服务，来一个直观的认识。
二.部署步骤
由于是]]></description><category></category></item><item><title><![CDATA[springboot源码（二）@SpringBootApplication注解中exclude参数使用及原理]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/116104742</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/116104742</guid><author>csdn_20150804</author><pubDate>Fri, 04 Jun 2021 10:04:04 +0800</pubDate><description><![CDATA[上篇文章中，《springboot源码（一）启动流程+自动配置原理分析》，简单分析了启动流程，其中涉及到了@SpringBootApplication注解，本文针对其中的exclude属性的作用及其原理，进行分析。

]]></description><category></category></item><item><title><![CDATA[Charles使用说明&手机抓包]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/117156612</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/117156612</guid><author>csdn_20150804</author><pubDate>Sun, 23 May 2021 14:43:58 +0800</pubDate><description><![CDATA[文章目录一.简介二.下载安装https 证书安装三.移动端抓包
一.简介
常用的抓包工具有：

charles：可以运行在windows和macOs和linux；收费的，如果不交钱，只能每半小时重启一次；
fiddler：只能运行在windows；
wireshark：可以运行在windows和macOs和linux。

其中，wireshark是一个老牌抓包工具，针对网卡层级，可以看到详细的报文交互细节过程，但是针对应用层面的接口抓包分析，它的界面不如charles和fidder更直观。
fiddler只]]></description><category></category></item><item><title><![CDATA[Kubernetes系列（一）k8s架构设计说明]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/117189999</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/117189999</guid><author>csdn_20150804</author><pubDate>Sun, 23 May 2021 11:31:07 +0800</pubDate><description><![CDATA[文章目录一.简介二.架构设计图2.1Master2.2 Node
一.简介
Kubernetes是由谷歌开发的，使用GO语言，最初源于谷歌内部的Borg，提供了面向应用的容器集群部署和管理系统。
参考Kubernetes中文文档：http://docs.kubernetes.org.cn/
二.架构设计图

架构核心组件整体分为左右两个部分，Master组件和Node组件。
2.1Master
Master部分，属于主控节点，控制node部分有序的工作，主要包含如下几个部分：

API server ：k8]]></description><category></category></item><item><title><![CDATA[Docker系列（二）docker常用命令]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/116898461</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/116898461</guid><author>csdn_20150804</author><pubDate>Mon, 17 May 2021 17:32:01 +0800</pubDate><description><![CDATA[文章目录一. docker帮助命令说明1.1docker所有的命令，都是以 docker开头 。比如 ：1.2帮助命令二.常用命令总结拉取镜像启动容器退出容器删除容器
docker命令非常多，非常灵活，本文总结下常用的命令，方便查阅。
一. docker帮助命令说明
先说明比较重要的两点：
1.1docker所有的命令，都是以 docker开头 。比如 ：
docker ps
docker image

1.2帮助命令
如果忘记了命令具体用法，可以使用docker的帮助：
docker --help

输出]]></description><category></category></item><item><title><![CDATA[Docker系列（一）docker desktop安装使用&运行redis容器]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/116883295</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/116883295</guid><author>csdn_20150804</author><pubDate>Sun, 16 May 2021 12:18:17 +0800</pubDate><description><![CDATA[文章目录一.docker下载安装二. docker Desktop使用三.测试启动redis容器3.1启动redis容器3.2desktop上管理容器3.3命令验证：四.配置阿里镜像
docker是目前很火的容器应用，使用docker可以很方遍的进行应用部署，本文介绍docker的安装使用，来直观的感受下docker。
一.docker下载安装
docker官方文档给出了详细的安装步骤，参考地址：https://docs.docker.com/get-docker/
docker本身也是一个应用程序，支持在]]></description><category></category></item><item><title><![CDATA[RocketMQ系列（六）rocketmq架构设计总结]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/116423680</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/116423680</guid><author>csdn_20150804</author><pubDate>Sat, 15 May 2021 22:07:58 +0800</pubDate><description><![CDATA[文章目录一. 消息存储二. 通信机制
本文水一下，主要做个记录，详细说明直接看官方文档。
官方设计文档：
https://github.com/apache/rocketmq/blob/master/docs/cn/design.md
一. 消息存储


CommitLog：消息主体以及元数据的存储主体，存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大小默认1G ，文件名长度为20位，左边补零，剩余为起始偏移量，比如00000000000000000000代表了第一个文件，起始偏移量]]></description><category></category></item><item><title><![CDATA[RocketMQ系列（五）异常处理：发送失败、重复消费]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/116423206</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/116423206</guid><author>csdn_20150804</author><pubDate>Wed, 05 May 2021 11:39:58 +0800</pubDate><description><![CDATA[文章目录生产者失败消费者幂等处理
使用消息队列，不论是消息生产者还是消费者，都容易存在异常情况。
生产者失败
异常情况：
生产者在把消息发送到mq的broker的过程中，容易存在以下情况：
1.发送时，网络异常，消息没有到达broker；
2.发送同步消息时，消息到达broker，但是当broker相应生产者时，网络异常，生产者没有收到响应，认为发送失败；
解决方案：
如果是发送异步消息，也就是生产者不会等待broker响应，此种情况就会产生消息丢失；如果业务场景不在乎少量消息丢失，则不要处理；否则可以采用]]></description><category></category></item><item><title><![CDATA[RocketMQ系列（四）springboot集成rocketmq的简单使用]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/116104955</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/116104955</guid><author>csdn_20150804</author><pubDate>Sat, 24 Apr 2021 21:40:42 +0800</pubDate><description><![CDATA[文章目录一. 配置1. 添加依赖2. 配置文件二. 发送消息三. 接收消息
一. 配置
1. 添加依赖
直接添加rocketmq的 starter包，版本根据springboot的版本来，
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.rocketmq&lt;/groupId&gt;
    &lt;artifactId&gt;rocketmq-spring-boot-starter&lt;/artifactId&gt;
    &lt;version&g]]></description><category></category></item><item><title><![CDATA[RocketMQ系列（三）消息生产消费原生写法]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/115874503</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/115874503</guid><author>csdn_20150804</author><pubDate>Tue, 20 Apr 2021 21:45:38 +0800</pubDate><description><![CDATA[文章目录一.生产消息1.1 同步消息二.消息消费
上篇文章《RocketMQ系列（二）双主双从集群搭建》中，我们搭建了双主双从的集群环境，并启动了可视化平台rocketmq-console，本文我们使用原生api发送一些消息到mq中，然后进行消费。
一.生产消息
导入mq客户端的依赖包：
 &lt;dependency&gt;
    &lt;groupId&gt;org.apache.rocketmq&lt;/groupId&gt;
     &lt;artifactId&gt;rocketmq-clie]]></description><category></category></item><item><title><![CDATA[RocketMQ系列（二）双主双从集群搭建]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/115799771</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/115799771</guid><author>csdn_20150804</author><pubDate>Sun, 18 Apr 2021 18:06:01 +0800</pubDate><description><![CDATA[文章目录一.配置文件1.1 配置文件说明1.2 服务环境准备1.3 配置文件修改二.集群启动2.1 启动nameserver集群2.2 启动borker集群三.rocketmq-console控制台3.1 下载rocketmq-externals3.2 启动rocketmq-console3.3 访问rocketmq-console
上一篇RocketMQ系列（一）下载安装介绍了单master模式，本文介绍双主双从的集群模式搭建。
一.配置文件
1.1 配置文件说明
安装包我们放在/data/applica]]></description><category></category></item><item><title><![CDATA[RocketMQ系列（一）下载安装]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/115654551</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/115654551</guid><author>csdn_20150804</author><pubDate>Sat, 17 Apr 2021 18:53:45 +0800</pubDate><description><![CDATA[文章目录一.下载二.安装配置2.1 jdk配置2.2 部署模式选择2.3 配置文件三.单master模启动3.1 启动NameServer3.2 启动broker
一.下载
1.进入官网：RocketMQ已经托管给Apache，所以官网是在apache:官网，

上面显示的是最新发布版本
2.下载历史版本
如果需要历史版本，则点击【Getting Started】按钮进入，然后左边菜单选择download，就可以看到历史版本：

3.下载
我们下载4.4.0版本，

其中，Source是源码，可以下载源码进]]></description><category></category></item><item><title><![CDATA[Netty系列（三）Netty工作模型]]></title><link>https://blog.youkuaiyun.com/csdn_20150804/article/details/104383375</link><guid>https://blog.youkuaiyun.com/csdn_20150804/article/details/104383375</guid><author>csdn_20150804</author><pubDate>Tue, 29 Sep 2020 14:12:00 +0800</pubDate><description><![CDATA[以下是Netty工作架构图：

方案说明：

Netty 抽象出两组线程池BossGroup和WorkerGroup，BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写；
BossGroup和WorkerGroup类型都是NioEventLoopGroup；
NioEventLoopGroup 相当于一个事件循环线程组, 这个组中含有多个事件循环线程 ， 每一个事件 循环线程是NioEventLoop；
每个NioEventLoop都有一个selector , 用于监听注]]></description><category></category></item></channel></rss>