<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nero_claudius的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/nero_claudius</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; nero_claudius]]></copyright><item><title><![CDATA[SpringSecurity自定义登录过滤链分析]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103995032</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103995032</guid><author>nero_claudius</author><pubDate>Wed, 15 Jan 2020 19:39:06 +0800</pubDate><description><![CDATA[前言
我用SpringSecurity用的挺多的，但是基本还是只掌握了用法，对它的认证流程其实还是比较懵逼的，借助这个机会，我重新学习了一下SpringSecurity，对它有了更深层次的理解。
SpringSecurity认证流程图

1 登录过滤链分析
1.1 UsernamePasswordAuthenticationFilter
/**
 * 处理提交的认证,首先调用Authenticat...]]></description><category></category></item><item><title><![CDATA[Spring Security默认过滤链认识]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103990276</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103990276</guid><author>nero_claudius</author><pubDate>Wed, 15 Jan 2020 15:32:35 +0800</pubDate><description><![CDATA[前言
最近重新学习了一下Spring Security，对整个认证流程有了一个自己的认识。但今天写的是一个前置的知识点，Spring Security启动后默认加载的一些过滤器，接着让我们来看看究竟是哪些
1 启动后过滤链总览
[main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain:
org.springfra...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap源码解析——基于JDK1.8]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103753898</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103753898</guid><author>nero_claudius</author><pubDate>Sun, 29 Dec 2019 15:28:16 +0800</pubDate><description><![CDATA[ConcurrentHashMap源码解析——基于JDK1.8
前言
这篇博客不知道写了多久，总之就是很久，头都炸了。最开始阅读源码时确实是一脸茫然，找不到下手的地方，真是太难了。下面的都是我自己阅读时的一些理解，由于能力有限，如有错误请指出。
先上一张JDK1.7的ConcurrentHashMap结构图

在 JDK 1.7 版本及之前的版本中
ConcurrentHashMap 为了解决 H...]]></description><category></category></item><item><title><![CDATA[HashSet源码解析——基于JDK1.8]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103540343</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103540343</guid><author>nero_claudius</author><pubDate>Sat, 14 Dec 2019 16:09:37 +0800</pubDate><description><![CDATA[前言
HashSet 是一个不允许存储重复元素的集合，它的实现比较简单，只要理解了 HashMap，HashSet 就水到渠成了。当然了解HashMap可以参考我的这篇文章
1 常量介绍
	//使用HashMap来实现Set的相关功能
	private transient HashMap&lt;E,Object&gt; map;

	// 将假value与map中的对象关联
    // Dumm...]]></description><category></category></item><item><title><![CDATA[LinkedHashMap源码解析——基于JDK1.8]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103534252</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103534252</guid><author>nero_claudius</author><pubDate>Fri, 13 Dec 2019 22:30:12 +0800</pubDate><description><![CDATA[前言
LinkedHashMap继承自HashMap。和HashMap不同的是，它维护一条双向链表，解决了遍历顺序和插入顺序一致的问题。并且还对访问顺序提供了相应的支持。因为LinkedHashMap的很多实现是基于HashMap实现的，所以如果要读懂LinkedHashMap还是需要先了解HashMap。可以参考我的这篇文章
    /**
     * 指向双向链表的头结点(最老的结点)
  ...]]></description><category></category></item><item><title><![CDATA[HashMap源码解析——基于JDK1.8]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103506526</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103506526</guid><author>nero_claudius</author><pubDate>Thu, 12 Dec 2019 11:47:38 +0800</pubDate><description><![CDATA[前言
HashMap数据结构由数组和链表(超过一定数量转换为红黑树)组成，在进行增删查等操作时，首先要定位到元素的所在表的位置，之后再从链表中定位该元素。具体找到表下标的方法是(n - 1) &amp; hash，其中n代表表的长度。
HashMap数据结构如下(确定下标用的是%取余的方式)：

1 常量介绍
    /**
     * 默认容量16
     * The default ini...]]></description><category></category></item><item><title><![CDATA[LinkedList源码解析——基于JDK1.8]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103429721</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103429721</guid><author>nero_claudius</author><pubDate>Fri, 06 Dec 2019 21:13:40 +0800</pubDate><description><![CDATA[1 前言
1.1 常量
	//链表的长度
	transient int size = 0;

    /**
     * Pointer to first node.指向第一个结点
     * Invariant(不变的): (first == null &amp;&amp; last == null) ||
     *            (first.prev == null &amp...]]></description><category></category></item><item><title><![CDATA[ArrayList源码解析——基于JDK1.8]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103413330</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103413330</guid><author>nero_claudius</author><pubDate>Thu, 05 Dec 2019 22:02:59 +0800</pubDate><description><![CDATA[1 常量介绍
1.1 ArrayList常量
    /**
     * 默认初始容量
     * Default initial capacity.
     */
    private static final int DEFAULT_CAPACITY = 10;

    /**
     * 用于空实例的共享空数组实例
     * Shared empty array instan...]]></description><category></category></item><item><title><![CDATA[Spring Boot缓存Redis&&Jackson2JsonRedisSerializer反序列化]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103329933</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103329933</guid><author>nero_claudius</author><pubDate>Sat, 30 Nov 2019 22:12:33 +0800</pubDate><description><![CDATA[1 需求
最近博客的音乐播放器出现了问题，无法获取到音乐的数据了，我才发现原来我以前用的不是网易官方的API（o(╥﹏╥)o），真是打了我一个措手不及啊。因为音乐播放器不是我自己写的（但还好为了适配我的网站我还是看了看它的代码，改了一部分接口），不知道数据格式是什么样的，只能自己看代码探索（也是绝了），所以难度系数增加了不少。
2 寻找API
首先面临的问题就是找到相关的API，我的需求是能返回我...]]></description><category></category></item><item><title><![CDATA[删除链表中重复的结点——Java实现]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/103029861</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/103029861</guid><author>nero_claudius</author><pubDate>Tue, 12 Nov 2019 15:28:50 +0800</pubDate><description><![CDATA[删除链表中重复的结点——Java实现
1 前言
刷题也刷了一段时间了，但是总是找不到写的东西，但就在今天，重新做这道JzOffer上的题，发现思路看着很简单，但是其中的细节倒是不少，错了很多次，所以想写下这道题一起学习一下。
2 题目
2.1 题目描述
删除链表中重复的结点
在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。 例如，链表1-&gt;2-...]]></description><category></category></item><item><title><![CDATA[Linux定时任务，执行shell文件失败问题&&mailed 73 bytes of output but got status 0x004b#012报错解决]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/102976144</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/102976144</guid><author>nero_claudius</author><pubDate>Fri, 08 Nov 2019 16:49:40 +0800</pubDate><description><![CDATA[Linux定时任务，执行shell文件失败问题
1 前言
最近一直被别人攻击数据库，ε=(´ο｀*)))唉。又不是什么重要数据，怎么一直逮住我不放了。实在没有什么办法了，只能把数据库做做备份，将损失降到最低吧o(╥﹏╥)o
2 编写shell脚本
2.1 创建shell脚本文件
touch xxx.sh

2.2 编辑shell脚本文件
vim xxx.sh

MySQL备份基本命令
mysqld...]]></description><category></category></item><item><title><![CDATA[程序员要搞明白CDN，这篇应该够了]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/102953446</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/102953446</guid><author>nero_claudius</author><pubDate>Thu, 07 Nov 2019 13:43:33 +0800</pubDate><description><![CDATA[程序员要搞明白CDN，这篇应该够了
最近在了解边缘计算，发现我们经常听说的CDN也是边缘计算里的一部分。那么说到CDN，好像只知道它中文叫做内容分发网络。那么具体CDN的原理是什么？能够为用户在浏览网站时带来什么好处呢？解决这两个问题是本文的目的。
CDN概念
CDN全称叫做Content Delivery Network，中文叫内容分发网络。
实际上CDN这个概念是在1996年由美国麻省理工学院...]]></description><category></category></item><item><title><![CDATA[Java动态代理&&源码分析]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/102525046</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/102525046</guid><author>nero_claudius</author><pubDate>Sat, 12 Oct 2019 18:00:47 +0800</pubDate><description><![CDATA[Java动态代理&amp;&amp;源码分析
要了解动态代理，肯定跳不过静态代理，下面将介绍一下静态代理
1 静态代理
1.1 继承
假设一个系统中有一个Person接口，你需要使用这个接口来实现你自己需要的实体类
Person接口
public interface Person {
    void show();
}

系统中出现了一个警察，那我就定义一个警察类实现Person接口
Polic...]]></description><category></category></item><item><title><![CDATA[Spring IOC——Java反射]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/102408385</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/102408385</guid><author>nero_claudius</author><pubDate>Tue, 08 Oct 2019 20:10:36 +0800</pubDate><description><![CDATA[Spring IOC——Java反射
1 基础
spring的技术核心之一是动态代理，而动态代理的核心是java反射。所以如果要学习spring框架，java反射是我们永远也绕不开的一个坎，这是基础。
2 反射定义
反射被视为动态语言的关键，java反射机制是在运行状态中，对于任意一个类，都能够知道这个类的所有属性和方法
对于任意一个对象，都能够调用它的任意方法和属性
这种动态获取信息以及动态调用...]]></description><category></category></item><item><title><![CDATA[JVM学习——解析Java虚拟机运行时数据区]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/101633481</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/101633481</guid><author>nero_claudius</author><pubDate>Sat, 28 Sep 2019 19:40:36 +0800</pubDate><description><![CDATA[JVM学习——解析Java虚拟机运行时数据区
1 运行时数据区概览
来一张图大概看一下JVM运行时数据区的情况，下面我将仔细的介绍各个区域

2 运行时数据区
2.1 程序计数器
程序计数器是一块较小的内存空间，可以看作是当前线程（每个线程都有自己的程序计数器）所执行的字节码的行号指示器。字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令，分支、循环、跳转、异常处理、线程恢复等基础...]]></description><category></category></item><item><title><![CDATA[spring-framework-5.1源码编译]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/101353218</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/101353218</guid><author>nero_claudius</author><pubDate>Wed, 25 Sep 2019 11:34:08 +0800</pubDate><description><![CDATA[spring-framework-5.1源码编译
1 前言
最近因为需要从零开始接触了spring的源码，最开始的时候是使用IDEA反编译的源码，但是因为是反编译的跟原本的源码确实存在区别，并且还不能写注释。工欲善其事，必先利其器。毅然决然，决定下载spring的源码下来阅读，测试。
2 曲折的搭建之旅
因为spring5的源码是使用gradle搭建的，但是作为一个只会用maven的人来说，最开始...]]></description><category></category></item><item><title><![CDATA[JVM学习——虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/100937771</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/100937771</guid><author>nero_claudius</author><pubDate>Tue, 17 Sep 2019 20:02:36 +0800</pubDate><description><![CDATA[JVM学习——虚拟机类加载机制
1 概述
虚拟机把描述类的数据从Class文件加载到内存，并对数据进行校验、转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型，这就是虚拟机的类加载机制。
与那些在编译时需要进行连接工作的语言不同，在Java语言里面，类型的加载、连接和初始化过程都是在程序运行期间完成的。
2 类加载的时机
2.1 类的生命周期
从被虚拟机加载到内存开始，到卸载出内存为止，...]]></description><category></category></item><item><title><![CDATA[Java设计模式——适配器模式]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/100858661</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/100858661</guid><author>nero_claudius</author><pubDate>Sun, 15 Sep 2019 17:21:40 +0800</pubDate><description><![CDATA[Java设计模式——适配器模式
1 类适配器模式
1.1 类适配器模式介绍
Target（目标抽象类）：目标抽象类定义客户所需接口，可以是一个抽象类或接口，也可以是具体类。
Adapter（适配器类）：适配器可以调用另一个接口，作为一个转换器，对Adaptee和Target进行适配，适配器类是适配器模式的核心，在对象适配器中，它通过继承Target并关联一个Adaptee对象使二者产生联系。
Ad...]]></description><category></category></item><item><title><![CDATA[MYSQL密码正确，却依然显示拒绝连接]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/100810319</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/100810319</guid><author>nero_claudius</author><pubDate>Fri, 13 Sep 2019 20:33:42 +0800</pubDate><description><![CDATA[MYSQL密码正确，却依然显示拒绝连接
1 前言
就是在今天，以前跑的好好的项目突然就停火了，感觉十分懵逼，第一想到的就是不会又被黑了吧(不要问为什么是又)。但是经过一番操作，不是好好的吗？这究竟是为什么呢？在本地打开项目，看了一下日志，MySQL拒绝访问？刚才我不是连上了吗？一脸懵逼+1。
java.sql.SQLException: Access denied for user 'root'@...]]></description><category></category></item><item><title><![CDATA[阿里云ECS服务器CentOS7上安装MYSQL]]></title><link>https://blog.youkuaiyun.com/nero_claudius/article/details/100809534</link><guid>https://blog.youkuaiyun.com/nero_claudius/article/details/100809534</guid><author>nero_claudius</author><pubDate>Fri, 13 Sep 2019 19:52:25 +0800</pubDate><description><![CDATA[阿里云ECS服务器CentOS7上安装MYSQL
1.确保服务器系统处于最新状态
yum -y update

如果显示以下内容说明已经更新完成
Replaced:
  grub2.x86_64 1:2.02-0.64.el7.centos   grub2-tools.x86_64 1:2.02-0.64.el7.centos
Complete!

2.重启服务器
reboot

3.首先检查是否...]]></description><category></category></item></channel></rss>