C语言基础知识-程序流程结构
C语言基础知识-程序流程结构
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.概述
C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构。
顺序结构:程序按顺序执行,不发生跳转。
选择结构:依据是否满足条件,有选择的执行相应功能。
循环结构:依据条件是否满足,循环多次执行某段代码。
二.选择结构
1>.if语句
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat if_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
int a = ;
int b = ;
if (a > b)
{
printf("a > b\n");
} return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o if_demo if_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./if_demo
a > b
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
2>.if ... else语句

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat if_demo2.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
int a = ;
int b = ;
if (a > b)
{
printf("a > b\n");
}
else
{
printf("a < b\n");
} return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o if_demo2 if_demo2.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./if_demo2
a < b
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
3>.if ... else if ...else语句

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat if_demo3.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
int a = ;
int b = ;
if (a > b)
{
printf("a > b\n");
}
else if(a == b)
{
printf("a == b\n");
}
else
{
printf("a < b\n");
} return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o if_demo3 if_demo3.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./if_demo3
a == b
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
4>.三目运算符【其实其内部判断条件和if相似,语法结构简单明了】
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat if_demo4.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
int a = ;
int b = ;
int max; if (a > b)
{
max = a;
}
else
{
max = b;
}
printf("s1 = %d\n",max); a = ;
b = ;
max = (a > b ? a:b); //上面一大堆代码,我们仅仅用三目运算符一行简写。三目运算符格式为"表达式?选项1[表达式]:选项2",即如果表达式为真,选择选项1的结果,如果为假则选择新选项2。
printf("s2 = %d\n",max); return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o if_demo4 if_demo4.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./if_demo4
s1 =
s2 =
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
5>.switch语句【注意:if 条件语句执行效率差,switch条件语句执行效率相对较高,但是if可以判断一个区间,而switch则只能用来判断一个值】
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat switch_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
char c;
c = getchar(); //注意该方法只会接收第一个字符哟~比如你输入的是100,它只会接收第一个字符“1” switch(c) //参数只能是整型变量
{
case '':
printf("OK\n");
break; //switch遇到break就中断了
case '':
printf("not OK\n");
break;
default: //如果上面的条件都不满足,那么执行default
printf("are u OK?\n");
} return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o switch_demo switch_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./switch_demo OK
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./switch_demo not OK
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./switch_demo are u OK?
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./switch_demo are u OK?
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
三.循环结构
1>.while语句

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat while_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int a = ;
while(a < )
{
printf("a = %d\n",a);
a++;
system("sleep 0.5");
}
printf("程序执行完毕~\n"); return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o while_demo while_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./while_demo
a =
a =
a =
a =
a =
a =
a =
a =
a =
程序执行完毕~
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
2>.do ... while语句

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat narcissus.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int index = ;
do
{
int one = , ten=, hundred=; //将一个三位数分解个位,十位,百位 hundred = index / ; //百位 ten = index / % ; //十位 one = index % ; //个位 if (hundred * hundred * hundred + ten * ten * ten + one * one * one == index) //各个位数的立方和等于该数本身,那么它就是一个水仙花
{
printf("%d是水仙花数\n",index);
} index ++;
}while(index < ); return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o narcissus narcissus.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./narcissus
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
3>.for循环
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat for_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int index = ;
int sum = ; for(index = ;index<=;index++) //计算0-100之间所有数字的是总和
{
sum += index;
} printf("sum = %d\n",sum); return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o for_demo for_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./for_demo
sum =
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat for_demo2.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
for(int i = ;i<;i++)
{
int one = , ten=, hundred=; //将一个三位数分解个位,十位,百位 hundred = i / ; //百位 ten = i / % ; //十位 one = i % ; //个位 if (hundred * hundred * hundred + ten * ten * ten + one * one * one == i) //各个位数的立方和等于该数本身,那么它就是一个水仙花
{
printf("%d是水仙花数\n",i);
}
}
return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o for_demo2 for_demo2.c -std=c99 #注意,在Linux系统我们编译for循环代码时需要指定"-std=c99",否则会报错"error: ‘for’ loop initial declarations are only allowed in C99 mode"
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./for_demo2
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
使用for循环打印三位数存在的水仙花数字
4>.嵌套循环(循环之间可以相互嵌套)
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat for_99.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int i,j; #我们提前声明了变量i和j,如果我们在这里不声明直接在for循环里面声明也是可以的,只不过在Linux操作系统编译时,我们需要指定std的库为c99,默认使用的是c90库。否则会报错"error: ‘for’ loop initial declarations are only allowed in C99 mode"
for(i = ; i <= ; i++)
{
for(j=; j<=i; j++)
{
printf("%d x %d = %d\t",i,j,i * j);
}
printf("\n");
}
return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o for_99 for_99.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./for_99
x =
x = x =
x = x = x =
x = x = x = x =
x = x = x = x = x =
x = x = x = x = x = x =
x = x = x = x = x = x = x =
x = x = x = x = x = x = x = x =
x = x = x = x = x = x = x = x = x =
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
5>.循环语句练习一(猜年龄)
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat guess_age.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h>
#include <time.h> int main(void)
{
srand((unsigned int)time(NULL)); //加入随机数种子
int num = rand()% + ;
int value;
for(;;)
{
printf("猜猜看我年龄多大(请输入一个整数)>>>: ");
scanf("%d",&value);
if(value > num)
{
printf("我有那么老吗?\n");
}
else if(value < num)
{
printf("我看起来这么小吗?\n");
}
else
{
printf("太棒了,你猜对啦~\n");
break;
}
}
return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o guess_age guess_age.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./guess_age
猜猜看我年龄多大(请输入一个整数)>>>:
我看起来这么小吗?
猜猜看我年龄多大(请输入一个整数)>>>:
我有那么老吗?
猜猜看我年龄多大(请输入一个整数)>>>:
我有那么老吗?
猜猜看我年龄多大(请输入一个整数)>>>:
我看起来这么小吗?
猜猜看我年龄多大(请输入一个整数)>>>:
我有那么老吗?
猜猜看我年龄多大(请输入一个整数)>>>:
我看起来这么小吗?
猜猜看我年龄多大(请输入一个整数)>>>:
太棒了,你猜对啦~
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
6>.循环语句练习二(打印等腰三角形)
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat isosceles_triangle.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
int row;
printf("请输入要打印等腰三角形的行数:>>> ");
scanf("%d",&row);
for (int i = ;i <= row;i++)
{
for (int j =;j <= row - i;j++)
{
printf(" ");
} for (int k = ;k <= i * -;k++)
{
printf("*");
}
printf("\n");
}
return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o isosceles_triangle isosceles_triangle.c -std=c99
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./isosceles_triangle
请输入要打印等腰三角形的行数:>>>
*
***
*****
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./isosceles_triangle
请输入要打印等腰三角形的行数:>>>
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
四.跳转语句break和contiune语句
1>.break语句
在switch条件语句和循环语句中都可以使用break语句:
当它出现在switch条件语句时,作用是终止某个case并跳出switch结构。
当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码。
当它出现嵌套循环语句中,跳出最近的内层循环语句,执行后面的代码。
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat do_while.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int a = ;
do
{
a++;
if (a == )
{
break;
}
}while(a); //需要注意的是,尽管没有上面的if条件判断语句,该循环并非死循环,只是执行的次数较多而已,因为a是一个有符号int类型的数字,而int类型是有上限的 printf("%d\n",a); return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o do_while do_while.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./do_while [root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat do_while.c
2>.continue语句
在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat continue_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int index = ;
while (index < )
{
index++;
if(index % == || index % == || index / == ) //过滤掉带7和7的倍数的数字
{
continue;
}
printf("数字:%d\n",index);
} return EXIT_SUCCESS;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o continue_demo continue_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./continue_demo
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
数字:
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat continue_demo.c #过滤掉带7和7的倍数的数字
3>.goto语句(无条件跳转,尽量少用)
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat goto_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
goto END; //无条件跳转到END的标识
printf("第一行字母:a\n"); END: //我们定义的END标识,需要注意的是,这里是冒号(":"),而非分号(“;”)哟~
printf("第二行字母:A\n"); return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o goto_demo goto_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./goto_demo
第二行字母:A
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
C语言基础知识-程序流程结构的更多相关文章
- Golang 入门系列(三)Go语言基础知识汇总
前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- PHP丨PHP基础知识之流程控制WHILE循环「理论篇」
昨天讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...
- C语言基础知识-数据类型
C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- PHP语言基础知识
目录 前言 第一章 PHP语言学习介绍 1.1 PHP部署安装环境 1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍 2.2 PHP常量变量介绍 2.2.1 PHP变 ...
随机推荐
- Spring MVC -- Spring Tool Suite和Maven(安装Tomcat、JDK)
Spring提供了自己的集成开发环境(IDE),称为Spring Tool Suite(STS),它可能是构建Spring应用程序的最佳IDE了.STS捆绑了Maven作为其默认依赖管理工具,因此不需 ...
- Eclipse 单个tomcat多个项目部署原理(tomcat配置的环境变量catalina.home和catalina.base)
一:概念 catalina.home(安装目录):指向公用信息的位置,就是bin和lib的父目录. catalina.base(工作目录):指向每个Tomcat目录私有信息的位置,就是conf.log ...
- 【ARM-Linux开发】Makefile 使用总结
Makefile 使用总结 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, ...
- 2019年新加坡之行 Day 1
又到了公司每年一次的年度旅游,继前几年的香港.日本.韩国游后,今年公司选择了新加坡.由于之前曾在新加坡公司The Adventus Consultants工作过2年时间,所以对于这次重返新加坡,我还是 ...
- 1.2.1LVM逻辑卷镜像实现方法
LVM逻辑卷镜像实现方法 本文演示了在CentOS5系统中实现LVM逻辑卷镜像的方法.LVM的镜像功能,有点儿类似于Raid1,即多块儿磁盘互相同步,确保资料不会丢失. 创建物理卷,卷组的步骤这里就先 ...
- Java的集合类之 map 接口用法
Map接口不是Collection接口的继承.而是从自己的用于维护键-值关联的接口层次结构入手.按定义,该接口描述了从不重复的键到值的映射. 我们可以把这个接口方法分成三组操作:改变.查询和提供可选视 ...
- [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?
两大容器管理平台,Kubernetes与OpenShift有什么区别? https://www.sohu.com/a/327413642_100159565 原来openshift 就是 k8s的一个 ...
- [cf 585 E] Marbles
(一道Div2E不会,我太难了) 题意: 给你一个长度为$n$的颜色序列$A$,每次操作可以选择两个相邻元素交换,求把序列交换成“相同颜色挨在一起”所需的最少操作数. 按颜色排序:设颜色$col$在序 ...
- php中的htmlspecialchars_decode()函数
htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符. <?php $str = "This is some <b>bold&l ...
- win 修改notebook路径
开始发现 notebook 默认的路径是 C:\Users\Administrator 需要修改 将目标中的%USERPROFILE% 直接删掉了