<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nimo10050的博客]]></title><description><![CDATA[菜鸟成长日志]]></description><link>https://blog.csdn.net/cnm10050</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; cnm10050]]></copyright><item><title><![CDATA[(转载)LRU 和 LFU 的区别]]></title><link>https://blog.csdn.net/cnm10050/article/details/129056022</link><guid>https://blog.csdn.net/cnm10050/article/details/129056022</guid><author>cnm10050</author><pubDate>Thu, 16 Feb 2023 10:26:49 +0800</pubDate><description><![CDATA[What is the difference between LRU and LFU]]></description><category></category></item><item><title><![CDATA[Spring Cloud 总结 - 调用远程服务的三种方式及原理分析]]></title><link>https://blog.csdn.net/cnm10050/article/details/128363778</link><guid>https://blog.csdn.net/cnm10050/article/details/128363778</guid><author>cnm10050</author><pubDate>Sun, 18 Dec 2022 17:10:43 +0800</pubDate><description><![CDATA[然后这些 自定义注解 就可以反过来为我们注入 Bean 时, 起到限定的作用(上面已经讲过它限定了什么).于是我们再回过头看下。]]></description><category></category></item><item><title><![CDATA[[go 语言学习笔记] 7天用Go从零实现GeeRPC 「持续更新中」]]></title><link>https://blog.csdn.net/cnm10050/article/details/128356533</link><guid>https://blog.csdn.net/cnm10050/article/details/128356533</guid><author>cnm10050</author><pubDate>Sat, 17 Dec 2022 19:53:42 +0800</pubDate><description><![CDATA[举例, 如果服务端拿到消息长度, 就能拿到消息内容, 但是此时的消息内容还是字节数组类型, 我们需要把内容转成对应的 json 或者 xml 等对象(也就是反序列化过程). 所以我们还需要客户端在。, 它的缺点是我们需要自定义双方的信息协议,优点是传输效率高(直接这样讲可能不太严谨, 关于 http 和 rpc 的比较可以自行了解.).去处理, 根据我们前面讲的, 信息的格式可以是多样的.所以我们的编解码器抽象成一个接口, 如果是 json 格式的信息, 就需要定义一个。]]></description><category></category></item><item><title><![CDATA[本地运行好好的 Java 程序， 一发布到线上就报错的灵异事件终于让我碰到了]]></title><link>https://blog.csdn.net/cnm10050/article/details/128336987</link><guid>https://blog.csdn.net/cnm10050/article/details/128336987</guid><author>cnm10050</author><pubDate>Thu, 15 Dec 2022 23:50:30 +0800</pubDate><description><![CDATA[Caused by: org.apache.ibatis.binding.BindingException:

Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]]]></description><category></category></item><item><title><![CDATA[[go 语言学习笔记] 7天用Go从零实现分布式缓存GeeCache 「已完结」]]></title><link>https://blog.csdn.net/cnm10050/article/details/128307898</link><guid>https://blog.csdn.net/cnm10050/article/details/128307898</guid><author>cnm10050</author><pubDate>Tue, 13 Dec 2022 21:11:07 +0800</pubDate><description><![CDATA[当我们设计缓存时, 我们需要考虑到一个问题, 我们缓存容量一定要是可控的, 不能无限量存储, 因此需要定义一个最大存储容量, 这个我们定义为maxBytes,为了和最大存储容量进行比较, 我们还需要计算已占用的字节大小, 我们定义为nbytes.当我们定义完最大容量后, 我们要考虑到, 如果存储容量达到设定的最大值时, 想要继续存储数据时, 改怎么办?有如下两种办法:抛异常提示, 容量达到上限, 让管理员自己去清理.这个我们通过对外暴露接口, 让客户端调用对应增删改查的 API 就能实现.]]></description><category></category></item><item><title><![CDATA[突然想总结下自己阅读源码的经验]]></title><link>https://blog.csdn.net/cnm10050/article/details/128011392</link><guid>https://blog.csdn.net/cnm10050/article/details/128011392</guid><author>cnm10050</author><pubDate>Thu, 24 Nov 2022 09:08:08 +0800</pubDate><description><![CDATA[1. 带着疑问或者程序里出现的 bug 去阅读源码, 会更使人更兴奋
2. 读框架源码要先抓主干, 由粗到细
3. 一定要亲自 debug 一遍源码, 不要光看文字或视频教程
4. 一定要画图, 特别是时序图, 流程图, 哪怕不会画图, 也要先用其他形式记录下源码的主要流程
5. 不管是 debug 源码, 还是画图, 一定要有耐心, 不要急于求成, 不要把读源码当作面试突击
6. 善于利用和挖掘 IDEA 提供的各种工具
7. 市面上的框架都是大同小异, 互相模仿, 尤其是基于 Springboot 的源]]></description><category></category></item><item><title><![CDATA[基于源码搭建运行 RocketMQ 主从架构]]></title><link>https://blog.csdn.net/cnm10050/article/details/127892556</link><guid>https://blog.csdn.net/cnm10050/article/details/127892556</guid><author>cnm10050</author><pubDate>Wed, 16 Nov 2022 20:25:35 +0800</pubDate><description><![CDATA[上一篇基于 IDEA 搭建 RocketMQ-4.6 源码环境我们搭建并跑通了rocketmq的源码环境 .本文我们紧接上文, 继续基于源码搭建并运行broker主从架构.1 个 NameServer 节点 (与前文一样)2 个 Broker 节点, 一个作为 Master, 一个作为 Slave1 个 Producer 生产者 (与前文一样)1 个 Consumer 消费者 (与前文一样)broker 主从架构只需要修改 broker.conf 文件即可, 其他地方与单节点没有差异.]]></description><category></category></item><item><title><![CDATA[基于 IDEA 搭建 RocketMQ-4.6 源码环境]]></title><link>https://blog.csdn.net/cnm10050/article/details/127892412</link><guid>https://blog.csdn.net/cnm10050/article/details/127892412</guid><author>cnm10050</author><pubDate>Wed, 16 Nov 2022 20:20:15 +0800</pubDate><description><![CDATA[Broker部署相对复杂，Broker分为Master与Slave，一个Master可以对应多个Slave，但是一个Slave只能对应一个Master，Master与Slave 的对应关系通过指定相同的BrokerName，不同的BrokerId 来定义，BrokerId为0表示Master，非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接，定时注册Topic信息到所有NameServer。 注意：当前RocketMQ版本在部署架构上支持一Ma]]></description><category></category></item><item><title><![CDATA[Mybatis 报错: Parameter ‘xxx‘ not found. Available parameters are [collection, list]]]></title><link>https://blog.csdn.net/cnm10050/article/details/127840746</link><guid>https://blog.csdn.net/cnm10050/article/details/127840746</guid><author>cnm10050</author><pubDate>Mon, 14 Nov 2022 11:09:46 +0800</pubDate><description><![CDATA[org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'ids' not found. Available parameters are [collection, list]
### Cause: org.apache.ibatis.binding.BindingExcepti]]></description><category></category></item><item><title><![CDATA[细到不能再细的 Spring Cloud Gateway 原理分析（内含多张图片讲解）]]></title><link>https://blog.csdn.net/cnm10050/article/details/127261680</link><guid>https://blog.csdn.net/cnm10050/article/details/127261680</guid><author>cnm10050</author><pubDate>Sat, 22 Oct 2022 18:53:04 +0800</pubDate><description><![CDATA[通过绘制多图讲解 Spring Cloud Gateway 的原理。层层递进！！
Spring Cloud Gateway 使用了 Spring WebFlux 非阻塞网络框架，底层网络通信默认使用了高性能非阻塞的 Netty ，解决了 Spring Cloud Zuul 因为阻塞的线程模型带来的性能下降的问题。]]></description><category></category></item><item><title><![CDATA[研究了 Spring Security 的源码后, 我仿写了一个 “乞丐版” 的 Security 框架]]></title><link>https://blog.csdn.net/cnm10050/article/details/120439887</link><guid>https://blog.csdn.net/cnm10050/article/details/120439887</guid><author>cnm10050</author><pubDate>Thu, 23 Sep 2021 22:41:45 +0800</pubDate><description><![CDATA[开篇


Spring Security 入门 - 01 将 Spring security 引入到工程


Spring security 入门 - 02 自定义用户登录页面和登录处理逻辑


Spring security 入门 - 03 自定义登录成功后的处理逻辑


Spring security 入门 - 04整合 jwt


通过上述 4 篇实战文章的讲解, 我们了解了 Spring Security 的基本用法.
本文我会基于对 Spring Security 内部实现原理的理解, 来实现一个]]></description><category></category></item><item><title><![CDATA[[转载] Spring IOC 容器源码分析]]></title><link>https://blog.csdn.net/cnm10050/article/details/118545708</link><guid>https://blog.csdn.net/cnm10050/article/details/118545708</guid><author>cnm10050</author><pubDate>Wed, 07 Jul 2021 14:28:22 +0800</pubDate><description><![CDATA[Spring 最重要的概念是 IOC 和 AOP，本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring，怎么可以不好好了解 Spring 呢？阅读本文并不能让你成为 Spring 专家，不过一定有助于大家理解 Spring 的很多概念，帮助大家排查应用中和 Spring 相关的一些问题。
本文采用的源码版本是 4.3.11.RELEASE，算是 5.0.x 前比较新的版本了。为了降低难度，本文所说的所有的内容都是基于 xml 的配置的方式，实际使用已经很少人]]></description><category></category></item><item><title><![CDATA[什么? 就只是加了一个 Spring Security 依赖, 所有接口都无法访问了?]]></title><link>https://blog.csdn.net/cnm10050/article/details/116862536</link><guid>https://blog.csdn.net/cnm10050/article/details/116862536</guid><author>cnm10050</author><pubDate>Sat, 15 May 2021 20:46:58 +0800</pubDate><description><![CDATA[开篇
前面我们写了 4 篇 Spring Security 的实战教程, 全部基于 Springboot 搭建的.

Spring Security 入门 - 01 将 Spring security 引入到工程
Spring security 入门 - 02 自定义用户登录页面和登录处理逻辑
Spring security 入门 - 03 自定义登录成功后的处理逻辑
Spring security 入门 - 04整合 jwt

虽然我们学会了怎么用, 但是里面的原理还没搞清楚.
因此, 从本文开始, 我们]]></description><category></category></item><item><title><![CDATA[基于 ShardingSphere5.0.0-alpha 实现 mysql 读写分离]]></title><link>https://blog.csdn.net/cnm10050/article/details/116571163</link><guid>https://blog.csdn.net/cnm10050/article/details/116571163</guid><author>cnm10050</author><pubDate>Sun, 09 May 2021 22:27:26 +0800</pubDate><description><![CDATA[声明

本文会基于 Springboot + mybatis + shardingsphere + mysql5.6 + druid 进行实战讲解
本文的实战内容为根据前文搭建的 mysql 主从复制架构 实现 mysql 的读写分离
本文的内容只涉及 读写分离, 并没有跟前面文章中的分库分表的内容串起来.
本文采用的 shardingsphere 版本是 5.0.0-alpha, 具体见 pom 文件
本文涉及的源码请参考 读写分离
如果看官方文档时, 请选择对应的版本, 并且官网也有坑 !!!
文中贴出]]></description><category></category></item><item><title><![CDATA[基于 docker 搭建 mysql 主从复制架构]]></title><link>https://blog.csdn.net/cnm10050/article/details/116488552</link><guid>https://blog.csdn.net/cnm10050/article/details/116488552</guid><author>cnm10050</author><pubDate>Fri, 07 May 2021 15:39:05 +0800</pubDate><description><![CDATA[说明
本文会基于 docker 来搭建一套 一主两从 的 mysql 主从架构.
阅读本文之前, 需要对 docker 的相关知识有一定了解.




名称
对外端口
对内端口
容器名称
Mysql 版本




master
3306
3306
mymysql
5.6


slave01
3340
3306
mymysql-slave
5.6


slave02
3341
3306
mymysql-slave2
5.6


搭建过程
1. 拉取镜像
本文使用的 mysql 版本是 5.6,  当然你也可以]]></description><category></category></item><item><title><![CDATA[基于 ShardingSphere5.0.0-alpha 实现 mysql 分库]]></title><link>https://blog.csdn.net/cnm10050/article/details/116294081</link><guid>https://blog.csdn.net/cnm10050/article/details/116294081</guid><author>cnm10050</author><pubDate>Fri, 30 Apr 2021 10:06:12 +0800</pubDate><description><![CDATA[声明


本文会基于 Springboot + mybatis + shardingsphere + mysql5.6 + druid 进行实战讲解


本文在上一篇文章[数据分表]的基础上增加了 分库 的功能


本文不会介绍 shardingsphere 以及分库分表的相关概念


本文采用的 shardingsphere 版本是 5.0.0-alpha, 具体见 pom 文件


本文涉及的源码请参考 分库


如果看官方文档时, 请选择对应的版本 !!!


文中涉及的源码可能会有误, 请以上传到 ]]></description><category></category></item><item><title><![CDATA[基于 ShardingSphere5.0.0-alpha 实现 mysql 数据分片]]></title><link>https://blog.csdn.net/cnm10050/article/details/116274839</link><guid>https://blog.csdn.net/cnm10050/article/details/116274839</guid><author>cnm10050</author><pubDate>Thu, 29 Apr 2021 18:52:37 +0800</pubDate><description><![CDATA[声明


本文会基于 Springboot + mybatis + shardingsphere + mysql5.6 + druid 进行实战讲解


本文的实战内容为分表、以及数据分片, 不涉及分库, 读写分离之类的


本文不会介绍 shardingsphere 的历史、概念以及分库分表的相关理论


本文采用的 shardingsphere 版本是 5.0.0-alpha, 具体见 pom 文件


本文涉及的源码请参考 码云地址


如果看 官方文档 时, 请选对版本 !!!


正文
实现目标
]]></description><category></category></item><item><title><![CDATA[mysql 查询一天中每个小时的数据量]]></title><link>https://blog.csdn.net/cnm10050/article/details/115079464</link><guid>https://blog.csdn.net/cnm10050/article/details/115079464</guid><author>cnm10050</author><pubDate>Mon, 22 Mar 2021 16:06:43 +0800</pubDate><description><![CDATA[需求
查询某一天中每个小时的订单数量, 如果某个时间段没有数据, 就填充 0. 效果如下:

建表语句
-- 一张简化过的 xx 订单表
CREATE TABLE `mod_work_order` (
  `id` int(11) NOT NULL,
  `create_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

模拟2021年3月22日当天的数据
INSERT INTO `m]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap 源码分析 - JDK1.7]]></title><link>https://blog.csdn.net/cnm10050/article/details/114671584</link><guid>https://blog.csdn.net/cnm10050/article/details/114671584</guid><author>cnm10050</author><pubDate>Fri, 12 Mar 2021 16:31:30 +0800</pubDate><description><![CDATA[声明
本文对 java.util.concurrent.ConcurrentHashMap的相关讨论全部基于 JDK1.7 源码, 另外, 在阅读本文前,需要读者对 java.util.HashMap有一定程度的了解, 比如基于 K-V 存储, 底层数据结构(jdk1.7/jdk1.8)等.
正文
阅读大纲


ConcurrentHashMap 的相关介绍


ConcurrentHashMap 的构造函数


ConcurrentHashMap 的 put 方法


ConcurrentHashMap ]]></description><category></category></item><item><title><![CDATA[说完了 xxl-job 的执行器原理，再来聊聊调度中心是如何调度任务的]]></title><link>https://blog.csdn.net/cnm10050/article/details/113728522</link><guid>https://blog.csdn.net/cnm10050/article/details/113728522</guid><author>cnm10050</author><pubDate>Sat, 06 Feb 2021 21:12:16 +0800</pubDate><description><![CDATA[前言
在上一篇 xxl-job 执行器原理分析 一文中，我们提到了 xxl-job 框架中包含了两个核心模块：调度中心 和 执行器， 其中调度中心主要负责 任务的调度 ， 而执行器负责 任务的执行， 两者各司其职。 紧接着我们通过画图的方式对 执行器 的内部构造进行了分析，并且还对 Job 的执行流程进行了梳理。
本文我们继续围绕任务的调度流程对 调度中心 进行剖析， 内容依然参照 xx-job v2.x 版本的源码。
正文
再看一遍 xxl-job 架构图：

调度中心主要提供了两个功能: 系统管理 和 ]]></description><category></category></item></channel></rss>