<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FairLikeSnow的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/FairLikeSnow</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; FairLikeSnow]]></copyright><item><title><![CDATA[最简单的生产者-消费者模式]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/159389178</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/159389178</guid><author>FairLikeSnow</author><pubDate>Mon, 23 Mar 2026 16:01:48 +0800</pubDate><description><![CDATA[生产者-消费之]]></description><category></category></item><item><title><![CDATA[ROS2组件机制]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/159047455</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/159047455</guid><author>FairLikeSnow</author><pubDate>Sat, 14 Mar 2026 14:13:53 +0800</pubDate><description><![CDATA[ROS2组件机制]]></description><category></category></item><item><title><![CDATA[Protobuf c++使用]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/154411813</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/154411813</guid><author>FairLikeSnow</author><pubDate>Wed, 05 Nov 2025 00:28:55 +0800</pubDate><description><![CDATA[Protobuf（Protocol Buffers）是 Google 开发的一种高效的结构化数据序列化工具，可用于数据存储、通信协议等场景。体积更小：二进制编码，数据压缩率高；解析更快：无需解析字符串，效率是 JSON 的 5-10 倍；跨语言兼容：支持 C++、Python、Java 等多种语言；可扩展性强：新增字段不影响旧版本解析。]]></description><category></category></item><item><title><![CDATA[ROS2-CMake学习]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/153526503</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/153526503</guid><author>FairLikeSnow</author><pubDate>Sat, 18 Oct 2025 16:53:26 +0800</pubDate><description><![CDATA[跨平台构建系统生成器生成 Makefile（Linux）、Visual Studio 项目（Windows）等ROS 2 的官方构建工具（通过 ament_cmake）ROS 2 的 CMake 构建系统基于 CMake，提供 ROS 2 特有功能简化依赖管理、消息生成、包导出等目录结构├── msg/├── srv/示例消息# 消息定义示例服务# 请求---# 响应示例动作# 目标---# 结果---# 反馈# 1. 生成接口# 2. 创建节点rclcpp。]]></description><category></category></item><item><title><![CDATA[ROS2_YAML参数系统完整指南]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/151974701</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/151974701</guid><author>FairLikeSnow</author><pubDate>Mon, 22 Sep 2025 22:40:41 +0800</pubDate><description><![CDATA[ROS2参数系统是ROS2框架提供的配置管理机制，允许节点在运行时获取配置参数。命令行参数Launch文件参数默认值calibration配置文件 > 包内配置文件 > 默认值1. 节点启动2. 调用loadConfiguration()3. 在loadConfiguration()中：- 检查/var/psi/calibration/config.yaml- 如果不存在，检查包内config.yaml- 使用set_parameter()设置参数到参数服务器。]]></description><category></category></item><item><title><![CDATA[Python3练习题]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/151456124</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/151456124</guid><author>FairLikeSnow</author><pubDate>Mon, 15 Sep 2025 23:55:51 +0800</pubDate><description><![CDATA[需求：创建自定义模块 “math_tools.py”，包含 “add（加法）、multiply（乘法）、is_prime（判断质数）” 三个函数在主脚本中导入该模块，调用函数并测试步骤 1：创建模块文件 “math_tools.py”# math_tools.py（自定义模块）"""加法运算""""""乘法运算""""""判断n是否为质数（质数：大于1的整数，仅能被1和自身整除）"""if n <= 1:if n == 2:# 检查3到sqrt(n)的奇数步骤 2：主脚本调用模块。]]></description><category></category></item><item><title><![CDATA[作为一个C++老鸟，看我如何一天学会 Python]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/151290258</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/151290258</guid><author>FairLikeSnow</author><pubDate>Mon, 08 Sep 2025 23:17:49 +0800</pubDate><description><![CDATA[构造函数，相当于C++的构造函数self.name = name # 相当于public成员self.age = age # 相当于public成员。]]></description><category></category></item><item><title><![CDATA[Ubuntu系统下，截图软件（飞书，flameshot等）无法正常截图与编辑]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/151065099</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/151065099</guid><author>FairLikeSnow</author><pubDate>Mon, 01 Sep 2025 11:08:55 +0800</pubDate><description><![CDATA[Ubuntu系统下，截图软件（飞书，flameshot等）无法正常截图与编辑]]></description><category></category></item><item><title><![CDATA[如何定义服务接口]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/150697660</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/150697660</guid><author>FairLikeSnow</author><pubDate>Sun, 24 Aug 2025 13:28:19 +0800</pubDate><description><![CDATA[在包中创建 srv 目录并添加服务定义文件mkdir srv# 请求部分：三个整数 int64 aint64 bint64 c--- # 响应部分：求和结果 int64 sum。]]></description><category></category></item><item><title><![CDATA[工作空间与功能包]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/150639497</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/150639497</guid><author>FairLikeSnow</author><pubDate>Sat, 23 Aug 2025 14:13:48 +0800</pubDate><description><![CDATA[举个例子，我们手上有很多红豆、绿豆、黄豆，假设都放在一个袋子里，如果只想把黄豆都拿出来，是不是得在五颜六色的豆子里一颗一颗都找出来，数量越多，你就越头疼；每个机器人可能有很多功能，比如移动控制、视觉感知、自主导航等，如果我们把这些功能的源码都放到一起当然也是可以的，但是当我们想把其中某些功能分享给别人时，就会发现代码都混合到了一起，很难拆分出来。想象一下你的系统是一个巨大的图书馆（System Library），而你的ROS2工作空间是你刚写完的一本新书（Your New Package）。]]></description><category></category></item><item><title><![CDATA[安装Tailscale]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/150419813</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/150419813</guid><author>FairLikeSnow</author><pubDate>Fri, 22 Aug 2025 17:11:30 +0800</pubDate><description><![CDATA[如果返回 /usr/bin/tailscale 或类似路径，说明已安装但 sudo 可能找不到它。如果 which tailscale 没有输出，说明安装失败，重新执行安装步骤。Tailscale 的后台服务 tailscaled 必须运行。检查 tailscaled 服务是否运行。检查 tailscale 命令是否存在。]]></description><category></category></item><item><title><![CDATA[Bash常用操作总结]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/150416146</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/150416146</guid><author>FairLikeSnow</author><pubDate>Sat, 16 Aug 2025 15:50:59 +0800</pubDate><description><![CDATA[变量名区分大小写，通常大写表示常量，小写表示变量。定义：变量名=值 ( 等号两边不能有空格！使用：$变量名 或 ${变量名} (推荐后者，明确边界)。示例：name="Alice" # 定义变量" # 使用变量echo $greeting # 输出: Hello, Alice!echo "My name is ${name}." # 输出: My name is Alice. (明确边界)]]></description><category></category></item><item><title><![CDATA[SSH远程登录]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/150223671</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/150223671</guid><author>FairLikeSnow</author><pubDate>Tue, 12 Aug 2025 10:15:41 +0800</pubDate><description><![CDATA[大多数Linux/windows/Mac都已经预装了openssh，无需额外安装。命令：ssh-copy-id bing@132.168.1.123 至此要输入密码。使用别名的登录方式，需打开~/.ssh/config文件，追加一下内容。2.需安装ssh客户端组件，由openssh-client包提供。2.需要安装并运行ssh服务，由open-server包提供。1.使用服务的主机，它向服务发起请求来获取所需的资源和服务。1.安装VSCode插件：Remote - SSH。]]></description><category></category></item><item><title><![CDATA[容器技术之docker]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/150210413</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/150210413</guid><author>FairLikeSnow</author><pubDate>Mon, 11 Aug 2025 17:28:47 +0800</pubDate><description><![CDATA[Docker是一个用于构建build 运行run 传送share应用程序的平台Docker是一个开源的应用容器引擎，让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中，然后发布到任何流行的Linux机器上，也可以实现虚拟化。容器完全使用沙盒机制，相互之间不会存在任何接口。几乎没有性能开销，可以很容易的在机器和数据中心运行。最重要的是，他们不依赖于任何语言、框架或者包装系统。]]></description><category></category></item><item><title><![CDATA[linux下如何安装软件]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/149674889</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/149674889</guid><author>FairLikeSnow</author><pubDate>Sun, 27 Jul 2025 00:35:10 +0800</pubDate><description><![CDATA[区别：full-upgrade 会处理依赖冲突（可能删除阻碍升级的旧包）从配置的软件源（/etc/apt/sources.list）下载软件。作用：从服务器获取最新的软件包列表（不会升级已安装软件）缓存位置：/var/lib/apt/lists/提供软件安装、更新、卸载等全生命周期管理。频率：每次安装新软件前都应执行。完全升级（可能删除旧包）完全卸载（包括配置文件）安全升级（不删除旧包）自动处理软件依赖关系。]]></description><category></category></item><item><title><![CDATA[Linux c++ CMake常用操作]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/149670035</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/149670035</guid><author>FairLikeSnow</author><pubDate>Sat, 26 Jul 2025 19:37:38 +0800</pubDate><description><![CDATA[添加子目录：每个模块（子目录）中都需要一个CMakeLists.txt文件，最外层也有该文件，并且在该文件中添加子目录路径：add_subdirectoory()。需要子目录的原因：在一个项目中，不可能用一个cpp文件包含所有的功能，故分为多个模块在不同目录中。在每个模块中，可以单独编译，再和其他模块解耦（组合）。可见生成了libdyStudent.so动态库，接着运行。src中的CMakeLists.txt。最外层的CMakeLists.txt。二、方式2-静态库的方式。三、方式3-动态库的方式。]]></description><category></category></item><item><title><![CDATA[windows下c++打印图片的封装]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/149329963</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/149329963</guid><author>FairLikeSnow</author><pubDate>Mon, 14 Jul 2025 14:30:07 +0800</pubDate><description><![CDATA[最近工作遇到打印图片的功能，那么如何将图片打印出来呢？下面是封装好的工具，可以直接使用。]]></description><category></category></item><item><title><![CDATA[c++总结-05-模板与泛型编程]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/148461139</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/148461139</guid><author>FairLikeSnow</author><pubDate>Sat, 14 Jun 2025 23:37:07 +0800</pubDate><description><![CDATA[模板与泛型编程]]></description><category></category></item><item><title><![CDATA[c++总结-04-智能指针]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/148050987</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/148050987</guid><author>FairLikeSnow</author><pubDate>Sun, 25 May 2025 23:11:37 +0800</pubDate><description><![CDATA[• 线程安全：引用计数的增减是原子的（通过 std::atomic 实现），但对象本身的访问需要额外同步。• 内存占用：每个 shared_ptr 携带指向控制块的指针（通常为 16 字节）。• 不增加引用计数，但可检测资源是否有效（通过 lock() 获取临时 shared_ptr）。• 组成：引用计数、弱引用计数、删除器（Deleter）、分配器（Allocator）。• 存储成本较裸指针多了引用计数指针（和相关控制块-共享）• 接口慎用（蔓延问题）• 智能指针仅用于管理内存，不要用于管理非内存资源。]]></description><category></category></item><item><title><![CDATA[c++总结-03-move]]></title><link>https://blog.csdn.net/FairLikeSnow/article/details/148041280</link><guid>https://blog.csdn.net/FairLikeSnow/article/details/148041280</guid><author>FairLikeSnow</author><pubDate>Sun, 18 May 2025 22:22:23 +0800</pubDate><description><![CDATA[第二个warp()函数调用实参是右值，根据引用折叠规则，funcMiddle()函数接收的参数类型是右值引用，那么为什么却调用了调用func()的左值版本了呢？（2）转发：从main()函数中调用funcMiddle()函数，通过funcMiddle()函数调用funcLast()函数，这就叫做转发，funcMiddle()函数被当作一个跳板函数。但是C++中不允许对引用再进行引用，对于上述情况的处理有如下的规则：所有的折叠引用最终都代表一个引用，要么是左值引用，要么是右值引用。这就是移动操作的来源。]]></description><category></category></item></channel></rss>