[{"title":"这个博客是怎么搭起来的","abbrlink":"build-my-blog","date":"2026-11-11T21:20:00+08:00","updated":"2026-11-11T21:20:00+08:00","tags":["Astro","EdgeOne","Waline"],"categories":["技术"],"desc":"从 Astro 主题到 EdgeOne Pages 部署，再到自建 Waline 评论，记录这个博客的完整搭建过程。","wordCount":464,"url":"/posts/build-my-blog/"},{"title":"你好，世界","abbrlink":"hello-world","date":"2026-11-11T21:00:00+08:00","updated":"2026-11-11T21:00:00+08:00","tags":["随笔"],"categories":["生活"],"desc":"这是这个博客的第一篇文章，说说为什么开始写，以及准备写些什么。","wordCount":271,"url":"/posts/hello-world/"},{"title":"Ubuntu 26.04 + GNOME Wayland 设置视频动态壁纸（Hidamari 实测可用）","abbrlink":"ubuntu-26-04-gnome-wayland-she-zhi-shi-pin-dong-tai-bi-zhi","date":"2026-11-11T19:13:39+08:00","tags":[],"categories":["Linux 桌面"],"desc":"判断能不能用，只看工具是否支持，不要看教程年份GNOME 用 Mutter，不实现 wlr-layer-shell，所以 mpvpaper…","wordCount":1452,"url":"/posts/ubuntu-26-04-gnome-wayland-she-zhi-shi-pin-dong-tai-bi-zhi/"},{"title":"ROS2系列教程：Moveit2真机控制与系列总结（原理）","abbrlink":"ros2-xi-lie-jiao-cheng-moveit2-zhen-ji-kong-zhi-yu-xi-lie","date":"2026-11-08T23:22:16+08:00","tags":[],"categories":["ROS2"],"desc":"阶段篇号主题掌握的关键能力入门1-12ROS2 基础节点/话题/服务/参数/Action/launch/tf2，能独立开发节点机器人学13-15运动学与坐标位姿、tf2 坐标变换、TF…","wordCount":2381,"url":"/posts/ros2-xi-lie-jiao-cheng-moveit2-zhen-ji-kong-zhi-yu-xi-lie/"},{"title":"ROS2系列教程：Moveit2进阶（抓取/OMPL/自定义规划）","abbrlink":"ros2-xi-lie-jiao-cheng-moveit2-jin-jie-zhua-qu-ompl-zi-ding","date":"2026-11-08T23:21:51+08:00","tags":[],"categories":["ROS2"],"desc":"理解规划器插件机制，能让你在特殊需求（狭窄通道、非标准成本函数）时不至于束手无策。","wordCount":3227,"url":"/posts/ros2-xi-lie-jiao-cheng-moveit2-jin-jie-zhua-qu-ompl-zi-ding/"},{"title":"ROS2系列教程：Moveit2碰撞检测与避障","abbrlink":"ros2-xi-lie-jiao-cheng-moveit2-peng-zhuang-jian-ce-yu-bi","date":"2026-11-08T23:21:18+08:00","tags":[],"categories":["ROS2"],"desc":"把前面学的串成真本事——用 Pick & Place 流程实现\"感知 → 抓取 → 搬运 → 放置\"，深入 OMPL 各规划器（RRT/RRTConnect/BIT*）的选型与调参…","wordCount":3755,"url":"/posts/ros2-xi-lie-jiao-cheng-moveit2-peng-zhuang-jian-ce-yu-bi/"},{"title":"Ubuntu 自动登录后 GNOME 远程桌面连不上？一次登录钥匙环锁定的排查与永久修复","abbrlink":"ubuntu-zi-dong-deng-lu-hou-gnome-yuan-cheng-zhuo-mian-lian","date":"2026-11-03T20:07:42+08:00","tags":[],"categories":["Linux 桌面"],"desc":"自动登录 + GNOME 远程桌面「连不上但解锁后能用」，几乎都是登录钥匙环被锁定导致的判断依据是 GRD 日志里的…","wordCount":2195,"url":"/posts/ubuntu-zi-dong-deng-lu-hou-gnome-yuan-cheng-zhuo-mian-lian/"},{"title":"GNOME 50 (Wayland) 桌面网速悬浮窗：TopHat 部署实录与三个踩坑","abbrlink":"gnome-50-wayland-zhuo-mian-wang-su-xuan-fu-chuang-tophat-bu","date":"2026-11-03T20:05:52+08:00","tags":[],"categories":["Linux 桌面"],"desc":"想在 Ubuntu 的 GNOME 桌面上常驻一个「网速悬浮窗」：不占顶栏、不打断工作、全屏看视频或跑下载时也能瞄一眼实时上下行速率。本文记录在一台 GNOME Shell 50.1 +…","wordCount":1355,"url":"/posts/gnome-50-wayland-zhuo-mian-wang-su-xuan-fu-chuang-tophat-bu/"},{"title":"ROS2系列教程：Moveit2运动学（IK/FK与运动学插件）","abbrlink":"ros2-xi-lie-jiao-cheng-moveit2-yun-dong-xue-ik-fk-yu-yun","date":"2026-10-28T16:03:46+08:00","tags":[],"categories":["ROS2"],"desc":"理解插件的机制，比背 API 更有价值。下面写一个\"最小可用\"的自定义 IK 求解器插件。","wordCount":4127,"url":"/posts/ros2-xi-lie-jiao-cheng-moveit2-yun-dong-xue-ik-fk-yu-yun/"},{"title":"ROS2系列教程：Moveit2仿真与运动规划（基础）","abbrlink":"ros2-xi-lie-jiao-cheng-moveit2-fang-zhen-yu-yun-dong-gui","date":"2026-10-28T16:03:24+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 36 篇：MoveIt2 仿真与运动规划（基础）。第 35 篇我们装好了 MoveIt2、写了一个两连杆机械臂的 URDF，并用…","wordCount":4084,"url":"/posts/ros2-xi-lie-jiao-cheng-moveit2-fang-zhen-yu-yun-dong-gui/"},{"title":"ROS2系列教程：Moveit2环境与机械臂建模准备","abbrlink":"ros2-xi-lie-jiao-cheng-moveit2-huan-jing-yu-ji-xie-bi-jian","date":"2026-10-28T16:02:55+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 35 篇：MoveIt2 环境与机械臂建模准备。第 31~34 篇我们完成了移动底盘机器人的完整实战（建图、导航、任务、安全）。。第 35…","wordCount":3370,"url":"/posts/ros2-xi-lie-jiao-cheng-moveit2-huan-jing-yu-ji-xie-bi-jian/"},{"title":"ROS2系列教程：上位机建图与导航（原理综合）","abbrlink":"ros2-xi-lie-jiao-cheng-shang-wei-ji-jian-tu-yu-dao-hang","date":"2026-10-18T22:54:11+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 33 篇：上位机建图与导航（原理综合）。第 32 篇我们把下位机的数据（里程计、IMU、传感器）接进了 ROS2，实现了\"软硬结合\"。但机器人拿到数据之后要干什么？…","wordCount":4763,"url":"/posts/ros2-xi-lie-jiao-cheng-shang-wei-ji-jian-tu-yu-dao-hang/"},{"title":"ROS2系列教程：完整实体机器人项目实战（软硬协同）","abbrlink":"ros2-xi-lie-jiao-cheng-wan-zheng-shi-ti-ji-qi-ren-xiang-mu","date":"2026-10-18T22:53:40+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 34 篇：完整实体机器人项目实战（软硬协同）。第 31~33 篇分别完成了硬件搭建、软硬通信、建图导航三件大事…","wordCount":4774,"url":"/posts/ros2-xi-lie-jiao-cheng-wan-zheng-shi-ti-ji-qi-ren-xiang-mu/"},{"title":"ROS2系列教程：嵌入式控制与通信开发（原理+仿真）","abbrlink":"ros2-xi-lie-jiao-cheng-qian-ru-shi-kong-zhi-yu-tong-xin-kai","date":"2026-10-18T22:53:18+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 32 篇：嵌入式控制与通信开发（原理+仿真）。第 31 篇我们搭好了实体机器人的硬件骨架。但硬件只是\"尸体\"…","wordCount":3970,"url":"/posts/ros2-xi-lie-jiao-cheng-qian-ru-shi-kong-zhi-yu-tong-xin-kai/"},{"title":"ROS2系列教程：实体机器人硬件搭建（原理）","abbrlink":"ros2-xi-lie-jiao-cheng-shi-ti-ji-qi-ren-ying-jian-da-jian","date":"2026-10-18T22:52:57+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 31 篇：实体机器人硬件搭建（原理）。第 26-30 篇我们打通了硬件控制全链路：电机、舵机、传感器、MicroROS、ROS2-Control…","wordCount":3638,"url":"/posts/ros2-xi-lie-jiao-cheng-shi-ti-ji-qi-ren-ying-jian-da-jian/"},{"title":"ROS2系列教程：控制硬件实战（舵机与传感器，原理）","abbrlink":"ros2-xi-lie-jiao-cheng-kong-zhi-ying-jian-shi-zhan-duo-ji","date":"2026-10-18T22:52:31+08:00","tags":[],"categories":["ROS2"],"desc":"本阶段（第 26-30 篇）我们打通了机器人硬件全链路篇主题核心收获26嵌入式点灯GPIO 本质，嵌入式开发流程27MicroROSMCU 直接成为 ROS2…","wordCount":3361,"url":"/posts/ros2-xi-lie-jiao-cheng-kong-zhi-ying-jian-shi-zhan-duo-ji/"},{"title":"ROS2系列教程：控制硬件实战（电机驱动，原理）","abbrlink":"ros2-xi-lie-jiao-cheng-kong-zhi-ying-jian-shi-zhan-dian-ji","date":"2026-10-14T00:50:45+08:00","tags":[],"categories":["ROS2"],"desc":"/ real_motor_hw.cpp：真实电机硬件接口（串口/MicroROS 连接下位机）public:// 声明关节及其接口// 基类解析 URDF 的 <ros2_control> 配置//…","wordCount":3915,"url":"/posts/ros2-xi-lie-jiao-cheng-kong-zhi-ying-jian-shi-zhan-dian-ji/"},{"title":"ROS2系列教程：ROS2-Control与控制器（原理）","abbrlink":"ros2-xi-lie-jiao-cheng-ros2-control-yu-kong-zhi-qi-yuan-li","date":"2026-10-14T00:50:11+08:00","tags":[],"categories":["ROS2"],"desc":"官方控制器不够用时，可以写自定义控制器。","wordCount":3834,"url":"/posts/ros2-xi-lie-jiao-cheng-ros2-control-yu-kong-zhi-qi-yuan-li/"},{"title":"ROS2系列教程：MicroROS接入（原理+仿真）","abbrlink":"ros2-xi-lie-jiao-cheng-microros-jie-ru-yuan-li-fang-zhen","date":"2026-10-14T00:49:47+08:00","tags":[],"categories":["ROS2"],"desc":"本文详解ROS2 MicroROS接入原理与仿真实践，解决嵌入式设备与上位机通信的通用性难题。通过MicroROS架构（Client+Agent+传输层），实现MCU作为ROS2节点无缝接入系统…","wordCount":4701,"url":"/posts/ros2-xi-lie-jiao-cheng-microros-jie-ru-yuan-li-fang-zhen/"},{"title":"ROS2系列教程：嵌入式开发从点灯开始（原理）","abbrlink":"ros2-xi-lie-jiao-cheng-qian-ru-shi-kai-fa-cong-dian-deng","date":"2026-10-14T00:49:09+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 26 篇：嵌入式开发从点灯开始（原理）。第 25 篇我们完成了 Nav2 导航阶段（21-25）的全部内容，前面的教程全都是在仿真环境里运行：Gazebo…","wordCount":4023,"url":"/posts/ros2-xi-lie-jiao-cheng-qian-ru-shi-kai-fa-cong-dian-deng/"},{"title":"ROS2系列教程：Nav2进阶实践（自定义算法、插件与行为树）","abbrlink":"ros2-xi-lie-jiao-cheng-nav2-jin-jie-shi-jian-zi-ding-yi","date":"2026-10-14T00:48:26+08:00","tags":[],"categories":["ROS2"],"desc":"/ 继承 nav2_core::Controller，实现 5 个纯虚接口public:// 1. 配置：从参数获取配置// 2. 清理与激活// 3. 核心：计算速度指令（每 control…","wordCount":2994,"url":"/posts/ros2-xi-lie-jiao-cheng-nav2-jin-jie-shi-jian-zi-ding-yi/"},{"title":"ROS2系列教程：Nav2导航仿真实战（全局+局部规划）","abbrlink":"ros2-xi-lie-jiao-cheng-nav2-dao-hang-fang-zhen-shi-zhan","date":"2026-09-08T18:08:19+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 24 篇：Nav2 导航仿真实战（全局+局部规划）。至此我们已有地图（第 21/22 篇）、有定位（第 23 篇），就差\"自己走路\"…","wordCount":2993,"url":"/posts/ros2-xi-lie-jiao-cheng-nav2-dao-hang-fang-zhen-shi-zhan/"},{"title":"ROS2系列教程：AMCL定位与地图","abbrlink":"ros2-xi-lie-jiao-cheng-amcl-ding-wei-yu-di-tu","date":"2026-09-08T18:07:51+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 23 篇：AMCL 定位与地图。前两篇我们学会了建图——slam_toolbox 和 Cartographer 都能产出地图…","wordCount":2216,"url":"/posts/ros2-xi-lie-jiao-cheng-amcl-ding-wei-yu-di-tu/"},{"title":"ROS2系列教程：Cartographer建图进阶","abbrlink":"ros2-xi-lie-jiao-cheng-cartographer-jian-tu-jin-jie","date":"2026-09-08T18:07:27+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 22 篇：Cartographer 建图进阶。上一篇用 slam_toolbox 建出了第一张地图，但它的回环能力在长廊、大场地、复杂环境里会吃力——累积误差难以消除…","wordCount":2189,"url":"/posts/ros2-xi-lie-jiao-cheng-cartographer-jian-tu-jin-jie/"},{"title":"ROS2系列教程：SLAM建图（slam_toolbox）","abbrlink":"ros2-xi-lie-jiao-cheng-slam-jian-tu-slam-toolbox","date":"2026-09-08T18:07:03+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 21 篇：SLAM 建图（slam_toolbox）。前 20 篇我们完成了建模仿真阶段——小车有模型、有物理、有传感器，但\"它不知道自己在哪里…","wordCount":2287,"url":"/posts/ros2-xi-lie-jiao-cheng-slam-jian-tu-slam-toolbox/"},{"title":"ROS2系列教程：机器人模型导入仿真实战","abbrlink":"ros2-xi-lie-jiao-cheng-ji-qi-ren-mo-xing-dao-ru-fang-zhen","date":"2026-09-08T18:06:24+08:00","tags":[],"categories":["ROS2"],"desc":"大型 ROS2 工程通常拆成两个功能包：分工原则：description 只管\"机器人长什么样\"，bringup 管\"系统怎么跑\"。导航、SLAM 等后续阶段都在 bringup 里加 launch…","wordCount":2924,"url":"/posts/ros2-xi-lie-jiao-cheng-ji-qi-ren-mo-xing-dao-ru-fang-zhen/"},{"title":"ROS2系列教程：Gazebo插件（关节控制/IMU/激光雷达）","abbrlink":"ros2-xi-lie-jiao-cheng-gazebo-cha-jian-guan-jie-kong-zhi","date":"2026-09-06T10:19:29+08:00","tags":[],"categories":["ROS2"],"desc":"本文是 ROS2 系列教程的第 19 篇：Gazebo 插件（关节控制/IMU/激光雷达）。上一篇小车能在 Gazebo 里跑动了，但它还是个\"瞎子\"——没有传感器，不知道周围有什么…","wordCount":3019,"url":"/posts/ros2-xi-lie-jiao-cheng-gazebo-cha-jian-guan-jie-kong-zhi/"},{"title":"ROS2系列教程：Gazebo仿真基础与世界搭建","abbrlink":"ros2-xi-lie-jiao-cheng-gazebo-fang-zhen-ji-chu-yu-shi-jie","date":"2026-09-06T10:18:51+08:00","tags":[],"categories":["ROS2"],"desc":"内容是关于ROS2第18篇，Gazebo仿真基础与世界搭建。摘要需简洁概括核心内容。注意字数限制。</think>本文是ROS2系列第18篇，讲解Gazebo仿真基础与世界搭建…","wordCount":2796,"url":"/posts/ros2-xi-lie-jiao-cheng-gazebo-fang-zhen-ji-chu-yu-shi-jie/"},{"title":"ROS2系列教程：Xacro参数化建模","abbrlink":"ros2-xi-lie-jiao-cheng-xacro-can-shu-hua-jian-mo","date":"2026-09-06T10:18:11+08:00","tags":[],"categories":["ROS2"],"desc":"回顾上一篇的差速小车，你实际感受到了：Xacro 是 URDF 的超集：一个合法的 Xacro 文件经过 命令展开后，得到的是标准 URDF。它新增的能力：ROS2 中 由同名包提供，启动时用…","wordCount":3192,"url":"/posts/ros2-xi-lie-jiao-cheng-xacro-can-shu-hua-jian-mo/"},{"title":"ROS2系列教程：URDF机器人建模（link与joint）","abbrlink":"ros2-xi-lie-jiao-cheng-urdf-ji-qi-ren-jian-mo-link-yu-joint","date":"2026-09-06T10:17:46+08:00","tags":[],"categories":["ROS2"],"desc":"URDF 是一种 XML 格式的机器人描述文件，用树状结构描述机器人的物理组成：刚体（link）和关节（joint）。它回答三个问题：URDF 是 ROS1 时代的产物，被 ROS2 完整继承…","wordCount":4134,"url":"/posts/ros2-xi-lie-jiao-cheng-urdf-ji-qi-ren-jian-mo-link-yu-joint/"},{"title":"ROS2系列教程：TF树与多坐标系管理（C++/Python）","abbrlink":"ros2-xi-lie-jiao-cheng-tf-shu-yu-duo-zuo-biao-xi-guan-li-c","date":"2026-09-06T10:17:26+08:00","tags":[],"categories":["ROS2"],"desc":"上一篇文章里，每条变换是\"父 → 子\"单向的。当你把所有变换按父子关系连起来，就得到一棵TF 树（TF Tree）map│odom│base_link/…","wordCount":5577,"url":"/posts/ros2-xi-lie-jiao-cheng-tf-shu-yu-duo-zuo-biao-xi-guan-li-c/"},{"title":"ROS2系列教程：tf2坐标变换详解（C++/Python）","abbrlink":"ros2-xi-lie-jiao-cheng-tf2-zuo-biao-bian-huan-xiang-jie-c","date":"2026-09-05T15:49:53+08:00","tags":[],"categories":["ROS2"],"desc":"查询” = 给定两个坐标系，返回它们之间的变换。例如：激光雷达检测到前方 1 米的墙（在laser坐标系），要换算到map坐标系，就需要的变换。","wordCount":5240,"url":"/posts/ros2-xi-lie-jiao-cheng-tf2-zuo-biao-bian-huan-xiang-jie-c/"},{"title":"ROS2系列教程：运动学基础（位姿与坐标变换）","abbrlink":"ros2-xi-lie-jiao-cheng-yun-dong-xue-ji-chu-wei-zi-yu-zuo","date":"2026-09-05T15:49:33+08:00","tags":[],"categories":["ROS2"],"desc":"\"，即从参考系出发依次施加 yaw → pitch → roll 的。","wordCount":5898,"url":"/posts/ros2-xi-lie-jiao-cheng-yun-dong-xue-ji-chu-wei-zi-yu-zuo/"},{"title":"ROS2系列教程：常用工具详解（ros2 CLI、rqt、RViz、ros2 bag、tf2基础）","abbrlink":"ros2-xi-lie-jiao-cheng-chang-yong-gong-ju-xiang-jie-ros2","date":"2026-09-05T15:49:12+08:00","tags":[],"categories":["ROS2"],"desc":"tf2是 ROS2 的坐标变换库：维护\"坐标系树\"，提供任意两个坐标系间的位姿变换。机器人上每个部件都有一个坐标系（base_link、laser、camera、map），tf2 让\"激光点坐标 →…","wordCount":3387,"url":"/posts/ros2-xi-lie-jiao-cheng-chang-yong-gong-ju-xiang-jie-ros2/"},{"title":"ROS2系列教程：launch文件与多节点启动（参数/条件/复用）","abbrlink":"ros2-xi-lie-jiao-cheng-launch-wen-jian-yu-duo-jie-dian-qi","date":"2026-09-05T15:48:51+08:00","tags":[],"categories":["ROS2"],"desc":"本篇文章系统掌握了 launch：最简多节点启动、参数传递（yaml/字典/launch 参数）、话题重映射、命名空间、条件控制、子 launch 包含、组与外部进程、事件处理器，以及调试技巧…","wordCount":3536,"url":"/posts/ros2-xi-lie-jiao-cheng-launch-wen-jian-yu-duo-jie-dian-qi/"},{"title":"ROS2系列教程：Action动作通信（带反馈长任务）","abbrlink":"ros2-xi-lie-jiao-cheng-action-dong-zuo-tong-xin-dai-fan-kui","date":"2026-09-05T15:48:29+08:00","tags":[],"categories":["ROS2"],"desc":"动作接口用.action文件定义，三部分用---# action/CountUntil.action —— 计数到目标值int32 target_number #…","wordCount":4256,"url":"/posts/ros2-xi-lie-jiao-cheng-action-dong-zuo-tong-xin-dai-fan-kui/"},{"title":"ROS2系列教程：参数Parameter与QoS策略","abbrlink":"ros2-xi-lie-jiao-cheng-can-shu-parameter-yu-qos-ce-l-e","date":"2026-09-04T13:45:33+08:00","tags":[],"categories":["ROS2"],"desc":"参数（Parameter）是节点的配置项：一个带类型的键值对，运行时可查询、可修改。参数让\"代码与配置分离\"——同样的节点，通过不同参数启动，就能适配不同机器人、不同环境。参数名（parameter…","wordCount":3748,"url":"/posts/ros2-xi-lie-jiao-cheng-can-shu-parameter-yu-qos-ce-l-e/"},{"title":"ROS2系列教程：服务Service通信（下）同步异步与回调组","abbrlink":"ros2-xi-lie-jiao-cheng-fu-wu-service-tong-xin-xia-tong-bu","date":"2026-09-04T13:44:49+08:00","tags":[],"categories":["ROS2"],"desc":"本篇文章把服务通信推向工程级：理解了同步/异步的底层机制（伪同步本质）、并发请求与多请求处理、回调组（互斥/可重入）与多线程执行器、超时与指数退避重试、服务与 QoS 的关系…","wordCount":4269,"url":"/posts/ros2-xi-lie-jiao-cheng-fu-wu-service-tong-xin-xia-tong-bu/"},{"title":"ROS2系列教程：服务Service通信（上）客户端与服务端","abbrlink":"ros2-xi-lie-jiao-cheng-fu-wu-service-tong-xin-shang-ke-hu","date":"2026-09-04T13:44:36+08:00","tags":[],"categories":["ROS2"],"desc":"沿用第 4 篇的包，添加验证接口可用本篇文章完成了服务通信的完整入门：理解了 Request/Response 模型与适用场景，用 Python 和 C++ 分别实现了服务端、同步客户端、异步客户端…","wordCount":3443,"url":"/posts/ros2-xi-lie-jiao-cheng-fu-wu-service-tong-xin-shang-ke-hu/"},{"title":"ROS2系列教程：话题Topic通信（下）自定义消息与周期","abbrlink":"ros2-xi-lie-jiao-cheng-hua-ti-topic-tong-xin-xia-zi-ding-yi","date":"2026-09-04T13:44:02+08:00","tags":[],"categories":["ROS2"],"desc":"定义 .msg/.srv 文件（接口包）→ colcon build 生成类型代码→ 发布者/订阅者 include/import 使用→ ros2 run 运行验证第 4 篇我们定义了（含…","wordCount":3728,"url":"/posts/ros2-xi-lie-jiao-cheng-hua-ti-topic-tong-xin-xia-zi-ding-yi/"},{"title":"ROS2系列教程：话题Topic通信（上）发布者与订阅者","abbrlink":"ros2-xi-lie-jiao-cheng-hua-ti-topic-tong-xin-shang-fa-bu","date":"2026-09-04T13:43:47+08:00","tags":[],"categories":["ROS2"],"desc":"本篇文章完成了话题通信的入门：理解了 Publish/Subscribe 模型的三大解耦优势、DDS 去中心化发现机制，用 Python 与 C++ 分别实现了发布者/订阅者并验证了跨语言通信…","wordCount":3438,"url":"/posts/ros2-xi-lie-jiao-cheng-hua-ti-topic-tong-xin-shang-fa-bu/"},{"title":"ROS2系列教程：package结构（CMake与Python两种包）","abbrlink":"ros2-xi-lie-jiao-cheng-package-jie-gou-cmake-yu-python","date":"2026-09-03T15:40:31+08:00","tags":[],"categories":["ROS2"],"desc":"ROS2 内置的std_msgs覆盖常见场景，但你的业务数据（比如\"机器人位姿 + 置信度 + 时间戳\"）往往是组合结构。这时需要自定义消息类型——定义一个.msg文件，rosidl…","wordCount":2949,"url":"/posts/ros2-xi-lie-jiao-cheng-package-jie-gou-cmake-yu-python/"},{"title":"ROS2系列教程：工作空间与colcon构建","abbrlink":"ros2-xi-lie-jiao-cheng-gong-zuo-kong-jian-yu-colcon-gou-jian","date":"2026-09-03T15:40:10+08:00","tags":[],"categories":["ROS2"],"desc":"本篇文章把 ROS2 从\"脚本\"提升到了\"工程\"：理解了工作空间四目录结构、package 的概念与两种构建类型（ament_python / ament_cmake），掌握了 colcon…","wordCount":3218,"url":"/posts/ros2-xi-lie-jiao-cheng-gong-zuo-kong-jian-yu-colcon-gou-jian/"},{"title":"ROS2系列教程：认识节点与ROS图","abbrlink":"ros2-xi-lie-jiao-cheng-ren-shi-jie-dian-yu-ros-tu","date":"2026-09-03T15:39:52+08:00","tags":[],"categories":["ROS2"],"desc":"在 ROS2 中，节点（Node）是一个负责执行特定任务的独立进程或进程内模块。一个机器人系统通常由几十个节点组成：有的节点负责读取激光雷达数据，有的负责做定位，有的负责规划路径，有的负责驱动电机…","wordCount":4693,"url":"/posts/ros2-xi-lie-jiao-cheng-ren-shi-jie-dian-yu-ros-tu/"},{"title":"ROS2系列教程：Humble环境搭建与Hello World","abbrlink":"ros2-xi-lie-jiao-cheng-humble-huan-jing-da-jian-yu-hello","date":"2026-09-03T15:39:24+08:00","tags":[],"categories":["ROS2"],"desc":"本节我们完成了 ROS2 的入门：理解 ROS2 与 ROS1 的架构区别、DDS 与 QoS 的概念、搭建 Humble 开发环境的基本流程，并用 C++ 与 Python 两种语言写出了第一个…","wordCount":4020,"url":"/posts/ros2-xi-lie-jiao-cheng-humble-huan-jing-da-jian-yu-hello/"},{"title":"C++综合实战：数据结构与算法实现及系列总结","abbrlink":"c-zong-he-shi-zhan-shu-ju-jie-gou-yu-suan-fa-shi-xian-ji-xi","date":"2026-09-03T15:36:40+08:00","tags":[],"categories":["C与C++"],"desc":"阶段篇目核心内容入门1-5语法基础、控制流、函数、数组/指针、类初探进阶6-10类与对象、运算符重载、继承多态、内存管理、文件流STL11-15容器、迭代器、算法库、函数对象/Lambda、适配器模板…","wordCount":2874,"url":"/posts/c-zong-he-shi-zhan-shu-ju-jie-gou-yu-suan-fa-shi-xian-ji-xi/"},{"title":"C++综合实战：网络编程入门与HTTP客户端","abbrlink":"c-zong-he-shi-zhan-wang-luo-bian-cheng-ru-men-yu-http-ke-hu","date":"2026-09-02T20:01:00+08:00","tags":[],"categories":["C与C++"],"desc":"Socket 基础（客户端/服务器模型与 TCP 通信四步）、HTTP 协议（请求/响应格式、方法、状态码）、迷你 HTTP 客户端（构造 GET 请求、解析响应头与…","wordCount":2409,"url":"/posts/c-zong-he-shi-zhan-wang-luo-bian-cheng-ru-men-yu-http-ke-hu/"},{"title":"C++综合实战：面向对象图书管理系统","abbrlink":"c-zong-he-shi-zhan-mian-xiang-dui-xiang-tu-shu-guan-li-xi","date":"2026-09-02T20:00:38+08:00","tags":[],"categories":["C与C++"],"desc":"本篇用图书管理系统BookReader类的封装（数据 + 行为）、EBook派生类的继承与多态（virtual 重写）、Library管理类的STL 容器（vector +…","wordCount":2566,"url":"/posts/c-zong-he-shi-zhan-mian-xiang-dui-xiang-tu-shu-guan-li-xi/"},{"title":"C++工程化：编译链接、调试与性能优化","abbrlink":"c-gong-cheng-hua-bian-yi-lian-jie-tiao-shi-yu-xing-neng-you","date":"2026-09-02T20:00:13+08:00","tags":[],"categories":["C与C++"],"desc":"四阶段编译链接（预处理/编译/汇编/链接）与常见错误排查、GDB 调试（断点/单步/打印变量/调用栈）、内存检测（ASan 与 Valgrind…","wordCount":2072,"url":"/posts/c-gong-cheng-hua-bian-yi-lian-jie-tiao-shi-yu-xing-neng-you/"},{"title":"C++工程化：CMake构建与多文件项目管理","abbrlink":"c-gong-cheng-hua-cmake-gou-jian-yu-duo-wen-jian-xiang-mu","date":"2026-09-02T19:59:30+08:00","tags":[],"categories":["C与C++"],"desc":"本篇讲解了 C++ 工程化核心的CMake 构建系统：最小项目与构建流程、多文件项目的目录组织与静态库与动态库的构建与选型（含对比表）、条件编译/option/查找与自动拉取依赖（find_packa…","wordCount":1979,"url":"/posts/c-gong-cheng-hua-cmake-gou-jian-yu-duo-wen-jian-xiang-mu/"},{"title":"C++并发编程：异步任务与线程池实战","abbrlink":"c-bing-fa-bian-cheng-yi-bu-ren-wu-yu-xian-cheng-chi-shi-zhan","date":"2026-09-02T19:58:59+08:00","tags":[],"categories":["C与C++"],"desc":"一行启动异步任务并获取结果（含异常传递与 wait_for 超时）、手动生产-消费单次结果、把任务与 future 打包、线程池的核心实现（条件变量任务队列 + packaged_task 封装 +…","wordCount":2359,"url":"/posts/c-bing-fa-bian-cheng-yi-bu-ren-wu-yu-xian-cheng-chi-shi-zhan/"},{"title":"C++并发编程：条件变量与原子操作","abbrlink":"c-bing-fa-bian-cheng-tiao-jian-bian-liang-yu-yuan-zi-cao-zuo","date":"2026-09-01T18:36:16+08:00","tags":[],"categories":["C与C++"],"desc":"实现阻塞等待与通知（含谓词重载防虚假唤醒）、生产者消费者模型的完整实现、atomic 原子类型（fetch_add/CAS…","wordCount":2261,"url":"/posts/c-bing-fa-bian-cheng-tiao-jian-bian-liang-yu-yuan-zi-cao-zuo/"},{"title":"C++并发编程：线程与互斥锁","abbrlink":"c-bing-fa-bian-cheng-xian-cheng-yu-hu-chi-suo","date":"2026-09-01T18:35:51+08:00","tags":[],"categories":["C与C++"],"desc":"的创建/join/detach 与参数传递、数据竞争的危害、std::mutex与 RAII 封装（lock_guard / unique_lock /…","wordCount":1919,"url":"/posts/c-bing-fa-bian-cheng-xian-cheng-yu-hu-chi-suo/"},{"title":"C++20新特性精讲：概念、范围与三路比较","abbrlink":"c-20-xin-te-xing-jing-jiang-gai-nian-fan-wei-yu-san-lu-bi","date":"2026-09-01T18:35:33+08:00","tags":[],"categories":["C与C++"],"desc":"concepts让模板约束可读、可复用；ranges以惰性视图与管道风格重构数据流；三路比较一次操作自动生成全套比较运算符；协程与模块开启语言新范式；std::span与constexpr扩展让代码更…","wordCount":2707,"url":"/posts/c-20-xin-te-xing-jing-jiang-gai-nian-fan-wei-yu-san-lu-bi/"},{"title":"C++17新特性精讲：结构化绑定、if constexpr与实用类型","abbrlink":"c-17-xin-te-xing-jing-jiang-jie-gou-hua-bang-ding-if","date":"2026-09-01T18:35:10+08:00","tags":[],"categories":["C与C++"],"desc":"本篇讲解了 if/switch 初始化语句、结构化绑定、if constexpr 编译期分支、std::optional/variant/any 三种实用类型、string_view…","wordCount":3369,"url":"/posts/c-17-xin-te-xing-jing-jiang-jie-gou-hua-bang-ding-if/"},{"title":"C++11/14新特性精讲：移动语义与智能指针实战","abbrlink":"c-11-14-xin-te-xing-jing-jiang-yi-dong-yu-yi-yu-zhi-neng","date":"2026-09-01T18:34:48+08:00","tags":[],"categories":["C与C++"],"desc":"内容是关于C++现代特性：左值右值、移动语义、=default/=delete等。需概括核心。确保字数。</think>本文介绍C++现代特性：五类值分类与右值引用生命周期延长…","wordCount":2806,"url":"/posts/c-11-14-xin-te-xing-jing-jiang-yi-dong-yu-yi-yu-zhi-neng/"},{"title":"C++模板教程：类型推导与完美转发","abbrlink":"c-mu-ban-jiao-cheng-lei-xing-tui-dao-yu-wan-mei-zhuan-fa","date":"2026-08-30T11:03:12+08:00","tags":[],"categories":["C与C++"],"desc":"完美转发是保留参数左右值属性// 接收函数：区分左值右值cout << \"左值处理: \" << value << endl;cout << \"右值处理: \" << value << endl;//…","wordCount":2736,"url":"/posts/c-mu-ban-jiao-cheng-lei-xing-tui-dao-yu-wan-mei-zhuan-fa/"},{"title":"C++模板教程：变参模板、折叠表达式与SFINAE","abbrlink":"c-mu-ban-jiao-cheng-bian-can-mu-ban-zhe-die-biao-da-shi-yu","date":"2026-08-30T11:02:41+08:00","tags":[],"categories":["C与C++"],"desc":"变参模板（Variadic Templates）允许模板接受任意数量的参数// 参数包：typename... ArgsArgs...是类型参数包。args...是函数参数包。获取参数个数…","wordCount":2656,"url":"/posts/c-mu-ban-jiao-cheng-bian-can-mu-ban-zhe-die-biao-da-shi-yu/"},{"title":"C++模板教程：特化、偏特化与类型萃取","abbrlink":"c-mu-ban-jiao-cheng-te-hua-pian-te-hua-yu-lei-xing-cui-qu","date":"2026-08-30T11:02:13+08:00","tags":[],"categories":["C与C++"],"desc":"模板是「通用配方」，但某些特殊类型需要专门的实现。// 通用模板：处理一般类型a : b;// 全特化：为特定类型定制（如 const char* 比较字符串而非指针）a : b;类型萃取（Type…","wordCount":2521,"url":"/posts/c-mu-ban-jiao-cheng-te-hua-pian-te-hua-yu-lei-xing-cui-qu/"},{"title":"C++模板教程：函数模板与类模板入门","abbrlink":"c-mu-ban-jiao-cheng-han-shu-mu-ban-yu-lei-mu-ban-ru-men","date":"2026-08-30T11:01:37+08:00","tags":[],"categories":["C与C++"],"desc":"普通函数精确匹配优先于模板。模板可以匹配任何类型3. 用<>可以强制调用模板版本。public:// 类外定义：需要重复 template 前缀// 类外定义：需要重复 template…","wordCount":2491,"url":"/posts/c-mu-ban-jiao-cheng-han-shu-mu-ban-yu-lei-mu-ban-ru-men/"},{"title":"C++STL教程：容器适配器与实用工具","abbrlink":"c-stl-jiao-cheng-rong-qi-shi-pei-qi-yu-shi-yong-gong-ju","date":"2026-08-30T11:00:46+08:00","tags":[],"categories":["C与C++"],"desc":"容器适配器是基于其他容器包装出的受限接口适配器底层容器（默认）特性stackdeque后进先出 LIFOqueuedeque先进先出 FIFOvector按优先级出队// 病情严重程度//…","wordCount":2965,"url":"/posts/c-stl-jiao-cheng-rong-qi-shi-pei-qi-yu-shi-yong-gong-ju/"},{"title":"C++STL教程：函数对象与Lambda表达式","abbrlink":"c-stl-jiao-cheng-han-shu-dui-xiang-yu-lambda-biao-da-shi","date":"2026-08-29T00:35:12+08:00","tags":[],"categories":["C与C++"],"desc":"函数对象（Functor）是重载了operator()的类对象，可以像函数一样调用。与普通函数相比，它可以保存状态。// 函数对象：重载 operator()private:int base;//…","wordCount":2766,"url":"/posts/c-stl-jiao-cheng-han-shu-dui-xiang-yu-lambda-biao-da-shi/"},{"title":"C++STL教程：迭代器与算法库","abbrlink":"c-stl-jiao-cheng-die-dai-qi-yu-suan-fa-ku","date":"2026-08-29T00:34:50+08:00","tags":[],"categories":["C与C++"],"desc":"迭代器是统一访问容器元素的接口，让算法不关心容器类型。可以把迭代器理解为「智能指针」，支持->++--等操作。int score;// 默认升序// 降序int());//…","wordCount":3896,"url":"/posts/c-stl-jiao-cheng-die-dai-qi-yu-suan-fa-ku/"},{"title":"C++STL教程：关联容器与无序容器","abbrlink":"c-stl-jiao-cheng-guan-lian-rong-qi-yu-wu-xu-rong-qi","date":"2026-08-29T00:34:27+08:00","tags":[],"categories":["C与C++"],"desc":"int age;// 自定义比较器（按年龄排序）people.insert({\"张三\", 30});people.insert({\"李四\", 25});people.insert({\"王五\",…","wordCount":2411,"url":"/posts/c-stl-jiao-cheng-guan-lian-rong-qi-yu-wu-xu-rong-qi/"},{"title":"C++STL教程：容器总览与序列容器","abbrlink":"c-stl-jiao-cheng-rong-qi-zong-lan-yu-xu-lie-rong-qi","date":"2026-08-29T00:34:05+08:00","tags":[],"categories":["C与C++"],"desc":"STL（Standard Template Library，标准模板库）是 C++ 标准库的核心，由容器、迭代器、算法、函数对象、适配器五大部分组成。它把「数据存储」与「数据处理」解耦，实现高效复用…","wordCount":2650,"url":"/posts/c-stl-jiao-cheng-rong-qi-zong-lan-yu-xu-lie-rong-qi/"},{"title":"C++进阶教程：文件流与字符串流","abbrlink":"c-jin-jie-jiao-cheng-wen-jian-liu-yu-zi-fu-chuan-liu","date":"2026-08-29T00:33:31+08:00","tags":[],"categories":["C与C++"],"desc":"1.3 读取文件1.4 打开模式| 模式 | 含义 || — | — | — || | 读模式（ifstream 默认） || | 写模式（ofstream 默认，截断） || | 追加（不截断）…","wordCount":2788,"url":"/posts/c-jin-jie-jiao-cheng-wen-jian-liu-yu-zi-fu-chuan-liu/"},{"title":"C++进阶教程：动态内存管理与智能指针","abbrlink":"c-jin-jie-jiao-cheng-dong-tai-nei-cun-guan-li-yu-zhi-neng","date":"2026-08-28T18:13:02+08:00","tags":[],"categories":["C与C++"],"desc":"RAII（Resource Acquisition Is Initialization，资源获取即初始化）：把资源（内存、文件、锁）的获取放在构造函数中，释放放在析构函数中…","wordCount":2281,"url":"/posts/c-jin-jie-jiao-cheng-dong-tai-nei-cun-guan-li-yu-zhi-neng/"},{"title":"C++进阶教程：继承与多态","abbrlink":"c-jin-jie-jiao-cheng-ji-cheng-yu-duo-tai","date":"2026-08-28T18:12:38+08:00","tags":[],"categories":["C与C++"],"desc":"多态（Polymorphism）指同一个调用在不同对象上表现出不同行为。通过基类指针/引用调用虚函数，实际执行的是派生类的实现。多态三要素基类中定义虚函数。派生类重写虚函数。通过基类指针/引用调用…","wordCount":2663,"url":"/posts/c-jin-jie-jiao-cheng-ji-cheng-yu-duo-tai/"},{"title":"C++进阶教程：运算符重载与类型转换","abbrlink":"c-jin-jie-jiao-cheng-yun-suan-fu-zhong-zai-yu-lei-xing","date":"2026-08-28T18:12:04+08:00","tags":[],"categories":["C与C++"],"desc":"运算符重载是让==<<等运算符可以作用于自定义类型，使代码更自然、更直观。例如c1 + c2让复数相加，直接打印对象…","wordCount":2336,"url":"/posts/c-jin-jie-jiao-cheng-yun-suan-fu-zhong-zai-yu-lei-xing/"},{"title":"C++进阶教程：类与对象深入","abbrlink":"c-jin-jie-jiao-cheng-lei-yu-dui-xiang-shen-ru","date":"2026-08-28T18:11:20+08:00","tags":[],"categories":["C与C++"],"desc":"本篇深入讲解了构造函数的种类与初始化列表、构造析构顺序、深拷贝与浅拷贝的区别及三法则、static 成员、const 成员函数、this 指针和友元，并用完整 String 类串联实战…","wordCount":2476,"url":"/posts/c-jin-jie-jiao-cheng-lei-yu-dui-xiang-shen-ru/"},{"title":"C++入门教程：结构体、枚举与类初探","abbrlink":"c-ru-men-jiao-cheng-jie-gou-ti-mei-ju-yu-lei-chu-tan","date":"2026-08-28T18:10:46+08:00","tags":[],"categories":["C与C++"],"desc":"结构体是不同类型数据的集合// 定义学生结构体int age;// 定义并初始化Student s1;// 默认构造s1.name = \"张三\";// 列表初始化（C++11）Student s2…","wordCount":2021,"url":"/posts/c-ru-men-jiao-cheng-jie-gou-ti-mei-ju-yu-lei-chu-tan/"},{"title":"C++入门教程：数组、字符串与指针入门","abbrlink":"c-ru-men-jiao-cheng-shu-zu-zi-fu-chuan-yu-zhi-zhen-ru-men","date":"2026-08-26T01:18:08+08:00","tags":[],"categories":["C与C++"],"desc":"本文是C++系列教程的第4篇，重点讲解数组、字符串和指针的核心概念。主要内容包括：1) 一维/多维数组的声明、初始化和遍历，强调数组越界的危险性；2)…","wordCount":2340,"url":"/posts/c-ru-men-jiao-cheng-shu-zu-zi-fu-chuan-yu-zhi-zhen-ru-men/"},{"title":"C++入门教程：函数与作用域详解","abbrlink":"c-ru-men-jiao-cheng-han-shu-yu-zuo-yong-yu-xiang-jie","date":"2026-08-26T01:17:28+08:00","tags":[],"categories":["C与C++"],"desc":"/ 函数定义：返回类型 函数名(参数列表) { 函数体 }// 无返回值函数// 调用无参函数// 调用带参函数，接收返回值return 0;当函数定义在使用之后时，需要先声明//…","wordCount":2076,"url":"/posts/c-ru-men-jiao-cheng-han-shu-yu-zuo-yong-yu-xiang-jie/"},{"title":"C++入门教程：运算符、表达式与控制流程","abbrlink":"c-ru-men-jiao-cheng-yun-suan-fu-biao-da-shi-yu-kong-zhi-liu","date":"2026-08-26T01:17:01+08:00","tags":[],"categories":["C与C++"],"desc":"本文是C++系列教程第二篇，重点讲解运算符、表达式和程序控制结构。主要内容包括： 运算符详解：分类介绍算术/关系/逻辑/位运算等8类运算符，特别说明整数除法截断、自增自减顺序、短路求值特性…","wordCount":1829,"url":"/posts/c-ru-men-jiao-cheng-yun-suan-fu-biao-da-shi-yu-kong-zhi-liu/"},{"title":"C语言入门教程：从零开始学C语言编程","abbrlink":"c-yu-yan-ru-men-jiao-cheng-cong-ling-kai-shi-xue-c-yu-yan","date":"2026-08-26T01:12:45+08:00","tags":[],"categories":["C与C++"],"desc":"本篇介绍了 C 语言的环境搭建、基础语法、运算符、条件循环，并用猜数字游戏串联实战。下一篇将深入讲解 C 语言的精髓——指针与内存管理，敬请期待！","wordCount":979,"url":"/posts/c-yu-yan-ru-men-jiao-cheng-cong-ling-kai-shi-xue-c-yu-yan/"},{"title":"C++入门教程：从零开始学C++编程","abbrlink":"c-ru-men-jiao-cheng-cong-ling-kai-shi-xue-c-bian-cheng","date":"2026-08-26T01:11:30+08:00","tags":[],"categories":["C与C++"],"desc":"本文是C++入门教程的第一篇，主要介绍了C++的基本概念、开发环境搭建、基础语法和实战练习…","wordCount":1764,"url":"/posts/c-ru-men-jiao-cheng-cong-ling-kai-shi-xue-c-bian-cheng/"},{"title":"Python综合实战：从零开发一个命令行工具","abbrlink":"python-zong-he-shi-zhan-cong-ling-kai-fa-yi-ge-ming-ling","date":"2026-08-25T14:10:18+08:00","tags":[],"categories":["Python"],"desc":"的收官实战篇（第 20 篇）。前 19 篇学习了语法、库、工程化等知识，本篇把它们串起来，从零开发一个。","wordCount":1251,"url":"/posts/python-zong-he-shi-zhan-cong-ling-kai-fa-yi-ge-ming-ling/"},{"title":"Python进阶教程：Git版本控制与团队协作","abbrlink":"python-jin-jie-jiao-cheng-git-ban-ben-kong-zhi-yu-tuan-dui","date":"2026-08-25T14:09:35+08:00","tags":[],"categories":["Python"],"desc":"本文是Python进阶教程中的Git版本控制指南，介绍了Git的核心概念与团队协作技巧…","wordCount":831,"url":"/posts/python-jin-jie-jiao-cheng-git-ban-ben-kong-zhi-yu-tuan-dui/"},{"title":"Python进阶教程：算法与数据结构入门","abbrlink":"python-jin-jie-jiao-cheng-suan-fa-yu-shu-ju-jie-gou-ru-men","date":"2026-08-24T02:25:20+08:00","tags":[],"categories":["Python"],"desc":"本篇介绍了时间复杂度、常用数据结构（栈、队列）、排序与查找算法、递归和动态规划入门，并用 LRU 缓存串联实战。刷题建议：从 LeetCode 简单题开始，每天 1-2 题，坚持就是胜利。","wordCount":1268,"url":"/posts/python-jin-jie-jiao-cheng-suan-fa-yu-shu-ju-jie-gou-ru-men/"},{"title":"Python进阶教程：机器学习入门（Scikit-learn）","abbrlink":"python-jin-jie-jiao-cheng-ji-qi-xue-xi-ru-men-scikit-learn","date":"2026-08-24T02:24:54+08:00","tags":[],"categories":["Python"],"desc":"本篇介绍了机器学习的基本流程、分类/回归/聚类三大经典任务、交叉验证和特征工程，并用鸢尾花数据集跑通了完整实战。机器学习重在实践，建议用 UCI 或 Kaggle 的数据集多做练习。","wordCount":1078,"url":"/posts/python-jin-jie-jiao-cheng-ji-qi-xue-xi-ru-men-scikit-learn/"},{"title":"Python进阶教程：自动化办公实战","abbrlink":"python-jin-jie-jiao-cheng-zi-dong-hua-ban-gong-shi-zhan","date":"2026-08-23T16:36:48+08:00","tags":[],"categories":["Python"],"desc":"这篇Python办公自动化教程介绍了几个常用库的实战应用，包括：openpyxl处理Excel（读取/写入/合并）、python-docx操作Word文档、pdfplumber提取PDF文本…","wordCount":1032,"url":"/posts/python-jin-jie-jiao-cheng-zi-dong-hua-ban-gong-shi-zhan/"},{"title":"Python进阶教程：项目工程化与虚拟环境","abbrlink":"python-jin-jie-jiao-cheng-xiang-mu-gong-cheng-hua-yu-xu-ni","date":"2026-08-23T16:36:12+08:00","tags":[],"categories":["Python"],"desc":"本篇介绍了虚拟环境、依赖管理、项目目录结构、.gitignore 规范等工程化基础。良好的工程习惯能让项目更易维护、协作和部署。下一篇将介绍自动化办公，用 Python 解放重复劳动。","wordCount":888,"url":"/posts/python-jin-jie-jiao-cheng-xiang-mu-gong-cheng-hua-yu-xu-ni/"},{"title":"Python进阶教程：单元测试与代码质量","abbrlink":"python-jin-jie-jiao-cheng-dan-yuan-ce-shi-yu-dai-ma-zhi","date":"2026-08-22T00:01:18+08:00","tags":[],"categories":["Python"],"desc":"本篇介绍了 unittest 与 pytest 两大测试框架、Mock 模拟外部依赖、以及 flake8/black/mypy/coverage 等代码质量工具，并为计算器类编写了完整测试…","wordCount":1057,"url":"/posts/python-jin-jie-jiao-cheng-dan-yuan-ce-shi-yu-dai-ma-zhi/"},{"title":"Python进阶教程：装饰器与生成器深入","abbrlink":"python-jin-jie-jiao-cheng-zhuang-shi-qi-yu-sheng-cheng-qi","date":"2026-08-22T00:00:53+08:00","tags":[],"categories":["Python"],"desc":"本篇深入讲解了装饰器（基础、带参数、内置装饰器）和生成器（基础、表达式、无限序列），并用手写缓存装饰器串联实战。理解这两个特性，能写出更简洁、更 Pythonic 的代码。","wordCount":1066,"url":"/posts/python-jin-jie-jiao-cheng-zhuang-shi-qi-yu-sheng-cheng-qi/"},{"title":"Python进阶教程：异步编程（asyncio）","abbrlink":"python-jin-jie-jiao-cheng-yi-bu-bian-cheng-asyncio","date":"2026-08-20T09:51:37+08:00","tags":[],"categories":["Python"],"desc":"异步编程让程序在等待 I/O 时不阻塞，而是继续执行其他任务。单线程内实现并发，无锁竞争上下文切换开销极小适合大量 I/O 等待场景（网络请求、数据库）Python 3.7+…","wordCount":882,"url":"/posts/python-jin-jie-jiao-cheng-yi-bu-bian-cheng-asyncio/"},{"title":"Python进阶教程：正则表达式进阶与文本处理","abbrlink":"python-jin-jie-jiao-cheng-zheng-ze-biao-da-shi-jin-jie-yu","date":"2026-08-20T09:51:14+08:00","tags":[],"categories":["Python"],"desc":"本篇深入讲解了正则的分组捕获、贪婪匹配、前后断言、预编译等进阶技巧，并提供了日志解析和文本清理两个实战工具。正则表达式是文本处理的瑞士军刀，值得花时间熟练掌握。","wordCount":1078,"url":"/posts/python-jin-jie-jiao-cheng-zheng-ze-biao-da-shi-jin-jie-yu/"},{"title":"Python进阶教程：调试技巧与性能优化","abbrlink":"python-jin-jie-jiao-cheng-tiao-shi-ji-qiao-yu-xing-neng-you","date":"2026-08-19T13:22:30+08:00","tags":[],"categories":["Python"],"desc":"恭喜你完成Python 入门教程系列的全部 10 篇文章！篇目主题1Python 入门：基础语法2面向对象编程（OOP）3文件操作与异常处理4常用标准库与实用技巧5网络编程与数据抓取6多线程与多进程7…","wordCount":1249,"url":"/posts/python-jin-jie-jiao-cheng-tiao-shi-ji-qiao-yu-xing-neng-you/"},{"title":"Python进阶教程：Web开发入门（Flask）","abbrlink":"python-jin-jie-jiao-cheng-web-kai-fa-ru-men-flask","date":"2026-08-19T13:22:07+08:00","tags":[],"categories":["Python"],"desc":"简单：一个文件即可启动 Web 服务灵活：可以自由选择组件生态好：文档丰富，社区庞大本篇介绍了 Flask 的路由、模板、表单处理和 JSON API，并用待办清单应用串联实战…","wordCount":1113,"url":"/posts/python-jin-jie-jiao-cheng-web-kai-fa-ru-men-flask/"},{"title":"Python进阶教程：数据分析入门（NumPy与Pandas）","abbrlink":"python-jin-jie-jiao-cheng-shu-ju-fen-xi-ru-men-numpy-yu","date":"2026-08-17T21:54:22+08:00","tags":[],"categories":["Python"],"desc":"本篇介绍了 NumPy 数组运算和 Pandas 的 Series、DataFrame、数据清洗、分组聚合，并用销售数据分析串联实战。下一篇将介绍Web 开发入门（Flask），敬请期待！","wordCount":1145,"url":"/posts/python-jin-jie-jiao-cheng-shu-ju-fen-xi-ru-men-numpy-yu/"},{"title":"Python进阶教程：数据库操作入门","abbrlink":"python-jin-jie-jiao-cheng-shu-ju-ku-cao-zuo-ru-men","date":"2026-08-17T21:53:56+08:00","tags":[],"categories":["Python"],"desc":"数据库（Database）是有组织存储数据的仓库，支持高效增删改查（CRUD）。SQLite：轻量级，单文件…","wordCount":970,"url":"/posts/python-jin-jie-jiao-cheng-shu-ju-ku-cao-zuo-ru-men/"},{"title":"Python进阶教程：多线程与多进程","abbrlink":"python-jin-jie-jiao-cheng-duo-xian-cheng-yu-duo-jin-cheng","date":"2026-08-16T02:24:52+08:00","tags":[],"categories":["Python"],"desc":"本文介绍了Python中多线程与多进程的使用方法。主要内容包括：1）多线程的创建方式（直接调用和继承Thread类）及线程池使用；2）线程安全与锁机制；3）多进程的适用场景（CPU密集型任务）及进程池…","wordCount":1122,"url":"/posts/python-jin-jie-jiao-cheng-duo-xian-cheng-yu-duo-jin-cheng/"},{"title":"Python进阶教程：网络编程与数据抓取","abbrlink":"python-jin-jie-jiao-cheng-wang-luo-bian-cheng-yu-shu-ju","date":"2026-08-16T02:24:18+08:00","tags":[],"categories":["Python"],"desc":"本文介绍了Python网络编程与数据抓取的基础知识，涵盖HTTP协议、urllib和requests库的使用、BeautifulSoup解析HTML以及爬虫规范…","wordCount":1024,"url":"/posts/python-jin-jie-jiao-cheng-wang-luo-bian-cheng-yu-shu-ju/"},{"title":"Python进阶教程：常用标准库与实用技巧","abbrlink":"python-jin-jie-jiao-cheng-chang-yong-biao-zhun-ku-yu-shi","date":"2026-08-15T10:57:35+08:00","tags":[],"categories":["Python"],"desc":"摘要： 本文是Python入门系列第4篇，重点讲解常用标准库与实用技巧。涵盖os/sys（系统操作）、datetime（日期处理）、json（数据交换）、re（正则表达式）、random/collec…","wordCount":1256,"url":"/posts/python-jin-jie-jiao-cheng-chang-yong-biao-zhun-ku-yu-shi/"},{"title":"Python进阶教程：文件操作与异常处理","abbrlink":"python-jin-jie-jiao-cheng-wen-jian-cao-zuo-yu-yi-chang-chu","date":"2026-08-15T10:56:30+08:00","tags":[],"categories":["Python"],"desc":"本文是Python入门教程系列的第三篇，主要讲解文件操作和异常处理。内容包括：文件打开与关闭（推荐使用with语句）、不同文件模式（r/w/a等）、读写文件方法（read/readline/for循环…","wordCount":841,"url":"/posts/python-jin-jie-jiao-cheng-wen-jian-cao-zuo-yu-yi-chang-chu/"},{"title":"Python进阶教程：面向对象编程（OOP）","abbrlink":"python-jin-jie-jiao-cheng-mian-xiang-dui-xiang-bian-cheng","date":"2026-08-14T16:41:52+08:00","tags":[],"categories":["Python"],"desc":"面向对象编程（Object-Oriented Programming，简称 OOP）是一种编程思想，它把数据和对数据的操作封装成对象…","wordCount":1123,"url":"/posts/python-jin-jie-jiao-cheng-mian-xiang-dui-xiang-bian-cheng/"},{"title":"Python入门教程：从零开始学Python编程","abbrlink":"python-ru-men-jiao-cheng-cong-ling-kai-shi-xue-python-bian","date":"2026-08-14T16:25:38+08:00","tags":[],"categories":["Python"],"desc":"本文介绍了 Python 的安装、基础语法和一个小实战项目。学习编程最重要的是多敲代码，建议每天坚持练习。后续我会继续更新 Python 进阶教程（面向对象、文件操作、数据处理等），欢迎关注！","wordCount":672,"url":"/posts/python-ru-men-jiao-cheng-cong-ling-kai-shi-xue-python-bian/"},{"title":"Ubuntu IBus 中文输入法终极优化指南：告别切换烦恼，提升输入效率","abbrlink":"ubuntu-ibus-zhong-wen-shu-ru-fa-zhong-ji-you-hua-zhi-nan","date":"2026-07-19T13:03:06+08:00","tags":[],"categories":["Linux 桌面"],"desc":"本文提供了Ubuntu 20.04/22.04系统下优化IBus中文输入法切换的完整指南…","wordCount":834,"url":"/posts/ubuntu-ibus-zhong-wen-shu-ru-fa-zhong-ji-you-hua-zhi-nan/"},{"title":"Orange Pi USB Device 模式设置指南","abbrlink":"orange-pi-usb-device-mo-shi-she-zhi-zhi-nan","date":"2026-07-02T12:53:25+08:00","tags":[],"categories":["嵌入式"],"desc":"本文介绍了在Orange Pi开发板上设置USB为设备模式的两种方法。推荐使用set_device.sh脚本，执行简单命令即可完成设置；也可手动操作，通过echo命令写入mode文件并重启服务…","wordCount":147,"url":"/posts/orange-pi-usb-device-mo-shi-she-zhi-zhi-nan/"},{"title":"数据精度和运算速度的中庸之道","abbrlink":"shu-ju-jing-du-he-yun-suan-su-du-de-zhong-yong-zhi-dao","date":"2023-07-29T13:49:28+08:00","tags":[],"categories":["杂记"],"desc":"最近在写步进电机的S型加速算法，遇到了这个问题，由于要计算s型曲线，使用exp函数一次全部计算完大概需要1.2s，单片机的实时性得不到保证，每次在pwm中断回调中计算也是耗费算力…","wordCount":298,"url":"/posts/shu-ju-jing-du-he-yun-suan-su-du-de-zhong-yong-zhi-dao/"},{"title":"freertos vTaskDelay卡死","abbrlink":"freertos-vtaskdelay-ka-si","date":"2023-05-03T19:05:59+08:00","tags":[],"categories":["嵌入式"],"desc":"解决办法，改成在main方法中创建任务，调用vTaskDelay工作正常，我用的是nuvoton的库，所以可能与sdk移植有关系，反正问题就是这么解决的，希望能帮到同路者…","wordCount":111,"url":"/posts/freertos-vtaskdelay-ka-si/"},{"title":"stm32高级定时器和基本定时器的踩坑指南","abbrlink":"stm32-gao-ji-ding-shi-qi-he-ji-ben-ding-shi-qi-de-cai-keng","date":"2023-04-27T10:23:05+08:00","tags":[],"categories":["嵌入式"],"desc":"高级定理器tim1和tim8的中断回调函数和通用定时器不相同。基本定时器中只有计数，没有分频。","wordCount":40,"url":"/posts/stm32-gao-ji-ding-shi-qi-he-ji-ben-ding-shi-qi-de-cai-keng/"},{"title":"深度计解算板的报错的问题解决（MS5437转串口模块）","abbrlink":"shen-du-ji-jie-suan-ban-de-bao-cuo-de-wen-ti-jie-jue-ms5437","date":"2023-04-16T12:31:20+08:00","tags":[],"categories":["嵌入式"],"desc":"做水下机器人控制中用到了深度解算板，写了相应的驱动程序，也遇到了一些问题，现把一些问题的解决方案放出来，供大家参考。驱动被设计为拥有指令器和接收机两个部分，完全被动方式运行，与具体的平台解耦…","wordCount":379,"url":"/posts/shen-du-ji-jie-suan-ban-de-bao-cuo-de-wen-ti-jie-jue-ms5437/"},{"title":"Espressif-IDE中文汉化教程全网首发","abbrlink":"espressif-ide-zhong-wen-han-hua-jiao-cheng-quan-wang-shou-fa","date":"2023-01-17T22:03:49+08:00","tags":[],"categories":["嵌入式"],"desc":"Espressif-IDE中文汉化教程","wordCount":570,"url":"/posts/espressif-ide-zhong-wen-han-hua-jiao-cheng-quan-wang-shou-fa/"},{"title":"Win32DiskImage写入123报错","abbrlink":"win32diskimage-xie-ru-123-bao-cuo","date":"2023-01-17T21:54:38+08:00","tags":[],"categories":["杂记"],"desc":"将SD卡格式化为FAT32，然后向其中写一个img文件。利用读卡器将SD卡连接在主机上，然后使用win32disimager软件向指定盘符写时报错123","wordCount":85,"url":"/posts/win32diskimage-xie-ru-123-bao-cuo/"},{"title":"这个东西让我的Python代码快了100倍","abbrlink":"zhe-ge-dong-xi-rang-wo-de-python-dai-ma-kuai-le-100-bei","date":"2022-11-15T14:20:20+08:00","tags":[],"categories":["杂记"],"desc":"转载于Python数据挖掘。Python 已经得到了全球程序员的喜爱，连续多期稳坐编程语言排行榜第一把交椅。但是还是遭到一些人的诟病，原因之一就是认为它运行缓慢。…","wordCount":897,"url":"/posts/zhe-ge-dong-xi-rang-wo-de-python-dai-ma-kuai-le-100-bei/"},{"title":"关于大越创新的板载USB–TTL通信失败问题的修复","abbrlink":"guan-yu-da-yue-chuang-xin-de-ban-zai-usb-ttl-tong-xin-shi","date":"2022-11-08T11:15:07+08:00","tags":[],"categories":["嵌入式"],"desc":"问题描述：这几天用大越创新stm32f103rct6（升级版）进行传感器读取，发现使用板载串口，电脑识别ch340驱动比较慢，而且发送数据会卡死（如果判断没问题的话是单片机卡了），重新启动串口后…","wordCount":385,"url":"/posts/guan-yu-da-yue-chuang-xin-de-ban-zai-usb-ttl-tong-xin-shi/"},{"title":"ROS使用的bug总结","abbrlink":"ros-shi-yong-de-bug-zong-jie","date":"2022-08-19T22:15:13+08:00","tags":[],"categories":["嵌入式"],"desc":"[rospack] Error: package 'xxxxxxxxxxx' not found","wordCount":29,"url":"/posts/ros-shi-yong-de-bug-zong-jie/"},{"title":"ubuntu安装时窗口太小，点不到应用","abbrlink":"ubuntu-an-zhuang-shi-chuang-kou-tai-xiao-dian-bu-dao-ying","date":"2022-08-10T23:50:03+08:00","tags":[],"categories":["Linux 桌面"],"desc":"要注意的是，两数字间是x字母，⽽不是数字键区的*号。另外此效果，只能在当前运⾏虚拟机下有效，如果关了虚拟机，之后就没⽤了。所以你必需，⽴刻在system setting⾥点击display…","wordCount":160,"url":"/posts/ubuntu-an-zhuang-shi-chuang-kou-tai-xiao-dian-bu-dao-ying/"}]