<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[X_lsod的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/X_lsod</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; X_lsod]]></copyright><item><title><![CDATA[SpringBoot整合Swagger（解决Swagger报错）]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/125743417</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/125743417</guid><author>X_lsod</author><pubDate>Tue, 12 Jul 2022 15:07:26 +0800</pubDate><description><![CDATA[SpringBoot整合Swagger，包含SpringBoot+SpringSecurity+Swagger整合过程，解决Swagger报错问题]]></description><category></category></item><item><title><![CDATA[Redis安装教程（超详细）]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/123263429</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/123263429</guid><author>X_lsod</author><pubDate>Thu, 03 Mar 2022 20:47:19 +0800</pubDate><description><![CDATA[Redis
一、Redis安装
1、windows下安装

默认端口：6379


下载连接  https://github.com/tporadowski/redis/releases


解压


双击redis-server.exe启动服务端


双击redis-cli.exe启动客户端连接服务端


在客户端输入 “ping”，出现“PONG”，即证明连接成功




2、Linux下安装
2.1、下载linux压缩包  【redis-5.0.5.tar.gz】
2.2、通过FlashFXP把压缩包]]></description><category></category></item><item><title><![CDATA[SpringSecurity前后端分离]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/122914659</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/122914659</guid><author>X_lsod</author><pubDate>Sun, 13 Feb 2022 21:50:09 +0800</pubDate><description><![CDATA[SpringSecurity前后端分离
一、认证流程讲解
1、原始认证流程

原始认证流程通常会配合Session一起使用，但前后端分离后就用不到Session了

SpringSecurity默认的认证流程如下图（该图是B站UP主“三更草堂”讲SpringSecurity课程的图）


DaoAuthenticationProvider继承AbstractUserDetailsAuthenticationProvider抽象类，而AbstractUserDetailsAuthenticationProvi]]></description><category></category></item><item><title><![CDATA[Java集合（四）—— Map详解]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120587874</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120587874</guid><author>X_lsod</author><pubDate>Sat, 02 Oct 2021 18:05:35 +0800</pubDate><description><![CDATA[Map接口
1、HashMap
2、HashTable
3、TreeMap

]]></description><category></category></item><item><title><![CDATA[Java集合（三）—— Set详解]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120586888</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120586888</guid><author>X_lsod</author><pubDate>Sat, 02 Oct 2021 17:57:39 +0800</pubDate><description><![CDATA[Set接口
一、HashSet
public class HashSet&lt;E&gt;extends AbstractSet&lt;E&gt;implements Set&lt;E&gt;, Cloneable, Serializable


HashSet继承自Set接口，无序、不可重复的，线程不安全，存取速度快。
当向HashSet集合中存入一个元素时，HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值，然后根据hashCode值决定该对象在HashSet中的存储位]]></description><category></category></item><item><title><![CDATA[hashCode 以及 hashCode()与equals()的联系]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120587335</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120587335</guid><author>X_lsod</author><pubDate>Sat, 02 Oct 2021 17:10:56 +0800</pubDate><description><![CDATA[hashCode 以及 hashCode()与equals()的联系
一、什么是hashCode：
hashCode就是对象的散列码，是根据对象的某些信息推导出的一个整数值，默认情况下表示是对象的存储地址。通过散列码，可以提高检索的效率，主要用于在散列存储结构中快速确定对象的存储地址，如Hashtable、hashMap中。
为什么说hashcode可以提高检索效率呢？我们先看一个例子，如果想判断一个集合是否包含某个对象，最简单的做法是怎样的呢？逐一取出集合中的每个元素与要查找的对象进行比较，当发现该元素与]]></description><category></category></item><item><title><![CDATA[Java集合（二）—— List详解]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120586227</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120586227</guid><author>X_lsod</author><pubDate>Sat, 02 Oct 2021 16:17:43 +0800</pubDate><description><![CDATA[一、List接口

List接口的元素是有序、可重复的

1、Vector

Vector实现了RandomAccess接口，因此可以通过下标进行随机访问，底层数据结构是数组结构。
Vector中的方法由于加了 synchronized 修饰，所以Vector的操作是线程安全的。
Vector实现了Cloneable，重载了clone()方法，因此可以进行克隆。
Vector实现了Serializable接口，因此可以进行序列化。

1.1、扩容机制
Vector默认初始容量为10（jdk7和jdk8一样都]]></description><category></category></item><item><title><![CDATA[Java集合（一）—— 总述]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120585639</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120585639</guid><author>X_lsod</author><pubDate>Sat, 02 Oct 2021 14:43:04 +0800</pubDate><description><![CDATA[一、集合框架
1、框架图

2、集合说明
2.1、什么是集合？

集合就是一个放数据的容器，准确的说是放数据对象引用的容器
集合类存放的都是对象的引用，而不是对象的本身
JDK提供的集合API都包含在java.util包内

2.2、集合两大部分

Java 集合的框架主要分两大部分，一部分实现了 Collection 接口，该接口定义了存取一组对象的方法，其子接口 Set 和 List 分别定义了存取方式；另一部分是  Map 接口，该接口定义了存储一组“键（key）值（value)”映射对的方法。

2]]></description><category></category></item><item><title><![CDATA[Java基础（三）—— 异常]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120522713</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120522713</guid><author>X_lsod</author><pubDate>Wed, 29 Sep 2021 00:16:26 +0800</pubDate><description><![CDATA[异常

1、Throwable
Throwable类实现了Serializable接口，表示Throwable可以进行序列化，继承自Object类，他的子类主要是Error和Exception类还有一个StackRecorder类。Throwable是一个类而不是一个接口，这是为了让异常类能够有单一职责。
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类（或其子类之一）的实例时，才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地，只有此类或其子类之一才可以]]></description><category></category></item><item><title><![CDATA[Java基础（二）—— 面向对象]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120490165</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120490165</guid><author>X_lsod</author><pubDate>Sun, 26 Sep 2021 15:53:48 +0800</pubDate><description><![CDATA[面向对象

面向对象三大特征：封装、继承、多态

1、类（分为属性和行为）
通常类名大写开头，例如：Student
类的关系：关联关系(has a)、继承关系(is a)、实现关系(like a)、聚合关系、依赖关系、组合关系
关联关系：一对一、一对多、多对多
List：有序可重复
set：无序不可重复
map：KEY-VALUE结构
定义一个类，主要有三个步骤：
1.1、定义类名，
用于区分不同的类。如下代码中 public class 后面跟的就是类名。class是声明类的关键字，类名后面跟上大括号，大]]></description><category></category></item><item><title><![CDATA[Java基础（一）]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/112410876</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/112410876</guid><author>X_lsod</author><pubDate>Sun, 26 Sep 2021 15:30:18 +0800</pubDate><description><![CDATA[基础语法


常量
Java 中的 final 关键字可以用于声明属性（常量），方法和类。当 final 修饰属性时，代表该属性一旦被分配内存空间就必须初始化，它的含义是“这是无法改变的”或者“终态的”。在变量前面添加关键字 final 即可声明一个常量。在 Java 编码规范中，要求常量名必须大写。
final 数据类型 常量名 = 值;
final double PI = 3.14;

常量也可以先声明，再进行赋值，但只能赋值一次，比如：
final int FINAL_VARIABLE;
FINAL_]]></description><category></category></item><item><title><![CDATA[JVM详解（四）—— 运行时数据区]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120455573</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120455573</guid><author>X_lsod</author><pubDate>Fri, 24 Sep 2021 15:12:14 +0800</pubDate><description><![CDATA[一、运行时数据区

运行数据区域可以划分为5大块：Java虚拟机栈、程序计数寄存器（PC寄存器）、本地方法栈（Native Method Stack）、Java堆、方法区


Java堆：Java堆是Java虚拟机所管理的内存中最大的一块，被进程的所有线程共享，在虚拟机启动时被创建。该区域的唯一目的就是存放对象实例，几乎所有的对象实例都在这里分配内存，随着JIT编译器的发展与逃逸分支技术逐渐成熟，栈上分配、标量替换等优化技术使得对象在堆上的分配内存变得不是那么“绝对”。Java堆是垃圾收集器管理的主要区域。]]></description><category></category></item><item><title><![CDATA[JVM详解（三）—— 类加载过程]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120455344</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120455344</guid><author>X_lsod</author><pubDate>Fri, 24 Sep 2021 15:08:14 +0800</pubDate><description><![CDATA[Java虚拟机系列文章是参考网上内容总结，或者转载而来，主要用于个人学习记录。
参考文章：
https://blog.youkuaiyun.com/bingduanlbd/article/details/8363734
https://zhuanlan.zhihu.com/p/44670213
https://blog.youkuaiyun.com/goto1997/article/details/91905622
一、类加载过程

类加载指将类的字节码文件（.class）中的二进制数据读入内存，将其放在运行时数据区的方法区内，然]]></description><category></category></item><item><title><![CDATA[JVM详解（二）—— 编译过程]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120455149</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120455149</guid><author>X_lsod</author><pubDate>Fri, 24 Sep 2021 14:59:01 +0800</pubDate><description><![CDATA[一、编译过程

Java 语言的**「编译期」其实是一段「不确定」**的操作过程。


因为它可能是一个前端编译器（如 Javac）把 *.java 文件编译成 *.class 文件的过程；


也可能是程序运行期的即时编译器（JIT 编译器，Just In Time Compiler）把字节码文件编译成机器码的过程；


还可能是静态提前编译器（AOT 编译器，Ahead Of Time Compiler）直接把 *.java 文件编译成本地机器码的过程。



Javac 这类编译器对代码的运行效率几乎]]></description><category></category></item><item><title><![CDATA[JVM详解（一）——JVM工作原理介绍]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120454774</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120454774</guid><author>X_lsod</author><pubDate>Fri, 24 Sep 2021 14:50:53 +0800</pubDate><description><![CDATA[一、JVM工作原理介绍

Java虚拟机系列文章是参考网上内容总结，或者转载而来，主要用于个人学习记录。

1、简略图


首先Java源文件经过前端编译器（javac或ECJ）将.java文件编译为Java字节码文件（即.class文件），然后JRE加载Java字节码文件，载入系统分配给JVM的内存区，然后执行引擎解释或编译类文件，再由即时编译器将字节码转化为机器码。

2、详细过程


...]]></description><category></category></item><item><title><![CDATA[Java基础-泛型]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/120416482</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/120416482</guid><author>X_lsod</author><pubDate>Wed, 22 Sep 2021 16:30:03 +0800</pubDate><description><![CDATA[泛型
大家可能会有疑问，我为什么叫做泛型是一个守门者。这其实是我个人的看法而已，我的意思是说泛型没有其看起来那么深不可测，它并不神秘与神奇。泛型是 Java 中一个很小巧的概念，但同时也是一个很容易让人迷惑的知识点，它让人迷惑的地方在于它的许多表现有点违反直觉。
文章开始的地方，先给大家奉上一道经典的测试题。
List&lt;String&gt; l1 = new ArrayList&lt;String&gt;();
List&lt;Integer&gt; l2 = new ArrayList&lt;Int]]></description><category></category></item><item><title><![CDATA[SpringBoot整合Thtmeleaf查询实例]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/118827688</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/118827688</guid><author>X_lsod</author><pubDate>Fri, 16 Jul 2021 22:18:17 +0800</pubDate><description><![CDATA[一、创建SpringBoot项目
1、网页创建项目



创建SpringBoot的网址是 https://start.spring.io/


打开网址按照图选择配置好项目，然后点击下面的  GENERATE  按钮生成项目




2、项目目录如下

二、修改配置文件



修改该配置文件application.properties后缀名为yml。即application.yml


将下面的内容粘贴进去，按照自己创建的环境修改路径、数据库名称等。



server:
  port: 8080

sp]]></description><category></category></item><item><title><![CDATA[Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/118786279</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/118786279</guid><author>X_lsod</author><pubDate>Fri, 16 Jul 2021 10:28:59 +0800</pubDate><description><![CDATA[SpringBoot搭建报错：Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
一、详细错误：
1、idea报错如下
Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource]]></description><category></category></item><item><title><![CDATA[Oracle数据库连接池的创建和使用]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/118355785</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/118355785</guid><author>X_lsod</author><pubDate>Wed, 30 Jun 2021 10:41:50 +0800</pubDate><description><![CDATA[Oracle数据库连接池的创建和使用

数据库连接池的主要操作如下：

建立数据库连接池对象（服务器启动）。
按照事先指定的参数创建初始数量的数据库连接（即：空闲连接数）。
对于一个数据库访问请求，直接从连接池中得到一个连接。如果数据库连接池对象&gt; 中没有空闲的连接，且连接数没有达到最大（即：最大活跃连接数），创建一个新的数据库连接。
存取数据库。
5&gt; .  关闭数据库，释放所有数据库连接（此时的关闭数据库连接，并非真正关闭，而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接]]></description><category></category></item><item><title><![CDATA[Ajax请求xmlhttp.readyState总是等于0解决办法]]></title><link>https://blog.youkuaiyun.com/X_lsod/article/details/118270895</link><guid>https://blog.youkuaiyun.com/X_lsod/article/details/118270895</guid><author>X_lsod</author><pubDate>Sun, 27 Jun 2021 12:04:13 +0800</pubDate><description><![CDATA[回调函数从出错，xmlhttp.readyState总是等于0。
问题描述：
有错代码：
&lt;script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    $(document).ready(function () {
        $("input[id='username']").blur(function () {
            ]]></description><category></category></item></channel></rss>