# 文章归档

URL: https://wsj-blog.pages.dev/archives/

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