C/C++共有的类型转换与c++特有的四种强制类型转换
前言
C 语言和 C++ 共有的类型转换:
- 自动类型转换(隐式类型转换): 编译器在某些情况下会自动进行的类型转换。
- 强制类型转换(显示类型转换): 使用
(type)expression
或type(expression)
语法进行的类型转换。
C++ 中新增的类型转换关键字:
- static_cast
- const_cast
- reinterpret_cast
- dynamic_cast
这四个关键字用于支持 C++ 特有风格的强制类型转换,它们相比 C 风格的强制类型转换提供了更精细的控制和更好的类型安全性。
C/C++共有的类型转换
自动类型转换(隐式类型转换)
隐式类型转换是指编译器在没有明确指示的情况下自动进行的类型转换。在算术和逻辑运算中,常见的隐式转换规则如下:
算术运算中的类型转换:
在 C/C++ 中,表达式的两个操作数可能是不同类型的,比如一个是 int,一个是 float。为了进行运算,它们必须是相同的类型。这时候,编译器就需要根据一定规则来“提升”它们,使它们变为同一种类型,然后再进行运算。
常用算术转换主要发生在以下运算符的操作数上:
- 二元算术运算符:+、-、*、/、%(模运算只用于整数)
- 位运算:&、|、^、<<、>>
- 比较运算符:<、>、<=、>=、==、!=
常用算术转换流程图:
1. 是否含有 long double?→ 转为 long double
2. 否 → 是否含有 double?→ 转为 double
3. 否 → 是否含有 float?→ 转为 float
4. 否 → 整型提升:
a. char/short → int
b. 比较剩余整型:unsigned long long > long long > unsigned long > long > unsigned int > int
由于之前我没有了解过long double类型,所以特意来补充介绍一下这个类型。
逻辑运算和关系运算中的类型转换:
在逻辑运算(&&、||、!)和关系运算(<、>、<=、>=、==、!=)中,操作数通常会被转换为 bool 类型进行求值。任何非零值都会被转换为 true,而零值会被转换为 false。运算的结果也是 bool 类型。
赋值运算中的类型转换:
在赋值运算(=)中,右侧表达式的值会被转换为左侧变量的类型。这可能会导致数据丢失或精度损失。
int i = 3.14; // double 类型的 3.14 会被截断为 int 类型的 3
double d = 10; // int 类型的 10 会被提升为 double 类型的 10.0
隐式类型转换的注意
数据丢失和精度损失:
浮点型转换为整型: 当将 float
或 double
类型的值赋给 int
或其他整型变量时,小数部分会被直接截断,导致数据丢失。
精度降低的浮点类型转换: 将 double
类型的值赋给 float
类型变量时,可能会损失精度,因为 float
的精度范围比 double
小。
有符号类型转换为无符号类型: 当将一个负的有符号整数赋给一个无符号整数变量时,其值会根据无符号类型的范围进行重新解释,通常会变成一个非常大的正数。
意想不到的符号性问题:
有符号和无符号整数的混合运算: 当有符号和无符号整数进行算术运算时,通常会将有符号整数隐式转换为无符号整数。如果带符号数是负数,这会导致非常令人困惑的结果。
函数参数的隐式转换:
当向函数传递参数时,如果实参的类型与形参的类型不完全匹配,编译器可能会尝试进行隐式转换。这可能导致类型不匹配的错误,或者调用了意想不到的函数重载版本。
隐式类型转换使用建议
- 尽量保持类型一致: 在进行运算和赋值时,尽量使用相同或兼容的类型,减少隐式转换的发生。
- 尽量不要有符号类型和无符号类型混用: 因为这样会涉及到 负数的意外转换,比较运算的陷阱,算术运算的意外结果等,这类bug非常难排查!!!
- 使用显式类型转换: 当需要进行类型转换时,使用
static_cast
、dynamic_cast
、const_cast
或reinterpret_cast
等 C++ 风格的强制类型转换运算符,明确表达你的意图,并让编译器进行必要的类型检查(在适用情况下)。
强制类型转换(显示类型转换)
(type)expression
是对紧跟在后面的变量或子表达式进行的类型转换,默认情况下,它只对紧随其后的那个操作数起作用。
int a = 5;
int b = 2;
float result;// 示例 1:只转换 'a'
result = (float) a / b;
// 这里,(float) 只作用于变量 'a'。'a' 先被转换为 float (5.0),然后与 'b' (int 型,会被隐式转换为 float) 相除,结果是 float (2.5)。// 示例 2:只转换 'b'
result = a / (float) b;
// 这里,(float) 只作用于变量 'b'。'b' 先被转换为 float (2.0),然后 'a' (int 型,会被隐式转换为 float) 与其相除,结果是 float (2.5)。// 示例 3:转换整个表达式的结果
result = (float) (a / b);
// 这里,括号内的 (a / b) 会先进行整数除法运算,结果是 int (2)。然后,(float) 将这个整数结果 2 转换为 float (2.0)。// 示例 4:不加括号,只转换 'a'
result = (float) a + b;
// 这里,(float) 只作用于 'a','a' 被转换为 float (5.0),然后与 'b' (int 型,会被隐式转换为 float) 相加,结果是 float (7.0)。// 示例 5:转换 'b'
result = a + (float) b;
// 这里,(float) 只作用于 'b','b' 被转换为 float (2.0),然后 'a' (int 型,会被隐式转换为 float) 与其相加,结果是 float (7.0)。
type(expression)
这种语法看起来像一个函数调用,其中 type
是目标数据类型,expression
是要转换的值。
double double_num = 3.14159;
int integer_part;integer_part = int (double_num); // 将 double_num 强制转换为 int 类型
算法竞赛中注意
int a;
int b;
long long c = a + b;
你可能乍一看觉得上面这个代码很对,甚至会沾沾自喜,觉得自己考虑到了a+b的结果会溢出int范围,所以将c设置成了long long类型,但是我只能说你只做对了一半~
事实上:上面这个写法在发生溢出时候,最终 c
依然得不到正确的数学结果!!!
为什么在a+b溢出时,不能得到正确结果?
运算的类型决定结果的类型: 在 C/C++ 中,算术运算的结果类型通常由参与运算的操作数的类型决定。在 a + b
这个表达式中,a
和 b
都是 int
类型,因此,它们的加法运算会以 int
类型的规则进行。
赋值给 long long
的时机: 即使你将 a + b
的结果赋值给 long long
类型的变量 c
,溢出也可能在 a + b
运算完成之后才发生。当 a + b
发生溢出并产生一个错误的 int
值后,这个错误的 int
值才会被提升(隐式转换)为 long long
类型并赋给 c
。此时,c
存储的仍然是那个错误的、溢出后的值,而不是 a
和 b
的真实数学和。
如何避免溢出并得到正确结果?
将其中一个操作数/两个操作数全部强制转换为 long long,注意一定不是对于整个表达式a+b进行强制类型转换
long long c = (long long)a + b; // 或者 long long c = a + (long long)b;
long long c = (long long)a + (long long)b;
注意千万不能像下面这样对a+b这个表达式进行转化
long long c = (long long)(a + b);
这种写法只是将可能已经溢出的 int 结果转换为 long long 类型,并不能防止 a + b 运算过程中 int 类型的溢出。要得到正确的 long long 结果,你需要确保加法运算本身是以 long long 的精度进行的。
c++特有的四种强制类型转换
static_cast<目标类型>(表达式);
const_cast<目标类型>(表达式);
reinterpret_cast<目标类型>(表达式);
dynamic_cast<目标类型>(表达式);
static_cast
static_cast: 用于执行可以在编译时确定的类型转换,例如基本数据类型之间的转换(但不会进行安全性检查,例如从 int* 到 char*),以及具有继承关系的类型之间的转换(向上转型是安全的,向下转型需要程序员保证安全性)。
double d = 3.14;
int i = static_cast<int>(d);class Base {};
class Derived : public Base {};
Derived* derivedPtr = new Derived();
Base* basePtr = static_cast<Base*>(derivedPtr); // 向上转型
dynamic_cast
dynamic_cast: 主要用于在继承层次结构中执行安全的向下转型。它会在运行时检查转换是否有效,如果转换不合法(例如,尝试将一个基类指针转换为一个派生类指针,而该基类指针实际上指向的是基类对象),则返回空指针(对于指针类型)或抛出 std::bad_cast 异常(对于引用类型)。dynamic_cast 只能用于具有虚函数的基类。
class Base { virtual void func() {} };
class Derived : public Base {};
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr); // 向下转型,运行时检查
if (derivedPtr) {// 转换成功
} else {// 转换失败
}
const_cast
const_cast: 用于添加或移除变量的 const 或 volatile 限定符。通常情况下,应该避免使用 const_cast!!!因为它可能会破坏程序的常量性。
const int ci = 10;
int* nonConstPtr = const_cast<int*>(&ci);
*nonConstPtr = 20; // 修改了原本声明为 const 的变量,可能导致未定义行为
reinterpret_cast
reinterpret_cast: 执行低级的位模式重新解释。这是最危险的类型转换运算符,应该谨慎使用。它通常用于不同类型指针之间的转换,或者将指针转换为整数类型,反之亦然。reinterpret_cast 不进行任何类型检查,仅仅是重新解释内存中的位。
相关文章:
C/C++共有的类型转换与c++特有的四种强制类型转换
前言 C 语言和 C 共有的类型转换: 自动类型转换(隐式类型转换): 编译器在某些情况下会自动进行的类型转换。强制类型转换(显示类型转换): 使用 (type)expression 或 type(expression) 语法进行…...
体验OceanBase的 并行导入功能
在数据库的日常使用中,会经常遇到以下场景: 数据复制:将一个或多个表中的数据复制到目标表中,可能是复制全部数据,也可能仅复制部分数据。数据合并:将数据从一个表转移到另一个表,或者将多…...
CSS的字体
在 CSS 中,字体(font)是网页设计中的一个重要部分,它控制了文本的外观和排版效果。通过设置不同的字体属性,我们可以使网页上的文字更具吸引力和可读性。以下是与字体相关的 CSS 属性及其用法: 1️⃣ font…...
开源模型应用落地-LangChain与MCP协议-集成GPT-4o构建下一代AI智能体的全栈实践(三)
一、前言 在人工智能技术快速迭代的今天,大型语言模型(LLM)如何高效集成外部工具与多模态能力,成为开发者面临的核心挑战。Anthropic推出的模型上下文协议(MCP)通过标准化工具接口,为AI应用提供了“即插即用”的生态基础,而LangChain凭借其模块化设计,正成为连接LLM…...
Qt 5.14.2入门(一)写个Hello Qt!程序
目录 参考链接:一、新建项目二、直接运行三、修改代码增加窗口内容1、Qt 显示一个 QLabel 标签控件窗口2、添加按键 参考链接: Qt5教程(一):Hello World 程序 Qt 编程指南 一、新建项目 1、新建一个项目(…...
FPGA_DDR(二)
在下板的时候遇到问题 1:在写一包数据后再读,再写再读 这时候读无法读出 查看时axi_arready没有拉高 原因 : 由于读地址后没有拉高rready,导致数据没有读出卡死现象。 解决结果...
思科交换机配置
以下是交换机配置的详细步骤指南,适用于Cisco交换机,其他品牌需调整命令: 1. 初始连接与基本配置 连接方式:使用Console线连接交换机,通过终端软件(如PuTTY)登录。波特率:9600&…...
单链表——C语言实现
目录 一.相关指针知识点 二.链表 1.为什么学了顺序表还要学链表 2.优点 三.实现 1.链表的打印 —— 理解链表结构 (2) 物理结构图 2.链表的尾插 —— 入门 错误写法:tail ! NULL 总结: 正确代码物理图解: (2) 尾插整体代码 (思考…...
PostgreSQL插件生态全景解析:赋能数据库的无限可能
PostgreSQL以其开放的扩展生态闻名于世,其插件机制如同瑞士军刀般灵活,能够在不修改核心代码的前提下实现功能无限延伸。本文将基于多年内核开发经验,深度剖析PostgreSQL插件生态体系,为架构师与开发者提供全景式技术选型参考。 一…...
minio提供nfs服务
minio提供nfs服务 挂载minio为本地目录开机自动挂载使用supervisor实现开机自动挂载服务单元实现开机自动挂载minio为本地目录---失败 调试 挂载minio为本地目录 使用 Minio 作为后端存储,并通过 NFS 为客户端提供访问,那么你需要一个中间层来将 Minio …...
QML中的信号与槽机制
QML 中的信号与槽机制是 Qt 框架的核心特性之一,它提供了一种对象间通信的强大方式。与 C 中的信号槽类似,但语法更加简洁。 基本概念 1. 信号 (Signal) 当某个特定事件发生时由对象自动发出的通知 例如:按钮被点击时发出的 clicked 信号 …...
使用 Ktor 构建现代 Android 应用的后端服务
使用 Ktor 构建现代 Android 应用的后端服务 前言 在移动互联网时代,Android 应用对后端服务的实时性与性能要求越来越高,而传统的后端框架在一些场景中存在复杂度高、扩展性不足等问题。Ktor 作为 JetBrains 推出的异步 Web 框架,充分利用…...
leetcode_454. 四数相加 II_java
454. 四数相加 IIhttps://leetcode.cn/problems/4sum-ii/ 1、题目 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] …...
类名与协议名相同,开发中应该避免吗?
在 Objective-C 开发中,协议与实现类之间的命名关系非常重要。虽然语言允许协议名和类名相同,但从可读性和维护性等角度出发,这种做法并不推荐。本文通过一个典型示例展开分析,并提供更合理的命名建议。 一、示例 在某项目中&…...
环信鸿蒙版 UIKit 快速上手指南
环信鸿蒙版 UIKit 是专为 HarmonyOS 开发者设计的 IM UI 组件库,基于环信 IM SDK 开发,可帮助开发者快速集成即时通讯功能。 环信UIKit 的特点 ArkUI 声明式开发范式:采用高效简洁的声明式开发方式状态管理 V2:支持深度观测和精…...
编译freecad
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad-source 手动安装 vscode 扩展安装cmake tool cmake ../ 缺什么装什么 Third Party Libraries - FreeCAD Documentation sudo apt install qt6-base-dev sudo apt install libyaml-cpp-dev …...
安卓Kotlin接入高德定位和地图SDK
前言:高德的定位sdk可以获取设备当前的详细信息,如经纬度,具体地址(省->街道)等, 本文主要使用的是定位sdk和地图sdk中的poi搜索功能(以当前位置半径多少米内的关键词搜索) 目录…...
JavaScript浅拷贝与深拷贝
目录 浅拷贝(Shallow Copy) 一、浅拷贝的定义 二、直接赋值 vs 浅拷贝 1. 直接赋值 2. 浅拷贝 三、数组的浅拷贝方法 1. slice() 2. concat() 3. 扩展运算符(...) 四、对象的浅拷贝方法 1. Object.assign() 2. 扩展运…...
智能生态之城-广东茂名
故事摘要 在中国广东茂名的未来社区,晨光中,垂直果园里发光的荔枝与智能无人机的早餐派送唤醒了城市的生活。在海底透明隧道的图书馆里,孩子们通过声控设备与虚拟生物互动。面对暴雨来临时,市民们积极参与到荔枝蜜饯制作和雨季造林…...
【Android】Android Activity 横屏设置详解及常见异常问题解决方法汇总
在 Android 开发中,我们经常需要控制 Activity 的屏幕方向,例如视频播放、游戏、VR/AR 应用等场景通常希望默认横屏显示。本文将讲解如何通过 Manifest 配置 和 Java/Kotlin 代码 设置横屏显示,并分析常见设置无效的原因与解决方法。 一、通过…...
Android 存储路径
一、内部存储路径(Internal Storage) stats.codeSize(内部代码大小) 路径:/data/app/com.example.test-{随机后缀}/base.apk 说明:APK 安装路径,包含应用代码…...
【12】数据结构之基于线性表的排序算法
目录标题 插入排序直接插入排序折半插入排序希尔排序 交换排序冒泡排序快速排序 归并排序时间复杂度对比最好情况平均情况最坏情况 空间复杂度对比 插入排序 基本思想:将一个元素插入到一个有序序列中,继而得到一个有序的元素个数加一的新序列. 直接插…...
解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题
要解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题,可以使用自定义的LinearSmoothScroller,使其底部对齐屏幕。步骤如下: 创建自定义的SmoothScroller类: 继承LinearSmoothScroller并重写getVerti…...
数字世界的免疫系统:恶意流量检测如何守护网络安全
在2023年全球网络安全威胁报告中,某跨国电商平台每秒拦截的恶意请求峰值达到217万次,这个数字背后是无数黑客精心设计的自动化攻击脚本。恶意流量如同数字世界的埃博拉病毒,正在以指数级速度进化,传统安全防线频频失守。这场没有硝烟的战争中,恶意流量检测技术已成为守护网…...
十分钟机器学习之--------------线性回归
线性回归(linear regression)是一种基于数学模型的算法,首先假设数据集与标签之间存在线性关系,然后简历线性模型求解参数。在实际生活中,线性回归算法因为其简单容易计算,在统计学经济学等领域都有广泛的应…...
常用 Excel VBA 技巧,简单好学易上手
在日常办公中,我们常常会遇到各种繁琐的数据处理任务,而 Excel VBA(Visual Basic for Applications)作为一款强大的自动化工具,能够帮助我们轻松应对这些挑战。本文将介绍一些常用且简单好学的 Excel VBA 技巧…...
第7篇:Linux程序访问控制FPGA端LEDR<五>
Q:如何设计.c程序代码实现FPGA端外设LEDR流水灯? A:在DE1-SoC开发板上实现的流水灯效果:一次只点亮一个红色LED,初始状态为向左移动直至点亮LEDR9,然后改变移动的方向为向右直至点亮LEDR0,以此…...
PyTorch 深度学习实战(35):图生成模型与分子设计
在上一篇文章中,我们探讨了强化学习在机器人控制中的应用。本文将深入介绍图生成模型及其在分子设计领域的应用,这是一个结合深度学习与化学的交叉领域。我们将使用PyTorch Geometric实现基于图神经网络的分子生成模型,并在ZINC250k数据集上进…...
免费送源码:Java+ssm+HTML 三分糖——甜品店网站设计与实现 计算机毕业设计原创定制
录 摘要 1 1 绪论 3 1.1 研究背景 3 1.2 研究意义 3 1.3论文结构与章节安排 3 2系统分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1 登录流程 4 2.2.2数据删除流程 5 2.3 系统功能分析 5 2.3.1功能性分析 6 2.3.2 非功能性分析 7 2.4 系统用例分析 7 2.5本章…...
JVM 调试与内存优化实战详解
🌟 JVM 调试与内存优化实战详解 🌟 前言一、JVM 内存模型概览二、常见内存问题与诊断思路三、核心调试工具与命令详解四、实战案例一:频繁 Full GC 深度排查与优化1. 🕵️ 问题现象2. 🔬 排查流程3. ✅ 优化方案 五、实…...
Linux上通过Docker部署Zabbix6.2监控平台
文章目录 前言Zabbix概述zabbix特性 一、Zabbix架构二、主节点部署容器2.1 部署Docker 三、主节点部署数据库3.1 创建存储卷3.2 查看存储卷3.3 删除存储卷3.4 运行容器MySQL8 四、主节点部署Zabbix4.1 安装zabbix-java-gateway4.2 运行zabbix-server4.3 安装zabbix-web 五、配置…...
Grok3 API 已经免费开放了,附上免费使用 Grok3 API的教程
Grok-3是什么 Grok-3 是 xAI(由 Elon Musk 创立的 AI 公司)开发的最新大语言模型(LLM),属于 Grok 系列模型的第三代,旨在与 OpenAI 的 GPT-4、Anthropic 的 Claude 3 和 Google 的 Gemini 1.5 等顶尖 AI 竞…...
2025年4月9日-华为暑期实习-第三题-300分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 矩阵螺旋排序 问题描述 卢小姐是一家艺术展览馆的策展人,她正在为一个数字艺术展览设计一个特殊的展示方案。展览厅的墙面是一个 N N N \times N...
【Web API系列】WebSocketStream API 深度实践:构建高吞吐量实时应用的流式通信方案
前言 在当今的 Web 开发领域,实时通信已成为许多应用的核心需求。无论是即时聊天、实时数据仪表盘,还是在线游戏和金融交易系统,都需要高效的双向数据传输能力。传统的 WebSocket API 为此提供了基础支持,但在处理大规模数据流、…...
WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网不回显
目录 1. RCE执行-5大类函数调用 1.1 Runtime方式 1.2 Groovy执行命令 1.3 脚本引擎代码注入 1.4 ProcessImpl 1.5 ProcessBuilder 2. JNDI注入(RCE)-RMI&LDAP&高版本 2.1 RMI服务中的JNDI注入场景 2.2 LDAP服务中的JNDI注入场景 攻击路径示例&#…...
在android实现Google的web登录
前言 由于业务上的需要,想要在android端实现Google登录。但是android的原生方法受到限制,实现起来比较麻烦。于是想到了一个曲线救国的方法,在android端使用Google的web登录。 实现逻辑 在andorid端拉起外部浏览器,用户登录Google账号,登录成功后,再将登录信息返回到a…...
opencv常用边缘检测算子示例
opencv常用边缘检测算子示例 1. Canny算子2. Sobel算子3. Scharr算子4. Laplacian算子5. 对比 1. Canny算子 从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,检测算法可以分为以下5个步骤: 噪声过滤(高斯滤波&…...
安装了VM Tools,仍无法复制拖动-解决方案
今天在安装ubuntu时遇到了困扰许久的问题,安装了VM Tools,仍无法拖动主机文件到虚拟机,主要有两种原因并对应解决办法。 1.相关虚拟机设置选项卡中-客户机隔离-两个功能没有勾选 解决方案:勾选重启虚拟机即可 2.(这个…...
一文读懂WPF布局
WPF布局 布局WPF 布局的核心机制常用布局控件详解Grid(网格布局)StackPanel(堆叠布局)DockPanel(停靠布局)WrapPanel(自动换行布局)Canvas(绝对定位布局)Unif…...
【Docker基础-网络】--查阅笔记4
目录 Docker 网络网络类型none 网络host 网络bridge 网络自定义网络 容器间通信IP 通信Docker DNS Serverjoined 容器 容器与外部通信容器访问外部外部访问容器 Docker 网络 学习Docker提供的几种原生网络如何创建自定义网络容器间通信,容器于外界交互 Docker 安装…...
FacialExpressionDetection的conda虚拟环境搭建Window
安装conda的URL:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 清华源下载conda版本,哪个最新用哪个,这里下载Anaconda3-5.3.1-Windows-x86_64.exe版本 安装conda虚拟环境 conda create --name py1…...
IPD推进中关键角色与岗位(七)LTDT确保技术开发的实用性与可靠性,满足市场需求
IPD 体系作为一种先进的研发管理模式,其核心在于打破传统职能部门的壁垒,通过跨部门团队的协同合作,实现产品开发的全流程优化。在 IPD 体系的架构中,存在着多个关键团队,它们各司其职又紧密配合,共同推动产…...
c++自学笔记——字符串与指针
字符串与指针 1. 字符串基础 字符串的定义:字符的序列,通常用来表示文本。 字符串字面量(String Literal)是在程序中直接用双引号括起来的文本序列。字符串字面量的类型是 const char*,即指向字符常量的指针。字符串…...
Jmeter分布式测试启动
代理客户端配置 打开jmeter.properties文件,取消注释并设置端口(如server_port1099), 并添加server.rmi.ssl.disabletrue禁用SSL加密。 (Linux系统)修改jmeter-server文件中的RMI_HOST_DEF为代理机实际IP。…...
.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具
🐉工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 🎯使用 本工具使用Python3 PyQt5开发,在开始使用前,请确保已经安装了相关模块: pip3 install -r requirements.txt -i ht…...
Coze+大模型智能体环境搭建
1 前言 Coze作为字节跳动推出的新一代AI Bot开发平台,为开发者提供了快速构建、部署智能对话代理的一站式解决方案。Coze平台通过提供可视化工作流编排、知识库集成、插件扩展等核心功能,结合一些大模型,例如豆包、deepseek、通义千问等大模型…...
计算机视觉与深度学习 | 视觉SLAM学习思路总结与视觉SLAM发展历程(1986年至2025年)
视觉SLAM(Simultaneous Localization and Mapping,同时定位与建图)是计算机视觉和机器人领域的重要研究方向,涉及数学、几何、优化、传感器融合等多学科知识。以下是学习视觉SLAM的系统化思路总结,适合从入门到进阶的学习路径:视觉SLAM学习思路总结 一、基础准备 数学基…...
Ansible(8)——循环与条件任务
目录 一、循环迭代任务: 1、简单循环: 2、循环字典列表: 3、Ansible 2.5 之前的循环关键字: 4、在循环中使用 register 变量: 二、条件任务: 1、使用条件句的常见场景: 2、条件任务语法…...
搭建Trae+Vue3的AI开发环境
从2024年2025年,不断的有各种AI工具会在自媒体中火起来,号称各种效率王炸,而在AI是否会替代打工人的话题中,程序员又首当其冲。 作为一个后端开发,这篇文章基于Trae工具,来创建和运行一个简单的Vue前端应用…...
【免费公测】可遇AI直播/无人直播/矩阵直播/AI场控
前言 经过了一个多月的内测打磨,实现了非常稳定的无人直播效果,AI直播语音及其真实,软件交互方便,可以快速的构建AI直播间。 免费公测,内置无限激活卡密一张,打开即用。 亮点 高仿真语音模型,…...