<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rodbate的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rodbate</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rodbate]]></copyright><item><title><![CDATA[聊聊Spring配置类(Configuration Class)及代理过程分析]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/112568835</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/112568835</guid><author>rodbate</author><pubDate>Wed, 13 Jan 2021 15:37:30 +0800</pubDate><description><![CDATA[本文主要是聊一聊Spring 5.2引入的针对Configuration Class的优化及目的
前言
自从Spring 3.0 引入@Configuration 这个配置类注解, 那就意味着Spring的XML配置文件的方式已经过去了，迎来了一个注解(java class)的崭新时代。因此Spring后面版本大量使用Configuration Class, 而我们的工作学习中只要涉及到了Spring，这个Configuration Class的大量使用也是不可避免的，所有大家对这个也是非常常见的。看一下@]]></description><category></category></item><item><title><![CDATA[Redis 字符串数据结构(String)底层存储源码分析]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/112188247</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/112188247</guid><author>rodbate</author><pubDate>Mon, 04 Jan 2021 17:21:22 +0800</pubDate><description><![CDATA[Redis 字符串数据结构(String)底层存储源码分析

以下涉及到的源码均来自 https://github.com/redis/redis (branch 6.2)

背景知识
在6.2这个版本redis支持的数据结构如下
&lt;server.h&gt;
/* The actual Redis Object */
#define OBJ_STRING 0    /* String object. */
#define OBJ_LIST 1      /* List object. */
#defi]]></description><category></category></item><item><title><![CDATA[Spring Aware接口执行时机源码深度解读]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/104804940</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/104804940</guid><author>rodbate</author><pubDate>Wed, 11 Mar 2020 20:34:15 +0800</pubDate><description><![CDATA[Spring Aware接口执行时机源码深度解读
Spring中有这样一种标记接口的存在Aware,只要是spring管理的bean实现了Aware接口，那么spring就会在bean创建的某个时机将相应的资源注入到该spring bean中，比如ApplicationContextAware, 会将spring 应用上下文ApplicationContext自动注入到bean中。
//Sprin...]]></description><category></category></item><item><title><![CDATA[对象存储服务MinIO]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/104710506</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/104710506</guid><author>rodbate</author><pubDate>Sat, 07 Mar 2020 11:04:33 +0800</pubDate><description><![CDATA[对象存储服务MinIO

Open Source, S3 Compatible, Enterprise Hardened and Really, Really Fast
MinIO是一种高性能并兼容Amazon S3 Api的对象存储服务
官网地址  Github项目地址

MinIO简介
1. Erasure Coding(纠删码)
MinIO数据存储数据保护数据采用的是Erasure Codi...]]></description><category></category></item><item><title><![CDATA[Spring事务管理源码深度解读(一)]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/90137341</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/90137341</guid><author>rodbate</author><pubDate>Sat, 29 Jun 2019 10:33:44 +0800</pubDate><description><![CDATA[前言
熟悉spring的人大都熟悉@Transactional这个事务注解及其功能，这里就不详述了，但是spring是如何通过@Transactional实现声明式事物的呢？本文主要通过追踪spring相关源码来详细阐述实现过程，以达到知其然并知其所以然的效果。
@EnableTransactionManagement
那就先来看看@EnableTransactionManagement这个spr...]]></description><category></category></item><item><title><![CDATA[限流组件Sentinel生产应用实践(一) : 动态规则源持久化(Zookeeper)改造接入]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/89763669</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/89763669</guid><author>rodbate</author><pubDate>Thu, 02 May 2019 21:49:49 +0800</pubDate><description><![CDATA[介绍
Sentinel是阿里巴巴去年开源的一款轻量级限流组件。引用它官网的一段简要介绍：

As distributed systems become increasingly popular, the reliability between services is becoming more important than ever before. Sentinel takes “flow” as...]]></description><category></category></item><item><title><![CDATA[RocketMQ源码分析（一）： 索引文件(IndexFile)]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/78763379</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/78763379</guid><author>rodbate</author><pubDate>Mon, 11 Dec 2017 18:19:56 +0800</pubDate><description><![CDATA[前引： RocketMQ – 阿里贡献给Apache的消息中间件，现已升级为Apache顶级项目, GITHUB项目地址。一，索引文件(IndexFile)物理结构一个索引文件从整体上可以分为header和其它部分(body)。整个索引文件对应类org.apache.rocketmq.store.index.IndexFile, header对应类org.apache.rocketmq.store.]]></description><category></category></item><item><title><![CDATA[字符集编码 Unicode UTF8 UTF16 UTF32 和BOM（Byte Order Mark）]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/76296131</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/76296131</guid><author>rodbate</author><pubDate>Sat, 29 Jul 2017 12:58:17 +0800</pubDate><description><![CDATA[BOM（Byte Order Mark）在分析unicode之前，先把bom(byte order mark)说一下。 
bom是unicode字符顺序的标识符号，一般以魔数(magic code)的形式出现在以Unicode字符编码的文件的开始的头部，作为该文件的编码标识。来举个很简单的例子，在windows下新建一个文本文件，并另存为utf8的文件格式: 
该文件里面没有任何内容，我们再用Hex]]></description><category></category></item><item><title><![CDATA[Netty4启动ServerBootStrap源码分析]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/75726484</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/75726484</guid><author>rodbate</author><pubDate>Sun, 23 Jul 2017 12:41:47 +0800</pubDate><description><![CDATA[首记： 
来分析下Netty4中的核心NIO模型的启动过程， 如何 bind -> accept -> process -> …. 这些过程，在分析之前，先来熟悉下jdk中原生的NIO模型, 
因为Netty中的NIO是基于此上面进行封装的。一，java nio 模型import java.io.IOException;
import java.net.InetSocketAddress;
impo]]></description><category></category></item><item><title><![CDATA[从零开始学Scala系列(六)之类(Classes)和对象(Objects)]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/74804840</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/74804840</guid><author>rodbate</author><pubDate>Sat, 08 Jul 2017 15:55:47 +0800</pubDate><description><![CDATA[scala Classes and Objects 
scala 类和对象 修饰符 包对象。。。]]></description><category></category></item><item><title><![CDATA[八皇后单解和全解递归算法(Lua实现)]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/73699709</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/73699709</guid><author>rodbate</author><pubDate>Sun, 25 Jun 2017 10:51:21 +0800</pubDate><description><![CDATA[单解递归算法local file = io.open('output.txt', 'w')io.output(file)
local N = 8local a = {}  local times = 0
local function is_place_ok(n, c) -- n >=1 and n <= 8
    for i = 1, n - 1 do
        if (a[i] == c)]]></description><category></category></item><item><title><![CDATA[八皇后单解和全解递归算法]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/73699656</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/73699656</guid><author>rodbate</author><pubDate>Sun, 25 Jun 2017 10:37:24 +0800</pubDate><description><![CDATA[八皇后单解 递归算法
#include<stdio.h>
#include<stdlib.h>
#include<math.h>#define N 8int num = 1;
int a[N] = { 0 };
void show()
{
    printf("Times %d\n", num++);
    for (int i = 0; i < N; i++)
    {
        fo]]></description><category></category></item><item><title><![CDATA[Java中的四种引用类型  Strong, Soft, Weak And Phantom (一)]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/72857447</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/72857447</guid><author>rodbate</author><pubDate>Sun, 04 Jun 2017 14:18:37 +0800</pubDate><description><![CDATA[前言总所周知， java不同于c/c++，它不需要程序员自已来管理内存(分配，释放内存)，java 会自己来管理内存，比如销毁某些不再被使用的对象。这些操作都是在一个后台线程默默进行(Garbage Collector Thread)，也就是垃圾收集器线程，根据jvm实现的策略来释放对象内存。但是程序编写者却无法控制这个后台线程，无法让它在你想要的时候开始释放内存，销毁对象，按照你的规定来销毁那些对]]></description><category></category></item><item><title><![CDATA[从零开始学Scala系列(五)之集合2--Set和Map]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/71357017</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/71357017</guid><author>rodbate</author><pubDate>Sun, 07 May 2017 19:52:32 +0800</pubDate><description><![CDATA[本小节主要是scala中的Set和Map的使用在scala中Array是mutable(可变的)， 而List是immutable(不可变的) 
package.scala中的源码：val List = scala.collection.immutable.List而Set和Map都有两种mutable和immutable的 (取自Predef.scala)  /**  @group aliases]]></description><category></category></item><item><title><![CDATA[从零开始学Scala系列(四)之数组集合1]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/71287089</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/71287089</guid><author>rodbate</author><pubDate>Sun, 07 May 2017 18:47:04 +0800</pubDate><description><![CDATA[该小节主要是简单介绍在scala中使用数组和集合1 数组
数组声明和初始化
还是以前一样，先来个简单地例子： 
 
初看是不是和java类型的语言类似, 当然还有更简单的用法。 
注： 0 to 2 是scala中RichInt提供的方法  /** like `until`, but includes the last index */
  /**
    * @param end The fina]]></description><category></category></item><item><title><![CDATA[从零开始学Scala系列(三)之初识循环分支结构]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/71276070</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/71276070</guid><author>rodbate</author><pubDate>Sat, 06 May 2017 19:37:32 +0800</pubDate><description><![CDATA[本节主要内容就是循环分支结构
while
for
foreach
….
从该节内容后例子都用idea编写了。scala中的循环结构与传统语言C，Java有些表现形式上的区别，接下来这两种形式都来对比一下。1 While循环首先先建个scala object 带有main函数的演示对象，object是什么后面细说。如下图：其实这和java中的带有main函数类很像，首先跑起来试试。def函数定义在第二]]></description><category></category></item><item><title><![CDATA[从零开始学Scala系列(二)之初识Scala]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/56511098</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/56511098</guid><author>rodbate</author><pubDate>Thu, 23 Feb 2017 00:00:03 +0800</pubDate><description><![CDATA[1. 学习使用scala解释器C:\Users\rodbate>scala
Welcome to Scala 2.12.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions for evaluation. Or try :help.scala> :help：help命令可查看命令帮助:scala> :he]]></description><category></category></item><item><title><![CDATA[从零开始学Scala系列(一)之环境安装及IDE选择安装]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/55225342</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/55225342</guid><author>rodbate</author><pubDate>Thu, 16 Feb 2017 00:04:38 +0800</pubDate><description><![CDATA[Scala简要介绍以及学习初衷
  Object-Oriented Meets Functional
  
  Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher]]></description><category></category></item><item><title><![CDATA[CGlib 入门]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/50434102</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/50434102</guid><author>rodbate</author><pubDate>Wed, 30 Dec 2015 13:45:10 +0800</pubDate><description><![CDATA[CGlib 入门cglib github地址链接。项目maven构建：<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.1</version>
</dependency>
项目gradle构建：dependencies {
    compile 'cglib:cgl]]></description><category></category></item><item><title><![CDATA[Spring AOP java动态代理实现]]></title><link>https://blog.youkuaiyun.com/rodbate/article/details/50433259</link><guid>https://blog.youkuaiyun.com/rodbate/article/details/50433259</guid><author>rodbate</author><pubDate>Wed, 30 Dec 2015 11:08:48 +0800</pubDate><description><![CDATA[Spring AOP java动态代理实现User类public class User {    private String name;
    private Integer age;    public String getName() {
        return name;
    }    public void setName(String name) {
        this]]></description><category></category></item></channel></rss>