C++ 基础知识点
1、指针和引用的区别
指针:是一个变量,存储的是另一个变量的内存地址,可以被重新赋值指向不同的对象,允许为 nullptr。
指针的特性:
独立变量,存储内存地址
可重新赋值指向其他对象
支持空值(nullptr)
支持算术运算(如 ptr++)
适合动态内存管理(new/delete)
引用:是对
象的别名,必须在创建时初始化,之后不能引用其他对象,且不能为空。
引用的特性:
对象的别名,必须初始化
无法更改引用关系
不支持空引用
语法更简洁安全
常用于函数参数传递和操作符重载
int num = 42;
int* ptr = # // 指针,存储 num 的地址
int& ref = num; // 引用,num 的别名*ptr = 10; // 通过指针修改 num
ref = 20; // 通过引用修改 num
典型应用场景对比:
// 指针作为函数参数(可修改实参)
void increment(int* ptr) {(*ptr)++; // 通过指针修改值
}// 引用作为函数参数(更安全的实参修改)
void incrementRef(int& ref) {ref++; // 通过引用直接修改值
}// 动态内存分配(必须使用指针)
int* createArray(int size) {return new int[size]; // 返回堆内存地址
}// 引用在操作符重载中的应用
class Vector {
public:Vector& operator+=(const Vector& rhs) {// 重载+=操作符,返回引用支持链式调用return *this;}
};
使用建议:
优先使用引用:当需要简化语法并确保安全性时
使用指针:当需要动态内存管理、多级间接引用或需要空值语义时
函数参数传递:
输入参数:优先使用 const 引用
输出参数:优先使用指针(可明确表明参数会被修改)
可选参数:使用指针(配合 nullptr)
2、const 关键字
用于声明常量,保证变量的值不会被修改。可以修饰变量、函数参数、成员函数等。
1、常量变量
const int MAX_SIZE = 100; // 编译时常量
const double PI = 3.14159; // 必须初始化,不可修改
特性:
存储在只读内存区(全局 / 静态常量)
编译器会进行常量折叠优化
建议使用constexpr替代单纯的const(C++11 起)
2、指针与 const 的组合(最容易混淆)
- 指向常量的指针(顶层 const)
const int* p1; // 写法1:推荐(强调指向常量)
int const* p2; // 写法2:等价*p1 = 99; // 错误:不能通过指针修改对象
int x = 29;
p1 = &x; // 正确:指针本身可以修改
典型应用:
void printArray(const int* arr, size_t size) {for(size_t i=0; i<size; ++i) {std::cout << arr[i] << ' '; // 只能读取,不能修改数组}
}
- 常量指针(底层 const)
int x = 99;
int* const p3 = &x; // 指针本身是常量*p3 = 29; // 正确:可以修改指向的对象
p3 = nullptr; // 错误:指针本身不可修改
- 指向常量的常量指针
```cpp在这里插入代码片
const int y = 20;
const int* const p4 = &y; // 指针和指向的对象都不可变
*p4 = 30; // 错误
p4 = &x; // 错误
3、引用与 const- 常量引用```cpp
int value = 100;
const int& ref = value; // 引用一个常量对象ref = 200; // 错误:不能通过引用修改
value = 200; // 正确:原值可以被修改
重要应用场景:
void processString(const std::string& str) {// 通过常量引用避免拷贝,同时保证不修改原字符串std::cout << "String length: " << str.length();
}
4、const 成员函数
class Vector2D {
private:double x, y;
public:double getX() const { // 常量成员函数return x; // 只能读取成员变量}void scale(double factor) { // 非常量成员函数x *= factor;y *= factor;}
};const Vector2D v(1.0, 2.0);
v.getX(); // 正确:调用常量成员函数
v.scale(2.0); // 错误:常量对象不能调用非常量函数
底层实现:
常量成员函数的 this 指针类型为const ClassName*
通过mutable关键字可以突破限制:
class Cache {
public:int getValue() const {if(!cached) { // mutable变量可以在const函数中修改value = computeValue();cached = true;}return value;}
private:mutable bool cached = false;int value;
};
5、const 对象
const MyClass obj; // 整个对象为常量obj.func(); // 只能调用const成员函数
obj.member = 10; // 错误:不能修改成员变量(除非mutable)
6、函数参数中的 const
// 1. 常量值参数(无实际意义)
void func1(const int x) { // 等价于void func1(int x)// x = 10; // 函数内部不能修改x,但外部传入的值可以是变量
}// 2. 常量指针参数
void func2(const int* ptr) {// *ptr = 10; // 错误:不能通过指针修改对象
}// 3. 常量引用参数(最常用)
void func3(const std::vector<int>& vec) {// vec.push_back(10); // 错误:不能修改引用的对象
}
7、const 与重载
class StringView {
public:char& operator[](size_t pos) { // 非常量版本return data[pos];}const char& operator[](size_t pos) const { // 常量版本return data[pos];}
private:char* data;
};StringView sv;
sv[0] = 'A'; // 调用非常量版本const StringView csv;
char c = csv[0]; // 调用常量版本
8、使用建议
- 优先使用 const 引用传递参数:
// 推荐:避免拷贝且保证安全性
void process(const std::string& str);
- 所有不修改对象的成员函数都应声明为 const:
size_t size() const; // 明确表示不修改对象状态
- 使用 const_cast 需极度谨慎:
const int x = 10;
int& rx = const_cast<int&>(x);
rx = 20; // 未定义行为!
- 现代 C++ 替代方案:
使用std::as_const将对象转为常量引用
使用constexpr替代部分 const 场景
3、static关键字
全局 / 文件作用域:限制变量或函数的作用域为当前文件。
局部变量:延长变量的生命周期,存储在静态存储区。
类成员:属于类而非对象,所有对象共享同一个静态成员。
1、文件作用域静态变量 / 函数(内部链接性)
// file1.cpp
static int fileLocalVar = 10; // 仅在当前文件可见static void fileLocalFunc() { // 仅在当前文件可调用// ...
}
特性:
存储在全局数据区
链接属性为内部(Internal Linkage)
避免命名冲突(替代匿名命名空间)
int globalVar = 20; // 外部链接性,其他文件可用extern访问
2、静态局部变量(延长生命周期)
void counter() {static int callCount = 0; // 首次调用时初始化,后续调用保留值callCount++;std::cout << "Called " << callCount << " times\n";
}// 调用示例
counter(); // 输出: Called 1 times
counter(); // 输出: Called 2 times
底层实现:
编译时分配内存(全局数据区)
首次执行到声明处初始化(线程安全,C++11 起)
等价于:
if(!__callCount_initialized) {callCount = 0;__callCount_initialized = true;
}
3、静态类成员变量(所有对象共享)
class Logger {
public:static int logLevel; // 声明静态成员变量static void setLevel(int level) { logLevel = level; }
};// 必须在类外定义并初始化
int Logger::logLevel = 2; // 默认级别为2// 使用示例
Logger::setLevel(3); // 直接通过类名访问
特性:
全局唯一实例(无论创建多少对象)
必须在类外定义(分配内存)
可被类的所有对象共享访问
访问控制:
class Secret {
private:static int privateKey; // 私有静态成员
};int Secret::privateKey = 12345; // 即使是私有成员,也需在类外定义
4、静态类成员函数(无 this 指针)
class MathUtils {
public:static double PI;static double circleArea(double radius) { // 静态成员函数return PI * radius * radius;}void printArea(double r) { // 非静态成员函数std::cout << circleArea(r); // 可以直接调用静态函数}
};// 使用示例
double area = MathUtils::circleArea(5.0); // 无需创建对象
限制:
不能访问非静态成员变量 / 函数(无 this 指针)
可以访问其他静态成员
典型应用:
工具类函数(如上面的 MathUtils)
工厂方法(创建对象):
class Widget {
public:static Widget* create(int type) {if(type == 1) return new Button();if(type == 2) return new Label();return nullptr;}
};
5、静态与面向对象设计
- 单例模式实现
class Singleton {
private:static Singleton* instance; // 静态实例指针Singleton() = default; // 私有构造函数
public:static Singleton* getInstance() {if(!instance) instance = new Singleton();return instance;}
};// 初始化静态成员
Singleton* Singleton::instance = nullptr;
- 统计对象数量
class ObjectCounter {
private:static int count; // 统计对象总数
public:ObjectCounter() { count++; }~ObjectCounter() { count--; }static int getCount() { return count; }
};int ObjectCounter::count = 0; // 初始化为0
6、静态与多线程
静态局部变量初始化:
void initResource() {static Resource res = createResource(); // C++11后线程安全// ...
}
静态成员变量访问:
class ThreadSafeCounter {
public:static void increment() {std::lock_guard<std::mutex> lock(mtx);count++;}
private:static int count;static std::mutex mtx; // 静态互斥锁
};
7、常见误区与注意事项
静态成员变量未定义:
class Config {
public:static std::string appName; // 仅声明
};// 错误:未定义appName就使用
std::cout << Config::appName; // 链接错误
静态函数访问非静态成员:
class Error {int value;
public:static void setValue(int v) {value = v; // 错误:静态函数不能访问非静态成员}
};
静态对象的析构顺序:
全局静态对象在程序结束时按构造的逆序析构
不同编译单元的静态对象析构顺序不确定(需避免依赖)
8、C++17 新特性:内联静态成员
class Settings {
public:inline static int timeout = 3000; // C++17起无需类外定义
};
等价于:
// 传统写法
class Settings {
public:static int timeout;
};
int Settings::timeout = 3000; // 仍需类外定义
合理使用static可以:
控制变量 / 函数的可见性
实现对象间的数据共享
创建全局唯一实例
优化局部变量的生命周期
实现工具类和工厂方法
4、define
预处理指令,用于定义常量或宏函数,在编译前进行文本替换。
#define PI 3.14159 // 定义常量
#define MAX(a, b) ((a) > (b) ? (a) : (b)) // 定义宏函数double circleArea(double r) {return PI * r * r; // 替换为 3.14159 * r * r
}
5、inline
建议编译器将函数体直接替换函数调用,减少函数调用开销。适用于短小函数。
inline int add(int a, int b) {return a + b;
}int result = add(3, 4); // 可能被优化为 int result = 3 + 4;
6、constepr
C++11 引入,用于在编译时求值的常量表达式,可用于优化性能。
constexpr int square(int x) {return x * x;
}constexpr int val = square(5); // 编译时计算为 25
7、voaltile
告诉编译器该变量可能被意外修改(如硬件交互、多线程环境),禁止编译器优化对该变量的读取。
volatile int sensorValue; // 可能被外部硬件修改
while (sensorValue == 0); // 每次都从内存读取,不使用缓存值
8、extern
声明变量或函数在其他文件中定义,扩展作用域。常用于分离编译。
// file1.cpp
extern int sharedVar; // 声明,定义在其他文件
extern void func(); // 声明外部函数// file2.cpp
int sharedVar = 42; // 定义
void func() {} // 定义
9、std::atomic
C++11 引入的原子操作库,提供线程安全的原子类型,避免数据竞争。
#include <atomic>
#include <thread>std::atomic<int> counter(0); // 原子计数器void increment() {for (int i = 0; i < 1000; ++i) {counter++; // 原子操作,线程安全}
}int main() {std::thread t1(increment);std::thread t2(increment);t1.join();t2.join();return 0;
}
相关文章:
C++ 基础知识点
1、指针和引用的区别 指针:是一个变量,存储的是另一个变量的内存地址,可以被重新赋值指向不同的对象,允许为 nullptr。 指针的特性: 独立变量,存储内存地址 可重新赋值指向其他对象 支持空值(n…...
线代第二章矩阵第九、十节:初等变换、矩阵的标准形、阶梯形与行最简阶梯形、初等矩阵
文章目录 初等变换初等行变换初等列变换 矩阵的标准型阶梯形与行最简阶梯形阶梯型矩阵行简化阶梯形 初等矩阵定义性质初等矩阵和初等变换的联系 本节非常重要 初等变换 初等变换使用"→",而不是"" 初等行变换 ① 交换两行 ② 非0数乘以某一…...
新能源汽车制动系统建模全解析——从理论到工程应用
《纯电动轻卡制动系统建模全解析:车速-阻力拟合、刹车力模型与旋转质量转换系数优化》 摘要 本文以纯电动轻卡为研究对象,系统解析制动系统建模核心参数优化方法,涵盖: 车速-阻力曲线拟合(MATLAB实现与模型验证&…...
初始化一个Springboot项目
初始化一个Springboot项目 文章目录 初始化一个Springboot项目1、新建项目2、配置yml3、自定义异常4、通用相应类5、全局跨域配置6、总结 1、新建项目 首先,我们需要创建一个新的 Spring Boot 项目。这里我们使用 IntelliJ IDEA 作为开发工具,它提供了方…...
Springboot考研信息平台
Springboot考研信息平台 文章目录 Springboot考研信息平台1、技术栈2、项目说明3、项目截图4、核心代码4.1、前端核心代码4.2、后端核心代码 1、技术栈 前端 Vue 是一套用于构建用户界面的渐进式 JavaScript 框架。 Vue 作为前端核心框架,提供了响应式的数据绑定和高…...
Spring 框架 JDBC 模板技术详解
一、JDBC 模板技术概述 在传统 JDBC 开发中,开发人员需要手动处理数据库连接(Connection)、事务管理、语句执行(Statement)和结果集(ResultSet)等繁琐操作,不仅代码冗余度高&#x…...
Console Importer浏览器插件的编译 及 制作成.crx浏览器插件的步骤
近日由于下载Console Importer浏览器插件(一个前端调试窗口方便引下第三方库便于学习测试的插件)找不到资源,于是找到该插件的源码,地址:https://github.com/pd4d10/console-importer),发现该插件基于一款名为“Plasmo…...
ArcGIS切片方案记录bundle文件
文章目录 前言一、导入底图二、生成切片方案三、导出切片方案总结 前言 切片的作用是让前端可以访问地图的Mapsever来加载底图。arcgis切片是测绘人员或者WebGIs人员需要认识到的操作。 一、导入底图 首先10.8的ArcGis,这里没有Pro,Pro其实也是一样的操…...
山东大学计算机图形学期末复习6——CG10下
##CG10下 将世界坐标中的任意点 P P P 变换到以相机为中心的“观察坐标系”下(右手坐标系) n \mathbf{n} n:从相机眼睛朝向观察点的反方向,代表“前方”; u \mathbf{u} u:观察坐标系的 x 轴,向…...
【Spring Cloud Gateway】Nacos整合遇坑记:503 Service Unavailable
一、场景重现 最近在公司进行微服务架构升级,将原有的 Spring Cloud Hoxton 版本升级到最新的 2021.x 版本,同时使用 Nacos 作为服务注册中心和配置中心。在完成基础框架搭建后,我使用 Spring Cloud Gateway 作为API 网关,通过 N…...
[Linux]从零开始的STM32MP157 Busybox根文件系统测试及打包
一、前言 在上一篇教程中,我们成功编译了Busybox根文件系统并且能够正常使用,但是大家应该也发现了我们构建的根文件系统存在许多问题,比如一些找不到文件的报错。并且在实际的产品中一般都是将根文件系统烧录到EMMC中,并不是像我…...
【Pandas】pandas DataFrame eval
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示和运算(浮点数篇)
一、回顾定点数知识点 ——定点小数机器码表示 ——定点整数机器码表示 ——【原码】和【移码】的作用 二、浮点数表示 1、概念引入 我们生活中有很多 “带小数”,也就是浮点数,也就是【整数部分】和【纯小数部分】都不为0,那么这样的小数…...
【虚幻引擎】UE5独立游戏开发全流程(商业级架构)
本套课程我将会讲解一下知识 1.虚幻引擎的常用功能节点、模块包含但不限于动画模块、UI模块、AI模块、碰撞模块、伤害模块、背包模块、准心模块、武器模块、可拾取物品模块、死亡等模块。 2.整个游戏的设计思路(游戏架构),本套教程讲解了如…...
大语言模型 08 - 从0开始训练GPT 0.25B参数量 - MiniMind 单机多卡 torchrun deepspeed
写在前面 GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,…...
使用gitbook 工具编写接口文档或博客
步骤一:在项目目录中初始化一个 GitBook 项目 mkdir mybook && cd mybook git init npm init -y步骤二:添加书籍结构(如 book.json, README.md) echo "# 我的书" > README.md echo "{}" > bo…...
Mysql视图详解
文章目录 1、视图简介 && 前置准备2、基本crud语法3、检查选项(with check option)CASCADEDLOCAL总结 4、视图更新限定条件 1、视图简介 && 前置准备 视图 (View) 是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,…...
leetcode 56. 合并区间
题目描述 代码: class Solution {struct Interval{int left;int right;Interval(int l0,int r0):left(l),right(r){}bool operator<(const Interval& rhs) const{return left<rhs.left;}};public:vector<vector<int>> merge(vector<vecto…...
Mac 环境下 JDK 版本切换全指南
概要 在 macOS 上安装了多个 JDK 后,可以通过系统自带的 /usr/libexec/java_home 工具来查询并切换不同版本的 Java。只需在终端中执行 /usr/libexec/java_home -V 列出所有已安装的 JDK,然后将你想使用的版本路径赋值给环境变量 JAVA_HOME,…...
【生活相关-日语-日本-东京-搬家后-引越(ひっこし)(3)-踩坑点:国民健康保险】
【生活相关-日语-日本-东京-搬家后-引越(ひっこし)(3)-注意点:国民健康保险】 1、前言2、情况说明(1)问题说明(2)情况说明(1)收到情况(…...
C++ asio网络编程(6)利用C11模拟伪闭包实现连接的安全回收
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、智能指针管理Session二、用智能指针来实现Server的函数1.start_accept()1.引用计数注意点2.std::bind 与异步回调函数的执行顺序分析 2.handle_accept1.异步…...
【视频】解决FFmpeg将RTSP转RTMP流时,出现的卡死、出错等问题
1、简述 如果不修改图像内容,可以使用FFmpeg命令来将RTSP转RTMP流。 SRS视频服务器就是这么干的,它没有使用FFmpeg接口,而是直接使用FFmpeg命令来转流。 但是在使用中,约到了一些问题,比如转流时卡死、转流出错等等,下面描述怎么解决这些问题 2、出错重启 在shell脚本…...
飞牛NAS本地部署开源TTS文本转语音工具EasyVoice与远程使用流程
文章目录 前言1. 环境准备2. Docker部署与运行3. 简单使用测试4. 安装内网穿透4.1 开启ssh连接安装cpolar4.2 创建公网地址 5. 配置固定公网地址总结 前言 本文主要介绍如何在fnOS飞牛云NAS使用Docker本地部署一款非常好用的开源TTS文本转语音工具EasyVoice,并结合…...
STC51系列单片机引脚分类与功能速查表(以STC89C52为例)
1. 基本I/O端口 端口引脚范围类型主要功能特殊说明P0P0.0~P0.7开漏双向I/O1. 通用I/O(需外接上拉电阻) 2. 数据总线(D0-D7) 3. 低8位地址总线(A0-A…...
recvfrom和sendto函数中地址参数的作用
在 UDP 通信中,recvfrom 和 sendto 函数中的地址参数起着至关重要的作用。 以下是对这两个函数中地址参数的作用、所属方以及缺失地址时的后果的详细解释。 recvfrom 函数 int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_add…...
运维职业发展思维导图
主要内容如下: 一、 初级入行阶段 这是职业生涯的起点,主要涉及基础技能的学习和实践。 Linux初学: 重点是学习Linux系统的基础命令和操作。IDC机房运维: 负责数据中心机房内设备的管理和日常维护工作。Helpdesk桌面运维: 提供桌面技术支持,帮助用户解决遇到的计算机软硬…...
【数据处理】Python对CMIP6数据进行插值——详细解析实现(附源码)
目录 Python对CMIP6数据进行插值一、引言代码概览思维导图 二、数据预处理三、数据区域裁剪四、插值(一) 垂直插值(二) 水平插值 五、保存插值好的文件六、文件合并与气候态计算七、代码优化技巧八、多线程处理九、全部代码 Pytho…...
worldquant rank函数
https://support.worldquantbrain.com/hc/en-us/community/posts/13869304934935-%E6%80%8E%E6%A0%B7%E7%90%86%E8%A7%A3rank%E5%87%BD%E6%95%B0 链接。进的话可以填我的邀请码JS34795我可以带你 现在学习rank函数 我们所说的做多和做空 首先,当我们讨论Long和S…...
工业4.0神经嫁接术:ethernet ip转profinet协议通信步骤图解
在现代工业自动化领域,不同品牌的设备和协议之间的兼容性问题一直是个挑战。我们的包装线项目就遇到了这样的难题:需要将Rockwell Allen-Bradley的EtherNet/IP伺服系统与西门子PLC的PROFINET主站进行无缝对接。为了解决这一问题,我们采用了et…...
数据库——数据操作语言DML
(2)数据操作语言DML 简称DML——Data Manipulation Language用来对数据库中表的记录进行更新关键字:insert,delete,update A、 插入表记录 向表中插入数据 格式:insert into 表名(字段1,字段2,字段3……) values(值1,值2,值3);…...
文件防泄密的措施有哪些?
文件防泄密措施需要从技术、管理和物理三个层面综合施策,以下为常见措施分类整理: 一、技术防护措施 华途加密技术 文件加密:使用AES、RSA等算法对敏感文件加密。 传输加密:通过SSL/TLS、VPN保障传输安全,禁止明文传…...
C++ Mac 打包运行方案(cmake)
文章目录 背景动态库梳理打包方案静态库处理动态库处理(PCL库)编译链接动态库后处理逻辑 批量信任 背景 使用C编写的一个小项目,需要打包成mac下的可执行文件(免安装版本),方便分发给其他mac执行,需要把项目的动态库都…...
数学复习笔记 10
前言 我觉得数学的高分乃至满分属于那些,聪明,坚韧,勇敢,细致的人。我非常惭愧自己不是这样的人,我在生活中发现了这样的同学,和他们交流的时候我常常感到汗流浃背,因为他们非常扎实的基础知识…...
Oracle-相关笔记
Oracle Database Online Documentation 11g 连接 WinR sqlplus username/passwordhostname:port/service_namesqlplus user02/123456192.xxx:1521/orclsqlplus / as sysdba #SQL*Plus 終端编码使用UTF-8 chcp 65001#打开SQL*Plus程序 sqlplus /nolog#使用dba角色登录(用 1.…...
mac安装cast
背景 pycharm本地运行脚本时提示cast没有安装 问题原因 脚本尝试调用cast命令(以太坊开发工具foundry中的子命令),但您的系统未安装该工具。 从日志可见,错误发生在通过sysutil.py执行shell命令时。 解决方案 方法1…...
CodeEdit:macOS上一款可以让Xcode退休的IDE
CodeEdit 是一款轻量级、原生构建的代码编辑器,完全免费且开源。它使用纯 swift 实现,而且专为 macOS 设计,旨在为开发者提供更高效、更可靠的编程环境,同时释放 Mac 的全部潜力。 Stars 数21,719Forks 数1,081 主要特点 macOS 原…...
opencv4.11编译Debug提示缺少python312_d.lib或python3*_d.lib的解决办法
前言 当我们编译OpenCV 4.11的时候可能会遇到提示缺少库文件,这个时候我们可以下载Python源码编译这个lib。 也可以下载我上传的版本(python312_d.lib),但是如果是其他版本需要自己编译。编译步骤如下,大概几分钟搞定…...
html的鼠标点击事件有哪些写法
在HTML中,鼠标点击事件的实现方式多样,以下从基础语法到现代实践为您详细梳理: 一、基础写法:直接内联事件属性 在HTML标签内通过on前缀事件属性绑定处理函数,适合简单交互场景: <!-- 单击事件 -->…...
深度解析物理机服务器故障修复时间:影响因素与优化策略
一、物理机故障修复的核心影响因素 物理机作为企业 IT 基础设施的核心载体,其故障修复效率直接关系到业务连续性。故障修复时间(MTTR)受多重因素交叉影响: 1. 故障类型的复杂性 硬件级故障: 简单故障:内存…...
蓝桥杯 2024 C++国 B最小字符串
P10910 [蓝桥杯 2024 国 B] 最小字符串 题目描述 给定一个长度为 N N N 且只包含小写字母的字符串 S S S,和 M M M 个小写字母 c 1 , c 2 , ⋯ , c M c_1, c_2, \cdots, c_M c1,c2,⋯,cM。现在你要把 M M M 个小写字母全部插入到字符串 S S S 中&…...
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析 这里面有很重要的原因其中一个很其中一个原因是因为如果你使用docker的方式,你可以在虚拟环境下就类似于这个沙箱的这个机制可以进行隔离。这对于安全,…...
访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时
华为云轻量应用服务器(Ubuntu 系统) 遇到的问题是: 🔒 访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时了,说明你这台服务器的出境网络对这些国外域名限制很严格,常见于华…...
前馈神经网络回归(ANN Regression)从原理到实战
前馈神经网络回归(ANN Regression)从原理到实战 一、回归问题与前馈神经网络的适配性分析 在机器学习领域,回归任务旨在建立输入特征与连续型输出变量之间的映射关系。前馈神经网络(Feedforward Neural Network)作为最基础的神经网络架构&a…...
RNN/LSTM原理与 PyTorch 时间序列预测实战
🕰️ RNN / LSTM 原理与 PyTorch 时间序列预测实战 在处理时间序列数据、语音信号、文本序列等连续性强的问题时,循环神经网络(RNN)及其改进版本 LSTM(长短期记忆网络)是最常见也最有效的模型之一。本文将深入讲解 RNN 和 LSTM 的核心原理,并通过 PyTorch 实现一个时间…...
Docker容器镜像与容器常用操作指南
一、镜像基础操作 搜索镜像 docker search <镜像名>在Docker Hub中查找公开镜像,例如: docker search nginx拉取镜像 docker pull <镜像名>:<标签>从仓库拉取镜像到本地,标签默认为latest: docker pull nginx:a…...
1:OpenCV—图像基础
OpenCV教程 头文件 您只需要在程序中包含 opencv2/opencv.hpp 头文件。该头文件将包含应用程序的所有其他必需头文件。因此,您不再需要费心考虑程序应包含哪些头文件。 例如 - #include <opencv2/opencv.hpp>命名空间 所有 OpenCV 类和函数都在 cv 命名空…...
测试--BUG(软件测试⽣命周期 bug的⽣命周期 与开发产⽣争执怎么办)
1. 软件测试的⽣命周期 软件测试贯穿于软件的整个⽣命周期,针对这句话我们⼀起来看⼀下软件测试是如何贯穿软件的整个⽣命周期。 软件测试的⽣命周期是指测试流程,这个流程是按照⼀定顺序执⾏的⼀系列特定的步骤,去保证产品质量符合需求。在软…...
基于大模型预测围术期麻醉苏醒时间的技术方案
目录 一、数据收集与处理(一)数据来源(二)数据预处理二、大模型构建与训练(一)模型选择(二)模型训练三、围术期麻醉苏醒时间预测(一)术前预测(二)术中动态预测四、并发症风险预测(一)风险因素分析(二)风险预测模型五、基于预测制定手术方案(一)个性化手术规划…...
QT6 源(101)阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试
(1) (2) (3)属性学习与测试 : (4) (5) 谢谢...
电池组PACK自动化生产线:多领域电池生产的“智能引擎”
在电池产业蓬勃发展的当下,电池组PACK自动化生产线凭借其高效、精准、智能的优势,成为众多电池生产领域的核心装备。它广泛适用于数码电池、工具电池、储能电池、电动车电池以及动力电池的生产,有力推动了相关产业的升级与发展。 数码电池领…...