<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CGL1552188038的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CGL1552188038</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CGL1552188038]]></copyright><item><title><![CDATA[二叉树的遍历（前序、中序、后序）]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/100020300</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/100020300</guid><author>CGL1552188038</author><pubDate>Sat, 31 Aug 2019 17:57:14 +0800</pubDate><description><![CDATA[struct TreeNode
{
	int val;
	TreeNode*  leftchild;
	TreeNode*  rightchild;
	TreeNode(int x) : val(x), leftchild(NULL), rightchild(NULL) {}
};


void PreOrder(TreeNode *root)  //前序遍历
{
	if (root == NU...]]></description><category></category></item><item><title><![CDATA[Linux下git的使用总结]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/98793849</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/98793849</guid><author>CGL1552188038</author><pubDate>Wed, 07 Aug 2019 23:50:45 +0800</pubDate><description><![CDATA[有关git的相关概念

工作区：就是你在电脑里能看到的目录，相当于自己创建的目录

版本库（Repository）：工作区有一个隐藏目录“.git”，这个不算工作区，而是Git的版本库。
Git的版本库里有很多东西，其中最重要的就是称为stage（或者叫index）的暂存区，还有Git为我们自动创建的第一个分支master，以及指向master的一个指针叫HEAD。
对于任何一个文件，在 Git...]]></description><category></category></item><item><title><![CDATA[Leetcode 655:输出二叉树]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/97614963</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/97614963</guid><author>CGL1552188038</author><pubDate>Sun, 04 Aug 2019 23:27:46 +0800</pubDate><description><![CDATA[在一个 m*n 的二维字符串数组中输出二叉树，并遵守以下规则：

行数m应当等于给定二叉树的高度。
列数n应当总是奇数。
根节点的值（以字符串格式给出）应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分（左下部分和右下部分）。你应该将左子树输出在左下部分，右子树输出在右下部分。左下和右下部分应当有相同的大小。即使一个子树为空而另一个非空，你不需要为空的子树输出任何东西...]]></description><category></category></item><item><title><![CDATA[Linux下的守护进程]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/98474502</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/98474502</guid><author>CGL1552188038</author><pubDate>Sun, 04 Aug 2019 22:20:32 +0800</pubDate><description><![CDATA[什么是守护进程？

守护进程(daemon)是一类在后台运行的特殊进程，用于执行特定的系统任务。很多守护进程在系统引导的时候启动，并且一直运行直到系统关闭。另一些只在需要的时候才启动，完成任务后就自动结束。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。

守护进程的特点：

1.守护进程(Daemon)是在后台运行的一种特殊进程，它脱离于终端，从而可避免进程被任何终端所...]]></description><category></category></item><item><title><![CDATA[进程间通讯的5种方式]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/97925701</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/97925701</guid><author>CGL1552188038</author><pubDate>Wed, 31 Jul 2019 23:41:16 +0800</pubDate><description><![CDATA[什么是进程间通讯？

进程间通讯是一种机制，操作系统进程和线程通过它交换数据和消息。IPC 包括本地机制（如 Windows 共享内存）或网络机制（如 Windows 套接字）

进程间的通信方式：管道、信号量、消息队列、共享内存、套接字

一、管道

把一个进程连接到另一个进程的一个数据流称为一个“管道”，通常是用作把一个进程的输出通过管道连接到另一个进程的输入。管道本质上是内核的一块缓存。

...]]></description><category></category></item><item><title><![CDATA[Linux中MySQL语句的基本使用]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/97421008</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/97421008</guid><author>CGL1552188038</author><pubDate>Fri, 26 Jul 2019 22:18:06 +0800</pubDate><description><![CDATA[一、MySQL的介绍

1.MySQL是一个关系型数据库管理系统，由瑞典MySQL AB 公司开发，目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一，在 WEB 应用方面，MySQL是最好的 RDBMS (Relational Database Management System，关系数据库管理系统) 应用软件之一。
MySQL是一种关系数据库管理系统，关系数据库将...]]></description><category></category></item><item><title><![CDATA[计算机网络分层及对网络层的简单了解]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/97388030</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/97388030</guid><author>CGL1552188038</author><pubDate>Fri, 26 Jul 2019 21:14:49 +0800</pubDate><description><![CDATA[为什么要对计算机网络分层？

因为计算机网络是一个复杂的系统，采用层次化结构的方法来描述它，可以将复杂的网络间题分解为许多比较小的、界线比较清晰简单的部分来处理。也就是把各种特定的功能分离开来，使其实现对其他层次来说是可见的。分层结构使各个层次的设计和测试相对独立

OSI 七层模型 ：应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

TCP/IP体系结构 四层模型：应用层 传输层...]]></description><category></category></item><item><title><![CDATA[C++ 编译链接过程总结]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/97108347</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/97108347</guid><author>CGL1552188038</author><pubDate>Wed, 24 Jul 2019 19:30:43 +0800</pubDate><description><![CDATA[编译链接分为四个过程 ：预编译、编译、汇编、链接

预编译: 操作命令： gcc -E main.c -o main.i  

1.将所有的#define删除，并把所有的宏进行文本替换 。

2.处理所有的预编译指令，例如：#if，#eif，#else，#endif；

3.处理#include预编译指令，将包含的头文件插入到预编译指令的位置（注意：头文件的展开是递归展开）

4.删...]]></description><category></category></item><item><title><![CDATA[Leetcode:62题 不同路径（一个机器人位于一个 m x n 网格的左上角 。  机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角）]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/96745340</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/96745340</guid><author>CGL1552188038</author><pubDate>Sun, 21 Jul 2019 18:29:37 +0800</pubDate><description><![CDATA[题目：

一个机器人位于一个 m x n 网格的左上角 （起始点在下图中标记为“Start” ）。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角（在下图中标记为“Finish”）。

问总共有多少条不同的路径？

用例： 3*2的方格 共3条路径； 7*3的方格 共28条路径。



思路：因为机器人每次只能向下或者向右移动一步，所以机器人在走到右下角那...]]></description><category></category></item><item><title><![CDATA[算法——二分查找（折半查找）]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88934328</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88934328</guid><author>CGL1552188038</author><pubDate>Mon, 08 Apr 2019 21:01:56 +0800</pubDate><description><![CDATA[二分查找也称折半查找（Binary Search），它是一种效率较高的查找方法。

使用二分查找的条件：

1.必须采用顺序存储结构。

2.必须按关键字大小有序排列。

通俗一点的说：如果数据是一个数组，那么这个数组必须是有序的

思路：二分查找的基本思想是将n个元素分成大致相等的两部分，取a[n/2]与x做比较，如果x=a[n/2],则找到x,算法中止；如果x&lt;a[n/2],则只要在数组...]]></description><category></category></item><item><title><![CDATA[剑指offer——面试题29：求数组中出现次数超过数组长度一半的数字]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88912361</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88912361</guid><author>CGL1552188038</author><pubDate>Sat, 30 Mar 2019 20:41:27 +0800</pubDate><description><![CDATA[题目：数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次，超过数组长度的一半，因此输出2。

方法一：

首先把这个数组排序，那么排序之后位于数组中间的数字一定就是那个出现次数超过数组长度一半的数字。

时间复杂度为 O(nlogn)

C++代码实现：


#include&lt;iostr...]]></description><category></category></item><item><title><![CDATA[Linux下的调试——gdb]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88620936</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88620936</guid><author>CGL1552188038</author><pubDate>Thu, 28 Mar 2019 21:23:47 +0800</pubDate><description><![CDATA[一般来说，GDB主要帮忙我们完成下面四个方面的功能：
1、启动你的程序，可以按照我们自定义的要求随心所欲的运行程序。
2、可让被调试的程序在我们你所指定的调置的断点处停住。（断点可以是条件表达式）
3、当程序被停住时，可以检查此时我们的程序中所发生的事。
4、动态的改变我们程序的执行环境。

gdb的调试流程：

首先编译文件为调试版本，也就是在编译文件指令的末尾加上 -g。调试版的文件仍然是二进...]]></description><category></category></item><item><title><![CDATA[冒泡排顺序的基本思想（原理）]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88671444</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88671444</guid><author>CGL1552188038</author><pubDate>Tue, 19 Mar 2019 20:19:52 +0800</pubDate><description><![CDATA[冒泡排序小是重复地走访过要排序的元素列，依次比较两个相邻的元素，如果他们的顺序（如从大到小、首字母从A到Z）错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换，也就是说该元素已经排序完成。
冒泡排序算法的原理如下：
1.比较相邻的元素。如果第一个比第二个大，就交换他们两个。
2.对每一对相邻元素做同样的工作，从开始第一对到结尾的最后一对。在这一点，最后的元素应该会是最大的数。...]]></description><category></category></item><item><title><![CDATA[C/C++排序算法——选择排序]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88618506</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88618506</guid><author>CGL1552188038</author><pubDate>Sun, 17 Mar 2019 15:31:47 +0800</pubDate><description><![CDATA[什么是选择排序？

选择排序就是每一次从待排序的数据元素中选出最小（或最大）的一个元素，存放在序列的起始位置，然后，再从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾。以此类推，直到全部待排序的数据元素排完。

具体步骤：

假设有一个待排序的数组arr，则：

第1趟从arr[0]~arr[n-1]中选取最小值，与arr[0]交换；
第2趟从arr[1]~arr[n-1]中选取...]]></description><category></category></item><item><title><![CDATA[C/C++排序算法———快排]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88598843</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88598843</guid><author>CGL1552188038</author><pubDate>Sat, 16 Mar 2019 16:59:36 +0800</pubDate><description><![CDATA[快排的基本思想是：通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列。其本质是分治策略。

方法步骤（一般情况）：

1．先从数列中选第一个数作为基准数。
2．然后从后往前找第一个比基准小的数据放在数列的第一个位置，然后从前往后找比基准大的数放在刚才...]]></description><category></category></item><item><title><![CDATA[C语言中动态内存的申请和释放]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88594976</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88594976</guid><author>CGL1552188038</author><pubDate>Sat, 16 Mar 2019 12:15:47 +0800</pubDate><description><![CDATA[什么是动态内存的申请和释放？

当程序运行到需要一个动态分配的变量时，必须向系统申请取得堆中的一块所需大小的存储空间，用于存储该变量。当不再使用该变量时，也就是它的生命结束时，要显式释放它所占用的存储空间，这样系统就能对该堆空间进行再次分配，做到重复使用有限的资源。

在C语言中动态内存的申请和释放：

1.malloc函数
函数原型如下：
#include&lt;stdlib.h&gt;
voi...]]></description><category></category></item><item><title><![CDATA[Linux在I/O复用的系统调用：select、poll、epoll的区别]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88574373</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88574373</guid><author>CGL1552188038</author><pubDate>Sat, 16 Mar 2019 11:05:53 +0800</pubDate><description><![CDATA[select与poll的区别：.

select 最大监视描述符的数量是1024，而poll没有限制。

select/poll、epoll之间的区别：

1.向内核传递描述符：

select/poll 在每次循环都要把描述符拷贝到内核中，epoll每个描述符只拷贝一次到内核空间。

2.在内核中的实现：

select/poll 轮询检查每个描述符上有没有就绪事件，而epoll在描述符上设置回...]]></description><category></category></item><item><title><![CDATA[面试中常遇到的Linux命令总结]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/88575546</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/88575546</guid><author>CGL1552188038</author><pubDate>Fri, 15 Mar 2019 16:17:20 +0800</pubDate><description><![CDATA[1.文 件操作:

More ：一次显示一屏文本，满屏后停下来，并且在屏幕的底部出现一个提示信息，给出至今己显示的该文件的百分比

less：和more相似，但是使用more无法向前翻页，只能向后翻，而less可以任意切换

head ：用来显示档案的开头至标准输出中，默认head命令打印其相应文件的开头10行

tail ：把某个档案文件的最后几行显示到终端上

cat ：显示整个文件的内容
...]]></description><category></category></item><item><title><![CDATA[一维数组的定义以及相关问题]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/79601855</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/79601855</guid><author>CGL1552188038</author><pubDate>Sun, 03 Mar 2019 17:31:52 +0800</pubDate><description><![CDATA[1.数组在定义时arr[a],a表示数组的长度，使用时表示下标

2.数组在初始化没有赋值的时候都是随机值

3.int arr[]={1,2.3.4};  聚合类型只初始化一部分，其它的值都为0

4.一维数组数组名在如下情况下表示整个数组：

①在定义数组的同一个函数中，sizeof(arr)

②在定义数组的同一个函数中，&amp;arr+1

其他情况数组名arr都表示数组首元素的地址...]]></description><category></category></item><item><title><![CDATA[一维数组的相关问题]]></title><link>https://blog.youkuaiyun.com/CGL1552188038/article/details/79602582</link><guid>https://blog.youkuaiyun.com/CGL1552188038/article/details/79602582</guid><author>CGL1552188038</author><pubDate>Sun, 18 Mar 2018 17:47:29 +0800</pubDate><description><![CDATA[1.数组在定义时arr[a],a表示数组的长度，使用时表示下标
2.数组在初始化没有赋值的时候都是随机值
3.int arr[]={1,2.3.4}; 聚合类型只初始化一部分，其它的值都为0
4.一维数组数组名在如下情况下表示整个数组：
①在定义数组的同一个函数中，sizeof(arr)
②在定义数组的同一个函数中，&amp;arr+1
其他情况数组名arr都表示数组首元素的地址
5.数组的...]]></description><category></category></item></channel></rss>