
Linux开发
文章平均质量分 77
Linux在秋名山
一起学习嵌入式!
展开
-
使用GTest进行单元测试的简明指南
本文介绍了如何使用Google Test(GTest)框架进行C++单元测试。通过一个简单的加法函数示例,展示了从零搭建测试环境的过程,包括项目结构、代码实现、测试编写和CMake配置。文章强调单元测试的重要性,它能早期发现bug、增强代码信心、提供文档和满足流程要求。示例项目包含头文件、实现文件和测试文件,使用CMake管理构建流程,演示了基本的EXPECT_EQ断言用法。最后指出单元测试的实际价值并提供了代码仓库地址,鼓励开发者将单元测试作为开发习惯。原创 2025-06-01 16:34:47 · 613 阅读 · 0 评论 -
为什么要学会Rebase,而不总是用Merge
摘要: 本文深入解析git rebase的核心机制,通过与git merge对比,揭示其"重写分支基础"的本质。当主分支更新时,rebase将特性分支的提交重新应用到最新主分支节点(如C→C'),形成线性历史,避免冗余合并节点。操作流程包括:创建分支→主分支更新→执行rebase→处理冲突。关键注意:rebase会改写提交历史,适合本地分支整理,但需谨慎用于已共享的远程分支。掌握该技巧可使Git历史更简洁清晰。(150字)原创 2025-05-24 21:09:13 · 727 阅读 · 0 评论 -
Git时间旅行:优雅地改写历史提交
本文介绍了如何在 Git 中优雅且安全地修改提交历史。首先,文章解释了 Git 历史的本质,强调每个提交都有唯一的哈希值,任何修改都会生成新的哈希。接着,文章详细讲解了在个人分支上修改历史的方法,包括使用 --amend 修改最近一次提交和通过 rebase 修改更早的提交。最后,文章提醒在多人协作中修改历史的风险,建议谨慎使用强制推送,并提出了三个问题以帮助判断是否适合修改历史。文章旨在帮助开发者更好地维护 Git 提交记录,同时避免在协作中引发问题。原创 2025-05-18 12:06:50 · 361 阅读 · 0 评论 -
Git Merge实战手册:分支合并的智慧
本文详细介绍了Git合并的原理、策略及冲突解决方法。合并的本质是寻找两个分支的共同祖先,通过差异对比生成新版本。常见的合并策略包括普通合并(Fast-Forward)、保留历史的合并(--no-ff)和压缩合并(Squash),分别适用于不同场景。合并冲突时,Git会标记冲突部分,开发者需手动解决并提交。文章还提供了合并前的预演、日志分析、更新本地分支等建议,帮助开发者避免常见问题,提升团队协作效率。掌握这些技巧,能有效应对合并中的各种挑战。原创 2025-05-10 15:50:59 · 274 阅读 · 0 评论 -
C++ 数据结构之std::vector介绍
std::vector是C++标准库中的动态数组,能够自动管理内存大小,适用于处理不确定数量的数据。其关键特性包括动态伸缩、快速访问和内存连续排列。核心操作包括创建与初始化、增删元素和随机访问。进阶操作涉及处理动态对象,如游戏中的敌人。性能优化建议包括预分配空间、选择正确的构造方式、高效删除技巧和利用现代C++特性。避坑指南提醒避免盲目使用[]操作符、在循环中反复扩容和忽视迭代器失效问题。std::vector是处理动态数组时的首选工具,合理使用可显著提升程序效率。原创 2025-05-02 22:27:48 · 198 阅读 · 0 评论 -
C++ UML 类图介绍
UML类图是面向对象分析与设计中的核心工具,用于描述系统的静态结构。它通过展示类、接口、属性、方法及其之间的关系,帮助开发者理解系统架构,减少沟通成本,并为系统实现提供可视化方案。类图的核心组成部分包括类(Class)和接口(Interface),类用矩形表示,分为类名、属性和方法三部分,接口则用带<<interface>>的矩形表示,仅包含方法声明。类之间的关系包括依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Compositi原创 2025-04-03 21:40:37 · 1012 阅读 · 0 评论 -
在C语言中,可以用free释放NULL吗?
在C语言中,动态分配的内存需要通过free函数手动释放,以避免内存泄漏。当指针可能为空时,调用free(ptr)是否安全?根据C99标准,free函数在ptr为空指针时不执行任何操作,因此释放空指针是安全的,不会导致程序崩溃或未定义行为。这一特性简化了代码编写,并提高了程序的健壮性。在实际编程中,建议在释放指针后将其设置为NULL,以避免悬空指针问题。这一设计避免了额外的检查负担,确保了free(NULL)的安全性。原创 2025-03-14 21:46:47 · 366 阅读 · 0 评论 -
C++ 格式化输出浮点数
在性能分析或日志记录中,打印时间戳并比较其差异时,C++默认的浮点数输出格式可能导致时间戳显示不直观。默认情况下,C++会根据数值大小自动选择固定小数格式或科学计数法格式,当数值超出[1e-4, 1e6]范围时,会使用科学计数法。为了解决这一问题,可以使用std::fixed强制浮点数以固定小数格式输出,并结合std::setprecision控制小数点后的位数。通过这种方式,可以确保时间戳以固定小数格式输出,清晰展示具体的时间值。原创 2025-02-28 18:51:54 · 338 阅读 · 0 评论 -
Windows安装Ubuntu24.04双系统指南
本文详细介绍了在Windows电脑上安装Ubuntu 24.04双系统的步骤。首先,准备工作包括备份数据、下载Ubuntu ISO镜像、制作启动U盘,并通过磁盘管理为Ubuntu腾出至少50GB的空间。接着,系统设置部分指导用户关闭Windows的快速启动功能,并在BIOS中确保启动模式为UEFI、关闭安全启动、将SATA配置为AHCI模式。最后,安装Ubuntu的步骤包括从U盘启动、选择语言、键盘布局、网络连接、安装方式(选择与Windows共存)、创建用户、选择时区等。安装完成后,用户可以通过GRUB菜原创 2025-02-15 12:24:32 · 3649 阅读 · 1 评论 -
如何将tag推送到远程仓库
在多人协作的软件开发项目中,tag(标签)是Git中用于标记和管理版本的重要机制。通过为特定版本打上标签,可以方便集成人员拉取代码,提高版本的可追溯性。推送标签到远程仓库的操作包括:推送单个标签(git push origin <tag_name>)、推送多个标签(git push origin <tag_name_1> <tag_name_2>)、推送所有本地标签(git push origin --tags)以及删除远程标签(git push origin --del原创 2024-12-07 17:40:11 · 825 阅读 · 0 评论 -
GDB调试进阶
在实际工作中,掌握这些高级功能可以大大提高开发和调试效率。如果你还没用过这些功能,不妨在下次调试中尝试一下~最后,欢迎大家关注我的公众号《嵌入式3分钟》,一起学习嵌入式~原创 2024-11-30 20:25:30 · 507 阅读 · 0 评论 -
SSH免密登陆的原理与应用
SSH免密登录通过非对称加密技术实现,使用公钥和私钥进行身份验证,提高了登录效率和安全性。其工作原理包括连接建立、公钥验证、挑战-响应和响应验证四个步骤。具体应用时,首先在客户端生成密钥对,然后将公钥配置到远程服务器的authorized_keys文件中,最后即可实现免密登录。为确保安全,需正确设置远程服务器上相关文件的权限。这种方法不仅减少了密码输入的麻烦,还降低了密码泄露的风险。原创 2024-10-15 08:43:02 · 788 阅读 · 0 评论 -
GDB基本使用指南
GDB(GNU Debugger)是一个强大的调试工具,主要用于调试 C、C++ 和其他语言编写的程序。它让我们可以监控、控制程序的执行,从而查找并修复错误。原创 2024-10-15 08:41:47 · 502 阅读 · 0 评论 -
Float类型的有效位数有几位
C语言中的Float类型是单精度浮点数,占用4个字节(32位),按照IEEE 754标准存储。Float类型的有效位数是7位,这意味着它可以精确表示7位十进制数。当数值超过16777216时,Float类型无法精确表示所有整数,导致精度丢失。例如,Float可以表示16777218,但无法表示16777217,因为后者的有效位数超过了24位二进制的限制。通过理解有效位数和科学计数法,可以更好地掌握Float类型的精度和表示范围。原创 2024-09-16 11:27:21 · 2397 阅读 · 0 评论 -
Linux 如何将pwd的结果同步复制到剪贴板
pwd命令用于显示当前路径,但通常我们还需要复制路径,操作繁琐。通过结合xclip工具,可以实现显示路径的同时将其复制到剪贴板。具体步骤为:安装xclip,使用echo -n $(pwd) | xclip -selection clipboard && pwd命令,既显示路径又复制路径。为简化操作,可以将该命令设置为别名cpwd,并添加到.bashrc或.zshrc中。此外,通过X11转发功能,cpwd命令也可在远程登录时使用,方便复制远程路径。这一方法显著提升了路径复制的效率,适用于本地和原创 2024-09-07 10:40:46 · 1117 阅读 · 0 评论 -
Linux 如何存储Core dump文件
在Linux开发中,程序崩溃如Segmentation fault是常见问题,尤其在问题不易复现或处于生产环境时,直接使用gdb调试效率较低。此时,core dump文件的重要性凸显,它是程序崩溃时自动生成的内存快照,包含寄存器状态、调用栈等信息,可用于分析崩溃原因。默认情况下,Linux可能不会生成core dump文件,需通过ulimit -c unlimited解除大小限制,并配置/proc/sys/kernel/core_pattern指定存储路径。通过编写故意崩溃的C程序,可验证core dump原创 2024-08-31 14:45:47 · 719 阅读 · 0 评论