黑马程序员2024新版C++笔记 第2章 语句

news2025/5/19 7:41:00

1.if逻辑判断语句

 语法主体:

if(要执行的判断,结果是bool型){
    判断结果是true会执行的代码;
}

2.AI大模型辅助编程

在Clion中搜索并安装对应插件:

右上角齿轮点击后找到插件(TRONGYI LINGMA和IFLYCODE)安装后重启ide即可。

重启后会有通义登录引导,点击会跳转到阿里云账号登陆界面,可以直接登录或注册一个。点击右侧的图标就可以使用了。

不想写注释可以全选代码->右键->选择通义灵码->生成注释

生成后的代码选择“插入”即可完成当前代码的注释。

讯飞灵火类似的操作不再整理。

3.if逻辑判断语句练习

答案:

#include <iostream>
using namespace std;

int main() {
    // 提示用户输入年龄
    cout << "欢迎来到黑马儿童游乐场,儿童免费,成人收费!" << endl;
    cout << "请输入你的年龄:";

    int age;
    cin >> age;

    // 根据年龄判断并输出相应内容
    if (age < 18) {
        cout << "您未成年,免费游玩,欢迎您小朋友!" << endl;
    }
    cout << "祝您游玩愉快!!!" << endl;

    return 0;
}

4.if_else语句

程序判断语法:

if(条件判断)
{
    判断条件为true会执行的代码;
}
else(条件判断)
{
    判断结果为false会执行的代码;
}

5.if_else语句练习

#include <iostream>

using namespace std;

int main() {
    // 欢迎语
    cout << "欢迎来到黑马动物园。" << endl;
    cout << "请输入您的身高(cm):";

    int height; // 定义变量 height 用于存储用户输入的身高
    cin >> height; // 使用 cin 获取用户输入的身高

    // 根据身高判断并输出相应内容
    if (height > 120) {
        cout << "您的身高超出120cm,游玩需要购票10元。" << endl;
    } else {
        cout << "您的身高未超出120cm,可以免费游玩。" << endl;
    }
    cout << "祝您游玩愉快。" << endl;

    return 0;
}

6.else if语句

7.逻辑判断语句的嵌套

有很多场景不仅是多个并列条件,还会有满足前置条件才会有第二次判断的多层次需求。对于这种需求嵌套判断语句可以实现。

8.逻辑判断语句的嵌套练习

#include <iostream>
#include <cstdlib> // 用于 rand() 和 srand()
#include <ctime>   // 用于 time()

using namespace std;

int main() {
    // 1. 定义一个变量,数字类型,内容在 1~10 范围内
    int target;
    cin >> target;

    // 提供三次猜测的机会
    for (int i = 1; i <= 3; ++i) {
        int guess;
        cout << "请输入第 " << i << " 次猜测的数字(1~10):";
        cin >> guess;

        // 判断猜测是否正确
        if (guess == target) {
            cout << "第 " << i << " 次就猜对了。你真棒!" << endl;
            return 0; // 猜对了,程序结束
        } else {
            cout << "不对,请再猜一次。" << endl;
        }
    }

    // 如果三次都未猜对
    cout << "Sorry,全部猜错啦,我想的是:" << target << endl;

    return 0;
}

9.逻辑判断的综合案例

提示:随机数可通过C++中的random库得到。

将下方代码放置在main函数之前即可调用

#include<random>

//将下方代码放置于main()函数之前即可调用
int get_random_num(int min, int max)
{
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;

}

随机数范围可通过调用函数的2个参数控制

int num = get_random_num(1,10);
#include <iostream>
#include<random>

using namespace std;

/*
 * 案例需求(填补页牌):
 * 随机产出3份信息:
 * 第一份信息:1~10的数字,代表扑克牌1~10
 * 第二份信息:字符串,红色或黑色,代表扑克牌的花色
 * 第三份信息:字符串,如果是红色产出红桃或方块,如果是黑色产出黑桃或梅花
 * 案例要求:
 * 通过该套判断,并结合判断语句猜测上述信息,如
 * 先猜数字,成功后猜颜色,再成功猜测具体的花型
 */

//将下方代码放置于main()函数之前即可调用
int get_random_num(int min, int max)
{
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;

}

int main() {

    // 第一份信息:1~10的数字,代表扑克牌1~10
    int num = get_random_num(1,10);

    // 第二份信息:字符串,红色或黑色,代表扑克牌的花色
    string color = get_random_num(0,1) ? "红色" : "黑色";

    // 第三份信息:字符串,如果是红色产出红桃或方块,如果是黑色产出黑桃或梅花
    string suit;
    if (color == "红色") {
        suit = get_random_num(0,1) ? "红桃" : "方块" ;
    }
    else
        suit = get_random_num(0,1) ? "黑桃" : "梅花" ;

    //目前检查一下输出变量,没有问题
    cout << "数字:" << num << " 花色:" << color << " 花型:" << suit << endl;

    // 先猜数字,成功后猜花色,再成功后猜具体的花型
    int guess_num;
    cout << "请输入数字:" << endl;
    cin >> guess_num;
    if (guess_num == num) {
        // 数字猜对了要继续猜花色
        int guess_color;
        cout << "请猜测花色,红色输入1,黑色输入0:" << endl;
        cin >> guess_color;
        if ((guess_color ?  "红色" : "黑色") == color) {
            // 颜色猜对了
            int suit_num;

            if (color == "红色") {
                // 猜测是否是红桃还是方块
                cout << "请猜测花型,红桃输入1,方块输入0" <<  endl;
                cin >> suit_num;
                if ((suit_num ? "红桃" : "方块") == suit) {
                    cout << "花型正确,恭喜你游戏成功,游戏的花型是" << suit << endl;
                }else {
                    cout << "花型错误,游戏失败。正确的花型是: " << suit << endl;
                }

            }
            // 花色是黑色
            // 猜测是黑桃或梅花
            else{
                cout << "请猜测花型,黑桃输入1,梅花输入0" << endl;
                cin >> suit_num;
                if ((suit_num ? "黑桃" : "梅花") == suit){
                    cout << "花型正确,恭喜你游戏成功,游戏的花型是" << suit << endl;
                }else {
                    cout << "花型错误,游戏失败。正确的花型是: " << suit << endl;
                }
            }
        }// 颜色猜错了
        else cout << "花色错误,游戏结束" << endl;
    }
    else cout << "数字错误,游戏结束" << endl;
    return 0;
}

输出答案:

数字:5 花色:红色 花型:红桃
请输入数字:
5
请猜测花色,红色输入1,黑色输入0:
1
请猜测花型,红桃输入1,方块输入0
1
花型正确,恭喜你游戏成功,游戏的花型是红桃

10.基于逻辑运算符完成复杂判断

11.switch控制语句

switch控制语句适用于多条件判断的场景,它在功能上和if 、elseif功能一致,语法更简洁接。

switch仅做值匹配(相等判断)。break语句可以中断switch语句,否则向下执行其他case段(包括default段),直至执行完或遇到break为止。示例:

#include <iostream>
using namespace std;

int main()
{
    // 输入数字1-7 输出星期几
    int num;
    cout << "请输入数字来自知是星期几(1-7):" << endl;
    cin >> num;

    switch(num){
        case 1:
            cout << "今天是星期一" << endl;
            break;
        case 2:
            cout << "今天是星期二" << endl;
            break;
        case 3:
            cout << "今天是星期三" << endl;
            break;
        case 4:
            cout << "今天是星期四" << endl;
            break;
        case 5:
            cout << "今天是星期五" << endl;
            break;
        case 6:
            cout << "今天是星期六" << endl;
            break;
        case 7:
            cout << "今天是星期日" << endl;
            break;
        default:
            cout << "输入错误,请输入1-7之间的数字!" << endl;
    }

    return 0;
}

 老师还讲了break的巧妙(多重)用法:

  • case 一旦匹配成功,从该处开始执行后续语句,若未遇到 break,则会继续执行后续所有 case 的语句(称为“穿透”)。也就是说多个 case 可连续书写,不写语句或 break,共享同一段代码。例如9分和10分都是优秀可以写成case10:case9:cout<<"优秀"<<endl;break;

  • break 的作用是跳出 switch 语句,防止继续执行后续 case。

  • default 相当于“兜底选项”,不匹配任何 case 时执行。

12.枚举类型

枚举本质上是一个被命名的整型常数的集合。因为枚举可以将一些数字或字符串符号化,以此增强程序的可读性和可维护性。

枚举语法:

enum 枚举名{
    枚举元素1;
    枚举元素2;
    ...
    枚举元素n;
};    //分号不能省略

枚举类型每个元素都有整数标号,默认从0开始,以此类推。起始标号也可以自行设置,例如“

enum Season {
    spring = 3;
    summer;
    autumn;
    winter;
};

 从3开始递增,即:spring为3,sutumn为5,winter为6.示例:

#include <iostream>
using namespace std;

// 定义颜色枚举类型
enum Color {
    RED,     // 默认是0
    YELLOW,  // 默认是1
    BLUE     // 默认是2
};

int main() {
    int num;

    cout << "小朋友们你们喜欢什么颜色?0红色,1黄色,2蓝色" << endl;
    cin >> num;

    switch (num) {
        case RED:
            cout << "小朋友喜欢红色!" << endl;
            break;
        case YELLOW:
            cout << "小朋友喜欢黄色!" << endl;
            break;
        case BLUE:
            cout << "小朋友喜欢蓝色!" << endl;
            break;
        default:
            cout << "输入无效,请输入0、1或2。" << endl;
            break;
    }

    return 0;
}

13.while循环语句

14.while循环语句练习题讲解

#include <iostream>
using namespace std;

int main() {

    // 求1-100的和
    // 在循环外部定义循环控制变量和累计和
    int i = 1, sum = 0;
    while ( i<=100 ) {
        sum += i;
        i++;
    }

    // 输出累计和
    cout << "1-100的和为:" << sum << endl;

    return 0;
}

15.while循环猜数字案例

随机数可以使用:

#include<random>
int get_random_number(int min, int max){
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}

答案:

#include <iostream>
#include <random>
using namespace std;

#include<random>
int get_random_number(int min, int max){
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}

int main() {

    /*
     * 1.无限次机会
     * 2.提示大了或小了
     * 提示总共猜了多少次
     */

    // 得到一个随机数1~100范围
    int random_number = get_random_number(1, 100);

    // 提示用户输入数字进行猜测
    cout << "请输入一个1~100的数字进行猜测:" << endl;
    int input_number;
    cin >> input_number;

    int guess_count = 1;

    // 循环判断用户输入的数字是否正确
    while (input_number != random_number) {
        //true表示为猜错
        // 1.判断条件上面就是
        // 2.循环控制因子就是input_number
        // 3.循环控制因子更新是来源于如果猜错,继续要求用户输入新的数字
        cout << "不好意思你猜错了" << endl;

        // 提示大了或小了
        if (input_number > random_number) {
            cout << "您输入的数字大了,请重新猜测" << endl;
            cin >> input_number;    //控制因子的更新
        }
        else {
            cout << "您输入的数字小了,请重新猜测" << endl;
            cin >> input_number;    //控制因子的更新
        }

        // 提示总共猜了多少次
        guess_count++;
    }

    cout << "恭喜你猜对了,总共猜了" << guess_count << "次" << endl;

    return 0;
}

16.do_while 循环语句

do while 循环是 while 循环的一个变换形式。和while循环在功能上有一个不同:while循环至少执行0次(条件判断不成立),do while循环至少会执行一次循环体的代码。

语法:

do{
    // 循环体,至少执行一次
    code;
    ```
} while(条件表达式)

用do while循环解决上一个练习题:

#include <iostream>
#include <random>
using namespace std;

#include<random>
int get_random_number(int min, int max){
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}

int main() {
    /*
     * 1.无限次机会
     * 2.提示大了或小了
     * 提示总共猜了多少次
     */

    // 得到一个随机数1~100范围
    int random_number = get_random_number(1, 100);

    int input_number;
    // 提示用户输入数字进行猜测
    do{
        cout << "请输入一个1~100的数字进行猜测:" << endl;

        cin >> input_number;

        int guess_count = 1;



        cout << "不好意思你猜错了" << endl;

        // 提示大了或小了
        if (input_number > random_number) {
            cout << "您输入的数字大了,请重新猜测" << endl;
            cin >> input_number;    //控制因子的更新
            // 提示总共猜了多少次
            guess_count++;
        }
        else if (input_number < random_number) {
            cout << "您输入的数字小了,请重新猜测" << endl;
            cin >> input_number;    //控制因子的更新
            // 提示总共猜了多少次
            guess_count++;
        }
        else cout << "恭喜你猜对了" << endl;



        cout << "恭喜你猜对了,总共猜了" << guess_count << "次" << endl;

        return 0;
    } while (input_number != random_number);
}

17.while循环嵌套

18.while循环嵌套练习题讲解

🏋️‍♀️ 练习:坚持瘦身

小明有点儿胖,决定想要减肥,请通过嵌套循环,描述小明的心态,实现如下输出:

(输出效果大致如下,每天进行3次400米冲刺训练,每做完一次输出当前进展,做完3次后减重1斤并更新体重,持续5天),例如:

今天是减肥的第1天!
开始做减肥第1天的第1个俯卧撑!
开始做减肥第1天的第2个俯卧撑!
开始做减肥第1天的第3个俯卧撑!
减重第1天的3次共400米冲刺跑完,体重减少1斤,目前累计减掉体重:1斤!

今天是减肥的第2天!
开始做减肥第2天的第1个俯卧撑!
...
减重第2天的3次共400米冲刺跑完,体重减少1斤,目前累计减掉体重:2斤!
 

#include <iostream>
using namespace std;

/**
 * 细节点:
 * 1. 外层循环完成5天的减肥
 * 2. 内层循环进行:三次俯卧撑(三次完成减少1斤体重)、三次400米冲刺(三次完成减少1斤体重)
 * 3. 过程中要累计其体重减少
 */

int main()
{
    cout << "有点胖需要减掉10斤体重,计划5天,每天目标2斤体重。加油!" << endl;

    // 外层循环完成5天的减肥
    int day = 1;    // 减肥日的周期
    int sum = 0;    // 累计体重减少
    while (day <= 5) {  //减肥控制5天

        cout << "今天是减肥的第" << day << "天" << endl;

        // 俯卧撑三次控制
        int sport = 1;
        while (sport <= 3) {
            cout << "今天做减肥第" << day << "天的第" << sport << "次俯卧撑\t" ;
            sport++;
        }
        cout << endl;
        sum+=1;
        cout << "减肥第" << day << "天的3个俯卧撑做完,体重减少1斤,累计减少" << sum << "斤" << endl;

        // 400米冲刺三次控制
        int sprint = 1;
        while (sprint <= 3) {

            cout << "今天做减肥第" << day << "天的第" << sprint << "次400米冲刺\t" ;
            sprint ++;
        }
        sum += 1;
        cout << endl;
        cout << "减肥第" << day << "天的3个400米冲刺做完,体重减少1斤,累计减少" << sum << "斤" << endl;

        cout << endl;
        day++;  // 循环控制因子更新,每一天完事day+1

    }

    return 0;
}

19.while循环嵌套案例(九九乘法表)

#include <iostream>
using namespace std;

/*
 * 打印九九乘法表
 * 1. 外层循环控制行,内层控制列
 * 2. \t分隔内层循环的输出,行和行之间有换行分隔
 * 1x1=1
 * 1x2=2 2x2=4
 * 1x3=3 2x3=6 3x3=9
 * 1x4=4 2x4=8 3x4=12 4x4=16
 * 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
 * 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
 * 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
 * 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
 * 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
 */

int main() {
    // 1.通过外层循环输出9行
    int line = 1;   // 外层循环控制因子,从1开始
    while (line <=9) {

        //  2.内层循环
        int column = 1; // 内层循环控制因子
        while (column <= line) {
            cout << column << "x" << line << "=" << column*line << "\t";    // \t对齐效果
            column++;
        }
        cout << endl;   // 内循环结束换行
        line ++;    // 外层循环控制因子更新
    }
    return 0;
}

输出:

1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
1x4=4	2x4=8	3x4=12	4x4=16	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81	

20.for循环语句

语法:

执行顺序:(与while循环对比学习)

条件判断语句可省略(但是不建议这么做),写法示例:

for (int i = 1; ; i += 2) {
        cout << i << " ";
    }

循环控制因子的创建也可以省略,写法如下:

int num = 0;
for (; i<= 20 ; i += 2) {
        cout << i << " ";
    }

循环控制因子的更新也可以省略(但是可能造成无限循环,不建议省略),示例:

for (int i = 1; i<= 20 ; ) {
        cout << i << " ";
    }

21.for循环的嵌套

示例:99乘法表for循环写法:

#include <iostream>
using namespace std;

int main() {

    for (int i = 1; i<=9; i++) {
        for (int j = 1; j<=i; j++) {
            cout << j << "x" <<  i << "=" << i*j << "\t";
        }
        cout << endl;
    }
    return 0;
}

22.for循环练习题讲解

#include <iostream>
#include <random>
using namespace std;

/**
 * for循环猜数字,提供无限次机会,猜错了提示大了或小了
 * 使用bool型作为条件判断依据,猜对了置为false,猜错了依旧是true
 * 不需要循环因子更新语句 (在循环体内,通过if判断来修改)
 */
int get_random_num(int min, int max)
{
    // 创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    // 定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    // 生成一个随机数并输出 (注:原注释中是“并输出”,但代码中是返回)
    int random_number = dis(gen);
    return random_number;
}

int main()
{
    // 获取一个随机数字
    int num = get_random_num(1, 10);

    // 要求用户猜测(第一次)
    int guess_num;
    cout << "请输入一个数字:";
    cin >> guess_num;

    // for循环判断并继续执行猜测流程
    for (bool is_continue = true; is_continue;) {
        if (guess_num == num) {
            cout << "恭喜你,猜对了!" << endl;
            is_continue = false;    // 手动更改循环因子的值并结束循环
        }
        else if (guess_num > num) {
            cout << "你猜的数字太大了,请重新输入:";
            cin >> guess_num;
        }
        else {
            cout << "你猜的数字太小了,请重新输入:";
            cin >> guess_num;
        }

    }

    return 0;
}

23.变量的作用域

24.循环中断语句continue和break

// 程序会输出0-9,字符串一次都不会输出,因为遇到continue会跳过本次循环,并继续下一次循环
    for (int i = 0; i < 10; i++) {
        cout << i << ' ';
        continue;
        cout << "This will not be printed" << endl;
    }


    // 程序会输出0,字符串和其余数字不会被输出,因为break直接跳出循环,不再执行后续代码
    for (int i = 0; i < 10; i++) {
        cout << i << ' ';
        break;
        cout << "This will not be printed" << endl;
    }
    return 0;

continue和break的作用范围都仅对当前循环语句起作用,嵌套的循环也一样。

#include <iostream>
#include <random>
using namespace std;


int main() {

    // 通过for循环输出1到20之间的奇数
    for (int i = 1; i <= 20; i ++) {

        if (i % 2 == 0) {
            continue;   // 跳过本次循环,进入下一次
        }
        cout << i << " ";
    }
    cout << endl;

    // 通过for循环输出1-20
    for (int i = 1; true; i ++) {
        if (i > 20)
            break;
        cout << i << " ";
    }

    return 0;
}

25.循环综合案例-发工资

答案:

#include <iostream>
#include <random>
using namespace std;

// 随机数生成器函数
int get_random_num(int min, int max) {
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> distrib(min, max);
    return distrib(gen);
}

int main() {

    // 1.定义一个变量记录余额
    int money = 10000;

    // 2.for循环进入发工资流程
    for (int id = 0; id <= 20; id++) {
        // 如果工资发完了,结束发工资
        if (money <= 0) {
            cout << "工资发完了,请下个月再来" << endl;
            break;
        }

        // 随即得到绩效分
        int score = get_random_num(0, 10);
        if (score < 5) {
            cout << "不好意思,员工:" << id << ",绩效分" << score << ",小于5分,不发工资" << endl;
            continue;
        }

        // 未跳过即为满足条件,开始发放工资
        money -= 1000;
        cout << "员工:" << id <<"," << "领取工资1000,当前余额:" << money << "元" << endl;

    }

    return 0;
}

26.goto语句

#include <iostream>
#include <random>
using namespace std;

/*
 * label A:
 *
 *
 * label B:
 *
 *
 * label C:
 *
 *
 * goto A/B/C
 *
 *
 */

int main() {

    int i = 1;
    loop:
    i++;
    if (i <= 10) {
        goto loop;
    }
    cout << i << endl;

    return 0;
}

输出:

11

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

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

相关文章

前端动画库 Anime.js 的V4 版本,兼容 Vue、React

前端动画库 Anime.js 更新了 V4 版本&#xff0c;并对其官网进行了全面更新&#xff0c;增加了许多令人惊艳的效果&#xff0c;尤其是时间轴动画效果&#xff0c;让开发者可以更精确地控制动画节奏。 这一版本的发布不仅带来了全新的模块化 API 和显著的性能提升&#xff0c;还…

用 PyTorch 从零实现简易GPT(Transformer 模型)

用 PyTorch 从零实现简易GPT&#xff08;Transformer 模型&#xff09; 本文将结合示例代码&#xff0c;通俗易懂地拆解大模型&#xff08;Transformer&#xff09;从数据预处理到推理预测的核心组件与流程&#xff0c;并通过 Mermaid 流程图直观展示整体架构。文章结构分为四…

【通用大模型】Serper API 详解:搜索引擎数据获取的核心工具

Serper API 详解&#xff1a;搜索引擎数据获取的核心工具 一、Serper API 的定义与核心功能二、技术架构与核心优势2.1 技术实现原理2.2 对比传统方案的突破性优势 三、典型应用场景与代码示例3.1 SEO 监控系统3.2 竞品广告分析 四、使用成本与配额策略五、开发者注意事项六、替…

Spring3+Vue3项目中的知识点——JWT

全称&#xff1a;JOSN Web Token 定义了一种简洁的、自包含的格式&#xff0c;用于通信双方以json数据格式的安全传输信息 组成&#xff1a; 第一部分&#xff1a;Header&#xff08;头&#xff09;&#xff0c;记录令牌类型、签名算法等。 第二部分&#xff1a;Payload&am…

python3GUI--智慧交通分析平台:By:PyQt5+YOLOv8(详细介绍)

文章目录 一&#xff0e;前言二&#xff0e;效果预览1.目标识别与检测2.可视化展示1.车流量统计2. 目标类别占比3. 拥堵情况展示4.目标数量可视化 3.控制台4.核心内容区1.目标检测参数2.帧转QPixmap3.数据管理 5.项目结构 三&#xff0e;总结 平台规定gif最大5M&#xff0c;所以…

Linux任务管理与守护进程

一、任务管理 &#xff08;一&#xff09;进程组、作业、会话概念 &#xff08;1&#xff09;进程组概念&#xff1a;进程组是由一个或多个进程组成的集合&#xff0c;这些进程在某些方面具有关联性。在操作系统中&#xff0c;进程组是用于对进程进行分组管理的一种机制。每个…

C#里与嵌入式系统W5500网络通讯(2)

在嵌入式代码里,需要从嵌入式的MCU访问W5500芯片。 这个是通过SPI通讯来实现的,所以要先连接SPI的硬件通讯线路。 接着下来,就是怎么样访问这个芯片了。 要访问这个芯片,需要通过SPI来发送数据,而发送数据又要有一定的约定格式, 于是芯片厂商就定义下面的通讯格式: …

EMQX开源版安装指南:Linux/Windows全攻略

EMQX开源版安装教程-linux/windows 因最近自己需要使用MQTT&#xff0c;需要搭建一个MQTT服务器&#xff0c;所以想到了很久以前用到的EMQX。但是当时的EMQX使用的是开源版的&#xff0c;在官网可以直接下载。而现在再次打开官网时发现怎么也找不大开源版本了&#xff0c;所以…

【计算机视觉】OpenCV实战项目:GraspPicture 项目深度解析:基于图像分割的抓取点检测系统

GraspPicture 项目深度解析&#xff1a;基于图像分割的抓取点检测系统 一、项目概述项目特点 二、项目运行方式与执行步骤&#xff08;一&#xff09;环境准备&#xff08;二&#xff09;项目结构&#xff08;三&#xff09;执行步骤 三、重要逻辑代码解析&#xff08;一&#…

MySQL 数据库备份与还原

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月18日 专栏&#xff1a;MySQL教程 思维导图 备份 (Backup) 与 冗余 (Redundancy) 的核心区别: &#x1f3af; 备份是指创建数据的副本并将其存储在不同位置或介质&#xff0c;主要目的是在发生数据丢失、损坏或逻辑错误时进…

Kubernetes控制平面组件:Kubelet详解(四):gRPC 与 CRI gRPC实现

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…

javax.servlet.Filter 介绍-笔记

1.javax.servlet.Filter 简介 javax.servlet.Filter 是 Java Servlet API 中的一个核心接口&#xff0c;用于在请求到达目标资源&#xff08;如 Servlet 或 JSP&#xff09;之前或响应返回给客户端之前执行预处理或后处理操作。它常用于实现与业务逻辑无关的通用功能&#xff…

Win 11开始菜单图标变成白色怎么办?

在使用windows 11的过程中&#xff0c;有时候开始菜单的某些程序图标变成白色的文件形式&#xff0c;但是程序可以正常打开&#xff0c;这个如何解决呢&#xff1f; 这通常是由于快捷方式出了问题&#xff0c;下面跟着操作步骤来解决吧。 1、右键有问题的软件&#xff0c;打开…

入门OpenTelemetry——应用自动埋点

埋点 什么是埋点 埋点&#xff0c;本质就是在你的应用程序里&#xff0c;在重要位置插入采集代码&#xff0c;比如&#xff1a; 收集请求开始和结束的时间收集数据库查询时间收集函数调用链路信息收集异常信息 这些埋点数据&#xff08;Trace、Metrics、Logs&#xff09;被…

C语言链表的操作

初学 初学C语言时&#xff0c;对于链表节点的定义一般是这样的&#xff1a; typedef struct node {int data;struct node *next; } Node; 向链表中添加节点&#xff1a; void addNode(Node **head, int data) {Node *newNode (Node*)malloc(sizeof(Node));newNode->dat…

芯片生态链深度解析(二):基础设备篇——人类精密制造的“巅峰对决”

【开篇&#xff1a;设备——芯片工业的“剑与盾”】 当ASML的EUV光刻机以每秒5万次激光脉冲在硅片上雕刻出0.13nm精度的电路&#xff08;相当于在月球表面精准定位一枚二维码&#xff09;&#xff0c;当国产28nm光刻机在华虹产线实现“从0到1”的突破&#xff0c;这场精密制造…

C语言指针深入详解(二):const修饰指针、野指针、assert断言、指针的使用和传址调用

目录 一、const修饰指针 &#xff08;一&#xff09;const修饰变量 &#xff08;二&#xff09;const 修饰指针变量 二、野指针 &#xff08;一&#xff09;野指针成因 1、指针未初始化 2、指针越界访问 3、指针指向的空间释放 &#xff08;二&#xff09;如何规避野指…

【unity游戏开发——编辑器扩展】使用EditorGUI的EditorGUILayout绘制工具类在自定义编辑器窗口绘制各种UI控件

注意&#xff1a;考虑到编辑器扩展的内容比较多&#xff0c;我将编辑器扩展的内容分开&#xff0c;并全部整合放在【unity游戏开发——编辑器扩展】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言常用的EditorGUILayout控件专栏推荐完结 前言 EditorG…

Linux基础第三天

系统时间 date命令&#xff0c;date中文具有日期的含义&#xff0c;利用该命令可以查看或者修改Linux系统日期和时间。 基本格式如下&#xff1a; gecubuntu:~$ date gecubuntu:~$ date -s 日期时间 // -s选项可以设置日期和时间 文件权限 chmod命令&#xff0c;是英文…

MoodDrop:打造一款温柔的心情打卡单页应用

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念&#xff1a;我想做一款温柔的情绪应用 「今天的你&#xff0c;心情如何&#xff1f;」 有时候&#x…