<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BUZZ_Q的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BUZZ_Q</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BUZZ_Q]]></copyright><item><title><![CDATA[JVM | 内存模型]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/115401091</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/115401091</guid><author>BUZZ_Q</author><pubDate>Fri, 02 Apr 2021 16:21:54 +0800</pubDate><description><![CDATA[JVM内存划分：

方法区（线程共享）：存储常量、静态变量、JIT（即时编译器）编译后代码也在方法区存放
堆内存（线程共享）：GC垃圾回收的主要场地
程序计算器：当前线程执行的字节码的位置指示器
Java虚拟机栈（栈内存）：保存局部变量，基本数据类型以及堆内存中对象的引用变量
本地方法栈（C栈）：JVM提供使用native方法的服务


详细介绍
1. 程序计数器
程序计数器是一块较小的内存空间，可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节]]></description><category></category></item><item><title><![CDATA[数据结构 | 红黑树 RBTree]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/108887960</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/108887960</guid><author>BUZZ_Q</author><pubDate>Sun, 28 Mar 2021 14:55:10 +0800</pubDate><description><![CDATA[1. 概念
红黑树的插入删除操作需要时刻维护它的五大性质：
①每个节点都有颜色，不是黑色就是红色
②null表示空节点（叶子节点的left、right地址域）
③根节点是黑色
④不能出现连续的红色节点
⑤从根节点到任意叶子节点路径上的黑色节点数量是相同的

根据红黑树性质，节点子树高的不能超过节点低的2倍


   
      
      AVL
      红黑树
   
   
      是否是平衡树
      自平衡树
      不是自平衡树
   
   
      insert插入
 ]]></description><category></category></item><item><title><![CDATA[数据结构 | 平衡二叉树 AVL]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/108887915</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/108887915</guid><author>BUZZ_Q</author><pubDate>Sun, 28 Mar 2021 14:54:53 +0800</pubDate><description><![CDATA[1. 概念
平衡二叉树是一种特殊的二叉排序树，其左右子树都是平衡二叉树。所谓平衡，即节点的左右子树高度差不超过1。

平衡因子=左子树高度-右子树高度
对于平衡二叉树，树中所有节点的平衡因子的取值只能是-1、0、1三个值

2. 节点失衡原因及平衡调整问题

左旋

/**
     *  40  node               50
     *   \           左旋     / \
     *    50  child   -》   40  60
     *   / \      ]]></description><category></category></item><item><title><![CDATA[数据结构 | 二叉搜索树 BST]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/108567256</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/108567256</guid><author>BUZZ_Q</author><pubDate>Sun, 28 Mar 2021 14:54:36 +0800</pubDate><description><![CDATA[一、概念

定义：树是一种非线性的数据结构，如图所示就是一棵树，它是若干结点的集合，是由唯一的根（结点A）和若干棵互不相交的子树组成，其中每一棵子树又是一棵树。当树的结点数目为0时，称这棵树为空树
基本术语

树

...]]></description><category></category></item><item><title><![CDATA[基础 | 网络编程]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/104143906</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/104143906</guid><author>BUZZ_Q</author><pubDate>Thu, 06 Feb 2020 13:33:47 +0800</pubDate><description><![CDATA[1.计算机网络的相关概念
（1）计算机网络
通过传输介质、网络协议和通信设施，将分散在不同位置的计算机互连，实现资源共享和数据传输的系统。
（2）网络编程
又称Socket编程，是指在操作系统，网络管理软件，网络通信协议的管理和协调下，使用计算机编程语言来实现计算机之间的资源共享和信息传递。

2.计算机网络的三要素：
（1）IP地址
IP地址是IP协议提供的一种统一的地址格式，它为互联网上的每一...]]></description><category></category></item><item><title><![CDATA[IO流 | IO流的应用举例]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103338280</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103338280</guid><author>BUZZ_Q</author><pubDate>Sun, 01 Dec 2019 19:55:42 +0800</pubDate><description><![CDATA[1.将源文件路径下内容拷贝到目的路径文件中
/**
 * 源文件路径拷贝到目的路径文件中
 * @param srcFile 源文件
 * @param desFile 目的文件（目录/文件）
 */
public static void copyFile(String srcFile,String desFile){
    FileInputStream inputStream=null;
 ...]]></description><category></category></item><item><title><![CDATA[IO流 | DataInputStream和DataOutputStream]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103224440</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103224440</guid><author>BUZZ_Q</author><pubDate>Sun, 01 Dec 2019 19:55:23 +0800</pubDate><description><![CDATA[过滤器字节流：

FilterInputStream：过滤器字节输入流
FilterOutputStream：过滤器字节输出流

它们的主要用于封装其他的输入输出流，为它们提供一些额外的功能。

具有以下实现类：

以下以FilterInputStream做主要分析：

一、FilterInputStream
1. 源码分析
（1）继承关系 该类继承自InputStream父类（表示该类可实现父类...]]></description><category></category></item><item><title><![CDATA[集合 | 总结]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103325589</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103325589</guid><author>BUZZ_Q</author><pubDate>Sun, 01 Dec 2019 19:20:03 +0800</pubDate><description><![CDATA[Java集合框架图

相应接口的的具体实现类：

一、List接口：
ArrayList
linkedList
ArrayList和LinkedList的异同点:
1.不同点
（1）ArrayList继承自 AbstractList类，LinkedList继承自 AbstractSequentialList类、实现Deque接口（具有特有的一些方法：addFirst/addLast/getFir...]]></description><category></category></item><item><title><![CDATA[集合 | 基于小根堆简单自定义实现优先级队列]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102983830</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102983830</guid><author>BUZZ_Q</author><pubDate>Sun, 01 Dec 2019 19:19:20 +0800</pubDate><description><![CDATA[知识补充
小根堆：每个节点的值小于其左右孩子节点的值
大根堆：每个节点的值大于其左右孩子节点的值


根据源码可知，优先级队列的存储是基于数组实现，而其相关操作是建立在堆（默认小根堆）的基础上。
优先级队列中最核心的方法就是插入/删除/获取操作

1.add()操作
基本思路：
①每次都将value插入数组有效末尾位置index，找到它的父节点
②若value值小于父节点值，从上往下 进行调整 ...]]></description><category></category></item><item><title><![CDATA[集合 | Hashtable源码分析]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103328504</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103328504</guid><author>BUZZ_Q</author><pubDate>Sun, 01 Dec 2019 19:02:04 +0800</pubDate><description><![CDATA[一、继承关系
public class Hashtable&lt;K,V&gt;
    extends Dictionary&lt;K,V&gt;
    implements Map&lt;K,V&gt;, Cloneable, java.io.Serializable

Hashtable继承Dictionary抽象类，实现Map接口，支持克隆，支持序列化
二、基本属性
//被transie...]]></description><category></category></item><item><title><![CDATA[集合 | LinkedList源码分析]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103324422</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103324422</guid><author>BUZZ_Q</author><pubDate>Sat, 30 Nov 2019 15:52:45 +0800</pubDate><description><![CDATA[一、继承关系
public class LinkedList&lt;E&gt;
    extends AbstractSequentialList&lt;E&gt;
    implements List&lt;E&gt;, Deque&lt;E&gt;, Cloneable, java.io.Serializable

由继承关系知：LinkedList继承自 AbstractSequenti...]]></description><category></category></item><item><title><![CDATA[集合 | ArrayList源码分析]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103323958</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/103323958</guid><author>BUZZ_Q</author><pubDate>Sat, 30 Nov 2019 14:35:33 +0800</pubDate><description><![CDATA[一、继承关系
public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;
        implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.Serializable

由继承关系知：ArrayList继承自AbstractList类，实现List、RandomAcce...]]></description><category></category></item><item><title><![CDATA[集合 | HashMap源码分析（jdk1.7版本）]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102788988</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102788988</guid><author>BUZZ_Q</author><pubDate>Thu, 31 Oct 2019 19:22:02 +0800</pubDate><description><![CDATA[一、HashMap相关概念及概述
1.哈希函数：
通过查找关键字key来获得所需记录的存储位置。记录的存储位置和其关键码key之间建立一个确定的对应关系f，使每一个key对应一个f(key)

生成哈希函数常用的两种方法：
（1）直接寻址法——f(key)=a*key+b(a,b为常数)
（2）除留余数法——f(key)=key mod m(m&lt;哈希表长度p)

2.哈希表：
通过哈希函数把...]]></description><category></category></item><item><title><![CDATA[基础 | 7大排序算法java总结（下）]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102508545</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102508545</guid><author>BUZZ_Q</author><pubDate>Mon, 21 Oct 2019 19:43:19 +0800</pubDate><description><![CDATA[6.归并排序
基本思想：
利用递归，将一个数组分为两块，两块再分两块……最终只需保证两块内数据有序即可


代码如下：

public static void mergeSort(int[] arr) {
    mergeProcess(arr, 0, arr.length - 1);
}

public static void mergeProcess(int[] arr, int left,...]]></description><category></category></item><item><title><![CDATA[基础 | 7大排序算法java总结（上）]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/101639041</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/101639041</guid><author>BUZZ_Q</author><pubDate>Fri, 11 Oct 2019 18:30:57 +0800</pubDate><description><![CDATA[常见的排序算法：

1.冒泡排序
基本思想：两两比较相邻数据，若为倒序，则交换，知道没有倒序数据为止


代码如下：

public static void bubbleSort(int[] arr){                    
    for(int i=0;i&lt;arr.length-1;i++){   //趟数 
        for(int j=0;j&lt;arr.l...]]></description><category></category></item><item><title><![CDATA[JVM | 简单总结类加载过程]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102142916</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102142916</guid><author>BUZZ_Q</author><pubDate>Tue, 08 Oct 2019 15:38:34 +0800</pubDate><description><![CDATA[类的加载过程：
一、装载阶段（加载过程）
装载过程的产物： class对象
JDK提供三种类加载器：

BootstrapClassLoader（启动类加载器）
ExtClassLoader（扩展类加载器）
AppClassLoader（应用类加载器）

每一种类加载器都有其指定的类加载路径
（1）BootstrapClassLoader（启动类加载器又称根加载器、引导类加载器），其主要加载路径为...]]></description><category></category></item><item><title><![CDATA[栈与队列 | 常见习题总结（下）]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102078441</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/102078441</guid><author>BUZZ_Q</author><pubDate>Fri, 04 Oct 2019 18:08:24 +0800</pubDate><description><![CDATA[4.模拟计算器 实现四则运算
（1）中缀表达式转后缀表达式


什么是中缀表达式呢？
我们平时做数学题所列的标准四则运算表达式，例如：“9+(3-1)×3+8÷2” 就是一个中缀表达式




中缀表达式转后缀表达式的结果又是什么样子的呢？
“9 3 1 - 3 × + 8 2 ÷ +”




栈的作用： 进出运算符号


转换规则：
从左到右遍历中缀表达式的每一个数字和符号，若是数字，直接输出...]]></description><category></category></item><item><title><![CDATA[栈与队列 | 常见习题总结（上）]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/101546197</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/101546197</guid><author>BUZZ_Q</author><pubDate>Sat, 28 Sep 2019 14:35:12 +0800</pubDate><description><![CDATA[首先我们需要知道栈和队列的特性，即 栈：先进后出；队列：先进先出，通过引入数组中的数据，实现：
1.两个栈实现一个队列
思路： 定义两个栈stack1、stack2，将数组中的数据依次置入stack1中，根据栈先进后出的特性，再将其依次出栈在入栈至stack2中，以实现队列。


代码如下：

    //两个栈实现一个队列
public static&lt;T&gt; void twoStack...]]></description><category></category></item><item><title><![CDATA[单链表 | 常见习题总结]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/100925307</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/100925307</guid><author>BUZZ_Q</author><pubDate>Fri, 20 Sep 2019 16:55:33 +0800</pubDate><description><![CDATA[1.输出倒数第k个节点
思路： 统计链表节点的个数length，让p从头节点遍历走length-k步，即得到倒数第k个节点的位置
代码如下：
public int getLength(){
   int count=0;
   for(Entry p=headEntry;p!=null;p=p.getNext()){
        count++;
   }
   return count;
}...]]></description><category></category></item><item><title><![CDATA[数据结构 | 单链表的增删改查（带头节点）]]></title><link>https://blog.youkuaiyun.com/BUZZ_Q/article/details/101065318</link><guid>https://blog.youkuaiyun.com/BUZZ_Q/article/details/101065318</guid><author>BUZZ_Q</author><pubDate>Fri, 20 Sep 2019 16:49:07 +0800</pubDate><description><![CDATA[Entry类封装节点属性，包括value域及next域]]></description><category></category></item></channel></rss>