【系统性】 循序渐进学C++

循序渐进学C++

第一阶段:基础

一、环境配置

1.1.第一个程序(基本格式)

#include <iosteam>
using namespace std;int main(){cout<<"hello world"<<endl;system("pause");
}

​ 模板

#include <iosteam>
using namespace std;
#include <string.h>
int main(){//主要功能代码区system("pause");
}
1.2注释

image-20240312180130454

1.3变量

​ 意义:方便管理内存空间

​ 方法:数据类型 变量名 = 数字;

#include <iosteam>
using namespace std;int main(){int a = 10; cout<<"a = "<<a<<endl;system("pause");
}
1.4常量

image-20240312180534938

#include <iosteam>
using namespace std;
#def Day 7
int main(){cout<<"一周一共有"<<Day<<endl;system("pause");}
1.5关键字

image-20240312180905002

1.6变量命名规则

image-20240312181052920

二、数据类型

​ 目的:给数据存分配合适的空间大小;避免资源浪费

2.1整形

image-20240312181159521

2.2 sizeof

image-20240312182020423

int main(){cout<<"short类型内存为:"<<sizeof(short)<<endl;
}

image-20240312182218512

2.3浮点型

image-20240312182322358

image-20240312182606364

​ float占用四个字节

​ double占用八个字节

​ 科学计数法

image-20240312182812067

2.4字符型

​ 注意事项:单引号;单引号里面只能放一个;ASCII值;int(char);A65;a97.

image-20240312182913797

2.5转义字符

image-20240313080814589

2.6字符串型

​ #include string

​ string a = “你好世界” //C++中的变量

​ char str[] =“Hello world” //C中的

image-20240313081406116

2.7布尔数据类型

image-20240313081756468

2.8数据的输入

image-20240313081956558

#include <iosteam>
using namespace std;
#include <string>int main(){int a =0;cout<<"请给a赋值 = "<<endl;cin>>a;把输入的值赋值给acout<<"a = "<<a<<endl;char b ='a';cout<<"请给b赋值 = "<<endl;cin>>a;把输入的值赋值给acout<<"b = "<<a<<endl;system("pause");}

三、运算符

image-20240313082511741

3.1 算术运算符号

image-20240313082546265

#include <iostream>
using namespace std;int main() {int num1, num2;cout << "请输入两个整数:" << endl;cin >> num1 >> num2;// 加法int sum = num1 + num2;cout << "加法结果:" << sum << endl;// 减法int difference = num1 - num2;cout << "减法结果:" << difference << endl;// 乘法int product = num1 * num2;cout << "乘法结果:" << product << endl;// 除法if (num2 != 0) {double quotient = static_cast<double>(num1) / static_cast<double>(num2);cout << "除法结果:" << quotient << endl;} else {cout << "除数不能为0" << endl;}return 0;
}

image-20240313083645770

image-20240313084009944

3.2赋值运算符

image-20240313084101731

#include <iostream>
using namespace std;int main() {int a = 10; // 直接赋值cout << "a = " << a << endl;a += 5; // 加法赋值cout << "a = " << a << endl;a -= 3; // 减法赋值cout << "a = " << a << endl;a *= 2; // 乘法赋值cout << "a = " << a << endl;a /= 4; // 除法赋值cout << "a = " << a << endl;a %= 6; // 取模赋值cout << "a = " << a << endl;int v = 10;++v ;cout<<"v = "<<v<<endl;return 0;
}
3.3比较运算符

image-20240313084313494

#include <iostream>
using namespace std;int main() {int a = 10, b = 20;// 等于运算符if (a == b) {cout << "a等于b" << endl;} else {cout << "a不等于b" << endl;}// 不等于运算符if (a != b) {cout << "a不等于b" << endl;} else {cout << "a等于b" << endl;}// 大于运算符if (a > b) {cout << "a大于b" << endl;} else {cout << "a不大于b" << endl;}// 小于运算符if (a < b) {cout << "a小于b" << endl;} else {cout << "a不小于b" << endl;}// 大于等于运算符if (a >= b) {cout << "a大于等于b" << endl;} else {cout << "a小于b" << endl;}// 小于等于运算符if (a <= b) {cout << "a小于等于b" << endl;} else {cout << "a大于b" << endl;}system("pause");return 0;
}
3.4逻辑运算

image-20240313084600685

#include <iostream>
using namespace std;int main() {bool a = true, b = false;// 与运算符if (a && b) {cout << "a和b都为真" << endl;} else {cout << "a和b不都为真" << endl;}// 或运算符if (a || b) {cout << "a和b至少有一个为真" << endl;} else {cout << "a和b都不为真" << endl;}// 非运算符if (!a) {cout << "a为假" << endl;} else {cout << "a为真" << endl;}system("pause");return 0;
}

四、 程序流程结构

image-20240313085000656

4.1顺序结构
#include <iostream>
using namespace std;int main() {int num = 0;// if语句if (num > 0) {cout << "num大于0" << endl;} else if (num < 0) {cout << "num小于0" << endl;} else {cout << "num等于0" << endl;}return 0;
}if (条件表达式) {// 当条件表达式为真时执行的代码块
} else if (条件表达式) {// 当第一个条件表达式为假,且当前条件表达式为真时执行的代码块
} else {// 当所有条件表达式都为假时执行的代码块
}别加分号

4.2选择顺序结构

#include <iostream>
using namespace std;
int main() {int score = 0;cout << "输入分数" << endl;cin >> score;cout << "您的分数为:" << score << endl;if (score > 600) {cout << "恭喜你考上了一本大学" << endl;}else if (500 < score < 600) {cout << "恭喜你考上了二本大学" << endl;}else if (400 < score < 500) {cout << "恭喜你考上了二本大学" << endl;}system("pause");return 0;}
4.2嵌套语句

​ 案例一需求

image-20240317185320906

​ 代码实现

#include <iostream>
using namespace std;int main() {int score;cout << "请输入高考考试分数: ";cin >> score;if (score > 600) {cout << "考上一本" << endl;if (score > 700) {cout << "考入北大" << endl;} else if (score > 650) {cout << "考入清华" << endl;} else if (score > 600) {cout << "考入人大" << endl;}} else if (score > 500) {cout << "考上二本" << endl;} else if (score > 400) {cout << "考上三本" << endl;} else {cout << "未考上本科" << endl;}return 0;
}

​ 案例二需求----三只小猪称体重
image-20240317185659667

​ 代码实现:

#include <iostream>
using namespace std;int main() {int weightA, weightB, weightC;cout << "请输入小猪A的体重:";cin >> weightA;cout << "请输入小猪B的体重:";cin >> weightB;cout << "请输入小猪C的体重:";cin >> weightC;if (weightA >= weightB && weightA >= weightC) {cout << "小猪A最重" << endl;} else if (weightB >= weightA && weightB >= weightC) {cout << "小猪B最重" << endl;} else {cout << "小猪C最重" << endl;}return 0;
}
4.3 三目运算符:

​ 要求

image-20240317191530535

​ 代码实现:

#include <iostream>
using namespace std;int main() {int weightA, weightB, weightC;cout << "请输入小猪A的体重:";cin >> weightA;cout << "请输入小猪B的体重:";cin >> weightB;cout << "请输入小猪C的体重:";cin >> weightC;string heaviest = (weightA >= weightB && weightA >= weightC) ? "小猪A" : (weightB >= weightA && weightB >= weightC) ? "小猪B" : "小猪C";cout << heaviest << "最重" << endl;return 0;
}

​ 注意:?是判断的意思

​ 就是":"就是否则就的意思
image-20240317192158943

4.4 switch语句
#include <iostream>
using namespace std;int main() {int weightA, weightB, weightC;cout << "请输入小猪A的体重:";cin >> weightA;cout << "请输入小猪B的体重:";cin >> weightB;cout << "请输入小猪C的体重:";cin >> weightC;string heaviest;if (weightA >= weightB && weightA >= weightC) {heaviest = "小猪A";} else if (weightB >= weightA && weightB >= weightC) {heaviest = "小猪B";} else {heaviest = "小猪C";}switch (heaviest[0]) {case '小':cout << "最重的小猪是" << heaviest << endl;break;default:cout << "没有找到最重的小猪" << endl;break;}return 0;
}
4.5循环结构

​ 4.5.1结构浏览
image-20240317192547410

​ 4.5.2打印数字

int main(){int num = 0;cout<<num<<endl;while(num<10){cout<<num<<endl;num++;}system("puase");
}

​ 4.5.3猜数字案例
image-20240317193127126

#include <iostream>
#include <ctime>
#include <cstdlib>int main() {srand(time(0));int random_num = rand() % 100 + 1;//rand() % 100生成一个0--99的树int guess;std::cout << "欢迎来到猜数字游戏!系统已生成一个1到100之间的随机数,请开始猜测:" << std::endl;while (true) {std::cin >> guess;if (guess > random_num) {std::cout << "猜大了,请重新输入:" << std::endl;} else if (guess < random_num) {std::cout << "猜小了,请重新输入:" << std::endl;} else {std::cout << "恭喜你猜对了!游戏结束。" << std::endl;break;}}return 0;
}

​ 4.5.4 do while 实现

#include <iostream>
#include <ctime>
#include <cstdlib>int main() {srand(time(0));int random_num = rand() % 100 + 1;int guess;bool isCorrect = false;std::cout << "欢迎来到猜数字游戏!系统已生成一个1到100之间的随机数,请开始猜测:" << std::endl;do {std::cin >> guess;if (guess > random_num) {std::cout << "猜大了,请重新输入:" << std::endl;} else if (guess < random_num) {std::cout << "猜小了,请重新输入:" << std::endl;} else {std::cout << "恭喜你猜对了!游戏结束。" << std::endl;isCorrect = true;}} while (!isCorrect);return 0;
}

​ 4.5.5水仙花数的实现
image-20240317201245061

解决办法:
image-20240317201326550

image-20240317201728843

#include <iostream>
#include <cmath>bool is_narcissistic_number(int num) {int sum = 0;int temp = num;int n = std::to_string(num).length();while (temp > 0) {int digit = temp % 10;sum += std::pow(digit, n);temp /= 10;}return sum == num;
}int main() {for (int i = 100; i <= 999; ++i) {if (is_narcissistic_number(i)) {std::cout << i << " 是水仙花数" << std::endl;}}return 0;
}
4.6 for循环

image-20240317202042282

int main(){for(int i = 0;i<10;i++){cout<<"i = "<<i<<endl;}system("pause");
}

​ 案例:敲桌子
image-20240317202327882

​ 思路:

image-20240317202439721

image-20240317202548012

​ 代码

#include <iostream>
using namespace std;bool contains_seven(int num) {while (num > 0) {if (num % 10 == 7) {return true;}num /= 10;}return false;
}bool is_multiple_of_seven(int num) {return num % 7 == 0;
}int main() {int num;cout << "请输入一个数字: ";cin >> num;if (contains_seven(num) || is_multiple_of_seven(num)) {cout << "敲桌子" << endl;} else {cout << "不敲桌子" << endl;}return   0;
}

​ 嵌套循环
image-20240317202814435

​ 代码实现:
image-20240317203003897

​ 乘法口诀表
image-20240317203042916

​ 代码实现:

#include <iostream>
using namespace std;int main() {for (int i = 1; i <= 9; ++i) {for (int j = 1; j <= i; ++j) {cout << j << " * " << i << " = " << i * j << "\t";}cout << endl;}return 0;
}

​ 结果:
image-20240317203649985

4.7 跳转语句

break
image-20240317203740707

#include <iostream>
using namespace std;int main() {for (int i = 0; i < 10; ++i) {if (i == 5) {break; // 当i等于5时跳出循环}cout << i << " ";}cout << endl;for (int i = 0; i < 10; ++i) {if (i % 2 == 0) {continue; // 当i是偶数时跳过本次循环}cout << i << " ";}cout << endl;return 0;
}

​ continue代码

#include <iostream>
using namespace std;int main() {for (int i = 0; i < 10; ++i) {if (i % 2 == 0) {continue; // 当i是偶数时跳过本次循环}cout << i << " ";}cout << endl;return 0;
}
break和continue的区别:**break用于结束整个循环,而continue用于跳过当前迭代继续执行后续迭代**。

在编程中,breakcontinue都是控制流程的关键字,它们影响循环结构的行为。以下是两者的具体区别:

  • 作用范围:当在循环内部遇到break时,会立即退出最内层的循环,并开始执行循环之后的代码。而continue仅跳过当前的迭代,即本次循环剩余未执行的部分,然后继续进行下一次迭代。
  • 使用场景break通常用于在满足某个条件时要完全终止循环的情况。例如,你可能在一个搜索算法中找到目标值后使用break来停止搜索。continue则用于当某次迭代不满足特定条件时,希望略过此次迭代,直接进入下一次迭代的情况。比如,在遍历一个数组时,可能需要忽略某些特定的值。

总结来说,breakcontinue虽然都可以用来控制循环结构,但它们的主要区别在于break用于结束整个循环,而continue用于结束当前迭代并继续执行后续的迭代。

4.8 goto语句

C++中的goto语句是一种跳转语句,用于将程序的执行流程跳转到指定的标签位置。它的语法格式如下:

goto label;
...
label: statement;

其中,label是一个用户自定义的标签,可以是一个标识符或者一个数字。当程序执行到goto语句时,它会跳转到与该标签对应的位置,并从该位置开始执行后面的语句。需要注意的是,使用goto语句可能会导致代码结构混乱,不易于维护和调试,因此在实际编程中应尽量避免使用。

#include <iostream>
using namespace std;int main() {int num = 0;start: // 标签num++;cout << "num: " << num << endl;if (num < 5) {goto start; // 跳转到start标签}return 0;
}

五 、数组

image-20240317204658499

5.1 数组的定义

数组是一组具有相同数据类型的元素的集合,这些元素在内存中连续存放,并且每个元素都可以通过下标来访问

数组的定义通常包括以下几个要素:

  1. 数据类型:数组中每个元素的类型,如int、float、char等。
  2. 数组名:用于标识数组的变量名。
  3. 数组大小:可以是声明时指定的常量表达式,也可以是后续动态分配的大小。
  4. 初始化:可以在声明时对数组进行初始化,也可以在声明后对数组的元素逐一赋值。
  5. 访问:通过数组名和下标来访问或修改数组中的元素。

此外,在C语言中,数组的下标是从0开始的,所以如果有一个数组a,那么a[0]表示第一个元素,a[n-1]表示最后一个元素,其中n是数组的大小。

总的来说,数组是编程中非常基础且重要的概念,它不仅用于存储数据,还常常用于处理大量数据的情况,如数值计算、数据处理等场景。

5.2 数组的操作

数组的操作主要包括以下几个方面:

  1. 访问数组元素:通过下标来访问数组中的元素,例如a[0]表示第一个元素,a[n-1]表示最后一个元素。
  2. 修改数组元素:通过下标来修改数组中的元素,例如a[0] = 10将第一个元素的值改为10。
  3. 遍历数组元素:使用循环结构来遍历数组中的所有元素,例如使用for循环或while循环。
  4. 数组排序:对数组进行排序,可以使用内置的排序函数或者自定义的排序算法。
  5. 查找数组元素:在数组中查找指定的元素,可以使用线性查找、二分查找等方法。
  6. 动态数组:根据需要动态地增加或减少数组的大小,可以使用C语言中的realloc函数或者C++中的vector容器。
5.3 代码的实现

以下是使用C语言实现数组操作的示例代码:

#include <stdio.h>int main() {// 定义一个整型数组,大小为5int a[5] = {1, 2, 3, 4, 5};// 访问数组元素printf("a[0] = %d", a[0]); // 输出第一个元素printf("a[4] = %d", a[4]); // 输出最后一个元素// 修改数组元素a[0] = 10;printf("a[0] = %d", a[0]); // 输出修改后的第一个元素// 遍历数组元素for (int i = 0; i < 5; i++) {printf("a[%d] = %d", i, a[i]);}// 动态增加数组大小int *b = (int *)realloc(a, 10 * sizeof(int));if (b != NULL) {a = b;for (int i = 5; i < 10; i++) {a[i] = i + 1;}printf("New array: ");for (int i = 0; i < 10; i++) {printf("%d ", a[i]);}printf("");} else {printf("Failed to resize the array.");}return 0;
}

以上代码演示了如何定义、访问、修改、遍历和动态调整数组的大小。其中,realloc函数用于重新分配内存空间,如果分配成功则返回指向新内存空间的指针,否则返回NULL。

5.4 一维数组的作用

image-20240317205341713

一维数组是编程中非常基础且重要的概念,它的作用主要有以下几个方面:

  1. 存储数据:一维数组可以用于存储一组相同类型的数据,例如整数、浮点数、字符等。通过下标访问和修改数组元素,可以实现对数据的快速存取和修改。

  2. 处理大量数据:在处理大量数据时,使用一维数组可以有效地减少内存占用和提高程序运行效率。例如,在数值计算、数据处理、图像处理等领域,一维数组被广泛应用。

  3. 实现算法:许多算法需要使用到数组,例如排序算法、查找算法、动态规划等。一维数组作为这些算法的基础数据结构,能够方便地实现各种算法。

  4. 简化代码:使用一维数组可以将复杂的数据结构和操作抽象化,从而简化代码的编写和维护。例如,在字符串处理、矩阵运算等领域,一维数组可以大大简化代码的复杂度。

  5. 统计数组的大小

    以下是使用C语言实现统计数组大小的示例代码:

    #include <stdio.h>int main() {// 定义一个整型数组,大小为5int a[5] = {1, 2, 3, 4, 5};// 计算数组的大小int size = sizeof(a) / sizeof(a[0]);printf("The size of the array is %d
    ", size); // 输出数组的大小return 0;
    }
    

    以上代码中,sizeof(a)可以获取整个数组的字节数,而sizeof(a[0])可以获取数组中每个元素的字节数。将两者相除即可得到数组的大小。需要注意的是,这种方法只适用于在定义数组时已知数组大小的情况,如果数组是通过动态分配内存得到的,则需要使用其他方法来获取数组的大小。

  6. 案例一:

    1. image-20240317205936051

    2. 解析:首先需要遍历数组,找到最大值,然后打印出来。

      代码如下:

      #include <iostream>
      using namespace std;int main() {int arr[5] = {300, 350, 200, 400, 250};int max_weight = arr[0];for (int i = 1; i < 5; i++) {if (arr[i] > max_weight) {max_weight = arr[i];}}cout << "最重的小猪体重为:" << max_weight << endl;return 0;
      }

案例二:

image-20240317210309164

代码实现:

​ 解析:首先需要声明一个5个元素的数组,然后通过循环将数组元素逆置。

代码如下:

#include <iostream>
using namespace std;int main() {int arr[5] = {1, 3, 2, 5, 4};for (int i = 0; i < 5 / 2; i++) {int temp = arr[i];arr[i] = arr[4 - i];arr[4 - i] = temp;}for (int i = 0; i < 5; i++) {cout << arr[i] << " ";}cout << endl;return 0;
}

总之,一维数组是编程中非常重要的数据结构之一,它不仅能够存储和处理大量数据,还能够实现各种算法和简化代码。

第二阶段:核心

第三阶段:提高

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几何相互作用GNN预测3D-PLA

预测PLA是药物发现中的核心问题。最近的进展显示了将ML应用于PLA预测的巨大潜力。然而,它们大多忽略了复合物的3D结构和蛋白质与配体之间的物理相互作用,而这对于理解结合机制至关重要。作者提出了一种结合3D结构和物理相互作用的几何相互作用图神经网络GIGN,用于预测蛋白质…

mac下Appuim环境安装

参考资料 Mac安装Appium_mac电脑安装appium-CSDN博客 安卓测试工具&#xff1a;Appium 环境安装&#xff08;mac版本&#xff09;_安卓自动化测试mac环境搭建-CSDN博客 1. 基本环境依赖 1 node.js 2 JDK&#xff08;Java JDK&#xff09; 3 Android SDK 4 Appium&#x…

多线程(代码案例: 单例模式, 阻塞队列, 生产者消费者模型,定时器)

设计模式是什么 类似于棋谱一样的东西 计算机圈子里的大佬为了能让小菜鸡的代码不要写的太差 针对一些典型的场景, 给出了一些典型的解决方案 这样小菜鸡们可以根据这些方案(ACM里面叫板子, 象棋五子棋里叫棋谱, 咱这里叫 设计模式), 略加修改, 这样代码再差也差不到哪里去 … …

C#装箱和拆箱

一&#xff0c;装箱 装箱是指将值类型转化为引用类型。 代码如下&#xff1a; 装箱的内部过程 当值类型需要被装箱为引用类型时&#xff0c;CLR&#xff08;Common Language Runtime&#xff09;会为值类型分配内存&#xff0c;在堆上创建一个新的对象。值类型的数据会被复…

Flask智慧农业农产品价格可视化

Flaskecharts做多图联动查询界面&#xff1a; 引言 目的和背景文档结构 农产品价格数据/空气质量指数AQI可视化展示分析 数据收集和准备 数据源描述数据收集方法数据清洗与预处理 可视化界面设计与实现 界面需求描述使用echarts和pyecharts实现可视化界面输入参数和数据展示方…

【Kubernetes】k8s删除master节点后重新加入集群

目录 前言一、思路二、实战1.安装etcdctl指令2.重置旧节点的k8s3.旧节点的的 etcd 从 etcd 集群删除4.在 master03 上&#xff0c;创建存放证书目录5.把其他控制节点的证书拷贝到 master01 上6.把 master03 加入到集群7.验证 master03 是否加入到 k8s 集群&#xff0c;检查业务…

Milvus向量数据库检索

官方文档&#xff1a;https://milvus.io/docs/search.md   本节介绍如何使用 Milvus 搜索实体。   Milvus 中的向量相似度搜索会计算查询向量与具有指定相似度度量的集合中的向量之间的距离&#xff0c;并返回最相似的结果。您可以通过指定过滤标量字段或主键字段的布尔表达…

sql join

-- 创建事实表 CREATE TABLE product_facts (id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255),price DECIMAL(10, 2) );-- 插入数据 INSERT INTO product_facts (product_name, price) VALUES (Product A, 100.00); INSERT INTO product_facts (product_name, pr…

Spring Boot(六十九):利用Alibaba Druid对数据库密码进行加密

1 Alibaba Druid简介 之前介绍过Alibaba Druid的,章节如下,这里就不介绍了: Spring Boot(六十六):集成Alibaba Druid 连接池 这章使用Alibaba Druid进行数据库密码加密,在上面的代码上进行修改,这章只介绍密码加密的步骤。 目前越来越严的安全等级要求,我们在做产品…

百科源码生活资讯百科门户类网站百科知识,生活常识

百科源码生活资讯百科门户类网站百科知识,生活常识 百科源码安装环境 支持php5.6&#xff0c;数据库mysql即可&#xff0c;需要有子目录权限&#xff0c;没有权限的话无法安装 百科源码可以创建百科内容&#xff0c;创建活动内容。 包含用户注册&#xff0c;词条创建&#xff…

使用 opencv 识别答题卡,生成填涂答案

一般答题卡设计时都在试卷4个角预留4个一样大小的黑块 仅能识别选择题判断题之类的填涂答题的题目&#xff0c;不能识别填空题应用题等其它主观题 使用 opencv 识别试卷图片中所有黑块&#xff0c;再根据黑块大小获取四个角的位置&#xff0c;根据四个黑块位置校正图像 将图…

Ansible非标记语言YAML与任务剧本Playbook

前言 上篇介绍了 Ansible 单模块&#xff08;AD-Hoc&#xff09;的相关内容Ansible自动化运维Inventory与Ad-Hoc-CSDN博客&#xff0c;Ad-Hoc 命令是一次性的、即时执行的命令&#xff0c;用于在远程主机上执行特定任务&#xff0c;这些命令通常用于快速执行简单的任务。当需要…

Spring Boot 集成 WebSocket 实例 | 前端持续打印远程日志文件更新内容(模拟 tail 命令)

这个是我在 CSDN 的第一百篇原则博文&#xff0c;留念&#x1f60e; #1 需求说明 先说下项目结构&#xff0c;后端基于 Spring Boot 3&#xff0c;前端为 node.js 开发的控制台程序。现在希望能够在前端模拟 tail 命令&#xff0c;持续输出后端的日志文件。 #2 技术方案 #2.…

Python基础(七)之数值类型集合

Python基础&#xff08;七&#xff09;之数值类型集合 1、简介 集合&#xff0c;英文set。 集合&#xff08;set&#xff09;是由一个或多个元素组成&#xff0c;是一个无序且不可重复的序列。 集合&#xff08;set&#xff09;只存储不可变的数据类型&#xff0c;如Number、…

【mask】根据bbox提示同一张图片生成多个矩形框掩码

前提&#xff1a;使用labelimg得到bbox 1.代码 import cv2 import numpy as np# 读取图片 image cv2.imread("D:\Desktop\mult_test\images\SL03509990_1694761223500.jpg")# 假设我们有多个目标的ROI&#xff08;感兴趣区域&#xff09; rois [(565,635,1006,85…

MySQL实战:监控

监控指标 性能类指标 名称说明QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率Innodb的缓存命中率 功能类指标 名称说明可用性数据库是否正常对外提供服务阻塞当前是否有阻塞的会话…

zookeeper快速入门四:在java客户端中操作zookeeper

系列文章&#xff1a; zookeeper快速入门一&#xff1a;zookeeper安装与启动-CSDN博客 zookeeper快速入门二&#xff1a;zookeeper基本概念-CSDN博客 zookeeper快速入门三&#xff1a;zookeeper的基本操作 先启动zookeeper服务端。 在maven引入zookeeper依赖。 <depende…

51单片机—DS18B20温度传感器

目录 一.元件介绍及原理 二&#xff0c;应用&#xff1a;DS18B20读取温度 一.元件介绍及原理 1.元件 2.内部介绍 本次元件使用的是单总线 以下为单总线的介绍 时序结构 操作流程 本次需要使用的是SKIP ROM 跳过&#xff0c; CONVERT T温度变化&#xff0c;READ SCRATCHPAD…

RabbitMQ命令行监控命令详解

在分布式系统中&#xff0c;消息队列中间件如RabbitMQ扮演着至关重要的角色。为了保证系统的稳定性和高可用性&#xff0c;对RabbitMQ进行有效监控是必不可少的。本文将详细介绍RabbitMQ提供的命令行工具rabbitmqctl&#xff0c;这些工具可以帮助我们监控和管理RabbitMQ服务器。…

【论文精读】DDPM:Denoising Diffusion Probabilistic Models 去噪扩散概率模型

文章目录 一、背景&#xff08;一&#xff09;生成模型&#xff08;二&#xff09;数学理论基础&#xff08;三&#xff09;扩散模型的三种生成范式 二、文章概览&#xff08;一&#xff09;核心思想&#xff08;二&#xff09;前向过程&#xff08;三&#xff09;后向过程&…