【系统性】 循序渐进学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注释

1.3变量
意义:方便管理内存空间
方法:数据类型 变量名 = 数字;
#include <iosteam>
using namespace std;int main(){int a = 10; cout<<"a = "<<a<<endl;system("pause");
}
1.4常量

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

1.6变量命名规则

二、数据类型
目的:给数据存分配合适的空间大小;避免资源浪费
2.1整形

2.2 sizeof

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

2.3浮点型


float占用四个字节
double占用八个字节
科学计数法

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

2.5转义字符

2.6字符串型
#include string
string a = “你好世界” //C++中的变量
char str[] =“Hello world” //C中的

2.7布尔数据类型

2.8数据的输入

#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");}
三、运算符

3.1 算术运算符号

#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;
}


3.2赋值运算符

#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比较运算符

#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逻辑运算

#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;
}
四、 程序流程结构

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嵌套语句
案例一需求

代码实现
#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;
}
案例二需求----三只小猪称体重

代码实现:
#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 三目运算符:
要求

代码实现:
#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;
}
注意:?是判断的意思
就是":"就是否则就的意思

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结构浏览

4.5.2打印数字
int main(){int num = 0;cout<<num<<endl;while(num<10){cout<<num<<endl;num++;}system("puase");
}
4.5.3猜数字案例

#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水仙花数的实现

解决办法:


#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循环

int main(){for(int i = 0;i<10;i++){cout<<"i = "<<i<<endl;}system("pause");
}
案例:敲桌子

思路:


代码
#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;
}
嵌套循环

代码实现:

乘法口诀表

代码实现:
#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;
}
结果:

4.7 跳转语句
break

#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用于跳过当前迭代继续执行后续迭代**。
在编程中,break和continue都是控制流程的关键字,它们影响循环结构的行为。以下是两者的具体区别:
- 作用范围:当在循环内部遇到
break时,会立即退出最内层的循环,并开始执行循环之后的代码。而continue仅跳过当前的迭代,即本次循环剩余未执行的部分,然后继续进行下一次迭代。 - 使用场景:
break通常用于在满足某个条件时要完全终止循环的情况。例如,你可能在一个搜索算法中找到目标值后使用break来停止搜索。continue则用于当某次迭代不满足特定条件时,希望略过此次迭代,直接进入下一次迭代的情况。比如,在遍历一个数组时,可能需要忽略某些特定的值。
总结来说,break和continue虽然都可以用来控制循环结构,但它们的主要区别在于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;
}
五 、数组

5.1 数组的定义
数组是一组具有相同数据类型的元素的集合,这些元素在内存中连续存放,并且每个元素都可以通过下标来访问。
数组的定义通常包括以下几个要素:
- 数据类型:数组中每个元素的类型,如int、float、char等。
- 数组名:用于标识数组的变量名。
- 数组大小:可以是声明时指定的常量表达式,也可以是后续动态分配的大小。
- 初始化:可以在声明时对数组进行初始化,也可以在声明后对数组的元素逐一赋值。
- 访问:通过数组名和下标来访问或修改数组中的元素。
此外,在C语言中,数组的下标是从0开始的,所以如果有一个数组a,那么a[0]表示第一个元素,a[n-1]表示最后一个元素,其中n是数组的大小。
总的来说,数组是编程中非常基础且重要的概念,它不仅用于存储数据,还常常用于处理大量数据的情况,如数值计算、数据处理等场景。
5.2 数组的操作
数组的操作主要包括以下几个方面:
- 访问数组元素:通过下标来访问数组中的元素,例如
a[0]表示第一个元素,a[n-1]表示最后一个元素。 - 修改数组元素:通过下标来修改数组中的元素,例如
a[0] = 10将第一个元素的值改为10。 - 遍历数组元素:使用循环结构来遍历数组中的所有元素,例如使用for循环或while循环。
- 数组排序:对数组进行排序,可以使用内置的排序函数或者自定义的排序算法。
- 查找数组元素:在数组中查找指定的元素,可以使用线性查找、二分查找等方法。
- 动态数组:根据需要动态地增加或减少数组的大小,可以使用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 一维数组的作用

一维数组是编程中非常基础且重要的概念,它的作用主要有以下几个方面:
-
存储数据:一维数组可以用于存储一组相同类型的数据,例如整数、浮点数、字符等。通过下标访问和修改数组元素,可以实现对数据的快速存取和修改。
-
处理大量数据:在处理大量数据时,使用一维数组可以有效地减少内存占用和提高程序运行效率。例如,在数值计算、数据处理、图像处理等领域,一维数组被广泛应用。
-
实现算法:许多算法需要使用到数组,例如排序算法、查找算法、动态规划等。一维数组作为这些算法的基础数据结构,能够方便地实现各种算法。
-
简化代码:使用一维数组可以将复杂的数据结构和操作抽象化,从而简化代码的编写和维护。例如,在字符串处理、矩阵运算等领域,一维数组可以大大简化代码的复杂度。
-
统计数组的大小:
以下是使用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])可以获取数组中每个元素的字节数。将两者相除即可得到数组的大小。需要注意的是,这种方法只适用于在定义数组时已知数组大小的情况,如果数组是通过动态分配内存得到的,则需要使用其他方法来获取数组的大小。 -
案例一:
-

-
解析:首先需要遍历数组,找到最大值,然后打印出来。
代码如下:
#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; }
-
案例二:

代码实现:
解析:首先需要声明一个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;
}
总之,一维数组是编程中非常重要的数据结构之一,它不仅能够存储和处理大量数据,还能够实现各种算法和简化代码。
第二阶段:核心
第三阶段:提高
相关文章:
【系统性】 循序渐进学C++
循序渐进学C 第一阶段:基础 一、环境配置 1.1.第一个程序(基本格式) #include <iosteam> using namespace std;int main(){cout<<"hello world"<<endl;system("pause"); } 模板 #include &…...
rust - 一个日志缓存记录的通用实现
本文给出了一个通用的设计模式,通过建造者模式实例化记录对象,可自定义格式化器将实例化后的记录对象写入到指定的缓存对象中。 定义记录对象 use chrono::prelude::*; use std::{cell::RefCell, ffi::OsStr, fmt, io, io::Write, path::Path, rc::Rc,…...
elasticsearch(RestHighLevelClient API操作)(黑马)
操作全是换汤不换药,创建一个request,然后使用client发送就可以了 一、增加索引库数据 Testvoid testAddDocument() throws IOException {//从数据库查出数据Writer writer writerService.getById(199);//将查出来的数据处理成json字符串String json …...
用尾插的思想实现移除链表中的元素
目录 一、介绍尾插 1.链表为空 2.链表不为空 二、题目介绍 三、思路 四、代码 五、代码解析 1. 2. 3. 4. 5. 6. 六、注意点 1. 2. 一、介绍尾插 整体思路为 1.链表为空 void SLPushBack(SLTNode** pphead, SLTDataType x) {SLTNode* newnode BuyLTNode(x); …...
【Kubernetes】k8s删除master节点后重新加入集群
目录 前言一、思路二、实战1.安装etcdctl指令2.重置旧节点的k8s3.旧节点的的 etcd 从 etcd 集群删除4.在 master03 上,创建存放证书目录5.把其他控制节点的证书拷贝到 master01 上6.把 master03 加入到集群7.验证 master03 是否加入到 k8s 集群,检查业务…...
HCIP—OSPF虚链路实验
OSPF虚链路—Vlink 作用:专门解决OSPF不规则区域所诞生的技术,是一种虚拟的,逻辑的链路。实现非骨干区域和骨干区域在逻辑上直接连接。注意虚链路条件:只能穿越一个区域,通常对虚链路进行认证功能的配置。虚链路认证也…...
RAxML-NG安装与使用-raxml-ng-v1.2.0(bioinfomatics tools-013)
01 背景 1.1 ML树 ML树,或最大似然树,是一种在进化生物学中用来推断物种之间进化关系的方法。最大似然(Maximum Likelihood, ML)是一种统计框架,用于估计模型参数,使得观察到的数据在该模型参数下的概率最…...
Tomcat内存马
Tomcat内存马 前言 描述Servlet3.0后允许动态注册组件 这一技术的实现有赖于官方对Servlet3.0的升级,Servlet在3.0版本之后能够支持动态注册组件。 而Tomcat直到7.x才支持Servlet3.0,因此通过动态添加恶意组件注入内存马的方式适合Tomcat7.x及以上。…...
pytorch之诗词生成3--utils
先上代码: import numpy as np import settingsdef generate_random_poetry(tokenizer, model, s):"""随机生成一首诗:param tokenizer: 分词器:param model: 用于生成古诗的模型:param s: 用于生成古诗的起始字符串,默认为空串:return: …...
OpenAI的ChatGPT企业版专注于安全性、可扩展性和定制化。
OpenAI的ChatGPT企业版:安全、可扩展性和定制化的重点 OpenAI的ChatGPT在商业世界引起了巨大反响,而最近推出的ChatGPT企业版更是证明了其在企业界的日益重要地位。企业版ChatGPT拥有企业级安全、无限GPT-4访问、更长的上下文窗口以及一系列定制选项等增…...
JS06-class对象
class对象 className 修改样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…...
深度学习1650ti在win10安装pytorch复盘
深度学习1650ti在win10安装pytorch复盘 前言1. 安装anaconda2. 检查更新显卡驱动3. 根据pytorch选择CUDA版本4. 安装CUDA5. 安装cuDNN6. conda安装pytorch结语 前言 建议有条件的,可以在安装过程中,开启梯子。例如cuDNN安装时登录 or 注册,会…...
Node.js与webpack(三)
上一节:Node.js与Webpack笔记(二)-CSDN博客 从0来一遍(webpack项目) 将之前的webpack 的纯开发配置,重新创建空白项目,重新做一遍,捋一遍思路防止加入生产模式时候弄混 1.创建文件夹…...
测试覆盖率那些事
在测试过程中,会出现测试覆盖不全的情况,特别是工期紧张的情况下,测试的时间被项目的周期一压再压,测试覆盖概率不全就会伴随而来。 网上冲浪,了解一下覆盖率的文章,其中一篇感觉写的很不错,将…...
Etcd 介绍与使用(入门篇)
etcd 介绍 etcd 简介 etc (基于 Go 语言实现)在 Linux 系统中是配置文件目录名;etcd 就是配置服务; etcd 诞生于 CoreOS 公司,最初用于解决集群管理系统中 os 升级时的分布式并发控制、配置文件的存储与分发等问题。基…...
Docker 安装 LogStash
关于LogStash Logstash,作为Elastic Stack家族中的核心成员之一,是一个功能强大的开源数据收集引擎。它专长于从各种来源动态地获取、解析、转换和丰富数据,并将这些结构化或非结构化的数据高效地传输到诸如Elasticsearch等存储系统中进行集…...
Selenium笔记
Selenium笔记 Selenium笔记 Selenium笔记element not interactable页面刷新 element not interactable "element not interactable"是Selenium在执行与网页元素交互操作(如点击、输入等)时抛出的一个常见错误。这个错误意味着虽然找到了对应的…...
ChatGPT :确定性AI源自于确定性数据
ChatGPT 幻觉 大模型实际应用落地过程中,会遇到幻觉(Hallucination)问题。对于语言模型而言,当生成的文本语法正确流畅,但不遵循原文(Faithfulness),或不符合事实(Factua…...
linux驱动开发面试题
1.linux中内核空间及用户空间的区别? 记住“22”,两级分段两级权限。 例如是32位的机器,从内存空间看:顶层1G是内核的,底3G是应用的;从权限看:内核是0级特权,应用是3级特权。 2.用…...
【AI】Ubuntu系统深度学习框架的神经网络图绘制
一、Graphviz 在Ubuntu上安装Graphviz,可以使用命令行工具apt进行安装。 安装Graphviz的步骤相对简单。打开终端,输入以下命令更新软件包列表:sudo apt update。之后,使用命令sudo apt install graphviz来安装Graphviz软件包。为…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
