C语言零基础入门

一、输入输出

(1)scanf

scanf 是C语言中的一个标准库函数,用于从标准输入(通常是键盘)读取数据。scanf 函数定义在 <stdio.h> 头文件中。

#include <stdio.h>int main(void) {//读取整数 int num;printf("Enter an integer: ");scanf("%d", &num);  // 读取一个整数printf("You entered: %d\n", num);//读取浮点数 float num2;printf("Enter a floating-point number: ");scanf("%f", &num2);  // 读取一个浮点数printf("You entered: %f\n", num2);//读取字符    char ch;printf("Enter a character: ");scanf(" %c", &ch);  // 读取一个字符,前面的空格用于忽略空白字符printf("You entered: %c\n", ch);// 读取字符串char str[50];printf("Enter a string: ");scanf("%s", str);  // 读取一个字符串,直到遇到空白字符printf("You entered: %s\n", str);//  读取多个数据int num3;float fnum;char ch;printf("Enter an integer, a floating-point number, and a character: ");scanf("%d %f %c", &num3, &fnum, &ch);  // 读取多个数据printf("You entered: %d, %f, %c\n", num3, fnum, ch);char str2[50];printf("Enter a multi-word string: ");scanf("%[^\n]", str2);  // 读取多单词字符串,直到遇到换行符printf("You entered: %s\n", str2);return 0;
}

(2)getchar

功能:该函数从标准输入读取一个字符,并返回该字符的ASCII码值。

#include <stdio.h>
int main(void) {char ch = getchar(); // 定义char 变量 ch,接收 getchar() 函数返回值做为初值。printf("ch的数值:%d\n", ch); printf("ch的字符:%c\n", ch);return 0;
}

(3)printf

  • printf 函数的第一个参数是一个格式字符串,用于指定如何输出后续的参数。例如%d 是一个格式说明符,用于输出整数。
#include <stdio.h> // 引⼊头⽂件 stdio.h , 因为下⾯使⽤了printf() 必须添加此头⽂件。
#define PI 3.14
int main(void) {int a = 10;printf("%d\n", a); // %d:格式匹配符,匹配整数。printf("a = %d\n", a); // a = 在“”中,代表普通字符串, 原样输出。printf("%d\n", 100);printf("%f\n", PI); // %f:格式匹配符,匹配小数。printf("PI = %f\n", PI); // PI = 在“”中,代表普通字符串, 原样输出。printf("%f\n", 3.45678); // %f:格式匹配符,匹配小数。int b = 20;printf("%d + %d = %d\n", a, b, a+b); // +、= 在 “”中,代表普通字符串, 原样输出。printf("%d + %d = %d\n", 3, 7, 3+7);return 0; //C程序要求,main 函数要有返回值。借助 return 实现返回。
}

在这里插入图片描述

补充:占位符说明

在这里插入图片描述

二、变量

1、 变量 3 要素

  1. 变量名:用来在程序中使用。
  2. 变量类型:开辟内存空间大小。
  3. 变量值:存储的实际数据。
    在这里插入图片描述

2、变量名命名的主要规则:

  1. 字母数字和下划线 变量名只能包含字母(A-Z, a-z)、数字(0-9)和下划线(_)。变量名不能以数字开头。

  2. 不得使用关键字 变量名不能与C语言的关键字(如 int, char, for, if 等)相同。

3、变量的作用域

变量的作用域决定了变量在哪里可以被访问。主要作用域有:
  1. 局部变量:在函数内部声明的变量,只在该函数内有效。
  2. 全局变量:在所有函数之外声明的变量,在整个文件或多个文件中都可访问。
  3. 形式参数:函数定义中参数列表内的变量,仅在该函数调用期间有效。
  4. 静态局部变量:使用 static关键字声明的局部变量,其生命周期贯穿整个程序运行期,但是作用域仍限制在声明它的函数内。
#include <stdio.h>// 全局变量
int globalVar = 100;void func() {// 局部变量int localVar = 200;printf("Inside function: globalVar = %d, localVar = %d\n", globalVar, localVar);
}int main() {func();printf("In main: globalVar = %d\n", globalVar);// 下面这行会报错,因为 localVar 是 func 函数内的局部变量// printf("localVar = %d\n", localVar);return 0;
}

在这里插入图片描述

三、常量

  • C语言中,常量是那些在程序执行过程中其值不能被修改的量。

C语言中常量的主要用法:

  1. 使用 #define 预处理器指令
    #define 是一个预处理器指令,用于定义宏常量。宏常量在编译前会被预处理器替换为指定的值。
#include <stdio.h>#define PI 3.14159
#define MAX 100int main(void) {printf("Value of PI: %f\n", PI);printf("Maximum value: %d\n", MAX);return 0;
}
  1. 使用 const 关键字
    const 关键字用于声明常量变量。这种常量在内存中分配空间,并且可以在编译时或运行时初始化。
#include <stdio.h>int main(void) {const int MAX = 100;const float PI = 3.14159;const char GRADE = 'A';printf("Maximum value: %d\n", MAX);printf("Value of PI: %f\n", PI);printf("Grade: %c\n", GRADE);// 下面这行代码会导致编译错误,因为 MAX 是常量// MAX = 200;return 0;
}
  1. 枚举常量

枚举(enum)是一种特殊的整型常量集合,用于定义一组具名的整数值。

说明:枚举类型 Day 包含七个枚举常量:MON, TUE, WED, THU, FRI, SAT,
SUN。默认情况下,这些枚举常量会被赋予从 0 开始的连续整数值。

#include <stdio.h>enum Day { MON, TUE, WED, THU, FRI, SAT, SUN };int main(void) {enum Day today = WED;printf("Today is day number: %d\n", today);//Today is day number: 2return 0;
}

练习:

#include <stdio.h>
#define PI 3.1415926 // 定义常量
int main(void) {
// 圆的面积 :s = PI * r * r
// 圆的周长 :L = 2 * PI * rint r = 3; // 变量的定义。float s = PI * r * r; // 表达式。作为变量值。float l = 2 * PI * r;
//printf("圆的面积:%f\n", s);// 28.274334 默认显示 6 位小数。
//printf("圆的周长:%f\n", l);// 18.849556
//printf("圆的面积:%.2f\n", s);// 28.27
//printf("圆的周长:%.2f\n", l);// 18.85指定保留小数点后两位,对第3位四舍五入float m = 3.4567891;printf("m=%.2f\n", m);printf("m=%6.2f\n", m);
//共显示6位数,包含小数点,保留小数点后两位,对第3位四舍五入,不足6位用空格补齐。printf("m=%06.2f\n", m);
//共显示6位数,包含小数点,保留小数点后两位,对第3位四舍五入,不足6位用0补齐。return 0;
}

四、sizeof

在这里插入图片描述

1、有符号整型
在这里插入图片描述

#include <stdio.h>
#include <limits.h>
int main(void) {printf("int大小 = %u\n", sizeof(int));printf("int最小值:%d, 最大值:%d\n", INT_MIN, INT_MAX);printf("short大小 = %u\n", sizeof(short));printf("short最小值:%hd, 最大值:%hd\n", SHRT_MIN, SHRT_MAX);printf("long大小 = %u\n", sizeof(long));printf("long最小值:%ld, 最大值:%ld\n", LONG_MIN, LONG_MAX);printf("long long大小 = %u\n", sizeof(long long));printf("long long最小值:%lld, 最大值:%lld\n", LLONG_MIN, LLONG_MAX);
}

在这里插入图片描述
2、无符号整型
在这里插入图片描述

【扩展】:C语言中引入无符号整型有几个重要的原因,这些原因涉及性能、表示范围、内存利用率以及特定应用场景的需求。以扩大表示范围为例子,无符号整型可以表示更大的正数范围。

在这里插入图片描述

五、char

在C语言中,char 类型用于表示字符。char 类型是一个基本的数据类型,通常占用1个字节的内存。以下是关于 char 类型的详细总结:

  1. 基本属性
    在这里插入图片描述

  2. 定义和初始化

#include <stdio.h>
#include <limits.h>
int main(void) {char ch1 = 'A';  // 单引号表示单个字符char ch2 = 65;   // 使用ASCII码值初始化printf("%c",ch2); //结果:A return 0;
}
  1. 字符常量
    在这里插入图片描述

  2. 字符串
    在这里插入图片描述

  3. 输入和输出

#include <stdio.h>int main(void) {char ch;printf("Enter a character: ");scanf("%c", &ch);  // 读取一个字符printf("You entered: %c\n", ch);  // 打印字符return 0;
}
  1. ASCII 码
    在这里插入图片描述
    在这里插入图片描述

  2. 字符操作

  • 比较字符:可以使用关系运算符比较字符。
  • 字符运算:可以对字符进行算术运算,实际上是对其ASCII码值进行运算。
#include <stdio.h>int main(void) {char ch1 = 'A';char ch2 = 'B';if (ch1 < ch2) {printf("'%c' comes before '%c'\n", ch1, ch2);//'A' comes before 'B'}char ch3 = ch1 + 1;  // 'A' + 1 -> 'B'printf("ch1 + 1 = %c\n", ch3);//ch1 + 1 = Breturn 0;
}
  1. 字符串处理函数
  • C标准库提供了许多用于字符串处理的函数,例如 strlen、strcpy、strcat、strcmp 等。
#include <stdio.h>
#include <string.h>int main(void) {char str1[20] = "Hello";char str2[20] = "World";strcpy(str1, str2);  // 复制 str2 到 str1strcat(str1, "!");   // 连接字符串printf("str1: %s\n", str1);int len = strlen(str1);  // 获取字符串长度printf("Length of str1: %d\n", len);return 0;
}
  1. 无符号字符
  • 如果需要确保 char 类型的值是非负的,可以使用 unsigned char。
#include <stdio.h>int main(void) {unsigned char ch = 255;  // 无符号字符printf("Value of ch: %u\n", ch);return 0;
}

【 练习1 】:将大写字母,转换成 小写字母

#include <stdio.h>
int main(void) {char ch = 'R'; // char 变量定义printf("R 转换的小写为:%c\n", ch+32); //ch+32 表达式,对应格式匹配符 %cchar ch2 = 'h'; // char 变量定义printf("h 转换的大写为:%c\n", ch2-32); //ch2-32 表达式,对应格式匹配符 %cchar ch3 = '5';
// 借助字符5, 利用 ASCII特性,打印出 字符9printf(" 打印字符9 = %c\n", ch3+4);return 0;
}

在这里插入图片描述
【 练习 2】:在一个printf函数中, 打印输出 hello 换行 world 换行 。

#include <stdio.h>
/*方法1
int main(void) {printf("hello\nworld\n");return 0;
}
*/
//方法2
int main(void) {char ch = '\n'; //定义ch变量,初值为'\n'printf("hello%cworld%c", ch, ch); // 等价于 printf("hello\nworld\n");return 0;
}

六、bool

  • 在C语言中,布尔类型(bool)并不是内置类型,而是通过包含 <stdbool.h> 头文件来引入的。bool 类型用于表示真(true)和假(false)两种逻辑值。

1.输出布尔值

可以使用 %d 格式说明符来输出布尔值。true 输出为 1,false 输出为 0。

#include <stdio.h>
#include <stdbool.h>int main(void) {bool isTrue = true;bool isFalse = false;printf("isTrue: %d\n", isTrue);  // 输出 1printf("isFalse: %d\n", isFalse);  // 输出 0return 0;
}

2.布尔值的整数表示
在C语言中,true 实际上表示整数 1,false 表示整数 0。因此,任何非零值都可以被视为 true,零值被视为 false。

#include <stdio.h>
#include <stdbool.h>int main(void) {bool a = 1;  // truebool b = 0;  // falsebool c = 10; // trueprintf("a: %d\n", a);  // 输出 1printf("b: %d\n", b);  // 输出 0printf("c: %d\n", c);  // 输出 1return 0;
}

3.布尔运算
布尔运算符(如 &&、||、!)可以用于布尔表达式的组合和否定。

#include <stdio.h>
#include <stdbool.h>int main(void) {bool a = true;bool b = false;bool andResult = a && b;  // falsebool orResult = a || b;   // truebool notResult = !a;      // falseprintf("a && b: %d\n", andResult);printf("a || b: %d\n", orResult);printf("!a: %d\n", notResult);return 0;
}

在这里插入图片描述

七、运算符

(1)算数运算符

在这里插入图片描述

(2)自增自减运算符

#include <stdio.h>
// ++ / -- 运算符
int main(void) {
// 前缀int a = 10;printf("%d\n", ++a); // ++a 等价于 a = a+1;
// 后缀int b = 10;printf("%d\n", b++); // b++ 等价于 b = b+1;
// 不管前缀、后缀、含有变量 ++/-- 表达式执行完后,变量均发生了自增、自减。printf("b = %d\n", b);return 0;
}

在这里插入图片描述

(3)赋值运算符

在这里插入图片描述

(4)比较运算符

在这里插入图片描述

(5)逻辑运算符

  • 0 为假, 非0 为真。(非0: 1、 27、-9)
  1. 逻辑非(!)
  • 规律:非真为假,非假为真。
#include<stdio.h>
// 逻辑运算符
int main(void) {
// 逻辑非int a = 34; // 34 是非0, 默认 a 为真。int b = 0;printf("a = %d\n", !a); // a为真,非a 为假!!---> 0printf("b = %d\n", !b); // b=0, b为假,非b, 为真。 ---> 1return 0;
}
  1. 逻辑与(&&)
  • 规律:同真为真,其余为假。
#include<stdio.h>
// 逻辑运算符
int main(void) {int a = 34; // 34 是非0, 默认 a 为真。int b = 0;printf("%d\n", a && !b); // a为真,!b为真, 真&&真 -- 真。 --->1	
}
  1. 逻辑或(||)
  • 规律:有真为真,同假为假。
#include<stdio.h>
// 逻辑运算符
int main(void) {int a = 34; // 34 是非0, 默认 a 为真。int b = 0;printf("------%d\n", a || !b); // a为真,!b为真,真||真 -- 真。---> 1printf("------%d\n", a || b); // a为真,b为假,真||假 --真。---> 1printf("------%d\n", !a || b); // !a为假,b为假,假||假 --假。---> 0
}

(6)逗号运算符

在这里插入图片描述

(7)三目运算符

在这里插入图片描述


#include<stdio.h>
// 三目运算
int main(void) {int a = 40;int b = 4;//int m = a > b ? 69 : 10;//printf("m = %d\n", m); // m = 69;//int m = a < b ? 69 : 10;//printf("m = %d\n", m); // m = 10;// 三目运算支持嵌套int m = a < b ? 69 : (a<b?3:5); // 先算表达式3,取5,整个三目运算,取表达式3-- >5printf("m = %d\n", m); // m = 5;int m2 = a < b ? 69 : a < b ? 3 : 5;printf("m2 = %d\n", m2); // m = 5;return 0;
}

【说明】:如果不使用(),三目运算默认的结合性,自右向左。

(8)运算符的优先级

在这里插入图片描述

八、if 条件判断

(1)if…else 分支

#include <stdio.h>int main(void) {int a;printf("请输入一个数:");int ret = scanf("%d", &a);if (a > 0) {printf("a > 0\n");} else {printf("a <= 0\n");}return 0;
}

(2)多个分支逻辑

#include <stdio.h>int main(void) {int score;printf("请输入学生成绩:");scanf("%d", &score);if (score >= 90) { // 优秀printf("优秀\n");} else if (score >=70 && score < 90) { // 70 < score < 90 错误写法。printf("良好\n");} else if (score >= 60 && score < 70) {printf("及格\n");} else {printf("差劲\n");}
}

九、switch 语句

在这里插入图片描述

#include <stdio.h>
int main(void) {int score;printf("请输入学生成绩:");scanf("%d", &score);// 将 学生成绩,通过运算,得出可以放入 switch case 分支的 表达式。switch (score/10) {case 10:printf("优秀\n");break; // 表示当前分支结束。case 9:printf("优秀\n");break;case 8:printf("良好\n");break;case 7:printf("良好\n");break;case 6:printf("及格\n");break;default: // 所有case都不满足的其他情况。printf("不及格");break;}return 0;
}

备注:case穿透
在这里插入图片描述

十、while 循环

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
int main(void) {//7的倍数: num % 7 == 0//个位含7: num % 10 == 7//十位含7: num / 10 == 7int num = 1;while (num <= 100) {if (num % 7 == 0 || num % 10 == 7 || num / 10 == 7) {printf("敲桌子!\n");} else {printf("%d\n", num);}num++;}return 0;
}

十一、do while 循环

在这里插入图片描述

练习:
在这里插入图片描述

#include<stdio.h>
int main(void) {//-个位数:int a = num % 10;//-十位数:int b = num / 10 % 10;//-百位数:int c = num / 100;int num = 100; // 数数从 100 开始。int a, b, c; // 定义存储个位、十位、百位数 的变量。do {a = num % 10; // 求个位数。b = num / 10 % 10;c = num / 100;// 判断 这个数字是否是“水仙花数”if (a * a * a + b * b * b + c * c * c == num){printf("水仙花数:%d\n", num);}num++; // 不断向后数数。} while (num <= 999);return 0;
}

在这里插入图片描述

十二、for 循环

在这里插入图片描述

  • 使用 for 循环 求 1~100 的 和
#include <stdio.h>int main(void) {int sum = 0;  // 初始化累加和为0// 使用 for 循环从1到100求和for (int i = 1; i <= 100; i++) {sum += i;  // 累加当前的值}// 输出结果printf("The sum of numbers from 1 to 100 is: %d\n", sum);return 0;
}
  • 特殊语法:
    -在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

十三、嵌套 for 循环

#include <stdio.h>int main(void) {for (int i = 0; i < 2; i++) { // 外层循环for (int j = 0; j < 3; j++) { // 内层循环printf("Hello World!\n");}}return 0;
}

分析代码:拆解以上循环嵌套的执行过程

第一次外层循环:i = 0; //i的初始值为0i < 2  //条件成立,进入内层循环第一次进入内层循环:【内层循环第一次:】j = 0; //j的初始值为0j < 3  //条件成立printf("Hello World!\n");//此时输出一次 Hello World!j++; //j的值变为1【内层循环第二次:】j = 1; j < 3  //条件成立printf("Hello World!\n");//此时输出一次 Hello World!j++; //j的值变为2【内层循环第三次:】j = 2; j < 3  //条件成立printf("Hello World!\n"); //此时输出一次 Hello World!j++; //j的值变为3【内层循环第四次:】j = 3; j < 3  //条件不成立,内层循环结束i++; //i的值变为1
第二次外层循环:i = 1; i < 2  //条件成立,进入内层循环第二次进入内层循环:【内层循环第一次:】j = 0; //j的初始值为0j < 3  //条件成立printf("Hello World!\n"); //此时输出一次 Hello World!j++; //j的值变为1【内层循环第二次:】j = 1; j < 3  //条件成立printf("Hello World!\n"); //此时输出一次 Hello World!j++; //j的值变为2【内层循环第三次:】j = 2; j < 3  //条件成立printf("Hello World!\n"); //此时输出一次 Hello World!j++; //j的值变为3【内层循环第四次:】j = 3; j < 3  //条件不成立,内层循环结束i++; //i的值变为2
第三次外层循环:i = 2; i < 2  //条件不成立,外层循环结束,整个循环都终止了

练习:打印乘法口诀表

#include <stdio.h>int main(void) {// 外层循环控制行数for (int i = 1; i <= 9; i++) {// 内层循环控制列数for (int j = 1; j <= i; j++) {// 打印乘法口诀表的一个项printf("%d*%d=%d ", j, i, i * j);}// 每一行结束后换行printf("\n");}return 0;
}

在这里插入图片描述

十四、语句跳转

  • 在流程控制语句中还有一类“跳转语句”,主要用来中断当前的执行过程。

(1)break

  • 当代码中遇到break时,会直接中断距离最近的循环,跳转到外部继续执行。
#include <stdio.h>int main(void) {int i = 1;while (1) {  // 使用1表示无限循环printf(" 这是第%d次输出\n", i);i++;if (i > 5) {break;  // 当 i 大于 5 时退出循环}}return 0;
}

结果:
在这里插入图片描述

(2)continue

  • continue语句表示“继续”执行循环,也就是中断循环中的本次迭代,并开始执行下一次迭代。
//需求:输出1到10之间所有的整数,5不输出#include <stdio.h>int main(void) {for (int i = 1; i <= 10; i++) {if (i == 5) {continue;  // 当 i 等于 5 时跳过本次循环} else {printf("这是第%d次输出\n", i);}}return 0;
}

结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/20357.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

经典的网络安全技术

以我的理解&#xff0c;“黑客”大体上应该分为“正”、“邪”两类&#xff0c;正派黑客依靠自己掌握的知识帮助系统管理员找出系统中的漏洞并加以完善&#xff0c;而邪派黑客则是通过各种黑客技能对系统进行攻击、入侵或者做其他一些有害于网络的事情&#xff0c;因为邪派黑客…

D73【 python 接口自动化学习】- python 基础之正则表达式

day73 正则表达式-元字符匹配 学习日期&#xff1a;20241119 学习目标&#xff1a;正则表达式--133 正则表达式-元字符匹配 学习笔记&#xff1a; 元字符匹配 数量匹配 实践操作 总结 字符串的r标记表示&#xff0c;字符串内转移字符无效&#xff0c;作为普通字符使用正则…

实验一 顺序结构程序设计

《大学计算机&#xfe63;C语言版》实验报告 实验名称 实验一 顺序结构程序设计 实验目的 &#xff08;1&#xff09;掌握C语言中常量和变量的概念。 &#xff08;2&#xff09;掌握C语言中常见的数据类型。 &#xff08;3&#xff09;掌握C语言中变量的定义和赋值方法。 …

在Linux上如何利用NTP使客户端和服务端的时间同步

对于服务端 一、先在服务端安装相关配置-----yum install chrony -y-----并启动 二、进入chrony的文件里----在第三行修改为阿里云时间服务地址 三、在服务端重启chrony 四、进行测试------chronyc sources -v 五、进入chrony的文件里添加客户端的ip地址---在第26行&#…

IDEA2023 SpringBoot整合Web开发(二)

一、SpringBoot介绍 由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。SpringBoot提供了一种新的编程范式&#xff0c;可以更加快速便捷…

[C语言]第十三节 指针一基础知识到高级技巧的全景探索

目录 13.1. 内存和地址 13.1.1. 内存和地址 13.2. 指针变量和地址 13.2.1 取地址操作符&#xff08;&&#xff09; 13.1.2 指针变量和解引⽤操作符&#xff08;*&#xff09; 13.1.3 指针变量的⼤⼩ 13.3. 指针变量类型 13.3.1 指针的解引⽤ 13.3.2 指针-整数 13…

hhdb数据库介绍(9-24)

计算节点参数说明 failoverAutoresetslave 参数说明&#xff1a; PropertyValue参数值failoverAutoresetslave是否可见是参数说明故障切换时&#xff0c;是否自动重置主从复制关系默认值falseReload是否生效否 参数设置&#xff1a; <property name"failoverAutor…

基于Java Springboot网络相册系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

未来已来:少儿编程竞赛聚焦物联网,激发创新潜力

随着人工智能与物联网技术&#xff08;IoT&#xff09;的快速发展&#xff0c;少儿编程教育正在迎来新的变革浪潮。近年来&#xff0c;各类少儿编程竞赛纷纷增加了物联网相关主题&#xff0c;要求学生结合编程知识和硬件设备设计智能家居、智慧城市等创新项目。这一趋势不仅丰富…

什么是客户关系管理

客户关系管理&#xff08;CRM&#xff09;是一套用于管理企业与现有客户及潜在客户互动的策略和技术。提升客户满意度、优化销售流程、增强客户忠诚度是其核心目标。通过系统化的方法&#xff0c;CRM帮助企业收集、分析并利用客户数据&#xff0c;从而制定更有效的市场营销策略…

C# MethodTimer.Fody 使用详解

总目录 前言 NET开发过程中&#xff0c;经常会使用Stopwatch 来测量方法的执行所需时间&#xff0c;以便了解代码的执行效率。这里介绍一个开源库&#xff1a;MethodTimer.Fody。它可以辅助我们更为方便快速的完成方法执行效率的测量。 一、MethodTimer.Fody 是什么&#xff1…

sourceInsight常用设置和功能汇总(不断更新)(RGB、高亮、全路径、鼠标、宏、TODO高亮)

文章目录 必开配置设置背景颜色护眼的RGB值&#xff1f;sourceInsight4.0中如何设置选中某个单词以后自动高亮的功能&#xff1f;sourceinsight中输入设置显示全路径&#xff1f; 常用sourceInsight4.0中文乱码怎么解决&#xff0c;注意事项是什么&#xff1f;如何绑定鼠标中键…

东土科技孵化的“网联汽车高速通信技术”前沿产品亮相2024WICV大会

2024世界智能网联汽车大会&#xff08;WICV&#xff09;于近日在北京召开。本次大会发布了由中国汽车工程学会组织全球200余位专家&#xff0c;联合评审遴选出未来十年对于智能网联汽车发展具有重要影响的十大技术趋势&#xff0c;包括“面向高级别自动驾驶的超级人工智能”“网…

kvm-dmesg:从宿主机窥探虚拟机内核dmesg日志

在虚拟化环境中&#xff0c;实时获取虚拟机内核日志对于系统管理员和开发者来说至关重要。传统的 dmesg 工具可以方便地查看本地系统的内核日志&#xff0c;但在KVM&#xff08;基于内核的虚拟机&#xff09;环境下&#xff0c;获取虚拟机内部的内核日志则复杂得多。为了简化这…

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 &#xff08;一&#xff09;分布式锁&#xff1a;应对分布式环境的同步挑战 &#xff08;二&#xff09;分布式锁的实现方式 &#xff08;三&#xff09;分布式锁的使用场景 &#xff08;四&#xff09;分布式锁需满足的特点 二、Redis 实现分…

编程之路,从0开始:联合和枚举

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路。 目录 1、自定义类型&#xff1a;联合体 1.1联合体的声明 1.2联合体变量的定义与赋值 1.3联合体的特点 1.4利用联合体判断大小端 2、自定义类型&#xff1a;枚举…

【从零开始的LeetCode-算法】3301. 高度互不相同的最大塔高和

给你一个数组 maximumHeight &#xff0c;其中 maximumHeight[i] 表示第 i 座塔可以达到的 最大 高度。 你的任务是给每一座塔分别设置一个高度&#xff0c;使得&#xff1a; 第 i 座塔的高度是一个正整数&#xff0c;且不超过 maximumHeight[i] 。所有塔的高度互不相同。 请…

POE接口

一、POE的概念 POE&#xff08;Power over Ethernet&#xff09;是一种以太网供电技术&#xff0c;它允许在现有的以太网电缆中传输电力和数据信号&#xff0c;从而无需额外的电源线。POE技术广泛应用于IP电话、无线接入点、网络摄像头、安全系统和其他需要网络连接和供电的设…

分层架构 IM 系统之架构演进

在电商业务日活几百万的情况下&#xff0c;IM 系统采用分层架构方式&#xff0c;如下图。 分层架构的 IM 系统&#xff0c;整体上包含了【终端层】、【入口层】、【业务逻辑层】、【路由层】、【数据访问层】和【存储层】&#xff0c;我们在上篇文章&#xff08;分层架构 IM 系…

基于Ruoyi的同一token跨系统访问,后端单点登录并且鉴权方案

基于Ruoyi的同一token跨系统访问,后端单点登录并且鉴权方案 需求场景以及先决条件默认方案改造思路改造代码,一共4个类需要变更完整需要修改的代码 需求场景以及先决条件 同一环境下的多个ruoyi项目,各自使用相同的一组用户(我这里用的是LDAP的登录,不影响本文),但是每个权限拥…