<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java_maxiaoyi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Java_maxiaoyi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Java_maxiaoyi]]></copyright><item><title><![CDATA[JVM 内存分配与回收]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117666359</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117666359</guid><author>Java_maxiaoyi</author><pubDate>Mon, 07 Jun 2021 16:31:20 +0800</pubDate><description><![CDATA[1. JVM垃圾回收

1.1 揭开 JVM 内存分配与回收的神秘面纱

Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时，Java 自动内存管理最核心的功能是堆内存中对象的分配与回收。

Java 堆是垃圾收集器管理的主要区域，因此也被称作GC堆（Garbage Collected Heap）.从垃圾回收的角度，由于现在收集器基本都采用分代垃圾收集算法，所以 Java堆还可以细分为：新生代和老年代：再细致一点有：Eden空间、From Survivor、To Survivor...]]></description><category></category></item><item><title><![CDATA[JVM（详细讲解）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117662385</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117662385</guid><author>Java_maxiaoyi</author><pubDate>Mon, 07 Jun 2021 15:09:55 +0800</pubDate><description><![CDATA[1. Java内存区域

1.1 概述

对于 Java 程序员来说，在虚拟机自动内存管理机制下，不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作，不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给Java 虚拟机，一旦出现内存泄漏和溢出方面的问题，如果不了解虚拟机是怎样使用内存的，那么排查错误将会是一个非常艰巨的任务。

1.2 运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同]]></description><category></category></item><item><title><![CDATA[AQS 详细介绍]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117605279</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117605279</guid><author>Java_maxiaoyi</author><pubDate>Sat, 05 Jun 2021 20:42:00 +0800</pubDate><description><![CDATA[1. AQS

1.1 AQS 简单介绍

AQS 的全称为（AbstractQueuedSynchronizer），这个类在 java.util.concurrent.locks 包下面。



AQS 是一个用来构建锁和同步器的框架，使用 AQS 能简单且高效地构造出应用广泛的大量的同步器， 比如我们提到的 ReentrantLock，Semaphore，其他的诸如 ReentrantReadWriteLock，SynchronousQueue，FutureTask(jdk1.7) 等等皆是基于 AQ.]]></description><category></category></item><item><title><![CDATA[Atomic介绍]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117603860</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117603860</guid><author>Java_maxiaoyi</author><pubDate>Sat, 05 Jun 2021 19:08:56 +0800</pubDate><description><![CDATA[1. Atomic

1.1 Atomic 原子类介绍

Atomic 翻译成中文是原子的意思。在化学上，我们知道原子是构成一般物质的最小单位，在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候，一个操作一旦开始，就不会被其他线程干扰。

所以，所谓原子类说简单点就是具有原子/原子操作特征的类。

并发包 java.util.concurrent 的原子类都存放在java.util.concurrent.atomic 下,如下图所示。



根据操作]]></description><category></category></item><item><title><![CDATA[线程池（详细讲解）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117596526</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117596526</guid><author>Java_maxiaoyi</author><pubDate>Sat, 05 Jun 2021 15:15:13 +0800</pubDate><description><![CDATA[1.线程池

1.1 使用线程池的好处





线程池提供了一种限制和管理资源（包括执行一个任务）。 每个线程池还维护一些基本统计信息，例如已完成任务的数量。

这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处：

降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。

提高响应速度。当任务到达时，任务可以不需要的等到线程创建就能立即执行。

提高线程的可管理性。线程是稀缺资源，如果无限制的创建，不仅会消耗系统资源，还会降低系统 的稳定性，使用线程池可以进行统一的分配...]]></description><category></category></item><item><title><![CDATA[Java并发容器讲解]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117573803</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117573803</guid><author>Java_maxiaoyi</author><pubDate>Fri, 04 Jun 2021 21:45:20 +0800</pubDate><description><![CDATA[并发

1.并发容器

1.1 JDK 提供的并发容器总结

JDK 提供的这些容器大部分在java.util.concurrent包中。

ConcurrentHashMap:线程安全的HashMap

CopyOnWriteArrayList:线程安全的List，在读多写少的场合性能非常好,远远好于Vector.

ConcurrentLinkedQueue:高效的并发队列，使用链表实现。可以看做一个线程安全的

LinkedList，这是一个非阻塞队列。

BlockingQueue:...]]></description><category></category></item><item><title><![CDATA[HashMap （详细讲解）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117572375</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117572375</guid><author>Java_maxiaoyi</author><pubDate>Fri, 04 Jun 2021 20:08:48 +0800</pubDate><description><![CDATA[1 HashMap 简介

HashMap 主要用来存放键值对，它基于哈希表的Map接口实现，是常用的Java集合之一。

JDK1.8 之前 HashMap 由 数组+链表 组成的，数组是 HashMap 的主体，链表则是主要为了解决哈希冲突而存在的（“拉链法”解决冲突）.JDK1.8 以后在解决哈希冲突时有了较大的变化，当链表长度大于阈值（默认为 8）时，将链表转化为红黑树（将链表转换成红黑树前会判断，如果当前数组的长度小于64，那么会选择先进行数组扩容，而不是转换为红黑树），以减少搜索时间，具体可以参]]></description><category></category></item><item><title><![CDATA[LinkedList（详细讲解）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117559376</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117559376</guid><author>Java_maxiaoyi</author><pubDate>Fri, 04 Jun 2021 14:03:32 +0800</pubDate><description><![CDATA[1 简介

LinkedList是一个实现了List接口和Deque接口的双端链表。

LinkedList底层的链表结构使它支持高效的插入和删除操作，另外它实现了Deque接口，使得

LinkedList类也具有队列的特性;

LinkedList不是线程安全的，如果想使LinkedList变成线程安全的 可以调用静态类Collections类中的

synchronizedList方法：





1.1 内部结构分析









这个类就代表双端链表的节点Node。这个类有三个属性，分别...]]></description><category></category></item><item><title><![CDATA[ArrayList（详细讲解）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117534879</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117534879</guid><author>Java_maxiaoyi</author><pubDate>Thu, 03 Jun 2021 21:11:26 +0800</pubDate><description><![CDATA[1. ArrayList

1.1 ArrayList简介

ArrayList 的底层是数组队列，相当于动态数组。与 Java 中的数组相比，它的容量能动态增长。在添加大量元素前，应用程序可以使用ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。

它继承于AbstractList，实现了List,RandomAccess,Cloneable,java.io.Serializable这些接口。

在我们学数据结构的时候就知道了线性表的顺序存...]]></description><category></category></item><item><title><![CDATA[Java（异常+多线程+文件与IO流）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117533423</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117533423</guid><author>Java_maxiaoyi</author><pubDate>Thu, 03 Jun 2021 19:59:06 +0800</pubDate><description><![CDATA[1. 异常

1.1. Java 异常类层次结构图



打开百度APP看高清图片



在 Java 中，所有的异常都有一个共同的祖先 java.lang 包中的Throwable 类。Throwable： 有两个重要的子类：Exception（异常）和Error（错误），二者都是 Java 异常处理的重要子类，各自都包含大量子类。

Error（错误）:是程序无法处理的错误，表示运行应用程序中较严重问题。大多数错误与代码编写者执 行的操作无关，而表示代码运行时 JVM（Java 虚拟机）出现的问...]]></description><category></category></item><item><title><![CDATA[Java面向对象（详细讲解）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117533334</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117533334</guid><author>Java_maxiaoyi</author><pubDate>Thu, 03 Jun 2021 19:56:31 +0800</pubDate><description><![CDATA[2.1. 类和对象

2.1.1. 面向对象和面向过程的区别

面向过程：面向过程性能比面向对象高。因为类调用时需要实例化，开销比较大，比较消耗资源，所以当性能是最重要的考量因素的时候，比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是，面向过程没有面向对象易维护、易复用、易扩展。

面向对象：面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性，所以可以设计出低耦合的系统，使系统更加灵活、更加易于维护。但是，面向对象性能比面向过程低。



打开百度APP...]]></description><category></category></item><item><title><![CDATA[Java基本数据类型+方法]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117523634</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117523634</guid><author>Java_maxiaoyi</author><pubDate>Thu, 03 Jun 2021 16:09:42 +0800</pubDate><description><![CDATA[基本数据类型
	Java中的几种基本数据类型是什么？对应的包装类型是什么？各自占用多少字节呢？
	
	Java中有8种基本数据类型，分别为：
	
]]></description><category></category></item><item><title><![CDATA[Java语法（全面解析）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117523413</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117523413</guid><author>Java_maxiaoyi</author><pubDate>Thu, 03 Jun 2021 15:13:03 +0800</pubDate><description><![CDATA[1. Java 语法

1.1. 字符型常量和字符串常量的区别?

1.形式上:字符常量是单引号引起的一个字符;字符串常量是双引号引起的若干个字符

2.含义上:字符常量相当于一个整型值( ASCII值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放位置)

3.占内存大小 字符常量只占2个字节; 字符串常量占若干个字节 (注意：char在 Java中占两个字节)





1.1.2. 关于注释？

Java 中的注释有三种：

1.单行注释

2.多...]]></description><category></category></item><item><title><![CDATA[Java基础（全面解析）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117523306</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117523306</guid><author>Java_maxiaoyi</author><pubDate>Thu, 03 Jun 2021 15:10:25 +0800</pubDate><description><![CDATA[(一). 基础

1. Java基本功

1.1. Java 入门（基础概念与常识）

1.1.1. Java 语言有哪些特点?

1.简单易学；

2.面向对象（封装，继承，多态）；

3.平台无关性（Java虚拟机实现平台无关性）；

4.可靠性；

5.安全性；

6. 支持多线程（C++语言没有内置的多线程机制，因此必须调用操作系统的多线程功能来进行多线程程序设计，而Java语言却提供了多线程支持）；

7. 支持网络编程并且很方便（Java语言诞生本身就是为简化网络编程...]]></description><category></category></item><item><title><![CDATA[Java集合]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117426135</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117426135</guid><author>Java_maxiaoyi</author><pubDate>Mon, 31 May 2021 19:23:06 +0800</pubDate><description><![CDATA[List、Set、Map是否继承自Collection接口？

List、Set 是，Map 不是。Map是键值对映射容器，与List和Set有明显的区别，而Set存储的零散的元素且不允 许有重复元素（数学中的集合也是如此），List是线性结构的容器，适用于按数值索引访问元素的情形。
...]]></description><category></category></item><item><title><![CDATA[Java基础（二）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117425489</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117425489</guid><author>Java_maxiaoyi</author><pubDate>Mon, 31 May 2021 19:15:22 +0800</pubDate><description><![CDATA[当一个对象被当作参数传递到一个方法后，此方法可改变这个 对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递？

是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时，参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变，但对对象引用的改变是不会影响到调用者的。C++和C# 中可以通过传引用或传输出参数来改变传入的参数的值。
...]]></description><category></category></item><item><title><![CDATA[Java基础]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117422299</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117422299</guid><author>Java_maxiaoyi</author><pubDate>Mon, 31 May 2021 17:32:38 +0800</pubDate><description><![CDATA[String 是最基本的数据类型吗？

不是。Java中的基本数据类型只有8个：byte、short、int、long、float、double、char、boolean；除了基 本类型（primitive type）和枚举类型（enumeration type），剩下的都是引用类型（reference type）。
...]]></description><category></category></item><item><title><![CDATA[Java面向对象（二）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117421705</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117421705</guid><author>Java_maxiaoyi</author><pubDate>Mon, 31 May 2021 17:19:22 +0800</pubDate><description><![CDATA[接口的意义

接口的意义用四个词就可以概括：规范，扩展，回调和安全。

抽象类的意义

抽象类的意义可以用三句话来概括:

为其他子类提供一个公共的类型 封装子类中重复定义的内容 定义抽象方法,子类虽然有不同的实现,但是定义是一致的
...]]></description><category></category></item><item><title><![CDATA[Java面向对象]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117421011</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117421011</guid><author>Java_maxiaoyi</author><pubDate>Mon, 31 May 2021 17:05:17 +0800</pubDate><description><![CDATA[对象是系统中用来描述客观事物的一个实体，它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行 操作的一组服务组成。 类的实例化可生成对象，一个对象的生命周期包括三个阶段：生成、使用、消除。 当不存在对一个对象的引用时，该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区，把没有引 用的对象作为垃圾收集起来并释放。当系统内存用尽或调用System.gc()要求垃圾回收时，垃圾回收程与系统同步运行。
...]]></description><category></category></item><item><title><![CDATA[MyBatis资料整理（二）]]></title><link>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117404841</link><guid>https://blog.youkuaiyun.com/Java_maxiaoyi/article/details/117404841</guid><author>Java_maxiaoyi</author><pubDate>Sun, 30 May 2021 20:34:56 +0800</pubDate><description><![CDATA[15、 MyBatis实现一对一有几种方式?具体怎么操作的？

有联合查询和嵌套查询,联合查询是几个表联合查询，只查询一次，通过在 resultMap里面配置association节点配置一对一的类就可以完成;嵌套查询 是先查一个表，根据这个表里面的结果的外键id,去再另外一个表里面查询 数据，也是通过association配置，但另外一个表的查询通过select属性配 置。

16、 Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式， 以及它们之间的区别？

能，Mybatis不仅...]]></description><category></category></item></channel></rss>