<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ltx0720的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ltx0720</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ltx0720]]></copyright><item><title><![CDATA[AOP流程学习]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/104736728</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/104736728</guid><author>ltx0720</author><pubDate>Sun, 08 Mar 2020 17:35:11 +0800</pubDate><description><![CDATA[思路：
只需要写一个BPP，在postProcessAfterInitialization方法中，对对象进行判断，看他需不需要织入切面逻辑，如果需要，那我就根据这个对象，生成一个代理对象，然后返回这个代理对象，那么最终注入容器的，自然就是代理对象了。AOP实现，就是在 getBean(…) 的时候返回的实际上是代理类的实例。
AOP源码流程

创建 bean 的时候，在 bean 依赖注入之后，调...]]></description><category></category></item><item><title><![CDATA[Think in Java 复用类(第7章) 读书笔记]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/94448873</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/94448873</guid><author>ltx0720</author><pubDate>Tue, 02 Jul 2019 19:47:18 +0800</pubDate><description><![CDATA[第7章 复用类

1.组合语法

在新类中产生现有类的对象。由于新类是由现有类的对象组成的，所以这种方法称为组合。



2.继承语法

按照现有类的类型来创建新类，无需改变现有类的形式，采用现有类的形式并在其中添加新代码。

除非已经明确从其他类中继承，否则就是隐式的从Object中继承。

+= 操作符被重载用来处理String对象，另一个是 +。



2.1初始化基类

当创建了一个子...]]></description><category></category></item><item><title><![CDATA[Java8学习记录(一)——Lambda表达式]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/90339353</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/90339353</guid><author>ltx0720</author><pubDate>Thu, 23 May 2019 17:29:42 +0800</pubDate><description><![CDATA[这两天看了《Java8实战》，做一下记录。

目录

一、行为参数化：

1.什么是行为参数化：

二、函数式接口：

1.概念:

三、Lambda表达式：

四、方法引用（注意点）：

1.静态方法引用：

2.实例方法引用(重点来了)：

①任意类型的实例方法引用：

②现有对象的实例方法引用：

3.构造方法引用：

一、行为参数化：

1.什么是行为参数化：


1. 你说：我要所有重...]]></description><category></category></item><item><title><![CDATA[Spring Security 学习(一)认证与授权源码分析——一次痛苦的爬坑经历]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/90299410</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/90299410</guid><author>ltx0720</author><pubDate>Fri, 17 May 2019 23:56:45 +0800</pubDate><description><![CDATA[一点感悟：

一个疏忽，花了 5h 解决了，哎。用一首歌来表达一下现在的心情：点击。

不过也算摸清了Spring Security 一点基本原理，没有白费的时间......

学习新知识的时候，遇到解决不了的问题一定不能心急，越是这个时候越要静下心来一步一步的去分析原理。静心、沉淀。

一、认证过程 ：

废话不多说，在学习之前最好先把用到的英语单词熟悉一下。 AuthenticationMan...]]></description><category></category></item><item><title><![CDATA[关于 volatile——可见性，有序性，内存屏障]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/89669073</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/89669073</guid><author>ltx0720</author><pubDate>Tue, 14 May 2019 15:47:27 +0800</pubDate><description><![CDATA[并发编程的三大特性：原子性，有序性，可见性。从这三个方面去看一下 volatile。

volatile 保证了可见性：


public class Demo1 {

    private  boolean flag = true;

    public void test(){
        while (flag){
            
        }

        Sy...]]></description><category></category></item><item><title><![CDATA[手写 Future 模式]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/90183106</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/90183106</guid><author>ltx0720</author><pubDate>Mon, 13 May 2019 22:47:03 +0800</pubDate><description><![CDATA[Future 接口：


public interface Future&lt;T&gt; {

    T get() throws InterruptedException;
    boolean isDone();
    void Cancel();
    boolean isCancel();
}




FutureTask类：


public class FutureTask...]]></description><category></category></item><item><title><![CDATA[线程池源码分析(一)]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/90173639</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/90173639</guid><author>ltx0720</author><pubDate>Mon, 13 May 2019 17:32:57 +0800</pubDate><description><![CDATA[最近在阅读《阿里巴巴Java开发手册》的时候，书中有这么一段话：



线程池这块理解不是很深，今天就抽时间重新学习一遍。对于书中的问题分析完成后答案便一目了然。



创建线程池的一个方式：


ExecutorService e = Executors.newFixedThreadPool(5);

Executors 相当于一个工厂类，它应该是提供了一下几种类型的线程池：

1.new...]]></description><category></category></item><item><title><![CDATA[ReetrantLock 源码分析——深入理解公平锁与非公平锁]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/89669096</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/89669096</guid><author>ltx0720</author><pubDate>Wed, 01 May 2019 11:57:56 +0800</pubDate><description><![CDATA[ReetrantLock 是独占锁、可重入锁，并且同时支持公平锁和非公平锁。

首先看一下ReetrantLock 的构造函数：


public ReentrantLock() {
    sync = new NonfairSync();//默认非公平锁
}

public ReentrantLock(boolean fair) {
    sync = fair ? new FairSync...]]></description><category></category></item><item><title><![CDATA[图解使用两块 Survivor 区的原因]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/89348719</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/89348719</guid><author>ltx0720</author><pubDate>Wed, 17 Apr 2019 09:36:18 +0800</pubDate><description><![CDATA[如果只使用一块 Survivor 区：

当发生一次 Minor GC 时，回收 Eden 区的垃圾，把存活的对象复制到 Survivor 区，如下图：





ok，目前看起来并没有什么区别。但是当发生第二次 Minor GC 时，问题就出现了。我们来看一下，第二次 Minor GC 时发生了什么：

如果此时发生 Minor GC：





会出现这种情况：



很明显，这样会出现内存碎...]]></description><category></category></item><item><title><![CDATA[Think in Java 异常类(第12章) 读书笔记]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/89219796</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/89219796</guid><author>ltx0720</author><pubDate>Fri, 12 Apr 2019 20:47:34 +0800</pubDate><description><![CDATA[概念：

首先看一下Java中的异常体系：



Error：一般是指与虚拟机相关的问题，如 OOM，ThreadDeath。

RuntimeExprion：NullPointerException，ClassCastException，IllegalArgumentException，ArrayStoreException，IndexOutOfBoundsException，Num...]]></description><category></category></item><item><title><![CDATA[匿名内部类访问的变量final修饰符问题]]></title><link>https://blog.youkuaiyun.com/ltx0720/article/details/89197567</link><guid>https://blog.youkuaiyun.com/ltx0720/article/details/89197567</guid><author>ltx0720</author><pubDate>Wed, 10 Apr 2019 22:42:25 +0800</pubDate><description><![CDATA[首先匿名内部类能访问的变量有以下3种：

1.实例变量

2.局部变量

3.外部类的方法参数

   需要知道，访问1时不需要final修饰，而访问2、3时需要用final修饰。jdk1.8之后，不需要手动加final修饰符，

编译时底层会自动加上final。

   那么为什么要加 final 呢？在这里先了解原因，具体为什么下文会解释。原因：需要保护数据的一致性。


pu...]]></description><category></category></item></channel></rss>