<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CONSOLE___的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CONSOLE___</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CONSOLE___]]></copyright><item><title><![CDATA[树和二叉树]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/120118213</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/120118213</guid><author>CONSOLE___</author><pubDate>Tue, 04 Jan 2022 10:34:09 +0800</pubDate><description><![CDATA[树和二叉树
树结构是一类重要的非线性数据结构。直观来看，树是以分支关系定义的层次结构。树结构在客观世界中广泛存在，如人类社会的族谱和各种社会组织机构都可用树来形象表示。树在计算机领域中也得到广泛应用，尤以二叉树最为常用。如在操作系统中，用树来表示文件目录的组织结构，在编译系统中，用树来表示源程序的语法结构，在数据库系统中，树结构也是信息的重要组织形式之一。
树和二叉树的定义
树的定义
树(Tree)是n(n≥0)个结点的有限集，它或为空树(n=0)；或为非空树，对于非空树T：

有且仅有一个称之为根的结点；]]></description><category></category></item><item><title><![CDATA[Linux之fork()函数进程笔记]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/116640393</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/116640393</guid><author>CONSOLE___</author><pubDate>Tue, 11 May 2021 09:22:36 +0800</pubDate><description><![CDATA[Linux 线程学习笔记
一、什么是进程
一个可执行的完整的程序，包含有自己的代码正文区、数据存储区、进程执行过程中的上下文(程序计数器的值与寄存器内容)信息，总结来说就是由程序段、数据段、进程控制块三部分组成；
进程是系统进行资源分配和调度的基本单位，因此可以认为进程是活动的，它表示每一次调度执行后当前程序的一个活动，这个活动里包含了当前程序下一条要执行的指令、以及需要操作的数据；
二、进程怎么执行
进程是CPU调度的基本单元，所以CPU中是存在多个进程的，而某个进程在执行过程中并不会一直占据CPU资源，]]></description><category></category></item><item><title><![CDATA[c/c++实现二叉树的创建以及前中后序遍历]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/115364351</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/115364351</guid><author>CONSOLE___</author><pubDate>Thu, 01 Apr 2021 00:20:17 +0800</pubDate><description><![CDATA[二叉树（Binary tree）是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式，即使是一般的树也能简单地转换为二叉树，而且二叉树的存储结构及其算法都较为简单，因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树，且有左右之分。
遍历方式
前序遍历：root -&gt; left -&gt; right
中序遍历：left -&gt; root -&gt; right
后续遍历：left -&gt;right -&gt; root
思路：
利用结构体替代二叉树，并利用递归的]]></description><category></category></item><item><title><![CDATA[创建LVM类型的Storage Pool]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/115221327</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/115221327</guid><author>CONSOLE___</author><pubDate>Fri, 26 Mar 2021 00:24:05 +0800</pubDate><description><![CDATA[1. 环境准备添加一块磁盘  /dev/sdb
先给虚拟机添加一块硬盘

之后下一步即可


2. 创建并使用LVM逻辑卷和PV物理卷即VG卷组
（1）检查可用的磁盘分区:

（2）创建PV=pvcreate 设备名称  ……

没有pvcreate 以及 vgcreate的使用 sudo apt-get install lvm2下载一下
注意：这里最好进入一下root用户。不然以后会一直报权限问题

查看

（3）创建VG=vgcreate 卷组名称  设备成员 …


...]]></description><category></category></item><item><title><![CDATA[创建你的第一个KVM虚拟机]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114433926</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114433926</guid><author>CONSOLE___</author><pubDate>Sat, 06 Mar 2021 11:03:34 +0800</pubDate><description><![CDATA[1.在VmWare中安装Ubuntu

下载Ubuntu的镜像，14.04、16.04、18.04以供来学习。下载各个版本的iso镜像，然后再虚拟机中一路next推荐即可，注意的是，再选择共享文件夹时要选择单个文件。
安装Ubuntu系统，其他的博客有很多，可自行去搜索，这里主要说一下安装中可能会存在的一些问题。（此处以Ubuntu18.04举例）


1.安装完成后再VMWare WorkStation中会只有中间一小块屏幕的问题

存在问题

解决问题


问题说明：因为没有安装VMware Tools]]></description><category></category></item><item><title><![CDATA[多线程详解(1)]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114143350</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114143350</guid><author>CONSOLE___</author><pubDate>Thu, 04 Mar 2021 00:00:59 +0800</pubDate><description><![CDATA[1.线程简介
什么是线程？


]]></description><category></category></item><item><title><![CDATA[面向对象编程]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114086426</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114086426</guid><author>CONSOLE___</author><pubDate>Thu, 25 Feb 2021 19:10:21 +0800</pubDate><description><![CDATA[1. 什么是面向对象

面向过程思想

步骤清晰简单，第一步做什么，第二步做什么…
面对过程适合处理一些较为简单的问题


面向对象思想

物以类聚，分类的思维模式，思考问题会解决问题需要哪些分类，然后对这些分类进行单独思考。最后，才对某个分类下的细节进行面向过程的思索。
面向对象适合处理复杂的问题，适合处理需要多人协作的问题!


对于描述复杂的事物，为了从宏观上把握，从整体上合理分析，我们需要使用面向对象的思路来分析整个系统。但是，具体到微观操作，仍然需要面向过程的思路去处理。


面向对象编程（Obj]]></description><category></category></item><item><title><![CDATA[JAVA方法详解]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114067726</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114067726</guid><author>CONSOLE___</author><pubDate>Thu, 25 Feb 2021 14:06:32 +0800</pubDate><description><![CDATA[1. 何为方法？
System.out.println(),那么它是什么呢？
JAVA方法是语句的集合，它们在一起执行一个功能。

方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建，在其他地方被引用


设计方法的原则：方法的本意是功能块，就是实现某个功能的语句块的集合。我们设计方法的时候，最好保持方法的原子性，就是一个方法只完成一个功能，这样利于我们后期的扩展。

2. 方法的定义和调用
JAVA的方法类似于其他语言的函数，是一段用来完成特定功能的代码片段，一般情况下，定义一个]]></description><category></category></item><item><title><![CDATA[JAVA流程控制]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114028047</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114028047</guid><author>CONSOLE___</author><pubDate>Thu, 25 Feb 2021 10:01:49 +0800</pubDate><description><![CDATA[1. 用户交互Scanner
之前我们学习的基础语法中并没有实现程序和人的交互，但是Java给我们提供了一个这样的工具类，我们可以获取用户的输入。java.util.Scanner是Java 5的新特性，我们可以通过Scanner来获取用户的输入。

基本的语法

Scanner s = new Scanner(System.in);

通过Scanner类的next()与nextLine()方法获取输入的字符串，在读取前我们一般需要使用hasNext() 与 hasNextLine()判断是否还有输入的数]]></description><category></category></item><item><title><![CDATA[JAVA基础语法(2)]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114023939</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114023939</guid><author>CONSOLE___</author><pubDate>Wed, 24 Feb 2021 16:43:47 +0800</pubDate><description><![CDATA[6. 基本运算符
java语言支持以下运算符

算数运算符：+,-,*,/,%,++,–
赋值运算符：=
关系运算符：&gt;,&lt;,&gt;=,&lt;=,==,!=,instanceof
逻辑运算符：&amp;&amp;,||,!
条件运算符： ?:
扩展赋值运算符：+=,-=,/=,*=

		long a = 1153132165465155L;
        int b = 1234;
        short c = 10;
        byte d = 1;
        //相]]></description><category></category></item><item><title><![CDATA[JAVA基础语法(1)]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114013227</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114013227</guid><author>CONSOLE___</author><pubDate>Wed, 24 Feb 2021 15:06:35 +0800</pubDate><description><![CDATA[1、注释
//单行注释

/* 
多行
注释 
*/

/**
* @Description	文档注释
* @author 某某	
*/

2、标识符和关键字
标识符定义
1、 包名、类名、方法名、参数名、变量名等，这些符号被称为标识符。
2、 标识符可以由字母、数字、下划线（_）和美元符号（$）组成
3、 标识符不能以数字开头，不能是java中的关键字。例如：

正确的标识符
Username、username123、user_name、_userName、$username
不正确的标识符：
123us]]></description><category></category></item><item><title><![CDATA[JAVA入门简介]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/114008445</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/114008445</guid><author>CONSOLE___</author><pubDate>Wed, 24 Feb 2021 09:09:32 +0800</pubDate><description><![CDATA[JAVA的发展历史

1. C语言
帝国的统治现在是公元1995年， C语言帝国已经统治了20多年， 实在是太久了。
1972年， 随着C语言的诞生和Unix的问世， 帝国迅速建立统治， 从北美到欧洲， 从欧洲到亚洲， 无数程序员臣服在他的脚下。
帝国给我们提供了极好的福利：贴近硬件， 运行极快， 效率极高。
使用这些福利， 程序员们用C 开发了很多系统级软件，操作系统， 编译器， 数据库，网络系统……
但是帝国也给程序员们安上了两个沉重的枷锁： 指针和内存管理虽然指针无比强大， 能直接操作内存， 但是帝国]]></description><category></category></item><item><title><![CDATA[栈--简单计算器(后缀表达式)]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/110357964</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/110357964</guid><author>CONSOLE___</author><pubDate>Mon, 30 Nov 2020 00:27:10 +0800</pubDate><description><![CDATA[JAVA实现后缀表达式–&gt;简单计算器（栈）
预备知识：

前缀表达式
中缀表达式
后缀表达式

比如 5 * 2 + 3
前缀表达式 ： +  *  5 2 3
中缀表达式：5 * 2 + 3
后缀表达式：5 2 * 3 +
计算机中，使用后缀表达式更容易进行计算：
思想：遇到数字就入栈，遇到运算符就pop出两个数进行运算然后将结果入栈。最后留下一个栈顶元素即为结果。
可见，实现后缀表达式计算出并不困难。
这里的难点是怎么把我们常用的中缀表达式转换成后缀表达式：
这里先说中缀表达式的思想：

初始化两]]></description><category></category></item><item><title><![CDATA[JAVA栈实现简单的计算器]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/110357511</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/110357511</guid><author>CONSOLE___</author><pubDate>Sun, 29 Nov 2020 23:35:15 +0800</pubDate><description><![CDATA[本次使用栈来模拟计算器的实现
例如 15 + 2 × 3 - 3
我们需要两个栈来辅助实现

符号栈（用来存储符号）
数字栈（用来存储运算的数字和结果）

实现思路：


5+2*3-3
1.通过一个index值(索引)，来遍历我们的表达式
2.如果我们发现是一个数字。就直接入数栈
3.如果发现扫描到的是一个符号,就分如下情况
3.1 如果发现当前的符号栈为空，就直接入符号栈。
3.2 如果符号栈有操作符，就进行比较。

1）如果当前的操作符的优先级小于或者等于栈中的操作符，这时就需要从数栈中pop出两个数]]></description><category></category></item><item><title><![CDATA[java实现栈-数据结构]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/110010406</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/110010406</guid><author>CONSOLE___</author><pubDate>Tue, 24 Nov 2020 08:31:19 +0800</pubDate><description><![CDATA[栈(stack)
1)栈是一个先入后出(FILO-First In Last Out)的有序列表
2)栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端，为变化的一段，成为栈顶(Top)，另一端为固定的一端，称为栈底(Bottom)。
3)根据栈的定义可知，最先放入栈中的元素在栈底，最后放入的元素在栈顶，而删除元素刚好相反，最后放入的元素最先删除，最先放入的元素最后删除。
入栈(push)的图解：

出栈(pop)

栈的应用场景
1）子程序的调用：]]></description><category></category></item><item><title><![CDATA[数据结构——单链表(JAVA)]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/109684759</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/109684759</guid><author>CONSOLE___</author><pubDate>Sat, 14 Nov 2020 08:07:51 +0800</pubDate><description><![CDATA[数据结构——单链表
单链表是一种链式存取的数据结构，用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的，每个结点的构成：元素(数据元素的映象) + 指针(指示后继元素存储位置)，元素就是存储数据的存储单元，指针就是连接每个结点的地址数据。
起初我们创建一个节点类
//英雄节点
class HeroNode {
    public int no; //英雄编号
    public String name; //名称
    public String nickname; //绰号]]></description><category></category></item><item><title><![CDATA[JAVA代码实现环形队列]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/109587943</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/109587943</guid><author>CONSOLE___</author><pubDate>Mon, 09 Nov 2020 22:33:47 +0800</pubDate><description><![CDATA[环形队列
在上一篇中提到了顺序队列的实现，顺序队列存在的最大的问题就是假上溢现象。
"假上溢"现象：由于入队和出队操作中，头尾指针只增加不减小，致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空间的规模时，也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象。
环形队列解决了这一缺陷，将队列空间充分重复利用。
以下是思路图：

这里的思想稍微有一点点变化：起初 front = rear = 0 ，每当添加元素时，将rear++ ，这里判断队满的条件是 (rea]]></description><category></category></item><item><title><![CDATA[JAVA实现简单的顺序队列]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/109579608</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/109579608</guid><author>CONSOLE___</author><pubDate>Mon, 09 Nov 2020 16:13:01 +0800</pubDate><description><![CDATA[JAVA实现队列
队列是一种特殊的线性表，特殊之处在于它只允许在表的前端（front）进行删除操作，而在表的后端（rear）进行插入操作，和栈一样，队列是一种操作受限制的线性表。进行插入操作的端称为队尾，进行删除操作的端称为队头。队列中没有元素时，称为空队列。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队，从队列中删除一个队列元素称为出队。因为队列只允许在一端插入，在另一端删除，所以只有最早进入队列的元素才能最先从队列中删除，故队列又称为先进先出（FIFO—first in first o]]></description><category></category></item><item><title><![CDATA[算法设计--JAVA实现稀疏矩阵]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/109575261</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/109575261</guid><author>CONSOLE___</author><pubDate>Mon, 09 Nov 2020 12:29:12 +0800</pubDate><description><![CDATA[稀疏矩阵
在矩阵中，若数值为0的元素数目远远多于非0元素的数目，并且非0元素分布没有规律时，则称该矩阵为稀疏矩阵；与之相反，若非0元素数目占大多数时，则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。
此处使用JAVA代码实现对矩阵的压缩与扩展
可以想象，当我们玩五子棋或其他棋类游戏时，当我们需要对游戏来进行存档。那么可以把棋盘来当作一个矩阵，有棋子的地方用相应的数字来进行表示。没有棋子的地方用0来表示。
这里假设棋盘为11*11的一个矩阵。
倘若棋盘中1为黑子，2为白子。
原始]]></description><category></category></item><item><title><![CDATA[C++实现快速排序]]></title><link>https://blog.youkuaiyun.com/CONSOLE___/article/details/105896831</link><guid>https://blog.youkuaiyun.com/CONSOLE___/article/details/105896831</guid><author>CONSOLE___</author><pubDate>Sun, 03 May 2020 00:00:37 +0800</pubDate><description><![CDATA[C++快速排序
这里对数组{2,4,6,8,10,1,7,44,5,9,3,0};进行排序。
先利用fous来存数组第一个元素或者最后一个元素当做即将成为的"中间"元素。
利用i来找从左边到右边一个比fous大的元素。
利用j来找从右边到左边一个比fous小的元素。
比如第一趟：
fous=2，此时先找j的元素，j一开始记录数组最后一个元素也就是0。
0小于2，所以a[11]的值赋予a[0]。（此...]]></description><category></category></item></channel></rss>