<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Leviiiiiiiii的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Leviiiiiiiii</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Leviiiiiiiii]]></copyright><item><title><![CDATA[【Java后端学习之路】Spring核心学习篇]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/129840584</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/129840584</guid><author>Leviiiiiiiii</author><pubDate>Fri, 07 Apr 2023 21:43:31 +0800</pubDate><description><![CDATA[举个例子就是在电商网站需要提交订单的时候要进行一系列的验证与安全操作，而这部分的代码在传统领域中必须在每一个相关的业务逻辑中都写上，目前的理解是传统方法是把 统一的验证逻辑，一个个分配到需要被分配的地方去，这样就冗余。集合类容器是存储对象的，是一种数据结构，IoC容器是一种基于Java反射机制（像镜子一样把运行时的一个对象反射出来，即动态访问和操作，不用静态的时候获取）和XML配置文件的容器，负责管理对象与程序的依赖关系的。注意，这里的切面是横切面，横切面是指与人体或器官的长轴垂直的切面。]]></description><category></category></item><item><title><![CDATA[【Java后端学习之路】Java bean心得]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/129793320</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/129793320</guid><author>Leviiiiiiiii</author><pubDate>Mon, 27 Mar 2023 20:56:38 +0800</pubDate><description><![CDATA[是可重用的组件，方便表示数据实体的Java类。]]></description><category></category></item><item><title><![CDATA[设计模式心得]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/127820661</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/127820661</guid><author>Leviiiiiiiii</author><pubDate>Sat, 12 Nov 2022 16:51:19 +0800</pubDate><description><![CDATA[由一个基类衍生出由不同参数决定的实例。类似以前写的，在不同的参数判断条件下返回不同的实例。需要三个角色：工厂、抽象产品、具体产品。是静态的工厂是因为是工厂内已经对类实例化了，把实例化和对对象的使用分离开来了。]]></description><category></category></item><item><title><![CDATA[【力扣】因一题引发的知识点（Arraylist转整型数组问题与栈size不能作为循环判断）]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/125141018</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/125141018</guid><author>Leviiiiiiiii</author><pubDate>Mon, 06 Jun 2022 09:43:50 +0800</pubDate><description><![CDATA[剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。输入：head = [1,3,2]
输出：[2,3,1]笔者现在在二刷剑指offer，从一到很简单的题目中又收获到了很多知识点。
笔者一直以来对toarry()方法使用得不好、总忘记其限制。
先放两种toarry()的方法：
因此如果不做限制直接return arr.toArray();得到的肯定是Object类型的数组是会报错的，若用第二种方法泛型又只能是得到Integer数组，依旧会报错。
r]]></description><category></category></item><item><title><![CDATA[一道力扣题引发的知识的疏漏弥补]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/125130443</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/125130443</guid><author>Leviiiiiiiii</author><pubDate>Sun, 05 Jun 2022 17:23:50 +0800</pubDate><description><![CDATA[这道题需要我写一个类，类中要使用栈。是我在构造函数中写了返回值void导致报错，当时没发现，我在类中声明静态的类变量的时候就初始化了栈stack，而不是在构造方法中初始化，所以避免了这个报错。在静态变量声明的时候就初始化new了stack和在构造方法中才new有什么区别？区别应该只是一个在类被定义的时候就已经初始化stack了，而另一个是在创建类的实例的时候才初始化了stack。附：/*————————————————
版权声明：本文为优快云博主「haoshenwang」的原创文章，遵循CC 4.0 BY]]></description><category></category></item><item><title><![CDATA[Java多线程编程笔记]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124780507</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124780507</guid><author>Leviiiiiiiii</author><pubDate>Sun, 15 May 2022 15:21:38 +0800</pubDate><description><![CDATA[分类区分
类锁、对象锁都属于对象监视器，而对象监视器是基于互斥锁的。
类锁、对象锁层次: java层次
类锁即锁住了类，对象锁即锁住实例对象
synchronized使用场景分以下几种:

一般方法

对象锁，锁住当前对象

静态方法

类锁，锁住此类

synchronized(object)

锁住object，object可为对象，可为类
常见:
synchronized(this)
对象锁
synchronized(*.class)
类锁
锁的本质：
逻辑上来说，锁其实是对象内存堆中头部的一部分数据]]></description><category></category></item><item><title><![CDATA[Java并发之Java线程池笔记]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124768489</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124768489</guid><author>Leviiiiiiiii</author><pubDate>Sat, 14 May 2022 16:39:27 +0800</pubDate><description><![CDATA[文章目录搭配视频观看优势ThreadPoolExecutor参数含义
搭配视频观看
视频讲解
优势
1、通过重用已存在的线程，降低线程创建和销毁造成的消耗
2、提高系统响应速度，当有任务到达时，无需等待新线程的创建便能立即执行
3、方便线程并发数的管控，线程若是无限制的创建，不仅会额外消耗大量系统资源，更是占用过多资源而阻塞系统或oom等状况，从而降低系统的稳定性。线程池能有效管控线程，统一分配、调优，提供资源使用率；
4、更强大的功能，线程池提供了定时、定期以及可控线程数等功能的线程池，使用方便简单。
T]]></description><category></category></item><item><title><![CDATA[分享一个Java异常的小段程序]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124755578</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124755578</guid><author>Leviiiiiiiii</author><pubDate>Fri, 13 May 2022 20:27:07 +0800</pubDate><description><![CDATA[class MyException extends Exception {
    public MyException() {}
    public MyException(String msg) {
        super(msg);
    }
}

public class Demo3 {

    public static void main(String[] args) {
        try {
            test();
        } catch (MyExce]]></description><category></category></item><item><title><![CDATA[类型通配符相关知识点]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124712981</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124712981</guid><author>Leviiiiiiiii</author><pubDate>Wed, 11 May 2022 16:43:57 +0800</pubDate><description><![CDATA[定义
顾名思义就是可以匹配任何一种类型的类型实参，如List&lt;?&gt;，可以访问任何类型的实参，但不能做修改与增添。
带限通配符
上限通配符
仅确定上限，即父类，实例化时的指定实参是其本身或者是其子类。
它表示集合中的所有元素都是Shape类型或者其子类
List&lt;? extends Shape&gt;
//Circle是其子类

List&lt;? extends Shape&gt; list = new ArrayList&lt;Circle&gt;();

虽然不能具体确定，但可以知道是]]></description><category></category></item><item><title><![CDATA[JAVA集合类]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124612167</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124612167</guid><author>Leviiiiiiiii</author><pubDate>Wed, 11 May 2022 15:51:22 +0800</pubDate><description><![CDATA[Arraylist
按数组下标访问元素—get(i)/set(i,e) 的性能很高，这是数组的基本优势。
直接在数组末尾加入元素—add(e)的性能也高，但如果按下标插入、删除元素—add(i,e), remove(i), remove(e)，则要用System.arraycopy()来移动部分受影响的元素，性能就变差了，这是基本劣势。
关于Arraylist的set方法
一直报错，看了源码才知道在arraylist为空的时候是不允许用set（0，value）来给list赋值的。
add操作可以理解为直接将]]></description><category></category></item><item><title><![CDATA[字符串的比较（字典序）与compareTo()总结]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124686531</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124686531</guid><author>Leviiiiiiiii</author><pubDate>Tue, 10 May 2022 14:28:14 +0800</pubDate><description><![CDATA[今天做了道题且和宿友探讨了之后发现我对字典序和compareto()有严重只是纰漏，现学习并分享。
字符比较
一般是以字典序来比较字符串或者单个字符的大小，一般以ASCII码作为比较标准。
比较方式
可以使用String类的compareTo()方法来实现。该方法用于判断一个字符串是大于、等于还是小于另一个字符串，返回int类型的差值。判断字符串大小的依据是它们在字典中的顺序。
实现Comparable接口
实现Comparator接口
compareTo()
源代码如下
public int compar]]></description><category></category></item><item><title><![CDATA[禁用 Android Studio 3.x 系列自带的 testOnly 属性，解决 debug 包安装失败的问题]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124681623</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124681623</guid><author>Leviiiiiiiii</author><pubDate>Tue, 10 May 2022 09:56:31 +0800</pubDate><description><![CDATA[不知道有没有人遇到过，Android Studio 3.0 开始自带一个隐藏的功能，那就是编译打包 debug 包时，会自动在 apk 包的清单文件中加这么一句话：
android:testOnly=“true”
该属性位于 AndroidManifest.xml 文件的 application 标签下，可以直接在 Android Studio 开发工具中打开 app/build/outputs/apk/debug/app-debug.apk 文件查看。
这带来的一个问题是，当你使用真机调试时，通过 run]]></description><category></category></item><item><title><![CDATA[ArrayList list = new ArrayList() 和List＜String＞ list = new ArrayList＜String＞() 的区别]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124518772</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124518772</guid><author>Leviiiiiiiii</author><pubDate>Sat, 30 Apr 2022 21:16:28 +0800</pubDate><description><![CDATA[第一种用当前类作为引用类型，那么可以访问到ArrayList这个类中的所有公用方法。
第二种定义用ArrayList实现的接口List作为引用类型，那么通过list引用可以访问到接口中定义的方法。也就是说ArrayList这个类实现了List接口，除了要必须实现接口List中声明的方法外，还可以实现额外的一些方法。但是，第二种形式就无法调用的List接口以外的方法。是很好的面向接口编程的习惯。
比如你有这么一个方法供别人调用：
public List getXXXList(){
    List list ]]></description><category></category></item><item><title><![CDATA[【知识点分享】Java ArrayList toArray() 方法中带参数与不带参数的区别]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124017690</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/124017690</guid><author>Leviiiiiiiii</author><pubDate>Thu, 07 Apr 2022 15:32:40 +0800</pubDate><description><![CDATA[今天在学习《第一行代码》的时候发现了知识盲区，今天才知道Java的toArray()有两种使用方法，分别为带参数和不带参数的，现做分享：
不带参数的使用方法
这个方法我经常用，但查到的说是不推荐使用不带参数的用法：
ArrayList&lt;String&gt; sites = new ArrayList&lt;&gt;();
       
        sites.add("Runoob");
        sites.add("Google");
        sites.add("Wiki")]]></description><category></category></item><item><title><![CDATA[【第一行代码】安卓学习中的坑与笔记]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123775889</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123775889</guid><author>Leviiiiiiiii</author><pubDate>Sun, 27 Mar 2022 16:29:22 +0800</pubDate><description><![CDATA[刚起步学习安卓，在使用郭神的第一行代码的时候发现litepal怎么也加入不有依赖。
发送这个报错：Failed to resolve: org.litepal.guolindev:core:3.2.3
百度了好几天的资料才发现使用GitHub的依赖需要添加这个：maven { url ‘https://www.jitpack.io’ }
但还是无济于事，最后瞎猫碰上死耗子又添加了阿里云的maven最后成功添加依赖
jcenter { url ‘https://maven.aliyun.com/reposit]]></description><category></category></item><item><title><![CDATA[【记录】Java实现链表的过程个人描述]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123293387</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123293387</guid><author>Leviiiiiiiii</author><pubDate>Sat, 05 Mar 2022 13:27:19 +0800</pubDate><description><![CDATA[public class Main {
    public static void main(String[] args){

        ListNode nodeSta = new ListNode(0);    //创建首节点
        ListNode nextNode;                     //声明一个变量用来在移动过程中指向当前节点
        nextNode=nodeSta;                      //指向首节点

        //]]></description><category></category></item><item><title><![CDATA[【记录】java中Character和char的区别（包装类）]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123289900</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123289900</guid><author>Leviiiiiiiii</author><pubDate>Sat, 05 Mar 2022 11:22:37 +0800</pubDate><description><![CDATA[做题的时候发现的，查完资料后记录如下：
Character是char的包装类,就像Integer和int ，以及Long和long一样。
Character是char的包装类，注意它是一个类，提供了很多方法的。同时我对包装类、封箱等不熟悉，在此也顺带介绍下：
封箱与拆箱
装箱就是自动将基本数据类型转换为包装器类型；拆箱就是自动将包装器类型转换为基本数据类型。一共有八种基本数据类型都有对应“封箱”他们分别是：
基本数据类型                                            ]]></description><category></category></item><item><title><![CDATA[【记录】动态规划 Dynamic Programming]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123205640</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123205640</guid><author>Leviiiiiiiii</author><pubDate>Tue, 01 Mar 2022 14:40:34 +0800</pubDate><description><![CDATA[如果没有重复的调用过程，动态规划是优化不了的，也无法优化。

]]></description><category></category></item><item><title><![CDATA[【分享】Hashset]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123195450</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123195450</guid><author>Leviiiiiiiii</author><pubDate>Mon, 28 Feb 2022 23:54:35 +0800</pubDate><description><![CDATA[HashSet 基于 HashMap 来实现的，是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的，即不会记录插入的顺序。
HashSet 不是线程安全的， 如果多个线程尝试同时修改 HashSet，则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。
java.lang.Object
java.util.AbstractCollection
java.util.AbstractSet
ja]]></description><category></category></item><item><title><![CDATA[JVM与数据结构中：堆与栈的区别？]]></title><link>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123165291</link><guid>https://blog.youkuaiyun.com/Leviiiiiiiii/article/details/123165291</guid><author>Leviiiiiiiii</author><pubDate>Sun, 27 Feb 2022 21:13:43 +0800</pubDate><description><![CDATA[首先堆栈的区别在数据结构与内存分配中是有本质区别的
数据结构
栈是先进后出的存储结构，实际编程时可以用数组或链表来实现。
堆则是常用来实现优先队列（即优先级最高的先出），是一种特殊的完全二叉树（节点从左到右填满，最后一层的叶都在最左边，每个节点的值都小于或都大于其子节点的值。）
在JVM中：
栈内存：
存储的是局部变量，先加载函数再进行局部变量的定义。方法先进栈，再定义变量。
栈内存的更新速度很快是因为局部变量的生命周期都很短。
堆内存：
存储对象，new出来的对象都在堆中。这些对象（实体）用于封装实体的多]]></description><category></category></item></channel></rss>