logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

CyberDog模块硬件连接

CyberDog(以小米开源四足机器人为例)的硬件模块连接遵循“主控制器为核心,分布式子系统协同”的架构,通过标准化接口和总线实现各模块的通信与控制。(或Jetson Xavier NX,高配版)作为主计算单元,集成GPU用于AI计算(如视觉识别、运动规划)。电机与主系统的连接依赖。这种架构既保证了各模块的独立工作,又通过标准化接口实现了高效协同,适合机器人动态运动场景的稳定性需求。核心控制器是C

#自动驾驶#人工智能
Effective Modern C++技术要点总结

Effective Modern C++》的本质不是“罗列特性”,而是传递现代C++的设计哲学安全优先:用RAII(智能指针、lock_guard)管理资源,避免裸指针、手动释放、数据竞争;性能优化:用移动语义减少拷贝,用constexpr转移编译期计算,用避免临时对象;简洁可读:用auto简化类型名,用Lambda简化短期函数,用using简化模板别名;类型安全:用decltypeconstex

#c++#开发语言
Effective Modern C++技术要点总结

Effective Modern C++》的本质不是“罗列特性”,而是传递现代C++的设计哲学安全优先:用RAII(智能指针、lock_guard)管理资源,避免裸指针、手动释放、数据竞争;性能优化:用移动语义减少拷贝,用constexpr转移编译期计算,用避免临时对象;简洁可读:用auto简化类型名,用Lambda简化短期函数,用using简化模板别名;类型安全:用decltypeconstex

#c++#开发语言
Effective Modern C++ 条款 20:避免返回数组

原生数组不适合作为返回值:其“数组到指针的退化”特性会导致悬空指针、内存泄漏、大小未知三大问题,违背现代C++的“安全优先”原则;优先选择标准容器替代动态大小需求 → 用(自动内存管理+动态扩容);固定大小需求 → 用(栈上存储+编译期大小,性能最优);符合现代C++设计哲学vectorarray具备“值语义”和“RAII特性”,无需手动管理内存,且内置大小信息,从根本上消除了原生数组的安全隐患,

#c++#算法
Effective Modern C++ 条款 20:避免返回数组

原生数组不适合作为返回值:其“数组到指针的退化”特性会导致悬空指针、内存泄漏、大小未知三大问题,违背现代C++的“安全优先”原则;优先选择标准容器替代动态大小需求 → 用(自动内存管理+动态扩容);固定大小需求 → 用(栈上存储+编译期大小,性能最优);符合现代C++设计哲学vectorarray具备“值语义”和“RAII特性”,无需手动管理内存,且内置大小信息,从根本上消除了原生数组的安全隐患,

#c++#算法
std::condition_variable

是 C++ 标准库(C++11 及以上)中用于的机制,主要用于线程间的交互。它通常与互斥锁(std::mutex)配合使用,允许线程在某个条件未满足时进入阻塞状态,待条件满足后由其他线程唤醒,从而避免无效的忙等(busy waiting),提高程序效率。

#c++
std::condition_variable

是 C++ 标准库(C++11 及以上)中用于的机制,主要用于线程间的交互。它通常与互斥锁(std::mutex)配合使用,允许线程在某个条件未满足时进入阻塞状态,待条件满足后由其他线程唤醒,从而避免无效的忙等(busy waiting),提高程序效率。

#c++
condition_variable的wait函数工作原理

锁的配合wait必须接收参数,因为需要在阻塞时释放锁、唤醒时重新获取锁(不支持手动释放,无法配合)。原子操作:释放锁和进入阻塞是原子的,避免“唤醒丢失”。虚假唤醒处理:必须通过循环检查条件(带谓词的wait自动实现),否则可能因虚假唤醒导致错误。唤醒后竞争:被唤醒的线程需要重新竞争锁,因此wait返回后,共享资源可能已被其他线程修改(需重新检查条件)。理解wait的工作机制,是正确使用进行多线程同

#开发语言#c++
try-catch中,资源管理和异常安全

资源管理和异常安全的核心是依赖 RAII 自动管理资源,辅以明确的异常安全级别设计。用 RAII 类(如智能指针、标准库容器)封装所有资源,避免裸资源操作;确保析构函数不抛出异常,关键函数提供“不抛出保证”;对需要强一致性的操作,采用“拷贝-交换”模式实现强保证;避免手动释放资源,若必须手动操作,需在catch块中严格处理释放逻辑。遵循这些原则可有效避免资源泄漏,确保程序在异常发生后仍能安全、一致

#开发语言#c++
GDB 堆栈跟踪(Stack Tracing)详细介绍

在程序调试中,“堆栈”(Call Stack,调用栈)记录了程序执行过程中函数的调用关系——从当前执行函数回溯到程序入口(如main函数)的完整链路,包含每个调用层级的函数名、代码位置(文件+行号)、栈帧地址及局部变量等关键信息。GDB 的(核心命令backtrace)正是通过解析调用栈,帮助开发者定位程序崩溃、异常行为的根源(如“哪个函数调用触发了错误”“错误发生时的函数调用链是什么”),是调试

#linux#c++
    共 26 条
  • 1
  • 2
  • 3
  • 请选择