TSN网络离线规划器OpenPlanner:从约束建模到GCL下发
简介OpenPlanner是一个开源TSN规划器面向工业物联网、自动驾驶、远程医疗等低时延高可靠场景的工程师与研究者核心价值在于通过调度算法为时间敏感网络提供确定性传输规划。资源包共217个文件以91个Python脚本与87个JSON配置为主辅以XML、TXT说明文档及少量PNG图片整体体积仅1.46MB代码组织紧凑便于直接阅读与二次开发。包内包含frame demo、window demo和ITP demo等示例分别演示固定时隙调度、时间窗口调度及自研算法可帮助读者理解不同调度策略的适用条件与实现细节。已有124人学习/下载。开源属性与多算法覆盖使这份资源尤其适合需要落地TSN网络规划、进行算法对比或开展教学实验的开发者使用能有效缩短从理论到实践的上手路径。1. 什么是 OpenPlannerTSN 网络里的离线规划器到底在算些什么时间敏感网络TSNTime-Sensitive Networking这几年在工业控制、车载以太网和音视频传输里被反复提起但做工程的人很快会发现一个尴尬的事实手上有支持 802.1Qbv 门控的交换机却不知道该把每个队列的门控时间表配成什么样。OpenPlanner 正是用来填补这个空白的开源工具——它把「给定网络拓扑和流量集合算出每条流的路由、队列分配和门控列表GCL」这件事做成了一条可执行的流水线。我用它做过一个模拟项目X的调度验证结论是它解决的不是「能不能通」而是「时延和抖动能不能算得准」。这篇文章面向的是被 TSN 配置折磨过的网络工程师和做确定性通信的系统开发者。如果你手里有这样一批数据——拓扑里有哪些交换机、哪些端到端流、每路流的大小和周期是多少——OpenPlanner 能帮你把门控表算出来而不是拿着电子表格手工排时槽。它也不是万能的它假设拓扑和流量在运行前就是确定的这是一切调度规划的前提。下面我就按照「它到底在算什么 → 最小实例怎么跑通 → 输出怎么下发 → 坑在哪 → 怎么压榨它」这条线展开全程以我实际跑过的流程为参照。2. TSN 调度问题的建模先把 GCL 背后的约束拆明白2.1 从一台交换机的视角看门控队列与时槽的关系TSN 里最核心的机制是 802.1Qbv 的时间感知整形器TAS。每个出端口下面有 8 个队列每个队列在某个时间窗口内决定是开门还是关门。开门期间该队列里的帧可以发送关门期间帧只能在队列里等着。OpenPlanner 要算的就是这张时间表每个端口、每个队列在一个周期内哪个时刻开门、开多久。交换机按照这张表去开门关门才能保证高优先级流不被低优先级突发流量打断。我第一看这个机制时曾以为是在安排「某个队列发多长时间」后来才发现顺序很重要门控表里写的不是时长而是「在超周期内、从偏移时刻开始的一段窗口长度」。所有端口的表必须共享同一个时间基准否则 A 交换机在第 20 微秒放行了一个帧B 交换机在第 21 微秒才开门帧到了也只能等下一个周期。这就是为什么规划器不能只算单台交换机必须全局联动。2.2 OpenPlanner 眼里的输入拓扑、流集合与约束文件OpenPlanner 的输入结构三件套网络拓扑交换机、链路、端口速率、流集合周期、帧大小、源和目的、截止时间、约束配置最大端到端时延、抖动要求。实际工程里拓扑和流集合来自上位机配置工具或静态配置文件而约束配置来自业务需求——比如 CNC 报文要求端到端时延小于 2ms那约束文件里就得写明 deadline2000微秒。常见拓扑描述方式是用 XML 或 JSON 表达节点和边流描述则是单独的一张流表。我在跑通的第一个例子里拓扑只有 3 台交换机和 4 条链路流只有 6 路但已经足够看清楚模型结构。建议新手不要一上来就灌几百路流先跑最小样例确认输入格式再逐步放大。这个工具不吃数据格式的亏但吃「格式理解不到位」的亏。2.3 帧约束与流约束规划器的两条硬约束规划器内部把所有约束归成两类。帧约束frame constraint是硬性物理约束同一时刻同一条链路上不能有两个帧同时传输一个帧在中间交换机上必须整包收完才能转发。流约束flow constraint是业务约束端到端时延不能超过某个值抖动不能超过某个值。OpenPlanner 把这两类约束以及网络拓扑转成一个约束满足问题CSP然后喂给底层的求解器去搜索可行解。理解这个模型对排错至关重要。你经常会遇到求解器提示「无解」的情况它到底在说什么不是在说你的网络不通而是在说在既定拓扑、流参数和队列规则下找不到一张满足端到端时延和链路避让关系的门控表。这时候要么放松业务约束要么改拓扑或调整帧的发送偏移。很多人在这个问题上浪费时间——拿 OpenPlanner 找产品的问题结果发现是业务需求本身在物理上就排不出来。2.4 零抖动约束为什么是规划器最重的负担在工业控制场景里控制周期报文往往要求零抖动zero jitter即端到端时延固定不变。这意味着每路流在每个中间交换机上的排队等待时间都必须算得一拍不差。这对规划器来说是最大的搜索压力来源——允许抖动存在时规划器可以灵活调整帧到达、排队、发送之间的等待间隙不允许抖动时每个端口、每个周期段的长度都被锁死搜索空间急剧缩小。实际使用中我建议把「严格要求零抖动」限定在真正的等时控制流上普通的状态上报流可以放宽到 50~100 微秒的抖动范围。不要为了省事把所有流全部设成零抖动否则 OpenPlanner 大概率会在中等规模的拓扑上直接验证超时或报告无解。当然你自己算法功底扎实预先把流按抖动需求分组、按组序贯规划能大幅降低求解时间——这个话题我在第 6 章会展开讲。3. 本地跑通最小实例从安装到产出门控表的完整流程3.1 环境准备与依赖安装OpenPlanner 是纯 Python 实现依赖的第三方库集中在网络拓扑解析和约束求解两类。常见做法是创建一个干净的虚拟环境再安装 requirements.txt 里的依赖。我没有遇到编译障碍整个安装过程在主流 Linux 发行版上是顺滑的。以下是我实际执行的安装命令序列注释里标了关键点。# 创建虚拟环境避免把依赖装到系统 Python 里 python3 -m venv openplanner_env source openplanner_env/bin/activate # 安装核心依赖lxml 用于解析 XML 拓扑文件 # networkx 用于拓扑操作ortools 或 z3 作为底层约束求解器 # 具体版本以 requirements.txt 为准 pip install -r requirements.txt # 验证 planner 主模块能被正常导入 python -c import openplanner; print(openplanner.__version__)逻辑说明虚拟环境这一步不是可选项曾见到有人直接把依赖装进系统环境后来升级系统包时把求解器版本搞乱了排错花了一下午。requirements.txt 通常来自项目根目录不要手动零星安装版本错配是很多人第一次跑挂的直接原因。如果你发现求解器导入报错先检查 numpy 版本是否和 ortools 兼容这是最常见的环境冲突点。参数说明如果你只需要快速验证算法逻辑求解器用 ortools 的 CP-SAT 即可如果你处理超大规模拓扑或超长超周期z3 在某些场景下对位宽约束更敏感。建议先从 ortools 入手遇到性能瓶颈再切换后端。3.2 准备拓扑文件与流文件的最小格式以我跑通过的最小示例为例拓扑文件描述了两台交换机 S1、S2 和一条连接它们的 100Mbps 链路终端节点 P1 和 P2 分别挂在两台交换机下。流文件里只有两路流周期 10ms 的模拟量报文和周期 20ms 的参数同步报文。拓扑用 XML 表示流用 CSV 或表格结构表示。!-- network.xml: 最小二交换机拓扑 -- network node idS1 typeswitch / node idS2 typeswitch / node idP1 typeendpoint / node idP2 typeendpoint / link srcP1 dstS1 rate100 / link srcS1 dstS2 rate100 / link srcS2 dstP2 rate100 / /network逻辑说明链路是有向的规划器不会自动把它视作双向你需要为 S1→S2 和 S2→S1 分别建两条链路。很多新手的拓扑文件写了一半导致后面的寻路总是找不到路径。速率单位通常是 Mbps规划器内部会把它换算成微秒级的传输时延——100Mbps 链路上一个 1000 字节的帧需要 80 微秒这个数字会在很多输出结果里反复出现。流文件的核心字段至少包括流的源节点、宿节点、周期微秒、帧大小字节、截止时间微秒和是否允许抖动。规划器会为每路流分配一个唯一序号建议在业务侧就把流的命名规则定好否则后面迭代排错分不清哪条流是哪个业务。3.3 运行规划器并输出 GCL准备停当后调用主入口运行规划器。常见用法是指定拓扑文件、流文件和输出目录规划器执行后生成每个交换机每个端口每个队列的门控列表。# 最小调度实例生成门控表写入 gcl_output 目录 python3 -m openplanner.scheduler \ --topology network.xml \ --flows flows.csv \ --output gcl_output \ --solver ortools \ --timeout 30逻辑说明--timeout 指定求解器的最大搜索时间对最小样例 30 秒绰绰有余。求解完成后gcl_output 目录下会生成以交换机端口命名的 JSON 文件里面是门控表项。每行内容包括门控周期起点、队列编号、门状态open/close和持续时间。这个周期起点是相对超周期而言的绝对时间偏移不是相对上一行的增量下发时要注意别把它当增量解析。参数说明--solver 可以在 ortools 和 z3 之间切换。我从实践中得到的经验是同样的约束条件两者搜索结果差异不大但 ortools 在超时控制上更可预期适合用在自动化回归场景。如果你跑的是几百路流的大拓扑可以把 --timeout 适当加大到 120 秒但大于 300 秒就是信号——该回查约束条件而不是跟求解器较劲。3.4 最小实例的预期结果与验证拿上面这个二交换机、两路流的例子来说规划器通常能在几秒内给出结果。预期 GCL 里S1→S2 链路的队列 7最高优先级会有一个每周期的开门窗口窗口长度刚好覆盖模拟量报文的传输时间。流量稍微偏大的参数同步报文会被分到队列 6它的开门窗口与队列 7 不重叠。验证方法不复杂首先检查输出的每一条流都有完整的路由路径P1→S1→S2→P2其次检查端到端时延是否满足截止时间最后检查同一链路上各队列开门窗口是否有交叠——这是一个基本的物理约束若交叠说明交换机在某个时刻可能同时发送两路帧那输出就是不可用的。OpenPlanner 在求解完成后会打印收敛状态如果显示 infeasible回查流文件的 deadline 设置是否过小或拓扑链路容量是否足够。4. 读懂输出与下发链路把 GCL 转成交换机端口的时槽配置4.1 GCL 文件的字段级拆解规划器把结果导出为 JSON 或 XML 的门控表但我发现很多初次接触的人被里面的时间单位绕晕了。GCL 表里的时间偏移和时长一般以纳秒为单位而流的周期、截止时间在输入时是以微秒为单位。必须确认输出文件的单位说明否则把微秒直接填进交换机配置里门控窗口宽度差了一千倍业务流直接被打碎。字段级拆解如下cycleTime 是超周期时长即所有流周期的最小公倍数。在一个超周期内每个队列可以出现多次开门窗口。portId 明确是哪个物理端口queueId 是 0~7 的队列编号。gateState 用 1 表示 open0 表示 closed。durationNs 表示本窗口持续纳秒数。抖动敏感的流它的第一个窗口起点和第二个窗口起点之间的间隔必须是周期的整数倍否则说明规划器给了你一个带抖动的解而你可能没注意到约束文件里把抖动限制写错了。4.2 从规划结果到设备配置的转换路径规划器算出的 GCL 不会自己跑到交换机上。常见做法是写一个转换脚本把每个端口的 GCL 表项转成设备厂商要求的 YANG 模型或 CLI 配置块。以某厂商的设备为例它的端口配置里有一个 gate-control-list数组里每项包含 time-slot 和 gate-state 两个字段。转换脚本要做两件事一是把 JSON 里的端口名映射成设备端口索引二是把纳秒值转成设备支持的时钟节拍单位。若设备时钟粒度是 100ns那 1250ns 的窗口必须对齐成 1300ns这个误差必须在设计时预留保护带否则累计误差吃掉抖动余量。配置下发这条链路的最终接口是 802.1Qcc 定义的流配置协议但现实世界里不是所有设备都完整支持有些是用 NETCONF 推 YANG有些是本地 CLI 加载。OpenPlanner 本身不管下发它只管生成表项。这一层我习惯单独写一个小模块用统一的中间结构端口号、队列号、开门时刻、时长、开关状态做适配而不是在每个项目里重新解析 JSON。4.3 GCL 与 802.1Qci 的配合入端过滤不能省很多人只盯着出端口的门控表却忽略了对端口的入端过滤802.1Qci PSFP。Qbv 管的是「这个端口什么时候能发帧」Qci 管的是「这个端口什么时候允许收帧」。在一个多级级联的 TSN 网络里如果中间交换机没有做入端过滤某些异常突发帧会在不该出现的时刻挤进门控窗口挤占高优先级流的发送机会。规划器的计算模型假设入端是干净的但现实中不排除干扰源。我在配置模拟项目X时就把 Qci 表跟 Qbv 表一起生成每个接收端口按流的最大帧间隔设置带宽和窗口限制。注意 Qci 的窗口时间需要把链路传播时延算进去入端窗口的起点应该比出端窗口的起点晚一个固定值。这个值在拓扑已知的情况下可以直接从规划结果里取源端口开门时刻加上链路传输时延。链路传输时延 帧长字节×8÷链路速率Mbps单位统一后再加进偏移量里。4.4 输出校验清单下发前必查的四项下发前我会对着打印出的 GCL 逐项检查。第一所有周期流的第一个开门窗口是否都落在超周期的合理偏移处有没有部分流的窗口起点在前面、部分落在后面而导致链路空转。第二同一端口下不同队列的开门窗口有没有重叠重叠意味着优先级高的帧可以继续发优先级低的帧就可能被无限推迟这是抖动超标的常见隐患。第三所有流的端到端时延总和是否与输出统计一致特别是多跳流——每跳增加一个处理时延加起来别超过 deadline。第四超周期是否是所有流周期的最小公倍数若某个流周期是 7ms 而其他流是 10ms超周期为 70ms那么 GCL 中 7ms 周期的队列会出现 10 次开关窗口漏掉任何一次都说明规划器的流周期解析有问题。5. 避坑从最小实例到多拓扑批量跑的常见问题5.1 链路是单向的拓扑文件漏配往返边现象求解器返回无解或者路由结果总是集中到某几条链路上另一些链路利用率极低。刚开始我会怀疑是算法对链路成本不敏感后来逐步排查才发现拓扑文件里只写了正向链路反向路径整个缺失。原因OpenPlanner 的拓扑数据结构不会自动生成双向链路。部分设备厂商的配置工具导出的拓扑是双向的导入规划器时通常有一步方向重映射没做这步就丢了一半链路。解决导入后立即打印全链路列表统计每条边的 src 和 dst 是否都有对向记录。写一个校验脚本若缺反向边则自动补全并把链路速率补偿进去。补链路之后再跑无解问题通常会消失。5.2 验证超时不是算不出来而是超周期太大现象拓扑不大但运行到一半就超时任务卡在搜索阶段CPU 占用接近 100% 但长时间无进展。我一度以为求解器有 bug后来回查流的周期才发现问题所在。原因超周期是所有流周期的最小公倍数。当两路流的周期分别是 7ms 和 11ms 时超周期拉到 77ms单周期内需要安排的帧数量暴增求解器的二进制变量数量指数上升。周期数越大变量越多求解直接陷入指数爆炸。解决先检查流周期的分布如果出现互质数考虑把周期统一到同一个基准时钟的倍数上。例如 7ms 改成 7.5ms与 10ms 的公倍数只有 30ms比原来的 70ms 小了一半多。假如业务允许这通常是成本最低的优化手段。如果周期实在不能动就把大周期流单独分组规划先调度小周期流再把小周期结果作为约束加入大周期流的分组求解中。5.3 GCL 下发后业务抖动仍然超标规划与现实的时钟偏差现象OpenPlanner 输出的理论抖动在 10 微秒以内但设备实测抖动数据达到 100 微秒甚至更多。我第一次遇到这种情况几乎怀疑规划器算错了后来抓包比对才发现问题。原因规划器假定时钟完美同步而实际 TSN 网络中设备之间的 gPTP 同步精度通常在亚微秒到几微秒之间。这个同步误差会直接体现在门控窗口的开关边界上。如果 GCL 的开门窗口刚好等于帧传输时间没有留裕量实际运行中任何微小的时钟偏差都会导致帧错过窗口。解决在规划阶段就给关键帧加上保护带。常见做法是把门控窗口长度设置为帧传输时间加 5~10 微秒的余量。这个余量会占用链路带宽但它保证了实际网络中不因时钟偏差而翻车。保护带具体取多大取决于你网络里最差设备的同步精度。可以先设置为同步误差的 3~5 倍然后用实测数据迭代收紧。5.4 BE 队列被饿死忘了留尽最大努力流量通道现象调度结果下发后所有 TSN 流工作正常但非实时业务比如日志上传、固件升级几乎断流网页登录设备都卡死。原因固定窗口把链路带宽全部排满没有给尽力而为Best-Effort流量留窗口。802.1Qbv 支持在一条链路的大门控周期里留一个默认开门窗口给低优先级队列但是规划器默认优化目标是尽量满足高优先级流的时延要求不会主动保留 BE 窗口需要手动在约束里声明。解决在流文件中加入一路周期较长的 BE 聚合流让其覆盖所有端口的默认队列要求规划器把剩余带宽以 BE 窗口方式释放。或者在约束配置中设置一个最小 BE 带宽比例参数要求每个端口的 GCL 中保留对应比例的总开门时间。我在配置某车间网络时把 BE 带宽比例设置为 20%后续设备管理类流量再没出过问题。5.5 多拓扑批量跑的配置串扰输出目录没隔离现象连续跑多个拓扑时第二个拓扑的输出结果里出现了第一个拓扑的路径片段链路端口对不上排查了数据源才发现输出被覆盖了。原因批量脚本把多个拓扑的输出写到了同一个目录而 GCL 文件按交换机端口命名同名文件被覆盖混合后的残留文件残留被新拓扑读取。解决按网络实例建立独立输出子目录并在脚本开始前清理目录。路径结构建议用实例名加时间戳组织例如 outputs/plant_a/2025-01-20/。另外运行前做一次输入校验——对比拓扑文件里的节点集合和流文件里的源宿节点集合若流文件引用了不存在的节点直接报错退出不要带着脏数据往下跑。6. 压榨它的极限批量回归、增量调度与仿真复核当你已经能把单个拓扑跑通并正常下发下一阶段就是把 OpenPlanner 纳入自己的交付流程中。我的习惯是准备一套自动化回归脚本将同一网络的多种业务场景正常运行、单链路故障、新增某路大流都配好拓扑和流文件每次改动规划器版本或算法参数后全量回归。这条习惯帮我抓住过一次求解器升级导致的 GCL 配置窗口偏移问题如果没有回归那批现场设备可能就直接踩坑了。增量调度是我最推荐的进阶用法。规划器支持把前一次求解的部分结果作为初始解或硬约束传入下一次求解这样新增流量时不用全网重新规划而是尽量保留原有流的 GCL 不变只把新增流的窗口插到空余时槽里。实现时把原流的「交换机端口 队列 窗口偏移」作为锁定约束传给求解器其余流量让它自由排布。代价是解的质量可能不如全局重排但换来的是现场设备配置不需要大面积更新这对已经运行中的系统来说价值极大。关于仿真复核如果你是认真的 TSN 从业者就不要只停留在规划器输出就完事。我会把 GCL 文件导进 OMNeT 或某时序仿真平台搭建的 TSN 模型里喂同样的流对比仿真得到的端到端时延与 OpenPlanner 的计算值。误差在 5% 以内说明模型设置基本正确若超过 10%优先检查仿真里的交换机处理时延参数是否与实际设备一致。实测网络是最终的裁判但仿真能让你在下发前发现推导的逻辑漏洞。最后说一个第一人称的教训。我在给模拟项目X做第一版调度方案时因为省略了保护带以为 GCL 窗口算得完美就能直接部署结果现场实测抖动是理论值的 8 倍后来靠逐跳抓包定位到是第二跳交换机的时钟同步偏差导致帧错过窗口。从那次之后我在任何方案的第一个版本里都预留 10 微秒保护带把带宽利用率控制在 80% 以内而不是追求理论上 95% 以上的排布。记住规划器给的是数学最优解网络给的是工程可行解两者之间的缝隙要用现场经验去填。希望这些踩坑记录能帮你在 TSN 的路上少走一段弯路。本文还有配套的精品资源点击获取

相关新闻

NMODBUS 实战:C# 实现 Modbus TCP 主站与从站模拟

NMODBUS 实战:C# 实现 Modbus TCP 主站与从站模拟

简介:NMODBUS.zip 是一套面向 C# 开发者的 MODBUS TCP/IP 通信库资源,适合刚接触工业自动化协议、需要快速与 PLC 建立数据交互的新手与中级开发者。它封装了 ModbusTcpMaster 等核心类,提供读写保持寄存器、线圈以及数据转换、异常处理等常用…

2026/10/11 13:04:46 阅读更多 →
为什么iwe拒绝规定笔记结构?揭秘文本图管理工具的3条设计原则

为什么iwe拒绝规定笔记结构?揭秘文本图管理工具的3条设计原则

人工智能Agent 记忆MCP 服务CLI知识管理开发工具 【免费下载链接】iwe Markdown knowledge graph — LSP for your editor, CLI MCP memory for your AI agents 项目地址: https://gitcode.com/gh_mirrors/iw/iwe 点击查看 免费下载 🤔 用过不少笔记工…

2026/10/11 13:03:46 阅读更多 →
LeaScript:让私域陪练看得见,留得住,服务得上

LeaScript:让私域陪练看得见,留得住,服务得上

GitHub - ancientcc/LeaScript: LeaScript 是兰栖科技(Leagor)开源的动作脚本规范。它专为端侧离线视觉动作识别设计,底层支持 Mediapipe,全程无需联网,确保数据隐私安全。 GitHub 做私域健身的 UP 主,大…

2026/10/11 13:03:46 阅读更多 →

最新新闻

插件提交门户上线:Anthropic 的 App Store 时刻到了

插件提交门户上线:Anthropic 的 App Store 时刻到了

插件提交门户上线:Anthropic 的 App Store 时刻到了 【免费下载链接】knowledge-work-plugins Open source repository of plugins primarily intended for knowledge workers to use in Claude Cowork 项目地址: https://gitcode.com/GitHub_Trending/kn/knowled…

2026/10/11 13:54:12 阅读更多 →
天正画H型钢全攻略:参数化、图层与打印避坑指南

天正画H型钢全攻略:参数化、图层与打印避坑指南

简介:在现代建筑结构设计中,H型钢凭借优异的承重与抗弯性能应用广泛,使用天正CAD高效绘制其截面图已成为工程师的必备技能。这份工具包正是基于天正二次开发的H型钢截面自动绘制方案,面向结构设计师及相关专业学生,用于…

2026/10/11 13:54:12 阅读更多 →
C# WinForm底层键盘模拟:绕过输入法与焦点限制的SendInput实战

C# WinForm底层键盘模拟:绕过输入法与焦点限制的SendInput实战

简介:这是一份面向C#初学者与WinForm开发者的轻量级模拟键盘工具项目,专为触摸屏交互场景定制,解决无物理键盘设备下的快捷输入需求。项目完整实现了键盘指令模拟(含Win32 API直连与SendKeys双方案)、最小化悬浮窗、圆…

2026/10/11 13:54:12 阅读更多 →
深入理解K8s ClusterIP:虚拟IP的转发机制与网络排障实战

深入理解K8s ClusterIP:虚拟IP的转发机制与网络排障实战

前阵子有个做电商的小团队找到我,线上服务无故超时,K8s 集群里 Service 显示正常、Pod 全部 Running、就绪探针也过了,但流量就是偶发失败。当时我带着 tcpdump 和 ipvsadm 蹲了一下午。查到最后,问题不是别的,就是 Cl…

2026/10/11 13:54:12 阅读更多 →
LangAlpha开发者入门:从源码跑起来到跑通测试的完整贡献指南

LangAlpha开发者入门:从源码跑起来到跑通测试的完整贡献指南

【免费下载链接】LangAlpha Claude Code for Financial Market 项目地址: https://gitcode.com/gh_mirrors/la/LangAlpha 点击查看 免费下载 本文为 LangAlpha 开发者入门 指南,带你完成开源项目 LangAlpha(Claude Code for Financial Marke…

2026/10/11 13:54:12 阅读更多 →
无界队列会让 maximumPoolSize 失效,这句 Javadoc 很少有人引

无界队列会让 maximumPoolSize 失效,这句 Javadoc 很少有人引

➡️ 程序员曜灵 后端面试追问链 - 欢迎认识我 作者程序员曜灵,绿泡泡「我要拿offer」和小红书同名。 主业在一家大型央企做后端开发,Java 方向,参与过公司内部招聘面试。 这里在拆高频面试题的追问链,一题三层,每层给及格线答案和大多数人挂在哪。 工作日每天一篇,评论区点最…

2026/10/11 13:53:11 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →