<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[XSNxsnXSN的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/XSNxsnXSN</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; XSNxsnXSN]]></copyright><item><title><![CDATA[云计算与华为云]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124862076</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124862076</guid><author>XSNxsnXSN</author><pubDate>Thu, 19 May 2022 15:20:23 +0800</pubDate><description><![CDATA[云计算基础
第一章 云计算基础知识
云计算的背景：信息大爆炸

传统IT面临的挑战

业务上线慢
扩展困难
可靠性不强
生命周期管理复杂
I/O瓶颈
TCO（总成本）居高不下

企业IT基础设施架构走向云化

传统企业IT架构：直接在服务器上面装操作系统（OS），软硬件之间存在强耦合关系，硬件资源利用率普遍较低且运维成本比较复杂。
虚拟化架构：软硬件已经解耦，资源利用率得到提升，运维效率得到优化。
企业云化IT架构：更加强调资源的整合与统一调度，彻底消灭资源孤岛效应，让资源真正流动起来。架构从集中式向着分布]]></description><category></category></item><item><title><![CDATA[C语言-对指针的理解（2）]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124234466</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124234466</guid><author>XSNxsnXSN</author><pubDate>Sun, 17 Apr 2022 20:07:04 +0800</pubDate><description><![CDATA[1.数组指针（指向数组的指针）

数组（Array）是一系列具有相同类型的数据的集合，每一份数据叫做一个数组元素（Element）。数组中的所有元素在内存中是连续排列的，整个数组占用的是一块内存。


以int arr[] = { 99, 15, 100, 888, 252 };为例，该数组在内存中的分布如下图所示：

定义数组时，要给出数组名和数组长度，数组名可以认为是一个指针，它指向数组的第 0 个元素。在C语言中，我们将第 0 个元素的地址称为数组的首地址。以上面的数组为例，下图是 arr 的指向：
]]></description><category></category></item><item><title><![CDATA[C语言-对指针的理解（1）]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124229261</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124229261</guid><author>XSNxsnXSN</author><pubDate>Sun, 17 Apr 2022 15:09:25 +0800</pubDate><description><![CDATA[1.什么是指针

数据在内存中的地址称为指针

2.什么是指针变量

存放了一份数据的地址的变量

一个比较高级的变量，一般的变量用来存放值，指针变量用来存放普通变量的地址



例子1：
假设现在有一个int类型变量a=1,地址为0X62FE0C；
还有一个指针变量p,p=0X62FE0C；正好是变量a的地址；
那么称指针变量p指向了普通变量a。

例子2：
假设现在有一个char类型变量b=‘K’,地址为0X62FE03；
还有一个指针变量q,q=0X62FE03；正好是变量b的地址；
那么称指针变量q]]></description><category></category></item><item><title><![CDATA[C语言(写一个函数打印乘法表)]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124101512</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124101512</guid><author>XSNxsnXSN</author><pubDate>Mon, 11 Apr 2022 16:01:20 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;
void print_table(int n);
int main()
{
	int n;
	scanf("%d", &amp;n);
	print_table(n);
}
//打印乘法口诀表 
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//4*1=4 4*2=8 4*3=12 4*4=16
void print_table(int n)
{
	int i, j;
	//打印行，有n行
	for(i=1; i&lt;]]></description><category></category></item><item><title><![CDATA[C语言（B站比特鹏哥）笔记]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124055902</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124055902</guid><author>XSNxsnXSN</author><pubDate>Sat, 09 Apr 2022 14:04:23 +0800</pubDate><description><![CDATA[P48函数的调用

一个函数如果没有写返回类型，默认返回int类型


练习
1.写一个函数可以判断一个数是不是素数
之（打印100-200之间的素数）
#include&lt;stdio.h&gt;	
//打印100-200之间所有的素数 
int is_prime(int n); //函数声明 
int main()
{
	int i = 0;
	int count = 0;
	for(i=100; i&lt;=200; i++)//这里可以优化代码写成i+=2，因为偶数肯定不是素数
	{
		//判断]]></description><category></category></item><item><title><![CDATA[C语言（B站比特鹏哥）笔记]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124042575</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124042575</guid><author>XSNxsnXSN</author><pubDate>Fri, 08 Apr 2022 17:02:58 +0800</pubDate><description><![CDATA[P42函数


库函数


如何学习库函数
https://www.cplusplus.com/
https://zh.cppreference.com/



自定义函数


自定义函数和库函数一样，有函数名，返回值类型和函数参数。但是不一样的是这些都是我们自己设计的。



例子1:写一个函数返回两个整数中的较大值


#include &lt;stdio.h&gt;
int get_max(int x, int y);//函数声明可以没有变量的名称，但是一定要有变量的类型 
int main()
{
]]></description><category></category></item><item><title><![CDATA[C语言（B站比特鹏哥）笔记]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124034471</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/124034471</guid><author>XSNxsnXSN</author><pubDate>Fri, 08 Apr 2022 10:30:21 +0800</pubDate><description><![CDATA[练习
1.计算n的阶乘
#include&lt;stdio.h&gt;	
int main()
{
	int i, ret, n;
	
	printf("请输入n:&gt;");
	scanf("%d", &amp;n);
	
	for(i=1; i&lt;=n; i++)
	{
		ret *= i;
	}
	printf("%d!=%d", n, ret);
		
	return 0;	
}

1.1写一个函数计算n的阶乘
#include&lt;stdio.h&gt;	
int ret(int n);]]></description><category></category></item><item><title><![CDATA[C语言 冒泡排序]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123998526</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123998526</guid><author>XSNxsnXSN</author><pubDate>Wed, 06 Apr 2022 20:06:00 +0800</pubDate><description><![CDATA[#include&lt;stdio.h&gt;	
int main()
{
	int n[10] = { 25,35,68,79,21,13,98,7,16,62 };//定义一个大小为10的数组
	int i, j,k,temp;
	for (i = 1; i &lt;= 9; i++)//外层循环是比较的轮数，数组内有10个数，那么就应该比较10-1=9轮
	{
		for (j = 0; j &lt;= 9 - i; j++)//内层循环比较的是当前一轮的比较次数，例如：第一轮比较9-1=8次，第二轮]]></description><category></category></item><item><title><![CDATA[C语言（B站比特鹏哥）笔记]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123865131</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123865131</guid><author>XSNxsnXSN</author><pubDate>Thu, 31 Mar 2022 12:28:56 +0800</pubDate><description><![CDATA[分支语句和循环语句
分支语句（选择结构）

if
switch

循环语句（循环结构）

for
while
do while

goto语句

C语言中由一个分号;隔开的就是一条语句
C语言中非0就是真
P30 分支语句if else
if语句
语法结构



例子
#include &lt;stdio.h&gt;
int main()
{
	int age = 20;
	if(age&gt;=18)
		printf("成年\n");
	else
		printf("未成年\n");
		printf.]]></description><category></category></item><item><title><![CDATA[C语言数据类型转换（自动类型转换+强制类型转换）]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123842149</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123842149</guid><author>XSNxsnXSN</author><pubDate>Wed, 30 Mar 2022 12:18:19 +0800</pubDate><description><![CDATA[自动类型转换

自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换，这种转换不需要程序员干预，会自动发生。

1)将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换，例如
float f = 100;

100是int 类型的数据，需要先转换为float类型才能赋值给变量f。再如
int n = f;

f是float类型的数据，需要先转换为int类型才能赋值给变量n。

在赋值运算中，赋值号两边的数据类型不同时，需要把右边表达式的类型转换为左边变量的类型，这可能会导致数据失真，或者]]></description><category></category></item><item><title><![CDATA[C语言 （写一个函数返回较大值）]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123816088</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123816088</guid><author>XSNxsnXSN</author><pubDate>Tue, 29 Mar 2022 10:58:56 +0800</pubDate><description><![CDATA[写一个函数求两个整数中的较大值

#include &lt;stdio.h&gt;
int max(int x, int y);	//函数声明 
//函数声明也可以写成以下形式，即函数声明可以省略变量名字但是不可以省略变量类型 
//int max(int, int); 
int main()
{
	int x, y, result;
	
	printf("请输入两个整数x和y：");
	scanf("%d %d", &amp;x, &amp;y);
	result = max(x, y);	//函数调用.]]></description><category></category></item><item><title><![CDATA[C语言（B站比特鹏哥）笔记]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123660837</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123660837</guid><author>XSNxsnXSN</author><pubDate>Tue, 22 Mar 2022 17:56:04 +0800</pubDate><description><![CDATA[P19 初识操作符1
算术操作符

+ - * / %



移位操作符

&gt;&gt;按位右移
&lt;&lt;按位右移



位操作符

&amp;按位与
^按位或
|按位异或

赋值操作符

= += -= *= /= &amp;= ^= |= &gt;&gt;= &lt;&lt;=

单目操作符（只需要一个操作数）
0表示假，!0就是真



sizeof(int等类型)时括号不能省略
sizeof a(变量)时，因为sizeof是操作符不是函数（括号可以省略但一般不省略）




~：按位（二]]></description><category></category></item><item><title><![CDATA[C语言（B站比特鹏哥）笔记]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123653541</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123653541</guid><author>XSNxsnXSN</author><pubDate>Tue, 22 Mar 2022 14:40:05 +0800</pubDate><description><![CDATA[P9 初始变量的作用域和声明周期
局部变量和全局变量

当局部变量和全局变量同名的时候，局部变量优先使用


变量的作用域和生命周期

作用域：限定名字的可用性的代码范围就是这个名字的作用域。
局部变量的作用与就是变量所在的局部范围。
全局变量的作用域是整个工程





P10 什么是常量









枚举关键字enum



P11 字符串

字符串就是一串字符，用英文双引号括起来的一串字符
字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志，不算作字符串内容






]]></description><category></category></item><item><title><![CDATA[MOOC数据结构不挂科]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123638808</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123638808</guid><author>XSNxsnXSN</author><pubDate>Mon, 21 Mar 2022 17:09:57 +0800</pubDate><description><![CDATA[第八章  排序
考点
插入排序（稳定的）
时间复杂度O（n2）
空间复杂度O（1）



选择排序（不稳定的）
时间复杂度O（n2）
空间复杂度O（1）



冒泡（沉底）排序（稳定的）
时间复杂度O（n2）
空间复杂度O（1）


归并排序（稳定的）-2路（划分为两个部分）
时间复杂度O（n*log n）
空间复杂度O（1）

快速排序（不稳定的）
在子序列里面再次做快排

可用于外部排序

时间复杂度O（n*log n）
空间复杂度O（1）




...]]></description><category></category></item><item><title><![CDATA[C语言函数的调用]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123569044</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123569044</guid><author>XSNxsnXSN</author><pubDate>Fri, 18 Mar 2022 10:49:39 +0800</pubDate><description><![CDATA[函数调用（Function Call），就是使用已经定义好的函数。函数调用的一般形式为：
functionName(param1, param2, param3 ...);

functionName 是函数名称，param1, param2, param3 …是实参列表。实参可以是常数、变量、表达式等，多个实参用逗号,分隔。
在C语言中，函数调用的方式有多种，例如：
//函数作为表达式中的一项出现在表达式中
z = max(x, y);
m = n + max(x, y);
//函数作为一个单独的语句
p]]></description><category></category></item><item><title><![CDATA[C语言函数的返回值]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123568109</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123568109</guid><author>XSNxsnXSN</author><pubDate>Fri, 18 Mar 2022 10:29:07 +0800</pubDate><description><![CDATA[函数的返回值是指函数被调用之后，执行函数体中的代码所得到的结果，这个结果通过 return 语句返回。

return 语句的一般形式为：
return 表达式;

或者
return (表达式);

有没有( )都是正确的，为了简明，一般也不写( )。
对C语言返回值的说明

没有返回值的函数为空类型，用void表示。例如：

void func(){
    printf("http://c.biancheng.net\n");
}

一旦函数的返回值类型被定义为 void，就不能再接收它的值了。例如.]]></description><category></category></item><item><title><![CDATA[C语言字符串处理函数]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123566951</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123566951</guid><author>XSNxsnXSN</author><pubDate>Fri, 18 Mar 2022 10:05:13 +0800</pubDate><description><![CDATA[字符串连接函数 strcat()
strcat 是 string catenate 的缩写，意思是把两个字符串拼接在一起，语法格式为：
strcat(arrayName1, arrayName2);


arrayName1、arrayName2 为需要拼接的字符串。

strcat() 将把 arrayName2 连接到 arrayName1 后面，并删除原来 arrayName1 最后的结束标志’\0’。这意味着，arrayName1 必须足够长，要能够同时容纳 arrayName1 和 arrayNa]]></description><category></category></item><item><title><![CDATA[C语言的自增自减运算]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123543751</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123543751</guid><author>XSNxsnXSN</author><pubDate>Thu, 17 Mar 2022 10:25:36 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;
int main()
{
    int a = 10, b = 20, c = 30, d = 40;
    int a1 = ++a; 
	int b1 = b++; 
	int c1 = --c;
	int d1 = d--;
   
    printf("a=%d, a1=%d\n", a, a1);
    printf("b=%d, b1=%d\n", b, b1);
    printf("c=%d, c1=%d\n", c, c1);
 ]]></description><category></category></item><item><title><![CDATA[MOOC数据结构不挂科]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123245788</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123245788</guid><author>XSNxsnXSN</author><pubDate>Thu, 03 Mar 2022 10:20:06 +0800</pubDate><description><![CDATA[第五章 图
考点

图的基本概念（多对多的逻辑结构）




图的存储结构/表现方式
顺序存储----&gt;邻接矩阵


链式存储----&gt;邻接表

邻接矩阵和邻接表的比较



邻接矩阵的优点

找到两个顶点便可以找出关系，时间复杂度为O(1)



邻接矩阵的缺点

邻接矩阵无论如何都需要一个二维数组[n][n]  ，在各顶点度较少时浪费大量空间



邻接表的优点

在边较少的时节省许多空间----&gt;适用于稀疏图



邻接表的缺点

无法直接获取某条边的信息，需要vi链表从头进行顺序存]]></description><category></category></item><item><title><![CDATA[MOOC数据结构不挂科]]></title><link>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123198159</link><guid>https://blog.youkuaiyun.com/XSNxsnXSN/article/details/123198159</guid><author>XSNxsnXSN</author><pubDate>Tue, 01 Mar 2022 14:21:29 +0800</pubDate><description><![CDATA[第四章 树和二叉树
考点

树和森林
二叉树结构
二叉树：每个结点的度至高为2（至多有两个孩子），也可以1个或0个，分别成为左孩子和右孩子

二叉树的重要性质



两种特殊的二叉树

满二叉树(Full）
完全二叉树(Complete)（允许有空缺，但空缺只能是最后一层的最右边）



树/森林转换为二叉树
（左孩子又兄弟）


二叉树的顺序存储实现

二叉树的链式实现

二叉树的遍历
三种遍历的主要区别在于当前结点的访问的先后

伪代码

三种遍历顺序中，左子树都先于右子树

先序遍历是第一次访问到该节]]></description><category></category></item></channel></rss>