C++(1)
一、从 C 到 C++
1、引用(掌握)
1.1 概念
- 别名机制:引用本质上是对变量的一种别名,它就像变量的另一个名字,对引用的操作实际上就是对原变量的操作。从底层实现来看,引用可能是通过指针来实现的,但在使用上,它比指针更加直观和安全。引用在很多面向对象的编程语言中都有广泛应用,它提供了一种简洁而高效的方式来操作变量。
- 示例:
cpp
#include <iostream>using namespace std;int main()
{int a = 1;// b是a的引用int &b = a;cout << a << " " << &a << endl; cout << b << " " << &b << endl; return 0;
}
在这个示例中,b
是 a
的引用,输出结果可以看到 a
和 b
的值相同,并且它们的内存地址也相同,这表明它们指向同一个内存空间。
1.2 引用的性质
- 初始化要求:
- 必须初始化:声明引用时,必须同时进行初始化,因为引用一旦被创建,就必须绑定到一个具体的变量上。例如:
cpp
// 错误:未初始化
// int &b;
- 不能指向
NULL
:普通引用不能初始化为NULL
,因为引用必须引用一个实际存在的对象。例如:
cpp
// 错误:常量不能直接起别名
// int &b = NULL;
- 常量引用:
- 当使用
const
修饰引用时,它可以绑定到字面量,例如const int &b = 12;
。这种引用被称为常量引用,它的值不能被修改。这在函数参数传递中非常有用,当函数不需要修改传入的参数时,可以使用常量引用,这样既可以避免参数的拷贝,又能保证参数的安全性。 - 虽然常量引用本身的值不能被修改,但如果原变量的值被改变,引用的值也会相应改变。例如:
- 当使用
cpp
#include <iostream>using namespace std;int main()
{int a = 2;const int &b = a;// 错误:b是只读的// b++; a++;cout << a << " " << &a << endl; cout << b << " " << &b << endl; return 0;
}
- 指针与引用:
- 可以将变量引用的地址赋值给一个指针,此时指针指向的还是原来的变量。例如:
cpp
#include <iostream>using namespace std;int main()
{int a = 1;int &b = a;int *c = &b; // c同时指向了a和bcout << a << " " << &a << endl; cout << b << " " << &b << endl; cout << *c << " " << c << endl; return 0;
}
- 还可以对指针建立引用,例如
int *&d = c;
,这里d
是c
的引用,对d
的操作等同于对c
的操作。 - 不可重新绑定:引用一旦绑定到某个变量,就不能再绑定到其他变量。例如:
cpp
#include <iostream>using namespace std;int main()
{int a = 1;// b是a的引用int &b = a;int c = 3;b = c; // 赋值,不是引用,b还是a的引用b++;cout << a << " " << &a << endl; cout << b << " " << &b << endl; cout << c << " " << &c << endl; return 0;
}
在这个例子中,b = c;
只是将 c
的值赋给了 b
(也就是 a
),而不是让 b
成为 c
的引用。
1.3 引用的参数
- 传引用优势:在函数参数传递时,使用引用可以避免参数的拷贝,从而提高程序的运行效率。特别是当传递的对象比较大时,这种效率提升更为明显。例如,交换两个变量的值的函数,如果使用值传递,会创建两个变量的副本,而使用引用传递则可以直接操作原变量。
cpp
#include <iostream>using namespace std;// C++编程方式,符合需求
void swap(int &a, int &b)
{int temp = a;a = b;b = temp;
}int main()
{int a1 = 1;int b1 = 2;swap(a1, b1);cout << a1 << endl;cout << b1 << endl;return 0;
}
- const 修饰:如果在函数中不打算修改传入的引用参数,建议使用
const
进行修饰,这样可以保证引用的安全性。例如:
cpp
#include <iostream>using namespace std;void printValue(const int &a)
{// 错误:const修饰,无法修改// a++; cout << a << endl;
}int main()
{int a1 = 1;printValue(a1);cout << a1 << endl;return 0;
}
面试题:指针与引用的区别?
- 初始化要求:引用必须在声明时进行初始化,而指针可以先声明,之后再赋值,也可以初始化为
NULL
。 - 重新绑定能力:引用一旦绑定到某个变量,就不能再重新绑定到其他变量;而指针可以在任何时候指向其他地址。
- 本质区别:引用是变量的别名,它本身并不是一个独立的对象;而指针是一个独立的变量,它存储的是另一个对象的地址。
- 内存占用:
sizeof(引用)
返回的是引用所绑定的变量的大小,而sizeof(指针)
返回的是指针本身的大小(通常在 32 位系统上是 4 字节,在 64 位系统上是 8 字节)。 - 使用安全性:引用在使用时不需要进行解引用操作,因此使用起来更加直观和安全;而指针在使用时需要进行解引用操作,如果不小心使用了空指针或野指针,可能会导致程序崩溃。
2、赋值(熟悉)
- 初始化语法:
- 传统赋值:
int a = 1;
这是最常见的赋值方式,在 C 和 C++ 中都可以使用。 - 括号初始化:
int a(1);
、int b(a);
这种方式在功能上等同于传统赋值,但在某些情况下,括号初始化可以避免一些潜在的问题,例如在模板编程中。
- 传统赋值:
cpp
#include <iostream>using namespace std;int main()
{int a(1); // 等同于 int a = 1;cout << a << endl;int b(a); // 等同于 int b = a;cout << b << endl;int c(a + b); // 等同于 int c = a + b;cout << c << endl;return 0;
}
- C++11 列表初始化:
int b3{b};
这种初始化方式在 C++11 中引入,它对数据窄化(例如将double
类型的值转换为int
类型)会提出警告。这有助于避免一些潜在的数据丢失问题。
cpp
#include <iostream>using namespace std;int main()
{int a(1); // 等同于 int a = 1;cout << a << endl;double b = 3.14;int b1 = b;cout << b1 << endl; // 3int b2(b);cout << b2 << endl; // 3int b3{b}; // 升级:对数据窄化提出警告cout << b3 << endl; // 3return 0;
}
3、键盘输入(熟悉)
- 基本输入:
cin >> a >> str;
可以使用cin
从标准输入读取数据,并将其赋值给变量。cin
会自动根据变量的类型进行数据的转换。这种方式可以连续读取多个数据,数据之间用空格分隔。
cpp
#include <iostream>
#include <string>using namespace std;int main()
{int a;// C++的字符串是stringstring str;cout << "请输入一个数字和字符串" << endl;cin >> a >> str; // 接收键盘输入,一个整数和一个字符串,可以连续操作cout << a << str << endl;return 0;
}
- 带空格字符串:当需要读取包含空格的字符串时,使用
getline(cin, str);
可以读取整行输入,包括空格。
cpp
#include <iostream>
#include <string>using namespace std;int main()
{// C++的字符串是stringstring a;cout << "请输入一个字符串,可以包含空格" << endl;getline(cin, a);cout << a << endl;return 0;
}
4、string 字符串类(掌握)
- 头文件:使用
string
类需要包含头文件#include <string>
,注意不是string.h
,string.h
是 C 语言中用于处理字符串的头文件。string
类是 C++ 标准库中的一个类,它提供了方便的字符串操作功能,并且可以自动管理内存,避免了手动管理内存的麻烦。 - 常用方法:
- 长度获取:
str.size()
和str.length()
都可以返回字符串的长度,它们的功能是相同的。 - 字符访问:可以使用
str[i]
和str.at(i)
来访问字符串中的第i
个字符。str[i]
的执行效率较高,但不进行越界检查;而str.at(i)
会进行越界检查,如果越界会抛出异常,因此更加安全。
- 长度获取:
cpp
#include <iostream>
#include <string>using namespace std;int main()
{string str = "helloworld";cout << str.size() << endl; cout << str.length() << endl; cout << str[5] << endl; cout << str.at(5) << endl; return 0;
}
- 遍历方式:
- 普通循环:使用
for
循环可以遍历字符串中的每个字符,例如:
- 普通循环:使用
cpp
#include <iostream>
#include <string>using namespace std;int main()
{string str = "helloworld";// 以for循环的方式进行输出字符串for (int i = 0; i < str.size(); i++){cout << str.at(i);}cout << endl;return 0;
}
- C++11 范围循环:C++11 引入了范围循环,使用
for (char c : str)
可以更简洁地遍历字符串中的每个字符。
cpp
#include <iostream>
#include <string>using namespace std;int main()
{string str = "helloworld";// 以for each的方式循环遍历字符串for (char c : str){cout << c;}cout << endl;return 0;
}
- 类型转换:
- 字符串转数字:可以使用
istringstream
来将字符串转换为数字。例如:
- 字符串转数字:可以使用
cpp
#include <iostream>
#include <sstream>
#include <string>using namespace std;int main()
{string s = "123";// string → intistringstream iss(s);int i;iss >> i;cout << i << endl;return 0;
}
- 数字转字符串:使用
stringstream
可以将数字转换为字符串。例如:
cpp
#include <iostream>
#include <sstream>
#include <string>using namespace std;int main()
{int i = 123;// int → stringstringstream ss;ss << i;string s2 = ss.str();cout << s2 << endl;return 0;
}
5、函数
5.1 内联函数(熟悉)
- 作用:内联函数的主要作用是取代 C 语言中宏定义的函数。在编译时,内联函数会直接将函数体展开到调用它的地方,这样可以减少函数调用的开销,提高程序的执行效率。特别是对于那些代码简短、频繁调用的函数,使用内联函数可以显著提高性能。
- 建议场景:通常将具有以下性质的函数写为内联函数:
- 代码长度在 5 行以内,这样可以保证函数体不会过于庞大,展开后不会导致代码膨胀。
- 不包含复杂的控制语句,如
for
循环、while
循环、switch
语句等,因为复杂的控制语句会增加代码的复杂度,不适合内联展开。 - 频繁被调用的函数,这样可以充分发挥内联函数减少调用开销的优势。
- 关键字:
inline
是声明内联函数的关键字。需要注意的是,手动添加inline
关键字只是给编译器一个建议,编译器会根据自己的判断准则来决定是否将函数真正内联。例如:
cpp
#include <iostream>
#include <string>using namespace std;// 内联函数
inline void print_string(string str)
{cout << str << endl;
}int main()
{print_string("helloworld");return 0;
}
5.2 函数重载(重点)
- 条件:C++ 中允许使用函数重载,即多个函数可以使用同一个名称。函数重载的条件是函数名称相同,但参数列表不同,具体可以是参数的类型不同、数量不同或者参数的前后顺序不同。需要注意的是,函数重载与返回值类型无关。例如:
cpp
#include <iostream>
#include <string>using namespace std;void print_show(int i)
{cout << "调用了int重载:" << i << endl;
}void print_show(float i)
{cout << "调用了float重载:" << i << endl;
}void print_show(string i)
{cout << "调用了string重载:" << i << endl;
}int main()
{print_show(1);print_show(1.2f);print_show("hello");return 0;
}
- 错误示例:仅返回值类型不同或仅
const
修饰参数(如const string
)无法实现函数重载,因为编译器在调用函数时,无法根据返回值类型或const
修饰来区分应该调用哪个函数。例如:
cpp
// 错误:名称相同,参数类型相同,编译器无法区分
// 与返回值类型无关
// int print_show(int s)
// {
// cout << "调用了int2重载:" << s << endl;
// return s;
// }// 错误:const关键字,也无法作为判断依据
// void print_show(const string s)
// {
// cout << "调用了string重载:" << s << endl;
// }
5.3 哑元函数(熟悉)
- 定义:函数的参数只有类型,没有名称,这样的函数就是哑元函数。例如:
cpp
#include <iostream>using namespace std;// 哑元函数
void print_show(int)
{cout << "调用了int重载" << endl;
}int main()
{print_show(1);return 0;
}
- 作用:
- 区分函数重载:哑元函数可以用来区分函数重载,例如:
cpp
#include <iostream>using namespace std;// 哑元函数
void print_show(int a, double)
{cout << "调用了int, double重载" << endl;
}void print_show(int a)
{cout << "调用了int重载" << endl;
}int main()
{print_show(1);print_show(1, 2.0);return 0;
}
- 运算符重载:在运算符重载中,哑元函数也有重要的应用。例如,在重载后置自增运算符
++
时,通常会使用一个哑元参数来区分前置和后置自增运算符。
相关文章:
C++(1)
一、从 C 到 C 1、引用(掌握) 1.1 概念 别名机制:引用本质上是对变量的一种别名,它就像变量的另一个名字,对引用的操作实际上就是对原变量的操作。从底层实现来看,引用可能是通过指针来实现的࿰…...
Android组件化 -> Debug模式下,本地构建module模块的AAR和APK
本地构建module模块的AAR gradle.properties isCommonApp false模块的build.gradle apply plugin: com.android.library:module模块编译manifest.srcFile src/main/AndroidManifest.xml:读取没有启动App和Activity的配置文件 if (isCommonApp.toBoo…...
“wsl --install -d Ubuntu-22.04”下载慢,中国地区离线安装 Ubuntu 22.04 WSL方法(亲测2025年5月6日)
从中国地区通过 wsl --install 或 Microsoft Store 安装 WSL 发行版(如 Ubuntu)时,下载速度往往非常慢,甚至卡在 0% 很久。这是因为微软服务器在国内访问速度受限。 以下是几种 解决方法,可加快 WSL 发行版࿰…...
CAN报文中的标准帧和扩展帧
目录 1. 标准帧(Standard Frame) 2. 扩展帧(Extended Frame) 3. 核心区别 4. 如何区分标准帧与扩展帧? 5. 应用场景 6. 注意事项 在CAN(Controller Area Network)总线协议中,标…...
使用AI应用开发平台搭建夸奖机器人,玩转AI【COZE入门案例-第1课】
Coze Coze是字节跳动旗下的产品,更注重用户友好性和C端场景优化。其主要特点包括: 快速部署:Coze提供拖拽式界面和丰富的插件(如天气查询、电商导流工具),适合快速搭建对话机器人和轻量化应用。生态集成:Coze依托字节生态,支持与飞书、抖音等平台的无缝集成…...
二叉树—中序遍历—非递归
初始状态 假设当前从根节点 b 开始,此时栈为空 。 第一步:处理根节点 b 的左子树 调用 goAlongLeftBranch 函数,从节点 b 开始,因为 b 有左子树(节点 a ),将 b 入栈,此时栈&#…...
空间内任意点到直线和平面的距离推导
前言 点到直线,点到面的距离公式的手工推导。很久没有数学推导了,再试一把。 一、初步推导 二、转换为标准的形式 三、两种特殊情况的验证 四、推广到3维的情况 结束语 可能从向量的角度来推导,更加的便捷。很多数学知识都忘记了,…...
代码随想录算法训练营第九天 |【字符串】151.翻转字符串里的单词、卡码网55.右旋转字符串、28.实现strStr、459.重复的子字符串
代码随想录算法训练营第九天 |【字符串】151.翻转字符串里的单词、卡码网55.右旋转字符串、28.实现strStr、459.重复的子字符串 151.翻转字符串里的单词 思路 我的想法是模拟,用状态机拾取单词,然后存到双重数组中,再反向读取输出状态机有…...
Unity学习笔记二
文章目录 3D数学公共计算结构体Mathf常用成员三角函数 向量Vector3基本成员点乘叉乘插值运算 四元数引出基本概念Quaternion结构体成员四元数运算 更多的Mono延迟函数协同程序多线程相关协程概念辨析协程本体协程调度器 Resources资源动态加载特殊文件夹Resources同步加载Resou…...
tp8+swoole搭建
1、根据官方文档下载tp8.1.2. php>8,tp8的运行界面已经不是初心不改了。而是值得托付。 composer create-project topthink/think tp8swoole cd tp8swoole composer require topthink/think-swoole 2、下载thinkswoole captcha,image,migration,queue,不要要template和v…...
Android Retrofit框架分析(三):自动切换回主线程;bulid的过程;create方法+ServiceMethod源码了解
目录 Okhttp有什么不好?bulid的过程create方法ServiceMethodcall enqueue的过程为什么要学习源码呢? 一、Okhttp有什么不好? Okhttp本身来说,是一个挺好的网络框架,但,对于开发者而言,使用起…...
FPGA----基于ZYNQ 7020实现petalinux文件持久化存储
引言:由于当前的 PetaLinux 系统使用了临时的内存文件系统(initramfs),导致每次重启后所有更改(包括安装的 EPICS)都会丢失。为了解决这个问题,您需要将根文件系统(rootfs࿰…...
【STM32项目实战】一文了解单片机的SPI驱动外设功能
前言:在前面我有文章介绍了关于单片机的SPI外设CUBEMX配置,但是要想使用好SPI这个外设我们还必须对其原理性的时序有一个详细的了解,所以这篇文章就补充一下SPI比较偏向底层的时序性的逻辑。 1,SPI简介 SPI是MCU最常见的对外通信…...
C++学习之路,从0到精通的征途:priority_queue类的模拟实现
目录 一.priority_queue的介绍 二.仿函数 1.仿函数的介绍 2.仿函数的特点 3.实现两个简单的仿函数 三.priority_queue的接口实现 1.成员变量 2.push 3.pop 4.top 5.size 6.empty 7.构造函数 四.代码总览 priority_queue.h test.cpp 一.priority_queue的介绍 源…...
智能交互电子沙盘,重塑未来指挥体系
在军事演习室、应急指挥中心或城市规划馆中,传统沙盘曾是不可或缺的工具。然而,随着数字化浪潮席卷,“纸上谈兵”式的静态模型已无法满足现代指挥对实时性、交互性、立体化的需求。智能交互电子沙盘系统应运而生,它融合了GIS地理信…...
银河麒麟安装QT
1、从官网现在安装包 上述是商业版,免费版如下,有两种可以选择,分别是Linux x64 和 LinuxARM64 . 然后在线安装即可,和Windows系统安装步骤一样。...
Vue 实现 Hls、Flv 协议视频播放
在当今的互联网内容生态中,视频已成为重要的信息传播载体。Hls(HTTP Live Streaming)和 Flv(Flash Video)作为广泛使用的视频传输协议,分别在移动端和 Web 端有着出色的表现。对于使用 Vue 框架进行开发的项…...
javascript:void(0) 是一个常见的 JavaScript 伪协议
javascript:void(0) 是一个常见的 JavaScript 伪协议,下面从几个方面详细解释其含义和用途。 基本含义 javascript: 是一种伪协议,它告诉浏览器后面跟随的是一段 JavaScript 代码。void 是 JavaScript 中的一个操作符,void(0) 的作用是对给…...
suna界面实现原理分析(三):Terminal工具调用可视化
suna目前的agent执行可视化界面主要有个实时界面,一个是前面介绍的浏览器访问界面,分析参考:suna工具调用可视化界面实现原理分析(二)-CSDN博客 下面的Terminal界面,对应的分析参考: 前端知识-…...
ai大模型学习1
一、监督学习:老师带学生的模式 核心机制:模型像学生一样,通过“带答案的习题”(即带标签的数据集)学习规律。例如,给模型看1000张标有“猫”“狗”的图片,让它学会区分两者的特征24。 典…...
精益数据分析(43/126):媒体网站商业模式的盈利与指标解析
精益数据分析(43/126):媒体网站商业模式的盈利与指标解析 在创业和数据分析的学习旅程中,我们不断探索各种商业模式的奥秘,今天让我们一同深入《精益数据分析》,聚焦媒体网站商业模式,剖析其盈…...
深度学习:图神经网络GNN、GCN及其在推荐系统的应用
什么是图(Graph)? 在数学和计算机科学中,图 (Graph) 是一种抽象数据结构,用于表示对象之间的成对关系。一个图通常定义为一个有序对 G (V, E),其中: V 是 顶点 (Vertices) 或 节点 (Nodes) 的…...
深入理解 Web 架构:从基础到实践
文章目录 引言一、Web 架构基础概念客户端 - 服务器模型HTTP 协议 二、常见 Web 架构模式单体架构微服务架构 三、Web 架构常见问题及解决方法性能问题安全问题 四、Web 架构思维导图五、总结 引言 在当今数字化的时代,Web 应用无处不在。无论是社交媒体平台、电子商…...
蓝桥杯-通电(最小生成树java)
题目 思路 这道题其实也挺容易看出来是最小生成树的。我当时做的时候确实是能看出来是考的最小生成树,union(),find()那些方法我也能写出来,但是,我完全不知道怎么去利用给你的输入数据,去求解题目,也就是知…...
代码随想录算法训练营第60期第二十八天打卡
今天我们继续回溯算法章节,昨天我们重点讲的是组合问题,我们完美使用递归三部曲以及递归回溯相结合的方法来解决,当然昨天最有难度的还是去重操作,那个大家要多思考一下,那么今天我们就继续探讨回溯算法。 第一题对应…...
vscode远程服务器连接----过程尝试写入的管道不存在
通过跳板机连接远程服务器时,报错---过程尝试写入的管道不存在 过程尝试写入的管道不存在报错解决报错内容解决方法1. 测试网络连接连接是否正常2. 检查跳板机并打开权限3. 通过跳板机登录到目标服务器4.配置文件范例 注:校外连接学校内网服务器报错 过程…...
C++ - 仿 RabbitMQ 实现消息队列(1)(环境搭建)
C - 仿 RabbitMQ 实现消息队列(1)(环境搭建) 什么是消息队列核心特点核心组件工作原理常见消息队列实现应用场景优缺点 项目配置开发环境技术选型 更换软件源安装一些工具安装epel 软件源安装 lrzsz 传输工具安装git安装 cmake安装…...
多模态核心模型
1.BLIP的原理? BLIP是一种统一视觉语言理解和生成的预训练模型。BLIP的特点在于它采用了一种编码器-解码器混合架构(MED),并且引入了CapFilt机制来提高数据质量和模型性能。BLIP的主要组成部分包括: MED架构:包括单模态编码器、…...
Kubernetes笔记(1)Kubernetes入门
Kubernetes入门 一、容器技术二、Kubernetes介绍1. Kubernetes核心资源2. Kubernetes集群架构2.1 Master2.2 Node 一、容器技术 随着技术发展,应用程序的部署经历了从物理机到虚拟机,再到容器的转变。 物理机:物理机会运行多个程序…...
【coze】意图识别(售前售后问题、搜索引擎去广告)
【coze】(售前售后问题、搜索引擎去广告) 1、创建意图识别工作流(1)创建工作流(2)添加意图识别节点(3)配置意图识别节点(4)运行看效果(5ÿ…...
Vue3 中用 canvas 封装抽奖转盘组件:设定中奖概率及奖项图标和名称
在 Web 应用开发中,抽奖功能是提升用户参与度的常用手段。使用 Vue3 结合 canvas 技术,我们可以轻松实现一个高度自定义的抽奖转盘组件,不仅能设定中奖概率,还能灵活配置奖项图标和名称。本文将详细介绍该组件的实现原理、步骤&am…...
vue3+vite+AI大模型实现谷歌插件-web诊断
vue3viteAI大模型实现谷歌插件-web诊断 一、前言二、实现思路1、功模块构图2、数据交互图 三、技术栈简介1、Web端2、服务端 四、主要功能实现1、Web端【1】谷歌插件vue全局配置文件【2】加载web诊断工具至当前页面【3】全局捕获异常错误 2、Server端【1】websock管理模块【2】…...
高频PCB设计如何选择PCB层数?
以四层板为例,可以第一层和第二层画信号,作为信号层。 第三层可以走电源,然后第四层走GND 但是更可以第一层和第三层画信号。第二层可以走电源,然后第四层走GND 用中间的电源层以及地层可以起到屏蔽的作用,有效降低寄…...
第100+40步 ChatGPT学习:R语言实现多轮建模
回顾一下什么叫多轮建模: 要综合判断一个模型好不好,一次随机抽样是不行的,得多次抽样建模,看看整体的性能如何才行(特别是对于这种小训练集)。 所以我的思路是,随机抽取训练集和验证集2000次…...
DolphinScheduler-3.2.0集群部署教程
详见: DolphinScheduler-3.2.0集群部署教程Centos7 DolphinScheduler集群部署...
如何设计Kafka的高可用跨机房容灾方案?(需要实战,未实战,纯理论)
1. 双活多中心架构设计 startuml 机房A <--> [Kafka Cluster A] : 万兆光纤 机房B <--> [Kafka Cluster B] : 专线网络 机房C <--> [Kafka Cluster C] : VPN隧道[Kafka Cluster A] <-.-> [Kafka Cluster B] : MirrorMaker2双向镜像 [Kafka Cluster B]…...
[人机交互]协作与通信的设计
零.要点 – 解释协作与通信的含义 – 描述人们在协作与通信中使用的社会机制的主要类型 – 概述存在的各种群件系统 – 讨论学科研究和与社交相关的理论,对设计的启示 一.解释协作与通信的含义 1.1什么是通信 通信是个体之间的信息交换的过程 – 按照所 交换信息的…...
LXwhat-嘉立创
一 电路板简介 什么是PCB? 印刷电路板 什么是SMT? 表面贴装技术 有关电路板的几个专业名词 覆铜腐蚀走线多层板 为什么要画电路板? 杜邦线:接线杂乱、虚接、有可能短路洞洞板:考验焊功(虚焊)、异型元器件不适配自己画板:整齐有序、适配异型元器件、紧凑优雅、有成就感(输…...
决 策 树
1 决策树模型 假如你正在运营一家猫咪领养中心,并拥有一些特征数据,你想训练一个分类器来快速判断一只动物是否为猫。这里有十个训练样本,有关于动物耳朵形状、面部形状、是否有胡须的特征,你想要预测这种动物是否为猫࿱…...
ts axios中报 Property ‘code‘ does not exist on type ‘AxiosResponse<any, any>‘
ts语法有严格的格式,如果我们在处理响应数据时,出现了axios响应中非默认字段,就会出现标题那样的警告,我们可以通过创建axios.dt.ts解决这个问题 下面是我在开发中遇到的警告,code并不是axios默认返回的字段࿰…...
【AI】用AI将文档、文字一键生成PPT的方法(百度的自由画布版)
前提: 最近看了个书,周末要参加读书会,要分享这本书的内容。一般来说,我都是写好了内容文档,然后在网上找一些模板套上去。 最近发现,有些网站已经可以按照文档,自动生成PPT模板了,里…...
爬虫技术-利用Python和Selenium批量下载动态渲染网页中的标准文本文件
近日工作需要整理信息安全的各项标准文件,这些文件通常发布在在官方网站,供社会各界下载和参考。 这些页面中,标准文本文件常以Word(.doc/.docx)或PDF格式提供下载。由于文件数量庞大,手动逐条点击下载效率…...
CUDA编程 - 如何在 GPU 上使用 C++ 函数重载 - cppOverload
这里写目录标题 一、完整代码与例程目的二、代码拆解与复用 2.1、函数重载: 2.2、函数指针声明: 2.3、函数指针赋值与内核启动: 2.4、CUDA API调用:2.4.1、cudaFuncSetCacheConfig:2.4.2、cud…...
AI教你学VUE——Gemini版
前端开发学习路线图 (针对编程新手,主攻 Vue 框架) 总原则:先夯实基础,再深入框架。 想象一下建房子,地基不牢,上面的高楼(框架)是盖不起来的。HTML、CSS、JavaScript 就是前端的地基。 阶段一…...
力扣热题100,力扣49.字母异位词分组力扣128.最长连续序列力扣.盛水最多的容器力扣42.接雨水(单调栈)
目录 力扣49.字母异位词分组 力扣128.最长连续序列 力扣.盛水最多的容器 力扣42.接雨水(单调栈) 1.包的命名规范: java的命名规范 全部采用小写 结尾不能加负数 声明包: 位置必须在首行 类: 字母数字下划线,美元符号 不能数字开头 不能有中文 不能以关键字命名 区…...
react naive 网络框架源码解析
本文取 react native 两个区别很大的版本做分析(0.76.5、0.53.3) 一、0.76.5 版fetch 全流程排查 1、JS 端的实现 随手写一个fetch,点开。 我们这里常用的还是手机端,因此选择 react-native,react-native-windows …...
DID在元宇宙的应用爆发:数字身份资产化与跨平台迁移——解析Decentraland等项目的虚拟身份全链路实现
元宇宙的兴起催生了多维度的数字身份需求,但传统虚拟身份系统受限于中心化架构,面临数据孤岛、身份碎片化、资产归属模糊等核心挑战。本文以Decentraland、The Sandbox、Somnium Space等顶级元宇宙平台为研究对象,探讨去中心化身份࿰…...
MySQL的内置函数与复杂查询
目录 前言 一、聚合函数 1.1日期函数 1.2字符串函数 1.3数学函数 1.4其它函数 二、关键字周边 2.1关键字的生效顺序 2.2数据源 2.3可以使用聚合函数的关键字 前言 在前面几篇文章中,讲解了有关MySQL数据库、数据库表的创建、数据库表的数据操作等等。本文我…...
mysql中select 1 from的作用
在MySQL中,SELECT 1 FROM ... 是一个常见的SQL写法,通常用于以下场景: 1. 作用与原理 SELECT 1 的本质是返回一个常数值(即数字1),且不依赖表中的实际数据。 它的核心作用是快速验证逻辑条件是否成立&…...
Linux中 du (详解)、 df (详解)和 free(详解)以及它们的区别
目录 du命令 df命令 free命令 du/df/free区别 Tree du命令 功能:用于计算文件或目录所占用的磁盘空间大小。它会递归地遍历指定目录下的所有文件和子目录,统计它们占用的磁盘块数,从而得出占用的空间大小。常用选项: -h&…...