项目实战

企业级项目从 0 到 1 实战讲解:需求拆解、架构设计、编码落地到部署上线,以连载方式持续更新。

项目实战专栏发刊词:从看懂教程到做出项目

项目实战专栏发刊词:从看懂教程到做出项目

从看懂教程到独立做出项目,中间差一次完整的从 0 到 1。本专栏用真实场景项目,带你走完需求拆解、架构设计、编码落地到部署上线的全过程。

查看项目
数字孪生巡检平台实战(十九):面试考点全景图——30 个高频追问 Q&A

数字孪生巡检平台实战(十九):面试考点全景图——30 个高频追问 Q&A

数字孪生巡检平台实战(十九):面试考点全景图——30 个高频追问 Q&A 18 章走完,这个项目从 ThingsBoard 部署到 Cesium 三维球、从 Modbus 寄存器到分布式锁全部闭环。但面试官不看你写了多少代码——他挖的是每个技术决策背后的为什么。 收官章做两件事:一张考点全景图(18

查看项目
数字孪生巡检平台实战(十八):生产部署——从 compose 到"像样的生产环境

数字孪生巡检平台实战(十八):生产部署——从 compose 到"像样的生产环境

数字孪生巡检平台实战(十八):生产部署——从 compose 到"像样的生产环境" 前 17 章的成果都活在"开发环境"里:业务服务 mvn spring-boot:run 起在本机 8081,前端 Vite dev server 起在 5173,MySQL/Redis 挂在 docker-comp

查看项目
数字孪生巡检平台实战(十七):测试金字塔——从纯单元到 Testcontainers CI

数字孪生巡检平台实战(十七):测试金字塔——从纯单元到 Testcontainers CI

数字孪生巡检平台实战(十七):测试金字塔——从纯单元到 Testcontainers CI 前 16 章一直在写功能代码——状态机、告警引擎、WebSocket、Cesium 三维球。功能写完了,怎么保证它们没坏? "我手动测过了" 是上线前最常见的谎言。手动测试能覆盖 happy path,但覆盖

查看项目
数字孪生巡检平台实战(十六):实时驱动——航线绘制 + 轨迹回放 + 告警标记

数字孪生巡检平台实战(十六):实时驱动——航线绘制 + 轨迹回放 + 告警标记

数字孪生巡检平台实战(十六):实时驱动——航线绘制 + 轨迹回放 + 告警标记 上一章把 Cesium Viewer 搭起来了——三维地球、设备 Marker、WebSocket 实时推送都跑通了。但那是个"看球"的 demo:设备是静态的圆点点,WebSocket 推过来也只是换个位置,没有"路线

查看项目
数字孪生巡检平台实战(十五):从零到三维球——Cesium + Vite 集成避坑记

数字孪生巡检平台实战(十五):从零到三维球——Cesium + Vite 集成避坑记

数字孪生巡检平台实战(十五):从零到三维球——Cesium + Vite 集成避坑记 前 14 章后端闭环已经打通——设备注册、ThingsBoard 同步、巡检下发、影子同步、告警工单、WebSocket 实时推送、审计日志、数据看板。但全是后端代码,看不到效果。 本章从零建 frontend/(

查看项目
数字孪生巡检平台实战(十四):看板数字可信——审计日志 AOP 与空值穿透防护

数字孪生巡检平台实战(十四):看板数字可信——审计日志 AOP 与空值穿透防护

数字孪生巡检平台实战(十四):看板数字可信——审计日志 AOP 与空值穿透防护 前 13 章跑通了从"设备注册 → ThingsBoard 同步 → 巡检下发 → 影子同步 → 告警工单 → WebSocket 实时推送"的完整业务闭环。但有两个"运营级"缺口没补:谁干了什么?(审计日志)和大屏数字

查看项目
数字孪生巡检平台实战(十三):毫秒级实时通道——WebSocket 协议补全

数字孪生巡检平台实战(十三):毫秒级实时通道——WebSocket 协议补全

数字孪生巡检平台实战(十三):毫秒级实时通道——WebSocket 协议补全 前 12 章从设备注册到告警工单闭环跑通了"写"链路——数据落库、状态迁移、告警触发都没问题,但"读"链路里实时推送这一环是空的。前端三维场景要展示设备位置,是去数据库轮询?1 秒一次太慢;还是等设备上报完再刷新页面?没有

查看项目
数字孪生巡检平台实战(十二):拔掉设备那一根——告警规则引擎与工单闭环

数字孪生巡检平台实战(十二):拔掉设备那一根——告警规则引擎与工单闭环

数字孪生巡检平台实战(十二):拔掉设备那一根——告警规则引擎与工单闭环 上一章把巡检任务的状态机显式化了,但整个项目的"大脑"还没搭好——告警规则引擎和工单闭环。拔掉模拟设备的网线,等 1 分钟,工单自动生成,这是全项目里"看见效果"最直观的一个闭环。 问题是,"自动生成"的链路在存量代码里是断裂的

查看项目
数字孪生巡检平台实战(十一):长任务的骨架——巡检任务与设备状态机

数字孪生巡检平台实战(十一):长任务的骨架——巡检任务与设备状态机

数字孪生巡检平台实战(十一):长任务的骨架——巡检任务与设备状态机 前两章分别解决了"设备注册 → ThingsBoard 同步"和"离线设备指令暂存 → 影子同步"。但有一个更深层的问题没碰:状态到底由谁管? 项目里至少有两类实体带 status 字段——Device.status(online

查看项目
数字孪生巡检平台实战(十):离线设备的归宿——设备影子

数字孪生巡检平台实战(十):离线设备的归宿——设备影子

数字孪生巡检平台实战(十):离线设备的归宿——设备影子 上一章结尾埋了个悬而未决的问题:"给 3 号仓库的温控设备设成 26 度"——但这台设备此刻偏偏离线了,指令发给谁?第 09 章打通了"设备注册 ↔ ThingsBoard"的链路,但链路通 ≠ 链路永远能用,现场环境复杂到你想不到:厂区地下车

查看项目
数字孪生巡检平台实战(九):打通设备联动——REST 客户端加固与单一事实源

数字孪生巡检平台实战(九):打通设备联动——REST 客户端加固与单一事实源

数字孪生巡检平台实战(九):打通设备联动——REST 客户端加固与单一事实源 上一章结尾卖了个关子:业务库里的设备目前只是"数字分身"——在 ThingsBoard 网页上建设备,业务库并不知情;反过来在平台建设备,TB 侧也没有感知。更扎眼的是 ThingsBoardClient.java 里硬编

查看项目
数字孪生巡检平台实战(八):登录与三角色权限——JWT 与多租户的完整闭环

数字孪生巡检平台实战(八):登录与三角色权限——JWT 与多租户的完整闭环

数字孪生巡检平台实战(八):登录与三角色权限——JWT 与多租户的完整闭环 前七章我们把"物"的那条链路跑通了:MQTT 传感器、Modbus PLC、MAVLink 无人机、rosbridge 机器狗,数据穿过网关落进 ThingsBoard。但从这一章开始进入连载重心——自研业务层(Spring

查看项目
数字孪生巡检平台实战(七):机器狗上岗——rosbridge 接入

数字孪生巡检平台实战(七):机器狗上岗——rosbridge 接入

数字孪生巡检平台实战(七):机器狗上岗——rosbridge 接入 上一章的无人机讲的是"二进制的世界":MAVLink 一帧 21 字节,每一 bit 都有精确语义。这一章的机器狗正好相反——ROS 是一个"文本的世界",消息是 JSON,传输靠 WebSocket,连协议包名都带 self-ex

查看项目
数字孪生巡检平台实战(六):无人机上天——MAVLink 接入

数字孪生巡检平台实战(六):无人机上天——MAVLink 接入

数字孪生巡检平台实战(六):无人机上天——MAVLink 接入 上一章我们把网关的连接器机制拆到了源码层,顺手在自己的 MAVLink 连接器里抓出一颗雷(send_to_storage 少传参数)。本章兑现全部承诺:修雷、补断线重连状态机、打开从平台直达飞控的下行链路——最后让一架"无人机"在平台

查看项目
数字孪生巡检平台实战(五):连接器机制剖析——二开前置课

数字孪生巡检平台实战(五):连接器机制剖析——二开前置课

数字孪生巡检平台实战(五):连接器机制剖析——二开前置课 上一章我们用两份 JSON 把一台 PLC 接进了平台,全程零代码。但如果你盯着那份 modbus.json 多看两秒,一个问题会自动浮出来:我往 JSON 里写的 functionCode: 3、divider: 10,是谁在逐字阅读它、把

查看项目
数字孪生巡检平台实战(四):网关登场——把一台 PLC 接进平台

数字孪生巡检平台实战(四):网关登场——把一台 PLC 接进平台

数字孪生巡检平台实战(四):网关登场——把一台 PLC 接进平台 上一章我们拆开了 ThingsBoard 的引擎盖,看清了一条遥测在云端的完整旅程。但车间里的大部分设备——PLC、变频器、电表、老式传感器——根本不会说 MQTT。它们说的是 Modbus:一个 1979 年诞生的协议,比 MQTT

查看项目
数字孪生巡检平台实战(三):拆开 ThingsBoard——一条遥测的源码之旅

数字孪生巡检平台实战(三):拆开 ThingsBoard——一条遥测的源码之旅

数字孪生巡检平台实战(三):拆开 ThingsBoard——一条遥测的源码之旅 上一章我们把"车"开上了高速——一条模拟器上报的温湿度遥测,穿过 MQTT 进了平台,面板曲线动了起来。但那只是把车开走,这一章我们把引擎盖拆开。 本章没有一行新代码,只做一件事:跟着上一章那条 {"temperatur

查看项目
数字孪生巡检平台实战(二):一条 MQTT 遥测的诞生

数字孪生巡检平台实战(二):一条 MQTT 遥测的诞生

数字孪生巡检平台实战(二):一条 MQTT 遥测的诞生 上一章我们说好了:这条数据链路的第一步,是让设备数据进入平台。本章交付三样东西——一个 docker-compose.yml、一个设备开通脚本、一个 30 行的 MQTT 模拟器。跑完本章,你在浏览器面板上能看到自己的曲线在动。 一、先解决镜像

查看项目
数字孪生巡检平台实战(一):为什么是数字孪生巡检?

数字孪生巡检平台实战(一):为什么是数字孪生巡检?

数字孪生巡检平台实战(一):为什么是数字孪生巡检? 一、从一个尴尬的面试现场说起 先问一个问题:你简历上的项目,面试官几个月内见过多少次? 商城、秒杀、短链接、外卖——这几个项目的教程铺天盖地,简历筛选官早已免疫。不是这些项目不好,而是同质化本身让项目失去了信息量:面试官看到"秒杀系统"四个字,脑子

查看项目