<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[余韵啊]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ljf199701</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ljf199701]]></copyright><item><title><![CDATA[Java多线程（五）——线程池任务队列LinkedBlockingQueue]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/108112466</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/108112466</guid><author>ljf199701</author><pubDate>Thu, 20 Aug 2020 00:49:17 +0800</pubDate><description><![CDATA[这篇文章继续来介绍线程任务队列——LinkedBlockingQueue，LinkedBlockingQueue是基于链接节点的阻塞队列，它是线程安全的。
LinkedBlockQueue是在jdk1.5之后出现的，先看看它的所继承或实现的超类的关系图。

再看看LinkedBlockingQueue从超类里面所继承过来的方法，最主要的是看AbstractQueue和BlockingQueue

直接看看BlockingQueue接口里面的方法。
public interface BlockingQueue]]></description><category></category></item><item><title><![CDATA[Java多线程（四）———线程池任务队列ArrayBlockingQueue]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106942659</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106942659</guid><author>ljf199701</author><pubDate>Wed, 24 Jun 2020 17:05:08 +0800</pubDate><description><![CDATA[上面的一篇文章，我们介绍了线程池的拒接策列，这篇文章开始我们介绍线程池任务队列中的等待队列—— ArraBlockingQueue。
先看看ArrayBlockingQueue的继承和实现的关系的图。

ArrayBlockQueue是一个有界的队列，这个队列排列元素FIFO(先进先出)，其中队列元素是用一个数组来保存的，创建时指定队列的大小，创建后，容量无法改变。
从上面的图可以看到，ArrayBlockQueue是继承了AbstractQueue类，和实现了BlockingQueue接口。
看一下Abs]]></description><category></category></item><item><title><![CDATA[Java多线程（三）——线程池的拒绝策列]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106774630</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106774630</guid><author>ljf199701</author><pubDate>Tue, 16 Jun 2020 01:42:32 +0800</pubDate><description><![CDATA[上一篇文章我们说了线程池的创建的五种方式，其实五种方法都是在 ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) 方法中填写不同参数而构成的。
其中的参数 handler（拒绝策列）都是默认都是defa]]></description><category></category></item><item><title><![CDATA[Java多线程（二）——线程池的使用]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106750790</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106750790</guid><author>ljf199701</author><pubDate>Mon, 15 Jun 2020 01:41:34 +0800</pubDate><description><![CDATA[上一篇文章我们说了创建线程的几种方式，按照上一篇文章，我们如果要创建多个线程，是不是就要多写几个实现多线程方式的类呢？要知道我们频繁创建和销毁线程是要耗费大量的资源的，为了减少不必要的资源开销，就有了线程池的出现，其实线程池就是想让我们复用里面的线程；减少不必要的开销。
要了解线程池，就要先了解创建线程池的七大参数的一种。
JUC包下面的 ThreadPoolExecutor类
ThreadPoolExecutor(int corePoolSize,
                          in]]></description><category></category></item><item><title><![CDATA[Java多线程（一）——创建线程的方式]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106750161</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106750161</guid><author>ljf199701</author><pubDate>Sun, 14 Jun 2020 19:43:21 +0800</pubDate><description><![CDATA[在Java中有几种不同的方式创建线程，下面就说说创建线程的几种不同的方式。
方式一、继承Thread
继承Thread类，重写里面的run（）方法
public class ThreadDemo02  extends  Thread{


    @Override
    public void run() {
        System.out.println("线程名称："+Thread.currentThread().getName());
    }


    public static vo]]></description><category></category></item><item><title><![CDATA[Java动态代理——InvocationHandler和Proxy详解]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106470040</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106470040</guid><author>ljf199701</author><pubDate>Mon, 01 Jun 2020 12:46:17 +0800</pubDate><description><![CDATA[Java 实现动态代理一共有两种方法，一种是JDK Proxy，另外一种是Cglib，下面就看看JDK动态代理的实现过程，和对实现JDK代理的一个接口InvocationHandler和一个类Proxy的详解。
首先我们说说静态代理跟动态代理的概念：
静态代理：就是由程序员自己创建或由特定工具自动生成源代码，在程序运行之前，代理类已经存在。（可参考设计模式中的代理模式）。
动态代理：在程序运行时，利用反射机制动态创建而成的。
JDK 代理
要代理的目标对象（委托类）必须实现接口，代理类只能对接口进行代理，要]]></description><category></category></item><item><title><![CDATA[Spring Bean的生命周期]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106444983</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106444983</guid><author>ljf199701</author><pubDate>Sat, 30 May 2020 19:57:17 +0800</pubDate><description><![CDATA[Spring Bean的生命周期也是高频的面试题目，下面我就写写Spring 中一个Bean从初始化到销毁的生命周期。
先上图

上面的图可以分成下面的几步：
1.实例化Bean
2.属性注入
3.如果这个 Bean 已经实现了 BeanNameAware 接口，会调用它实现的 setBeanName(String) 方法，此处传递的就是 Spring 配置文件中 Bean 的 id 值
4.如果这个 Bean 已经实现了 BeanFactoryAware 接口，会调用它实现的 setBeanFactory]]></description><category></category></item><item><title><![CDATA[HashMap中的putVal(int hash, K key, V value, boolean onlyIfAbsent,  boolean evict)解读]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/106309417</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/106309417</guid><author>ljf199701</author><pubDate>Sun, 24 May 2020 01:40:19 +0800</pubDate><description><![CDATA[在面试中我们会经常遇到关于HashMap的问题，这里我写了我对HashMap里面一个挺重要的方法 putVal(int hash, K key, V value, boolean onlyIfAbsent,  boolean evict)的理解，下面就是我对这个方法的理解。
其实putVal(int hash, K key, V value, boolean onlyIfAbsent,  boolean evict)方法我们是没有办法直接调用的，其实在我们使用put(K key,V val)时，它里面的内部]]></description><category></category></item><item><title><![CDATA[（一）二叉查找树的API实现]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/105734348</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/105734348</guid><author>ljf199701</author><pubDate>Fri, 24 Apr 2020 18:00:08 +0800</pubDate><description><![CDATA[最近在看数据结构，看到二叉查找树，为了加深自己对二叉查找树知识的印象，所以自己实现了一些于树相关的api。
**二叉查找树的定义：
**
二叉查找树（Binary Search Tree），（又：二叉搜索树，二叉排序树）它或者是一棵空树，或者是具有下列性质的二叉树： 若它的左子树不空，则左子树上所有结点的值均小于它的根结点的值； 若它的右子树不空，则右子树上所有结点的值均大于它的根结点的值； 它的...]]></description><category></category></item><item><title><![CDATA[数据结构 ——哈希表]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/105131782</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/105131782</guid><author>ljf199701</author><pubDate>Fri, 27 Mar 2020 00:21:46 +0800</pubDate><description><![CDATA[此篇文章只是记录一下学习hash表的知识点，并不涉及代码。

概念：哈希存储是一种由关键字本身决定其储存位置的存储结构
散列表（Hash table，也叫哈希表），是根据关键码值(Key value)而直接进行访问的数据结构。也就是说，它通过把关键码值映射到表中一个位置来访问记录，以加快查找的速度。这个映射函数叫做散列函数，存放记录的数组叫做散列表。（百度百科）
把关键字K代入某个函数H...]]></description><category></category></item><item><title><![CDATA[数据结构 ——树]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/105073890</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/105073890</guid><author>ljf199701</author><pubDate>Tue, 24 Mar 2020 16:26:15 +0800</pubDate><description><![CDATA[此篇文章只是记录一下自己学习数据结构——树的笔记，不涉及代码；简单介绍一下树的各种概念，加深自己印象。
树：
概念：
是一种数据结构，它是由n（n&gt;=0）个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树，也就是说它是根朝上，而叶朝下的。它具有以下的特点：
每个结点有零个或多个子结点；没有父结点的结点称为根结点；每一个非根结点有且只有一个父结点；除了根结点外，每...]]></description><category></category></item><item><title><![CDATA[数据结构 —— 图]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/104991588</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/104991588</guid><author>ljf199701</author><pubDate>Fri, 20 Mar 2020 15:59:03 +0800</pubDate><description><![CDATA[图 —— 非线性数据结构
概念：
图（Graph）是由顶点的有穷非空集合和顶点之间边的集合组成，通常表示为：G(V,E)，其中，G表示一个图，V是图G中顶点的集合，E是图G中边的集合。
无向图： 由没有方向的边构成的图

无向图中的边由顶点的无序对组成（用圆括号表示） （v2,v1） (v1,v2)表示同一条边。
邻接点：  无向图中，若存在一条边（vi,vj），则称vi和vj互为邻接点。
有向图...]]></description><category></category></item><item><title><![CDATA[Spring-Boot中结合Swagger-UI实现在线接口文档]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/104718123</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/104718123</guid><author>ljf199701</author><pubDate>Sat, 07 Mar 2020 17:56:26 +0800</pubDate><description><![CDATA[1.Swagger是什么？
Swagger 是一个规范且完整的框架，用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口，可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义，用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层...]]></description><category></category></item><item><title><![CDATA[Java中 “==” 与 equals]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/104433649</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/104433649</guid><author>ljf199701</author><pubDate>Fri, 21 Feb 2020 23:36:14 +0800</pubDate><description><![CDATA[1.  “==”的作用
==：作用是判断两个对象的地址值是否相等。
1.1 当比较的两个对象是基本数据类型的时候他们比较的是值
基本数据类型有：

byte
char
long
double
boolean
float
short
int

	
可能有些同学回好奇，String 不是基本数据类型 但它们的 “str1 == str2”比较的结果却为 true;这是因为 String str = “...]]></description><category></category></item><item><title><![CDATA[mybatis的逆向工程]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/104322102</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/104322102</guid><author>ljf199701</author><pubDate>Sat, 15 Feb 2020 02:00:18 +0800</pubDate><description><![CDATA[1.什么是mybatis中的逆向工程?
通俗地来说就是mybatis中通过数据库中的表，生成pojo类、mapper接口、mapper.xml文件。
2.怎么实现mybatis中的逆向工程？
下面我就说说怎么实现mybatis中的逆向工程,我所用的ide为IDEA，和用了包管理工具maven。
2.1  引入所需的依赖。
	&lt;dependency&gt;
        &lt;groupI...]]></description><category></category></item><item><title><![CDATA[Centos7下安装redis]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/103753079</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/103753079</guid><author>ljf199701</author><pubDate>Sun, 29 Dec 2019 15:24:45 +0800</pubDate><description><![CDATA[本篇文章记录一下在centos7下面安装redis的过程，也方便自己而后查看。
1.下载redis
ps:在这个网址下面有很多版本的redis : http://download.redis.io/releases/ 可根据自己需要下载不同版本的redis。
wget http://download.redis.io/releases/redis-5.0.7.tar.gz

2.解压
tar -z...]]></description><category></category></item><item><title><![CDATA[webpack的使用入门笔记]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/103077189</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/103077189</guid><author>ljf199701</author><pubDate>Sat, 16 Nov 2019 00:03:13 +0800</pubDate><description><![CDATA[1.webpack 的使用
1.1先创建一个目录，再创建如图一下的文件

1.2在项目根目录中运行 npm i webpack  --save-dev 安装到依赖项目中

1.3使用命令 npm init 初始化项目
1.4使用 npm i 库名 --save 安装各依赖库
1.5在main.js里面编写我们的函数

1.6. 直接在页面上引用main.js会报错，因为浏览器不认识import这种...]]></description><category></category></item><item><title><![CDATA[解决web.WebXml.setVersion Unknown version]]></title><link>https://blog.youkuaiyun.com/ljf199701/article/details/102655078</link><guid>https://blog.youkuaiyun.com/ljf199701/article/details/102655078</guid><author>ljf199701</author><pubDate>Sun, 20 Oct 2019 22:47:05 +0800</pubDate><description><![CDATA[今天运行一个struts2的项目，发现控制台下面输出变红了，虽然项目能够运行，但是看起来很不爽，就想把它解决掉。

查了一下资料，发现Tomcat8不支持web4.0的版本，所以才会出现这一行警告。
解决这个问题有两种办法：
1、把Tomcat换成9以上
换Tomcat的方法就不展示了。
2、手动修改web.xml的版本

把这个换成4.0一下就好了。

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