- 博客(737)
- 收藏
- 关注
原创 C++学习------lambda表达式
优势说明简洁性无需单独定义函数局部性逻辑紧贴使用处闭包能力捕获环境变量,实现状态保持泛型支持C++14+ 支持auto参数STL 友好完美适配算法、容器、线程等✅现代 C++ 编程中,lambda 是不可或缺的工具!
2025-11-30 10:41:04
766
原创 C++学习------空指针常量nullptr
✅在 C++11 及以后,永远使用nullptr表示空指针!消除了0NULL的类型安全隐患提高了代码可读性和健壮性是现代 C++ 的标准实践指针为空用nullptr,告别NULL和0!
2025-11-30 10:27:50
613
原创 C++学习------结构体总大小是怎么计算的?
对齐看最大,成员按序排,中间填 padding,末尾补到倍。从偏移 0 开始;对每个成员:找到 ≥ 当前偏移 且 满足该成员对齐要求的地址;插入 padding 到该地址;放置成员;所有成员放完后,总大小 = 最后一个成员结束位置;将总大小向上对齐到最大成员对齐值的整数倍。
2025-11-29 12:22:45
764
原创 C++学习------const可以定义函数而define不可以
模拟函数式宏(function-like macro)这里要分清楚const特性#define宏constconstexpr函数是真正的函数?❌ 否(文本替换)✅ 是类型安全?❌ 否✅ 是支持重载?❌ 否✅ 是(函数重载)有作用域?❌ 全局✅ 有(命名空间、类)可调试?❌ 困难✅ 可设断点能用于编译期计算?⚠️ 有限(靠展开)✅constexpr支持能修饰成员函数?❌✅const成员函数。
2025-11-29 10:42:07
314
原创 C++学习------指针与引用相比有哪些潜在风险?
风险类型指针引用空值风险✅ 高(需手动检查)❌ 无(必须有效)悬空风险✅ 高(易误用)⚠️ 低(难无意制造)语义模糊✅ 是(所有权/可选性不明)❌ 否(意图清晰)越界/算术错误✅ 可能❌ 不可能安全性较低较高✅结论引用比指针更安全、语义更清晰,应作为函数参数传递类对象的默认选择。只有在明确需要表达“可为空”、“重绑定”或与底层系统交互时,才使用指针,并需格外小心空指针和生命周期问题。如果你正在设计 API,优先问自己:“这个参数是否可能为空?如果不可能为空→ 用。
2025-11-29 09:36:18
432
原创 C++学习------为什么推荐使用引用(尤其是 const 引用)?
在大多数情况下,将类对象作为参数传递时使用const T&大型对象只读访问性能敏感代码但也要根据语义和实际需求灵活选择传递方式,不要机械套用。
2025-11-29 09:33:22
661
原创 C++学习------字符串字面量(string literal)
特性类型char[6](数组)char*(指针)内存位置栈(可写).rodata(只读)内容来源复制字符串字面量直接指向字面量能否修改内容✅ 能❌ 不能(运行时错误)编译器检查修改合法修改不报错(但应警告)推荐写法无问题应写为。
2025-11-27 16:40:58
356
原创 C++学习------异常和中断的区别
特性中断(Interrupt)异常(Exception)来源外部硬件或软件请求CPU 内部执行指令时发生的问题或特殊事件同步性异步(与当前指令执行无关)同步(由当前指令直接引发)可预测性不可预测(随时可能发生)可预测(发生在特定指令执行时)典型例子键盘输入、网卡收到数据、定时器到期除零错误、缺页、系统调用、非法指令✅一句话记住中断来自“外面”,异常来自“里面”。维度中断(Interrupt)异常(Exception)发起者外部设备 or 软件指令(如intCPU 执行指令时内部检测。
2025-11-27 15:43:39
881
原创 C++学习------实参和形参区别
概念全称定义位置说明形参形式参数函数定义时声明的变量是函数内部的“占位符”,用于接收传入的数据实参(Argument)实际参数函数调用时传递的具体值或变量是调用者提供的真实数据形参(Parameter)实参(Argument)何时出现函数定义时函数调用时作用接收并使用传入的数据提供要传递的真实数据关系被实参初始化初始化形参💡一句话记住“定义看形参,调用看实参;实参给值,形参接住。
2025-11-17 15:56:47
431
原创 C++学习-----函数指针和指针函数
项目指针函数函数指针本质函数指针变量返回值/类型返回一个指针(如int*指向一个函数(如声明示例关键词重心“函数” —— 强调这是一个函数“指针” —— 强调这是一个指针是否可赋值函数名不可赋值(地址固定)指针变量可以重新指向其他函数“指针函数”是返回指针的函数;“函数指针”是指向函数的指针。“指针函数” → 函数;“函数指针” → 指针。掌握这个区别,就能避免常见的声明和使用错误!
2025-11-17 15:18:18
420
原创 C++学习------静态变量可以在不同实例中共享
✅静态变量(尤其是类的静态成员变量)确实在不同实例之间共享,这是实现计数器、单例模式、全局配置等设计模式的基础。
2025-11-17 09:00:42
298
原创 c++中的static,const,局部,全局变量
局部 static:用于保存状态(如计数器)、避免重复初始化。全局 static:封装实现细节,防止命名冲突。const:提高安全性,允许编译器优化,表达设计意图(不可变)。全局变量:谨慎使用,易导致耦合和难以调试的问题。
2025-11-17 08:47:29
582
原创 fatal error: mosquitto.h: 没有那个文件或目录解决办法
操作系统:ubuntu20.04编程语言:C++11架构:瑞芯微3568这个错误表明你的系统缺少 Mosquitto C 开发库(libmosquitto-dev 或类似包),而你的代码 MQTTBroker.cpp 依赖了 mosquitto.h 头文件。
2025-10-15 14:49:56
396
原创 c++多线程(7)------异步结果获取机制
std::future 是一个只读的“占位符”,代表一个尚未就绪但未来会产生的值(或异常)。它通常与一个提供结果的“生产者”(如 std::promise、std::async)配对使用。一个 future 只能被移动(move),不能被复制(因为结果只能被获取一次)。调用 .get() 会阻塞当前线程,直到结果就绪,然后返回值(或抛出异常)。💡 类比:你去餐厅点餐(发起异步任务),服务员给你一个取餐号(future)。你拿着这个号,等厨房做好后,凭号取餐(调用 get())。场景推荐方案。
2025-10-10 15:08:52
730
原创 c++多线程(6)------ 条件变量
条件变量(Condition Variable) 是实现线程间高效等待与通知机制的核心工具,通常与互斥锁配合使用,用于解决“生产者-消费者”、“任务队列”、“线程协调”等经典并发问题。
2025-10-09 13:28:09
728
原创 c++多线程(5)------原子操作
C++11 引入了 <atomic> 头文件和 std::atomic<T> 模板类,为多线程编程提供了无锁(lock-free)的原子操作支持。原子操作是并发编程中的基础构建块,用于在不使用互斥锁(mutex)的情况下实现线程安全的数据访问。
2025-09-29 13:50:06
1156
原创 算法面试(6)------mAP 是什么?如何计算?P-R 曲线怎么看?
操作系统:ubuntu22.04编程语言:C++11这是一个目标检测(Object Detection)领域的核心评估指标问题,也是面试和论文中必考内容。我们从 mAP 是什么 → 如何计算 → P-R 曲线怎么看 三层递进,彻底讲透!
2025-09-29 11:42:54
806
原创 算法面试(5)------NMS(非极大值抑制)原理 Soft-NMS、DIoU-NMS 是什么?
这是一个目标检测领域的核心后处理问题,也是面试高频考点。我们从基础 NMS 原理 → 缺陷 → 改进版(Soft-NMS、DIoU-NMS) 三层递进,彻底讲透!
2025-09-24 17:45:33
870
原创 算法面试(4)------YOLO 如何解决“一个格子预测多个目标”的问题?(Anchor机制、无Anchor机制)
这个问题是理解 YOLO 演进和目标检测本质的核心!我们从 问题根源 → Anchor 机制如何解决 → 无 Anchor 机制如何更优解决 三层递进,彻底讲透。YOLO 的基本设计是:⚠️ 早期 YOLOv1 的致命缺陷:这就是“一个格子预测多个目标”的核心挑战。✅ 核心思想:🧩 实现方式:🎯 举例(YOLOv3):✅ 优势:⚠️ 缺陷:✅ 核心思想:🧩 实现方式:直接回归:动态标签分配(关键!):不再“中心点绑定”:✅ 优势:🆚 对比总结:✅ 总结一句话:
2025-09-23 11:58:29
669
原创 算法面试(3)------YOLO 的核心思想是什么?YOLOv1 到 v8 的演进路线?
这是一个非常核心、高频的计算机视觉面试题 —— YOLO 的核心思想 + 从 v1 到 v8 的演进路线。掌握这个,不仅能应对面试,还能真正理解现代目标检测的发展脉络。
2025-09-22 15:45:16
436
原创 算法面试(2)-----两阶段检测器(如Faster R-CNN)和单阶段检测器(如YOLO、SSD)的区别与优劣?
两阶段检测器(如Faster R-CNN)和单阶段检测器(如YOLO、SSD)的区别与优劣
2025-09-19 18:04:10
643
原创 c++多线程(4)------互斥同步
概念说明互斥量 (Mutex)用于保护共享资源,确保同一时刻只有一个线程访问RAII 锁 (lock_guard, unique_lock)自动管理锁生命周期,异常安全死锁预防使用 std::lock 同时锁定多个互斥量递归锁recursive_mutex,谨慎使用超时锁timed_mutex,避免无限等待最佳实践锁粒度小、临界区短、优先用 lock_guard。
2025-09-16 11:21:34
1036
原创 c++多线程(3)------休眠函数sleep_for和sleep_until
这两个函数都定义在 <thread> 头文件中,属于 std::this_thread 命名空间,用于让当前线程暂停执行一段时间。
2025-09-15 18:14:19
895
原创 算法面试(1)-----目标检测和图像分类、语义分割的区别
图像分类告诉你“是什么”,目标检测告诉你“是什么+在哪里”,语义分割告诉你“每个像素是什么”。掌握这三者的区别,是你理解计算机视觉任务体系的第一步,也是面试高频考点!“图像分类是整图打标签,目标检测是画框+分类,语义分割是像素级分类。我在工业项目中用目标检测定位缺陷位置,因为需要知道缺陷坐标用于机械臂抓取;而在医学图像中用语义分割,因为医生需要知道病灶的精确边界。
2025-09-15 15:28:04
697
原创 c++多线程(2)------提示调度器让出当前CPU时间片函数yield()
项目内容函数名头文件thread作用提示调度器让出当前线程的时间片是否阻塞否是否保证切换否(仅提示)适用场景自旋锁、忙等待优化、提高调度公平性不应使用场景替代锁、解决竞态、精确延时替代方案condition_variable, sleep_for, atomic 等✅ 一句话总结:std::this_thread::yield() 是一个轻量级的调度提示,用于在忙等待或高负载循环中主动让出 CPU,以提升系统整体响应性和公平性,但不能依赖其行为进行同步控制。
2025-09-15 11:02:13
1150
原创 The QMediaPlayer object does not have a valid service错误的解决
QMediaPlayer播放在线电台https://lhttp.qingting.fm/live/273/64k.mp3的时候,出现错误:The QMediaPlayer object does not have a valid service.
2025-09-12 16:06:51
289
原创 c++多线程(1)------创建和管理线程td::thread
std::thread 是 C++11 标准库中用于创建和管理线程的核心类,定义在 <thread> 头文件中。它使得多线程编程变得简单、类型安全且跨平台。
2025-09-03 17:58:48
543
原创 qmake Project ERROR: Unknown module(s) in QT: multimedia错误解决办法
【代码】qmake Project ERROR: Unknown module(s) in QT: multimedia错误解决办法。
2025-08-26 13:20:38
231
原创 C++中如何使用互斥(2)------std::unique_lock
std::unique_lock 是 C++11 中 库提供的一个灵活的互斥锁管理类,相比 std::lock_guard,它提供了更丰富的控制能力,是多线程编程中处理复杂同步逻辑的首选工具。
2025-08-25 17:04:47
793
原创 C++中如何使用互斥(1)------std::lock_guard
✅ 异常安全:即使临界区抛出异常,锁也会被释放✅ 自动管理:无需手动调用 unlock()✅ 代码简洁:避免忘记解锁✅ 性能高:无额外开销std::lock_guard 是 C++ 中最简单、最安全的互斥锁管理方式,应作为首选工具用于保护临界区。只要你的场景是“进入作用域加锁,离开作用域解锁”,就使用 std::lock_guard。💡 记住一句话:“加锁后立即创建 lock_guard,让它帮你管理锁的生命周期。
2025-08-25 16:37:44
593
原创 OpenCV结构光三维重建类cv::structured_light::GrayCodePattern
cv::structured_light::GrayCodePattern 是 OpenCV 库中用于结构光三维重建 的一个类,属于 OpenCV 的 structured_light 模块。它用于生成和解码 格雷码(Gray Code) 图案,广泛应用于 3D 扫描、深度重建、物体表面形状获取等领域。
2025-08-21 09:33:13
1010
原创 OpenCV 在图像上绘制二维图形的类cv::plot::Plot2d
cv::plot::Plot2d 是 OpenCV 的 plot 模块中的一个类,用于在图像上绘制二维图形。它提供了便捷的方法来可视化数据,例如将数值数据绘制成折线图等,非常适合快速查看实验结果、调试算法或生成报告图表。
2025-08-14 15:46:58
956
1
原创 OpenCV用于计算光流的一个类cv::optflow::DualTVL1OpticalFlow
cv::optflow::DualTVL1OpticalFlow 是 OpenCV 中用于计算光流的一个类,特别地,它实现了基于双帧 TV-L1(Total Variation - L1)模型的光流算法。这种算法以其在处理速度和准确性之间的良好平衡而著称,并且对光照变化具有一定的鲁棒性。
2025-07-22 13:53:38
481
原创 OpenCV稠密光流估计的一个类cv::optflow::DenseRLOFOpticalFlow
cv::optflow::DenseRLOFOpticalFlow 是OpenCV 中用于稠密光流估计的一个类,属于optflow模块。它是RLOF(Regularized Location-Only Flow)算法的一种实现,用于计算视频帧之间的像素级运动矢量。
2025-07-16 12:52:17
1254
原创 OpenCV直线段检测算法类cv::line_descriptor::LSDDetector
该类用于实现 LSD (Line Segment Detector) 直线段检测算法。LSD 是一种快速、准确的直线检测方法,能够在不依赖边缘检测的前提下直接从图像中提取出直线段。
2025-07-16 10:51:51
862
原创 OpenCV从检测到的线段中提取一种称为 LBD (Line Band Descriptor) 的二值描述符类cv::line_descriptor::BinaryDescriptor
该类用于从检测到的线段中提取一种称为 LBD (Line Band Descriptor) 的二值描述符。它在 OpenCV 的 line_descriptor 模块中实现,是当前最流行的直线特征描述方法之一。
2025-07-15 13:51:50
651
fsrcnn-x3.pb
2025-07-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅