DAG概述 什么是DAG? DAG = Directed Acyclic Graph(有向无环图) 在Apollo Cyber RT中,DAG文件是模块配置文件,定义了: 要加载哪些动态库(.so文件) 要创建哪些Component实例 每个Component订阅哪些消息通道 Component的配置参数 DAG的作用 DAG配置文件 ↓ 描述模块…
概述 什么是Mainboard? Mainboard 是Apollo Cyber RT框架的核心启动器(Launcher),负责加载和启动所有自动驾驶模块。它是一个通用的模块加载工具,位于 /apollo/cyber/mainboard/。 核心作用 统一启动入口: 所有Apollo模块(Planning、Control、Perception等)都…
1. Spring 启动流程(含 Spring Framework 与 Spring Boot 视角) (A)Spring 容器 AbstractApplicationContext.refresh() 经典 12 步 prepareRefresh():准备环境(启动时间戳、占位属性、校验必需属性)。 obtainFreshBeanFactory(…
就在我认为我们为 PICO Radar 项目构建的基石已经足够坚固时,一个深刻的洞察让我停下了脚步,并开启了一段意料之外但收获颇丰的重构之旅。 今天,我想和大家分享的,不仅仅是一次技术升级,更是一次关于“如何正确地测试”的哲学思辨。我们告别了那些曾经服务于我们的、但日益显得笨拙的 Shell 脚本,并拥抱了一个由 C++ 驱动的、真正优雅的自动化测…
引言:从零件到整车的跨越 大家好,我是书樱! 经过前八篇开发日志的积累,PICO Radar项目已经拥有了众多经过单元测试验证的"零件": PlayerRegistry (玩家状态管理) WebSocketServer (实时通信) DiscoveryServer (服务发现) SingleInstanceGuard (进程控制…
引言:VR环境下的网络发现挑战 大家好,我是书樱! 在PICO VR的使用场景中,用户通常戴着头显,无法方便地进行复杂的网络配置。传统的"输入服务器IP地址"方案在VR环境中几乎不可行。我们需要的是一种"即插即用"的魔法体验——设备开机,自动发现服务器,无缝连接。 今天分享的故事,是关于如何设计和实现一个优雅…
引言:从功能实现到工业级可靠性 大家好,我是书樱。 在软件开发的征途中,实现功能往往只是万里长征的第一步。真正的挑战在于确保这些功能在真实世界的复杂环境中依然坚如磐石。今天分享的故事,源于PICO Radar核心广播功能的一次深度质量重构——一场与资源泄漏、并发冲突和协议死锁的技术决战。 这是关于如何通过严格的代码审查、对底层原理的深刻理解和健壮的…
引言:从测试失败到系统健壮性的工程蜕变 大家好,我是书樱。 在软件工程的征途中,真正的突破往往源于对"异常"的深度剖析。今天分享的故事,始于一个看似简单的测试失败,却引领我们完成了一次对系统健壮性的根本性改造——从"让代码能跑"迈向"让代码在异常情况下依然可靠"的新境界。 这不仅是一次技术…
引言:软件工程的基石 大家好,我是书樱。 在PICO Radar项目经历了核心功能开发、网络服务构建、以及CMake现代化改造后,我们面临一个关键的工程决策:如何确保代码库的长期健康和可维护性?一个充满bug、风格混乱、难以重构的代码库,无论功能多么强大,都注定走向失败。 因此,在继续新功能开发之前,我们决定投资于项目的"钢铁骨架&quo…
大家好,我是书樱。 在为PICO Radar服务器建立网络基础之后,我们的下一个逻辑步骤是实现安全的第一道防线:客户端鉴权。这个任务涉及到更新Protobuf定义、扩展网络会话逻辑等。然而,在我满怀信心地按下编译按钮后,迎接我的却不是成功,而是一场来自构建系统深处的"叛乱"。 这次意外的挑战,迫使我们对项目的CMake脚本进行了…