- 博客(100)
- 收藏
- 关注
原创 佑驾创新控制算法面经
本文摘要:文章系统介绍了车辆控制领域的核心概念和方法。首先区分了车辆运动学与动力学控制,前者关注几何运动,后者考虑力/质量等物理因素。其次详细解析了LQR控制中消除稳态误差的技术,包括LQI积分和前馈补偿。随后探讨了油门控制、超前/滞后矫正设计、路径规划数据传输等实际问题。最后对比了MPC与LQR的差异,并介绍了最小二乘法原理。全文通过数学模型、伪代码和工程实例,全面阐述了智能车辆控制的关键技术,为自动驾驶系统开发提供了理论框架和实践指导。
2026-01-08 18:47:38
1970
原创 研发工程师机考编程题(一)
本文摘要: 本文包含三个编程题的解题思路与代码实现:1.汽水兑换问题(数学推理),通过空瓶兑换推导出公式ans=n/2;2.排序去重问题(数据处理),使用排序和相邻比较实现去重;3.16进制转换问题(字符处理),重点讲解字符转数值和位权计算的方法。每个题目都分析了核心考点、易错点和优化方案,提供了C++实现代码,并强调了对边界条件、数据类型和算法效率的注意事项。
2026-01-07 11:45:33
909
原创 C++ 基础八股文(基础面试题)
本文系统介绍了C++程序的内存模型与关键语言特性。主要内容包括:1. 内存布局详解:代码区、静态存储区、堆区、栈区、常量区的分布与特点;2. 动态内存管理:new/delete与malloc/free的本质区别,包括构造/析构、失败行为等关键差异;3. 变量作用域与生命周期:局部变量、静态变量、全局变量的存储位置与可见性规则;4. 核心语言特性:const/volatile/constexpr的用法与区别,指针与引用的本质差异;5. 面向对象机制:构造/析构顺序、多态实现原理,以及重载、重写、重定义三种多态
2026-01-06 15:59:44
1300
原创 C++ 智能指针(末):new vs unique_ptr 终极对比 + “指针成员到底是不是创建对象”一次讲透
本文对比了C++中裸指针和unique_ptr在工程实践中的关键差异。传统new/delete写法存在四大风险:人工维护对称性易漏、异常路径不可控、默认拷贝导致双重delete、悬空指针风险。而unique_ptr通过语言机制自动管理生命周期,天然保证异常安全,编译期禁止拷贝,并明确表达所有权语义。文章澄清常见误区:成员变量声明本身并不创建对象,真正的对象创建发生在new或make_unique时。unique_ptr的核心价值在于在类型层面明确对象所有权和生命周期绑定,而非仅是自动释放。对于车辆运动控制等
2026-01-05 23:33:26
1015
原创 C++ 智能指针(下):车辆运动控制 ROS 工程实战(生命周期设计 + 可运行代码)
本文从工程实践角度探讨智能指针在车辆控制中的应用。智能指针的本质是"所有权关系的类型化表达",而非简单的自动delete功能。在车辆控制系统中,常见问题如控制器销毁但回调仍在执行等,往往源于生命周期管理不当。文章提出四种典型资源的所有权处理方式:1) 控制器内部算法对象(如PID)使用unique_ptr明确独占所有权;2) 共享数据(如轨迹)采用shared_ptr<const T>;3) 回调引用上层对象使用weak_ptr避免循环引用;4) ROS2消息回调参数使用sh
2026-01-05 22:33:38
1005
原创 C++ 智能指针真相曝光(中):从new int(10) 到 unique_ptr 析构的完整闭环
摘要:本文通过分析std::unique_ptr<int> p(new int(10))的执行过程,揭示了智能指针的内存管理机制。首先,new int(10)在堆上分配内存并构造对象,返回裸指针;随后unique_ptr接管该指针(不涉及内存分配)。当作用域结束时,unique_ptr析构函数自动调用delete释放堆内存,随后unique_ptr自身作为栈对象被销毁。整个过程清晰区分了对象创建(由new完成)与生命周期管理(由unique_ptr负责)两个阶段,体现了RAII的核心思想:资源获
2026-01-04 22:57:56
758
原创 C++ 智能指针真相曝光(上):为什么说它其一定有一根“裸指针”?
智能指针的本质是将裸指针封装在对象中,通过析构函数自动释放内存。以unique_ptr为例,其核心是一个类模板,内部保存裸指针成员T* ptr(即raw_ptr)。当unique_ptr对象生命周期结束时,析构函数自动调用delete释放ptr指向的堆对象,而unique_ptr自身作为栈对象由编译器自动回收内存。这种设计实现了资源自动管理,解耦了堆对象释放和栈对象回收的职责,确保内存安全。模板机制使智能指针能管理任意类型对象,通过类型参数T生成具体实现类。
2026-01-04 22:41:06
1124
原创 Git 团队协作:聚焦代码回溯 commit!fetch+merge 后到底会产生几个 commit(两种真实场景 + 合并策略一次讲透)
Git协作开发中的Commit数量问题分析 在团队协作开发中,远端分支最终会新增多少个commit取决于两个关键因素:1)本地操作顺序(是否已有业务commit)2)merge是否为fast-forward合并。 核心结论: 开发中途同步(未commit):远端可能新增1个(快进合并)或2个commit(非快进合并+业务commit) 完成开发后同步(已有commit):远端通常新增2个commit(业务commit+merge commit) stash操作不会产生commit,merge是否产生新com
2025-12-30 16:01:25
990
原创 Git 团队开发冲突合并全流程:本地是否改动 + 远端是否更新,如何正确同步并合并(同分支/不同分支下的几种场景)
摘要:本文针对团队开发中常见的本地与远端代码冲突问题,提出四大核心场景分类法(公共/个人分支×是否保留本地改动),并给出每种场景的最佳实践方案。关键解决策略包括:1)通过commit或stash固化本地修改;2)采用fetch+merge分步操作确保可控性;3)冲突处理标准化流程。特别强调个人功能分支持续同步主线的推荐模式,提供从代码保全、冲突解决到历史回滚的完整方案,附有命令速查表和决策矩阵,帮助开发者建立规范的Git协作习惯。
2025-12-29 21:50:01
870
原创 Git 开发全流程:一套不踩坑的 Git 团队开发完整流程(小白教程)
本文系统讲解了企业级Git开发流程规范:从git clone克隆仓库开始,必须基于origin/xxx创建本地开发分支(如feature/kaifa),避免直接操作远端分支。重点阐述了本地分支开发、提交、推送的完整链路,以及如何安全同步远程更新(fetch+merge)。特别指出常见错误:在detached HEAD状态开发、混淆fetch/merge/pull操作等。强调"远端分支只读,本地分支开发"的核心原则,为企业开发提供了可回滚、可协作的标准Git工作流。适用于Git新手
2025-12-29 17:46:45
1321
原创 Git fetch 详解:git fetch 和 git fetch origin 到底有什么区别?(origin/xxx、远端跟踪分支一次讲透)
Git fetch详解:origin的作用与分支管理 本文深入解析git fetch与git fetch origin的区别,阐述origin的本质是本地对远程仓库的命名引用。关键点在于:git fetch origin仅更新本地的远程跟踪分支(如origin/xxx),而不会自动创建可开发的本地分支,这是Git的安全设计原则。文章通过多个实例说明: 远端跟踪分支是只读快照,直接checkout会导致detached HEAD状态 正确做法是使用gitswitch -c创建本地开发分支 单远程仓库时两者等价
2025-12-29 16:20:11
1886
原创 Git 原理彻底讲透:工作区 / 暂存区 / 本地仓库 / origin 一次理清(VSCode 可视化 + 实战避坑)
本文深入解析Git核心概念与工作流程,重点阐述三个关键区域(工作区、暂存区、本地仓库)的运作机制和相互关系。通过真实开发场景,详解git add/commit/fetch/pull/push等命令的实际作用,澄清"origin/分支名"的本质是远端分支的本地快照而非真实分支。特别说明VSCode状态提示反映的是本地与远端跟踪分支的差异,而非push状态。文章还对比了git diff系列命令,并提供了分支管理、代码回滚等实用场景的操作方案,帮助开发者建立清晰的Git心智模型,避免常见协作问
2025-12-28 23:01:44
2028
2
原创 C++ 智能指针深入:四种智能指针所有权模型、原理与常见陷阱全景解析
本文深入探讨了C++智能指针的设计原理与工程实践。首先指出裸指针在复杂控制流中难以保证资源释放,提出RAII机制确保资源自动释放。重点分析了智能指针家族(unique_ptr、shared_ptr、weak_ptr)的本质是通过类型系统精确表达资源所有权关系:unique_ptr实现独占所有权,shared_ptr支持共享资源,weak_ptr解决循环引用问题。文章强调智能指针不仅是语法特性,更是对资源生命周期的工程级解决方案,并警示auto_ptr的失败教训。最后总结使用原则:应根据所有权模型选择合适指针
2025-12-26 21:44:33
971
原创 C++ 内存泄漏的“真实成本”: 内存单位换算、堆分配开销与工程级判断
本文深入探讨了C++工程中内存泄漏的本质危害及其解决方案。文章首先解析了内存单位换算和堆分配的实际开销,指出即使小对象泄漏也会因堆管理开销而放大。重点分析了短期程序难以暴露但长期服务必然OOM的累积效应,通过量化计算展示了不同泄漏场景的内存增长曲线。文中强调内存泄漏的根本问题不在于忘记delete,而在于delete无法在所有执行路径上被执行。最后论证了RAII和智能指针是唯一可靠的解决方案,能自动处理资源释放,避免人工管理的不可靠性。全文为工程实践中正确评估和处理内存泄漏提供了系统性指导。
2025-12-26 13:27:54
1211
原创 C++智能指针初识:return、throw 与 RAII 才是 C++ 内存安全的真相
摘要:智能指针是C++中管理资源的类模板,通过自动释放资源解决裸指针的内存泄漏问题。裸指针的主要痛点包括:1)忘记释放导致内存泄漏,特别是在循环或长期运行的服务中;2)异常或提前return导致delete无法执行。智能指针利用RAII机制,在析构时自动释放资源,确保异常安全。使用unique_ptr或容器可以避免手动管理内存,防止内存泄漏。关键点:new/delete需匹配,多出口函数应优先使用RAII,避免手动内存管理带来的风险。
2025-12-25 22:12:08
1197
原创 Git分支实操指南:本地学习分支创建+远程同步避坑全解析
本文详细讲解Git纯本地学习分支的管理方法,包括创建、删除和同步策略。主要内容包括:1)基于本地分支创建独立学习分支的操作步骤;2)git fetch与git pull的核心区别及适用场景;3)纯本地分支的正确更新链路(远程→本地上游→学习分支);4)避坑指南与核心规则总结。重点强调学习分支应保持纯本地属性,通过上游分支间接同步远程更新,避免污染公共分支。适合需要独立测试环境的开发场景,帮助开发者理清Git分支管理的底层逻辑。
2025-12-15 11:47:51
1459
3
原创 C++ 函数类型大全:成员函数 / 非成员函数 / 全局函数 / 静态函数 / 特殊成员函数 / 虚函数 / 模板函数 全面总结
本文系统梳理了C++中完整的函数类型体系,从多个维度进行分类:1)按类归属分为成员函数、静态成员函数、非成员函数和友元函数;2)按特殊成员函数分为构造/析构/拷贝/移动等;3)按多态特性分为普通函数、虚函数和纯虚函数;4)按修饰符分为const/ref限定/noexcept/inline等;5)按编译期特性分为模板函数、constexpr和consteval函数;6)还包括lambda、函数对象、函数指针等可调用对象。文章通过示例代码和对比表格,全面解析了各类函数的特点和使用场景,帮助开发者深入理解C++函
2025-12-11 15:27:58
1371
原创 成员函数(Member Function)彻底讲透:this、const、运算符重载 全解析
本文深入解析C++成员函数的底层原理与语法细节。成员函数是定义在类内部、专门操作类对象的函数,具有自动携带this指针、访问类私有成员、支持const修饰等特性。重点讲解了this指针的本质,const成员函数的作用,以及运算符重载作为成员函数的优势。通过Vec2向量类的示例,展示了成员函数实现运算符重载的规范写法。文章对比了成员函数与普通函数的区别,并解答了常见面试问题,帮助读者全面理解成员函数在C++面向对象编程中的核心地位。
2025-12-11 10:02:39
1458
原创 C++ 成员函数运算符重载深度解析
本文详细讲解了C++中运算符重载的实现方法,以二维向量类Vec2的加法运算符重载为例。主要内容包括:1. 通过operator+成员函数实现向量加法,解释this指针和参数的关系;2. 分析const Vec2&参数和函数末尾const的含义;3. 说明运算符重载的调用过程和链式加法实现;4. 对比成员函数版本和全局函数版本的差异;5. 强调运算符重载的语法规则和最佳实践。文章通过代码示例和逐步解析,帮助读者深入理解C++运算符重载的核心概念和实现细节。
2025-12-10 15:16:45
1131
1
原创 【C++基础】Day 11:nullptr VS NULL
摘要:本文系统分析了C++中nullptr与NULL的区别。NULL本质是整数0,在重载和模板推导中易引发歧义;而C++11引入的nullptr具有独立类型std::nullptr_t,能安全隐式转换为任意指针类型,解决了NULL的类型安全问题。通过函数重载、模板推导等示例对比,文章指出现代C++应统一使用nullptr表示空指针,避免使用NULL导致的潜在问题。这一知识点是C++面试中的重要基础考点。
2025-12-09 10:35:40
1228
原创 【松灵ROS2专栏·第 2 讲】ROS通讯机制与常用工具
本文介绍了ROS2的核心通讯机制与常用工具,重点讲解了参数管理、动作机制和关键开发工具的使用。内容涵盖:1)参数机制的三种配置方式(CLI/YAML/Node)及实战操作;2)动作机制的结构特点及其与服务调用的区别;3)ROS2工具链详解,包括Launch文件编写(推荐Python方式)、Gazebo物理仿真、RViz可视化、RQt调试工具和ros2bag数据记录;4)以AgileX LIMO机器人为例,演示了从环境配置到仿真运行的完整流程。最后通过对比RViz和Gazebo的功能差异,帮助开发者理解ROS
2025-12-08 17:35:42
1186
原创 【C++基础】Day 10:sizeof全解析:C++如何使用sizeof操作符获取变量或类型的大小
本文系统梳理了C++中sizeof操作符的关键知识点。作为编译期操作符,sizeof用于获取类型或表达式结果的字节数,不执行表达式副作用。重点包括:数组在非函数形参场景不会退化指针;结构体大小受内存对齐影响常大于成员之和;指针大小固定与指向对象无关;空类大小为1保证可寻址性;虚函数会增加虚表指针;模板中需使用数组引用获取长度;动态内存无法通过sizeof计算大小。文章通过典型场景、内存布局分析和面试常问题目,全面解析了sizeof在工程实践中的注意事项。
2025-12-08 12:21:29
866
原创 【C++基础】Day 10:C/C++ 数据类型字节长度全解析
本文详细探讨了C/C++中基础类型的字节长度问题,重点分析了跨平台开发中的数据类型差异。文章指出,long类型在Linux(8字节)和Windows(4字节)下的不同表现,以及longdouble在GCC(16字节)和MSVC(8字节)中的差异。特别强调了在网络协议和嵌入式开发中必须使用<cstdint>中的固定宽度整数类型(int32_t/uint32_t等)来确保数据一致性。文章提供了完整的类型字节对照表,并解答了常见面试问题,为开发者处理跨平台数据通信提供了实用指导。
2025-12-08 10:44:48
1162
原创 【C++基础】Day 9:四大强转 static_cast vs dynamic_cast vs reinterpret_cast vs const_cast
本文系统梳理了 C++ 中最核心的四类强制类型转换:static_cast、dynamic_cast、reinterpret_cast、const_cast。它们是现代 C++ 替代传统 C 风格强转的安全机制,但由于语义差异大、适用场景不同,是 C++ 面试八股中最容易混淆的高频考点。文章从 编译期 vs 运行期 入手,解释了为什么 static_cast 与 dynamic_cast 的行为差异本质来自编译器能否看到真实类型;随后结合 RTTI 与虚函数表机制,深入讲解 dynamic_cast
2025-12-05 14:47:27
791
原创 C++ 并发四件套:并发编程 / 原子性 / 数据竞争 / 内存模型 (全解析)
本文深入探讨C++并发编程中的核心概念,包括并发编程、原子性、数据竞争和内存模型。通过分析a++在多线程环境中的安全问题,对比std::atomic和std::mutex两种解决方案:std::atomic利用CPU原子指令保证操作的不可分割性,适合简单计数场景;std::mutex通过互斥锁保护代码区间,适用于复杂操作。文章还解释了数据竞争的产生条件及其危害,并介绍了C++内存模型如何规范多线程的读写顺序和可见性。最后总结了atomic和mutex的适用场景,为开发安全高效的并发程序提供指导。
2025-12-04 16:08:40
1036
原创 【C++基础】Day 8:函数指针 VS 指针函数 | 指针常量 VS 指向常量的指针
本文系统梳理了C++中两类易混淆指针概念:1)函数指针与指针函数:前者是指向函数的指针变量,用于回调、函数表等;后者是返回指针的函数。区分关键看标识符最近的符号是*还是()。2)指针常量与指向常量的指针:前者指针不可改但内容可改,后者内容不可改但指针可改,const位置决定限制对象。文章通过定义解释、图表对比、代码示例和面试题分析,帮助读者清晰区分这些高频考点概念,掌握指针声明的阅读技巧和使用场景。
2025-12-04 12:27:25
1562
原创 【松灵ROS2专栏·第 1 讲】ROS2 基础入门
ROS2是新一代机器人操作系统,在ROS1基础上重构优化,具备分布式、跨平台、高实时性等优势。课程《松灵ROS2开讲啦》系统讲解ROS2基础、仿真、算法等内容。ROS2采用DDS通讯机制,取消Master中心节点,支持话题(异步单向)和服务(同步请求响应)两种通讯方式。通过小乌龟仿真案例演示了节点管理、话题订阅、服务调用等核心操作。掌握Linux基础指令和ROS2常用命令是开发前提,ROS2模块化设计使其在机器人开发中更具优势。
2025-12-03 17:02:35
1112
原创 【C++基础】Day 7:std::atomic vs mutex
本文系统对比了C++中mutex与atomic的线程安全机制。mutex通过加锁/解锁保证临界区互斥访问,但性能开销大;atomic利用CPU原子指令实现无锁线程安全,性能更高。文章详细解析了mutex的实现原理(lock_guard的RAII机制),并指出atomic适用于简单计数器,而mutex适用于保护复杂数据结构或多步操作。性能对比显示:atomic>>mutex>>普通int。最后总结表格明确了三种自增方案的安全性和适用场景,为多线程编程提供了实践指导。
2025-12-03 12:14:31
1000
原创 【C++基础】Day 7:a++ 的线程安全问题 与 std::atomic 全解析
本文深入解析了C++中a++操作的线程安全问题。a++在底层被分解为load-add-store三条指令,多线程环境下会因指令交错导致数据竞争,造成计算结果错误。通过std::atomic可以确保"读-改-写"操作的原子性,其底层使用CPU原子指令实现,相比mutex具有更高性能。文章通过代码示例对比了普通int和atomic在多线程环境下的表现差异,并回答了相关面试问题。核心结论:在多线程编程中必须使用std::atomic来保证自增操作的原子性。
2025-12-03 10:55:56
938
原创 ROS2 常用命令超详细总结(附 ROS1 & ROS2 对照表)
本文系统整理了ROS2常用命令行工具,帮助从ROS1迁移的用户快速上手。主要内容包括:功能包管理(ros2 pkg)、节点运行与查看(ros2 run/node)、话题调试(ros2 topic)、接口查看(ros2 interface)等核心命令,并对比了ROS1与ROS2的指令差异。重点介绍了C++工程管理(colcon/ament_cmake)、参数调试、bag包操作等服务,提供了详细的命令示例和使用场景。特别强调了ROS2在消息类型(/msg)、服务(/srv)和动作(/action)方面的语法变化
2025-12-02 17:29:10
1550
原创 Ubuntu 一键安装 ROS 全流程( 鱼香ROS 一键脚本)
本文介绍了使用"鱼香ROS一键工具"快速搭建ROS环境的详细流程。该工具通过自动化脚本简化了传统安装过程中的复杂步骤,主要包含:1)更换国内系统源;2)一键安装ROS/ROS2;3)配置rosdep;4)更新系统环境。安装过程仅需4个核心步骤,支持Ubuntu 18.04-22.04系统及多个ROS版本,可自动处理依赖和环境配置问题,大幅降低安装失败率。文中还提供了测试ROS是否安装成功的方法,整个流程约10分钟即可完成,有效提升环境搭建效率。
2025-12-02 15:09:41
5439
9
原创 【C++基础】Day 6:前置++ VS 后置++(语法底层 + STL规范 + 面试高频)
C++运算符重载:前置++与后置++的深度解析 本文详细解析了C++中前置++(++i)和后置++(i++)的区别与实现要点。前置++通过operator++()实现,无参数且返回引用,效率高;后置++通过operator++(int)实现,需创建临时对象保存旧值并返回对象副本。文章从语法定义、底层原理、性能对比等方面进行了深入剖析,特别强调了后置++应返回const对象以避免(i++)++这类无意义操作。最后提供了完整的代码示例和常见面试问题解答,建议在自定义类型中优先使用前置++以获得更好性能。
2025-12-02 11:23:19
1045
原创 JSON 超详细入门到精通
JSON是一种轻量级数据交换格式,采用键值对结构,支持对象、数组、字符串、数字、布尔值和null六种数据类型。它以.json为扩展名,具有语法简洁、跨语言、易读写的特性,广泛应用于配置文件、Web API、设备通信等领域。JSON相比XML和二进制协议在可读性和工程友好度上更具优势,是机器人、Web服务和嵌入式系统开发的重要基础。使用时需注意键名必须双引号、布尔值小写等语法规则,避免常见错误。
2025-12-01 15:03:09
1441
原创 【C++基础】Day 5:struct 与 class
本文系统梳理了C++中struct与class的核心区别。C语言struct仅作为数据集合,而C++struct本质是默认public的class,支持成员函数、继承等完整面向对象特性。两者语法差异仅在于默认成员权限(struct为public,class为private)和默认继承方式。工程实践中,建议struct用于纯数据结构存储(成员公开),class用于封装逻辑(成员私有)。此外,文章还解析了模板中typename与class的异同,指出模板参数列表中使用class/typename等效,但依赖类型
2025-12-01 11:41:50
1069
原创 【PID实战-微分D详解】一张误差曲线拆成 9 个阶段:彻底搞懂微分项如何抑制过冲
本文通过小车位置控制的案例,深入解析PID控制中微分项(D项)的作用原理。作者将误差曲线划分为9个阶段,详细说明D项如何根据误差变化率(de/dt)产生反向作用力:在系统加速阶段提供约束,在接近目标时提前减速,在过冲阶段强力拉回,最终实现平稳收敛。文章还结合速度环、位置环和转向环三个工程实例,对比有无D项时的控制效果差异,指出D项能显著减小超调、抑制振荡。最后给出调参建议:D项应最后添加且适度使用,过大D增益会放大噪声导致系统抖动。全文通过直观的工程案例,揭示了D项"预测趋势、提前制动"
2025-11-30 17:33:01
1318
原创 【PID 进阶工程】从连续到离散:位置式 vs 增量式 PID 在单片机里的落地实战
本文从工程实践角度系统介绍了PID控制的实现方法。首先回顾了PID的基本原理和控制框图,重点分析了连续时间PID公式及其性能指标。然后详细讲解了数字PID的两种实现方式:位置式PID直接计算当前输出值,适合温度控制等场景;增量式PID计算输出增量,更适合电机控制等需要抗干扰的系统。文章通过直流电机案例对比了两种方法的优缺点,并提供了完整的C语言实现代码(含结构体设计和更新函数)。最后总结了PID参数整定步骤,强调要根据控制对象特性选择合适方法,并通过系统响应曲线调整P/I/D参数。全文旨在帮助读者将PID理
2025-11-29 15:46:05
1427
原创 【PID 理论入门】开环 vs 闭环:小明走路教会你的经典控制精髓
本文通过“小明走路”的生动比喻,系统讲解了PID控制原理。开环控制(蒙眼走路)无法纠偏,闭环控制(睁眼走路)通过实时反馈实现精准控制。PID控制器包含三部分:比例控制(P)根据误差大小调节力度,积分控制(I)消除长期偏差,微分控制(D)预测变化趋势提前刹车。三者协同工作,P决定"敢不敢冲",I确保"冲到准不准",D控制"要不要刹车"。PID凭借结构简单、调节直观等优势,成为工业控制的主流算法,但参数整定需要平衡响应速度与稳定性。
2025-11-28 17:49:14
1716
原创 Git 分支管理实战:团队项目大规模重构时,如何重建拉分支?一文讲透 Git 正确打开方式!
本文介绍了在团队协作开发中,当项目进行大规模重构时如何正确处理Git分支管理。主要内容包括:1)团队创建了driver_class新分支作为驱动模块的最新基线;2)继续使用旧分支会导致大量冲突,因为旧分支基于过时的代码结构;3)推荐基于最新driver_class创建个人开发分支的两种方法,特别是先同步远程代码再创建分支的专业流程;4)日常开发应在个人分支进行,并定期同步团队更新;5)提供了完整的Git工作流程图解。文章强调了大重构场景下遵循团队开发规范的重要性,以确保代码兼容性和可维护性。
2025-11-28 10:55:00
1560
原创 一篇搞懂 C++ 重载:函数重载 + 运算符重载,从入门到会用(含 ++、<<、== 实战)
摘要:本文系统讲解C++中的重载机制,包括函数重载和运算符重载。函数重载的核心在于同名函数参数列表不同,返回值不影响重载判定。C++通过名称修饰(Name Mangling)实现函数重载,而C语言不支持。运算符重载本质是特殊函数重载,需遵循特定规则:不能创建新运算符、不能改变优先级等。文章详细介绍了常见运算符重载方法,特别是前后置++的区别、输入输出运算符的友元实现等。最后对比了重载(Overload)、重写(Override)和隐藏(Name Hiding)的概念差异,帮助读者全面理解C++重载机制。
2025-11-27 21:33:51
1812
原创 协议全解析——底盘串口协议 + 高低字节 + 16 位数拼装 + 补码负数【小白一看就懂】
摘要:AGV底盘通信协议基于串口字节流,核心是将16位整数拆分为高/低字节传输。文章详解了协议帧结构、正负数拆分原理(如0x64=100,0xFF9C=-100)、补码运算及字节合并方法。重点包括:速度控制指令格式(bit7为方向位)、数据单位转换(如/100得m/s)、以及实用的C++解析代码。掌握这些原理可避免开发中常见的字节处理困惑,如高字节右移、低字节与0xFF运算等关键操作。
2025-11-26 09:09:19
934
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅