DeathWhispers

算法刷题系列路线图:从基础结构到动态规划与图论

算法刷题系列路线图:从基础结构到动态规划与图论 算法题目看起来很多,解法却常常建立在少数几种结构和思维方式上。这个系列把一组常见刷题主题重新编排成一条由浅入深的路线:先学会读题和模拟,再掌握线性数据结构与序列技巧,随后进入搜索、树、图、区间结构和动态规划。 本路线不是按题目难度从易到难的排行榜。学习时应先理解“为什么这种状态或结构能解决问题”,再做题验证;如果某一模块的前置概念还不稳,可...

算法刷题系列(四):数学问题中的整除、最大公约数与模运算

算法刷题系列(四):数学问题中的整除、最大公约数与模运算 数学题常常不需要复杂的数据结构,关键是找到一个能缩小问题的性质:两个数是否有共同因子、一个余数如何随运算变化、计数结果是否会超过整数范围。 本篇承接“算法刷题系列路线图”中的基础工具阶段,围绕整除、最大公约数和模运算介绍几种常用的建模方法。例子和代码均为原创,分别提供 Java 与 Python 实现。 一、先把题目中的数学关系...

算法刷题系列(二):哈希表——用空间换查找

算法刷题系列(二):哈希表——用空间换查找 本篇承接“算法刷题系列路线图”和上一篇“模拟法:从题意到状态更新”。模拟法按顺序执行每条指令;如果题目还要求反复判断某个值是否出现过,或者查询某个值对应的记录,直接扫描已有数据可能会产生大量重复工作。 哈希表可以把键映射到对应的值,让我们在通常情况下用接近 O(1) 的时间完成查找、插入和更新。本篇从一个“找出两数之和”的原创例子出发,说明怎样...

算法刷题系列(一):模拟法——从题意到状态更新

算法刷题系列(一):模拟法——从题意到状态更新 模拟法通常是最直接的算法:题目给出一组规则,我们按规则一步一步执行,并记录当前状态。它不一定需要复杂的数据结构,但很考验建模是否完整——变量代表什么、操作顺序是什么、边界如何处理,都要先说清楚。 这一篇从一个自创的机器人指令例子开始,演示如何把自然语言转换成状态更新,并分别用 Java 和 Python 实现。 一、什么时候考虑模拟? ...

ThingsBoard 进阶(二):创建规则链并调试消息流

ThingsBoard 进阶(二):创建规则链并调试消息流 在上一篇《ThingsBoard 进阶(一):规则引擎与消息流入门》里,我们梳理了规则引擎、规则链、节点和节点关系。本篇开始动手:创建一条只供测试设备使用的规则链,发送路灯遥测,并通过调试事件确认消息经过了哪些节点。 本篇的重点不是改造线上规则,而是建立一条隔离的验证路径: 测试路灯 │ 使用专用设备配置 ▼ ...

ThingsBoard 进阶(一):规则引擎与消息流入门

ThingsBoard 进阶(一):规则引擎与消息流入门 在前面的路灯实战中,我们已经让设备接入 ThingsBoard,上传 turn、light、battery 等遥测,并在仪表盘中展示和控制设备。 到这里,设备数据已经“进得来、看得到”。但项目继续往前做,很快就会遇到新问题: 电量低于阈值时,怎样自动生成告警? 不完整或异常的遥测,怎样过滤或修...

Codex 深度进阶:Hooks、自定义命令与自动化流水线

前两篇文章覆盖了入门和日常实战。这一篇写给想把 Codex 深度集成到开发体系中的进阶用户——你将学会用 Hooks 自动化工作流、编写自定义命令、配置沙箱策略、将 Codex 嵌入 CI/CD 管线。 1. Hooks 系统 Hooks 是 Codex 的事件驱动扩展机制。在 Codex 的生命周期关键节点插入自定义脚本,实现自动化检查和操作。 1.1 可用事件 ...