news 2026/10/14 21:00:41

连续粉体进料与混合建模教程(1):认识连续制药与进料混合建模——从批次到连续的范式迁移

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
连续粉体进料与混合建模教程(1):认识连续制药与进料混合建模——从批次到连续的范式迁移

连续粉体进料与混合建模教程(1):认识连续制药与进料混合建模——从批次到连续的范式迁移

版本声明块

  • 工具/软件:PharmaPy(Purdue CryPTSys,官方仓库github.com/CryPTSys/PharmaPy);本系列后续出现的PowderFeeder、ContinuousBlender、SegregationLayer均为本系列二次开发示例类,非官方 API;对标平台为 GEA ConsiGma / CDC-50、Coperion K-Tron、Glatt、Altair EDEM。
  • 语言/环境:Python 3.9+(PharmaPy 官方未在可获取文档中显式声明 Python 版本,以官方安装文档为准),numpy(<2)、scipy(<1.14)、pandas、matplotlib。
  • 本文目标:建立"连续制造是什么、法规要什么、上游段该建哪三个模型、用什么工具建"的完整世界观,为后续 19 篇划出边界。

一句话结论:ICH Q13 于 2021-07-27 发布草案、2022 年 11 月 Step 4 定稿、FDA 于 2023 年 3 月发布 industry guidance,其把连续制造(CM)定义为「输入物料连续进料 → 过程中物料被转化 → 输出物料同步连续移出」,并明确RTD 模型是核心要素之一;而 PharmaPy 原始版本只覆盖药物原料(drug substance),PharmaPy 2.0 才官方新增 feeder、blender、roller compactor、milling、tablet press 单元,支持直接压片与干法制粒的端到端动态研究。

〇、本篇要解决的认知问题

在动手写第一行代码之前,先把五个问题摆上桌。它们不是概念题,而是后面每一篇都会回来查账的"总账目录":

  1. 连续制造(continuous manufacturing, CM)到底是什么?ICH Q13 对它的官方定义原文口径是什么?它和"把批次做大一点"差在哪里?
  2. ICH Q13 从草案到定稿经历了怎样一条时间线,FDA 在其中扮演了什么角色?
  3. 连续制造里"一批(batch/lot)"到底怎么定义?三种批定义方法与物料追溯、召回策略有什么关系?
  4. Q13 明确要求哪些关键能力?为什么业内把 RTD(residence time distribution,停留时间分布)模型称为"核心要素之一"?
  5. 连续直压产线上游段要建哪三个模型、它们彼此是什么关系?自研示例类、PharmaPy 2.0 官方单元、商用 DEM 这三条路该怎么选?

一、机制解析

1.1 CM 的官方定义:三件事必须同时成立

ICH Q13 对连续制造的原文口径是:“involves the continuous feed of input materials into, the transformation of in-process materials within, and the concomitant removal of output materials from a manufacturing process.” 翻成中文的三段结构就是:输入物料连续进料 → 过程中物料被转化 → 输出物料同步连续移出。关键在于"同步(concomitant)"——三件事不是先后发生,而是同一时刻都在进行。

┌─────────────┐ 物料在过程中被转化 ┌─────────────┐ 输入 ──►│ 连续进料 │ ───────────────────► │ 同步移出 │──► 输出 │ continuous │ │ concomitant │ │ feed │ │ removal │ └─────────────┘ └─────────────┘ ▲ │ └──────── 三者必须同时成立 ◄───────────┘

这里有一条常被忽略的边界:Q13 覆盖的是两个及以上直接连接的单元操作构成的 CM 系统,单个单元操作本身不在其范围内。这一点直接决定了本系列的工程范围——我们研究的"进料器 + 混合器 + 加料框"是一条被 Q13 管辖的链,而不是三个孤立设备。

为什么这对你重要:如果你只把 CM 理解成"连续流动的批次生产",就会漏掉"同步"二字背后的全部工程含义——启停段不合格物料、稳态与动态的区分、扰动只能被"衰减"而不能被"取消",这些都是从"同步"推出来的。

1.2 ICH Q13 的完整时间线

法规时间线不是背景装饰,它决定了你今天能在什么框架下申报、审计会问什么。把这条线记住:

时间事件意义
2021-07-27ICH Q13 草案公开征求意见行业第一次拿到完整的 CM 监管文本
2022 年 11 月Step 4 定稿技术内容冻结,各国进入采纳阶段
2023 年 3 月FDA 发布 guidance for industry(CDER,42 页)美国落地口径确定

更早的铺垫同样重要:FDA 2004 年发布 PAT(Process Analytical Technology,过程分析技术)框架指南,2014 年建立 Emerging Technology Program(ETP),2019 年 2 月发布草案《Quality Considerations for Continuous Manufacturing》。PAT 框架是 CM 的技术前身:没有在线监测,连续进料与混合的实时放行就无从谈起。Q13 的适用范围覆盖化药与治疗性蛋白的原料药/制剂,包含新药、仿制药、生物类似药,并明确支持"批次转连续"。

1.3 批定义三法:一次选择决定召回策略

连续制造最难回答的问题不是"怎么连续流",而是"一批从哪里开始、到哪里结束"。ICH Q13 给出三条路径:

批定义方法含义对追溯/召回的含义
time-based(按时间)按运行时间窗切批批边界清晰,但对扰动的"物理归属"不敏感
amount-based(按数量/质量)按累计产出质量切批与产能对应好,切断点可能落在扰动物料中间
hybrid(时间 + 数量混合)两者组合兼顾两者,规则设计更复杂

选择哪一种,必须支撑物料追溯与召回策略。这不是纯粹的技术偏好:如果扰动发生后你不清楚"哪一段时间窗的物料受到了影响",就无法准确界定召回范围——切得太窄会漏掉不合格品,切得太宽会白白报废合格品。

为什么这对你重要:批定义不是法规文书工作,它是 RTD 模型的直接下游应用。你在第 18 篇会看到,正是靠 RTD 做时间反算,才能把"出口 t 时刻的物料"映射回"入口的哪一段窗口",从而给批边界和召回范围提供定量依据。今天只需记住一句话:批定义三法决定追溯口径,RTD 决定追溯精度。

1.4 Q13 要求的关键能力:RTD 为什么是核心

ICH Q13 明确要求的能力有六项:控制策略开发、系统动力学、取样、不合格物料检测与移除(diversion,分流)、物料追溯、过程模型。其中 PMDA 的演示稿给出了一句关键原文:“An RTD model is one of key elements.”——RTD 模型是核心要素之一。

这句话不是客套。RTD 是唯一能把"上游扰动"与"下游质量"定量连起来的数学工具:

  • 物料追溯:RTD 就是"入口时间 → 出口时间"的映射函数;
  • 分流(diversion)判定:知道扰动到达出口的时刻与幅值,才能决定何时开阀分流;
  • 批定义:用 RTD 划批边界;
  • 软测量(soft sensor):用进料器数据 + RTD 预测 API 浓度,替代 PAT;
  • 控制策略:用 RTD 反推 LIW 进料器可接受的波动范围;
  • 采样频率确定:分析测量频率与过程动力学的关系。
扰动(进料器漂移/尖峰) │ ▼ ┌─────────┐ E(t) ┌─────────┐ │ 进料器 │ ───────► │ 混合器 │ ──► 出口浓度 → 是否超规格 → 分流决策 └─────────┘ RTD卷积 └─────────┘

1.5 CM 的价值与挑战:别只背优点

价值(法规与文献一致口径):

价值机制
约 40% 制造成本下降case studies 显示的成本降幅
批大小灵活改运行时间而非改设备尺寸
实时放行(RTRT)结合 PAT 与稳态运行
WIP(在制品)库存低、占地小全流程无大批中间库存
降低放大风险开发规模常等于商业规模
CQA 方差更小稳态运行 + 系统内物料量小

挑战同样明确:批定义、物料追溯、RTD 理解、启停(startup/shutdown)段物料不合格、扰动管理、设备可靠性要求高(无天然维护窗口)、监管经验不足。

为什么这对你重要:价值那一列常被当作宣传语,但每一条都能翻译成建模需求。"批大小灵活"→ 需要能改时间窗的模型;"RTRT"→ 需要可信的软测量;"扰动管理"→ 需要扰动传播计算。挑战那一列,恰好就是本系列 20 篇的目录。

1.6 上游段建模的三条主线

连续直压产线上游段(进料 + 混合)的建模,本系列收敛为三条主线:

┌────────────────────────────────────────────┐ │ 主线三:RTD 模型 │ │ (停留时间分布、卷积传播、MRT) │ └───────────────┬────────────────────────────┘ │ 提供"时间映射"骨架 ┌───────────────┴────────────┐ │ │ ┌───────▼────────┐ ┌────────▼────────┐ │ 主线一:粉体偏析 │ │ 主线二:混合均匀度 │ │ segregation │ │ mixing uniformity │ │ 去混合动力学 │ │ Lacey / RSD / AV │ └─────────────────┘ └───────────────────┘

三者的关系是:RTD 给骨架(时间映射),偏析给空间不均匀(去混合),均匀度给判据(达标与否)。偏析与混合是一对竞争过程(混合 vs 去混合),而 RTD 决定的是"物料在设备里待了多久、扰动怎么被抹平"。三者缺一不可——只算 RTD 会得到"浓度曲线很平滑"的假象,只算偏析会不知道扰动何时到出口,只算均匀度则没有预测能力。

1.7 三条技术路线怎么选

路线能回答的问题代价什么时候选
自研示例类(本系列)LIW 质量平衡、feed factor、RTD 卷积、偏析动力学、Lacey 指数机理需自行实现与标定,非官方 API要可审计、可标定、可进 flowsheet 的轻量数字孪生
PharmaPy 2.0 官方单元feeder、blender、roller compactor、milling、tablet press 的端到端动态研究官方模型为半经验模型,参数相对固定,扰动场景与偏析能力有限需要快速搭 flowsheet、做灵敏度与可行性分析
商用 DEM / GEA CDC-50颗粒尺度机理(Hertz-Mindlin 接触模型)、产线对标DEM 计算量极大、不适合参数扫描;商业平台为黑箱研究粉体流动微观机理、或做工业级对标

这里必须说清一个关键事实:PharmaPy 原始模型库只覆盖药物原料(drug substance)处理;PharmaPy 2.0 已官方新增 feeder、blender、roller compactor、milling、tablet press 单元,由此支持直接压片与干法制粒的端到端动态研究。

但要划清一条红线:本系列不得编造这些单元的类名、模块路径与方法签名——例如不要写PharmaPy.Feeders之类的具体 import,那不属于已登记事实。可确认的只有"已新增这些单元操作"这一句,具体 API以 PharmaPy 官方代码/原文为准。本系列的策略是:用官方 flowsheet 骨架承载拓扑,用自研示例类补齐能力,两者不互相冒充。此外,PharmaPy 2.0 支持机理模型、半机理模型、经验模型与数据驱动模型并存,可通过集成仿真器做灵敏度分析(识别关键输入变量)与可行性分析(刻画设计空间),并通过输入变量的阶跃变化研究动态响应——这正是第 4 篇要实现的闭环。

二、完整代码与逐行剖析

本篇不追求物理精确,只做两件事:把"CPP → 中间变量 → CQA"的因果骨架固化成一张可审计的表,再用一段最小示意代码把产线三段串联的接口顺序摆清楚。

# -*- coding: utf-8 -*-""" 第 1 篇配套脚本 A:构建连续进料-混合段的 CPP -> 中间变量 -> CQA 映射骨架表。 依赖:pandas, numpy(本脚本不依赖 PharmaPy,属纯骨架演示)。 """importnumpyasnp# 数值计算(本脚本仅作占位与后续扩展)importpandasaspd# 表格:承载 CPP -> 中间变量 -> CQA 因果骨架defbuild_cpp_cqa_map():""" 构建连续进料-混合段的 CPP -> 中间变量 -> CQA 映射表骨架。 本表只登记“因果方向”与“依据来源”,不登记未经核实的具体数值, 以免把行业站的常见范围误当成权威结论。 """rows=[# CPP, 中间变量, 目标 CQA, 影响方向, 依据("进料器螺杆转速","进料质量流量 F_in","出口浓度 RSD","转速升高->流量升高->配比漂移","PharmaPy 2.0 方程结构"),("总质量流量","混合器持料量","平均停留时间 MRT","吞吐升高->持料量不变则 MRT 降低","AIChE 2018 557b"),("混合器转速","RTD 形状参数 n","出口浓度平滑度","转速改变 RTD 形状而非仅改 MRT","AIChE 2018 557b"),("出口阀开度","持料量 hold-up mass","MRT","开度改变持料量->MRT = 持料量/吞吐","AIChE 2018 557b"),("组分配比","颗粒粒度比","偏析度","粒度比越大->sifting 风险越高","偏析综述"),("补料周期","料位与堆积密度","进料流量波动","补料切换 volumetric->流量尖峰","厂商一手资料"),("全部扰动","出口 API 浓度","剂量单位均匀度 AV","RTD 卷积把入口扰动衰减为出口波动","AIChE 2018 557b"),]columns=["CPP","中间变量","目标CQA","影响方向","依据"]returnpd.DataFrame(rows,columns=columns)defmain():df=build_cpp_cqa_map()pd.set_option("display.unicode.east_asian_width",True)# 中文列宽对齐pd.set_option("display.max_columns",None)pd.set_option("display.width",200)print("=== 连续进料-混合段 CPP -> 中间变量 -> CQA 映射表骨架 ===")print(df.to_string(index=False))# 一行自检:确保每个 CPP 至少关联一个 CQAn_cpp=df["CPP"].nunique()n_cqa=df["目标CQA"].nunique()print(f"\n自检:CPP 共{n_cpp}个,目标 CQA 共{n_cqa}个,映射行{len(df)}行。")if__name__=="__main__":main()

逐段剖析:

  • 为什么第一列是 CPP 而不是直接写公式?因为工程建模的审计起点是"哪个旋钮驱动哪个量"。先把因果结构立稳,公式才填得进去;反过来,先抄公式再回头找它管哪个旋钮,是新手最常见的返工原因。
  • build_cpp_cqa_map里为什么没有数字?这是刻意的工程纪律。映射表的"行"是因果结构,是稳定的;"数值"是设备与物料特异的。把两者混进一张表,半年后没人知道那个数是从哪来的。
  • pd.set_option("display.unicode.east_asian_width", True)是必须的。pandas 默认按字符数而不是显示宽度算列宽,中文会整片错位——这是它的反直觉默认值之一。
  • df["CPP"].nunique()这行自检,是给后续篇目留的接口:第 19 篇扫设计空间时,会用同一张表来核对"每个 CPP 是否都有对应的 CQA 响应面"。

第二段代码展示"产线三段串联"的接口顺序。再次强调:这不追求物理精确,只演示数据流的方向与单位约定。

# -*- coding: utf-8 -*-""" 第 1 篇配套脚本 B:连续直压产线三段串联的最小示意(教学示意参数,非物理精确)。 依赖:numpy。 """importnumpyasnpdeffeeder_stage(t,t_step,f_before,f_after):""" 第一段(进料):生成一个阶跃的质量流量序列。教学示意,非真实进料器模型。 返回:时间序列 t 与质量流量 F_in(kg/h)。 """F=np.where(t<t_step,f_before,f_after)returnt,Fdefblender_stage(F_in,tau=30.0,dt=1.0):""" 第二段(混合):用一阶惯性环节做最粗的“返混平滑”。 教学示意:真实混合器应走 RTD 卷积,见第 4 篇与第 9 篇。 """alpha=dt/tau# 一阶离散系数F_out=np.zeros_like(F_in)forkinrange(1,len(F_in)):F_out[k]=F_out[k-1]+alpha*(F_in[k]-F_out[k-1])returnF_outdeflineup(feed_profile,tau=30.0,dt=1.0):""" 把三段串起来:进料 -> 混合 -> 加料框(此处用同一平滑环节代表)。 接口顺序:上游输出 = 下游输入;量纲统一为 kg/h 与 s。 """t,F_in=feed_profile F_mix=blender_stage(F_in,tau=tau,dt=dt)# 混合器出口F_frame=blender_stage(F_mix,tau=tau,dt=dt)# 加料框出口returnt,F_in,F_mix,F_frameif__name__=="__main__":dt=1.0t=np.arange(0.0,300.0,dt)prof=feeder_stage(t,t_step=100.0,f_before=10.0,f_after=15.0)t,F_in,F_mix,F_frame=lineup(prof,tau=30.0,dt=dt)print("产线三段串联示意(教学示意参数)")print(f"{'t(s)':>6}{'进料F_in':>10}{'混合F_mix':>10}{'加料框F_out':>12}")forkinrange(0,len(t),40):print(f"{t[k]:6.0f}{F_in[k]:10.2f}{F_mix[k]:10.2f}{F_frame[k]:12.2f}")idx=int(np.argmax(F_frame>13.0))# 首次超过中值print(f"\n进口在 t=100 s 阶跃到 15 kg/h;加料框出口首次超过 13 kg/h 的时滞约{t[idx]-100:.0f}s。")

逐段剖析:

  • feeder_stage用np.where造阶跃,而不是写循环:这是第 4 篇要做阶跃响应的伏笔,向量化写法在后面长序列卷积里能省大量时间。
  • blender_stage只做一阶惯性平滑,是一个"占位物理"。它有两大缺陷:一是没有纯迟滞(PFR 延迟),二是不能表达 RTD 的形状参数。第 4 篇会用scipy.signal.fftconvolve把它换成真正的 RTD 卷积,第 9 篇再补上矩与归一化。
  • lineup的接口约定是本篇真正的知识:三段串联的全部工程纪律浓缩成一句——上游的输出就是下游的输入,量纲与时间基准必须全程一致(这里统一为 kg/h 与 s)。第 4 篇之后你会看到,单位错配(kg/h vs g/min、s vs min)是卷积类错误的第一大来源。
  • 时滞的自检行用"首次超过中值"来粗估,属于教学手段。真正的迟滞要由 RTD 的 PFR 延迟 θ 给出,见第 12 篇。

三、常见报错与排查

1)现象:把批次工艺"按比例放大"的思路直接搬来做 CM 建模,模型跑出来却总差一个系统性偏差。
根因:忽略了"同步"二字。CM 的进料、转化、移出同时进行,系统内物料量小、动态快,不能用批次那种"装满—处理—排空"的稳态假设。
解法:显式区分稳态与动态,把启动(startup)与停车(shutdown)段单独建模;这两段的物料按 Q13 口径属于不合格物料,必须能识别与分流。

2)现象:报告里只写了"平均停留时间 30 s",评审追问响应形状时答不上来。
根因:违反了系列铁律"MRT 恒定 ≠ RTD 恒定"。MRT 只是一个一阶矩,RTD 的形状(由 n、Pe 等参数决定)改变了扰动的衰减方式。
解法:凡报告 MRT,必须同时交代 RTD 形状参数(分数罐数 n、Peclet 数 Pe,或 PFR 延迟 θ 与釜时间 τ_tank)。第 9~12 篇专讲这件事。

3)现象:想调用 PharmaPy 的进料器单元,写from PharmaPy.Feeders import ...直接报 ModuleNotFoundError。
根因:该类名/模块路径属于不可断言项。可确认的事实只有"PharmaPy 2.0 官方新增了 feeder、blender 等单元操作",其确切类名与导入路径以官方代码/原文为准。
解法:不要猜 API。先用SimulationExec的 flowsheet 字符串拓扑承载骨架,用自研示例类补齐进料/混合能力;需要官方单元时,去官方文档与源码里核对确切名称。

4)现象:审阅人指出文中"含量均匀度"与"剂量单位均匀度"被当成同义词使用。
根因:沿用中文文献的普遍污染。剂量单位均匀度(uniformity of dosage units)包含含量均匀度(Content Uniformity)与重量差异(Weight Variation)两条并行路径,后者只是前者的一个方法。
解法:统一写"剂量单位均匀度",讨论具体限度时再点明走哪一条路径。第 15 篇会给出 AV = |M − X̄| + k·s(k = 2.4(10 片)/ 2.0(30 片)、L1 = 15.0)的判定器。

5)现象:试图用一个"总混合指数"同时描述整条产线,结果既对不上出口 RSD,也对不上偏析剖面。
根因:把三条主线混为一谈。偏析惩罚的是空间不均匀,RTD 描述的是时间映射,两者量纲与物理对象都不同。
解法:分开建三条线,再用接口连起来:RTD 出时间映射,偏析出空间剖面,均匀度做判据。

四、动手练习

练习 1(基础):跑通映射表脚本并核对规模。
把脚本 A 存为cpp_cqa_map.py运行。成功标准(量化):终端打印出 7 行、5 列的映射表,末行自检输出"CPP 共 N 个,目标 CQA 共 7 个,映射行 7 行",且 7 行的"依据"列全部非空。

练习 2(进阶):给脚本 B 加一个"纯迟滞 + 平滑"两段串联。
在blender_stage之外再实现一个pure_delay(x, theta, dt)(把序列整体右移 theta 秒),并把lineup改成"先迟滞后平滑"。成功标准(量化):令theta=20 s、进口在t=100 s阶跃,出口"首次开始变化"的时点应落在120 ± 2 s(纯迟滞把整条曲线整体右移 θ);若令theta=0,同一时点回落到100 ± 2 s,且上升沿仍保持平滑。

练习 3(挑战):写一个批定义自检函数。
实现check_batch_rule(rule),对"time"、"amount"、"hybrid"三种取值返回其追溯含义说明;对其它取值抛出ValueError。成功标准(量化):三个合法取值分别返回非空字符串,且都包含"追溯"二字;传入"volume"时抛出ValueError,异常信息包含"批定义三法"。

五、小结与下一篇预告

本篇立了三个不能动摇的坐标:第一,CM 的官方定义是"连续进料 → 过程转化 → 同步连续移出","同步"二字是理解启停段、扰动管理、稳态与动态的钥匙;第二,ICH Q13 时间线为 2021-07-27 草案 → 2022 年 11 月 Step 4 → FDA 2023 年 3 月定稿,它要求的六项关键能力里,RTD 模型是核心要素之一,因为它是"扰动到质量"的唯一定量桥梁;第三,上游段建模收敛为偏析 / 均匀度 / RTD 三条主线,RTD 给时间骨架、偏析给空间剖面、均匀度做判据。

工具路线上请守住一条红线:PharmaPy 原始版本只覆盖药物原料,2.0 才官方新增 feeder、blender、roller compactor、milling、tablet press 单元,支持直接压片与干法制粒的端到端动态研究;但具体类名、模块路径、方法签名一律以官方代码/原文为准,本系列不猜、不编。

下一篇(第 2 篇)进入动手环节:环境搭建——conda 环境创建、PharmaPy 必须源码安装的缘由、numpy<2 / cython<3 / scipy<1.14 这套依赖拓扑为什么会互相咬住、官方教程给出的真实模块导入清单与graph = 'R01 --> HOLD01 --> CR01 --> F01'这类 flowsheet 字符串拓扑,以及"Could not find GLIMDA."到底要不要管。第 3 篇将解剖连续直压产线的三层结构与三段时间尺度,第 4 篇将用simulate_line(feed_profile, rtd)跑通第一个最小闭环,第 9 篇详述 RTD 数学,第 12 篇讲 PFR + 2CSTR 组合模型,第 16 篇讲扰动传播。


本篇认知问题回显(FAQ)

Q1:ICH Q13 里连续制造(CM)的定义原文是什么?和"把批次做大"有什么区别?
A:ICH Q13 定义 CM 为"输入物料连续进料、过程中物料被转化、输出物料同步连续移出"三件事同时成立;与批次放大的差别在"同步",且它仅覆盖两个及以上直接连接的单元操作。

Q2:ICH Q13 从草案到定稿的时间线是怎样的,FDA 做了什么?
A:ICH Q13 于 2021-07-27 发布草案,2022 年 11 月达成 Step 4 定稿,FDA 于 2023 年 3 月发布 guidance for industry(CDER,42 页)。

Q3:连续制造里"一批"怎么定义?三种方法与追溯召回有什么关系?
A:ICH Q13 给出 time-based(按时间)、amount-based(按数量)、hybrid(混合)三种批定义方法,选择必须支撑物料追溯与召回策略,批边界可借 RTD 反算的时间窗确定。

Q4:Q13 要求哪些关键能力,为什么说 RTD 模型是核心要素之一?
A:Q13 要求控制策略、系统动力学、取样、分流(diversion)、物料追溯、过程模型六项能力,PMDA 演示稿原文指出"An RTD model is one of key elements."。

Q5:连续直压上游段要建哪三个模型,自研类、PharmaPy 2.0 与商用 DEM 怎么选?
A:三条主线是粉体偏析、混合均匀度与 RTD 模型;自研示例类适合可审计的轻量数字孪生,PharmaPy 2.0 官方的 feeder、blender 等单元适合端到端动态研究,商用 DEM 适合机理对标。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 20:57:58

FreeMarker 2.3.31模板注入修复:Configuration安全初始化指南

简介&#xff1a;本资源针对老旧 JeecgBoot 系统中无法平滑升级 Freemarker 的安全治理难题&#xff0c;提供一种轻量级、侵入性极低的漏洞修复方案&#xff0c;适用于 Java 后端开发人员及企业系统维护工程师。方案核心是重写 Freemarker 2.3.31 版本的 Configuration 类&…

作者头像 李华
网站建设 2026/10/14 20:57:03

写论文如何又快又好?博导推荐这几个AI论文平台

一、中文论文全流程首选&#xff1a;千笔AI&#xff08;教授力荐&#xff09; 定位&#xff1a;中文学术写作天花板&#xff0c;全流程覆盖&#xff0c;适配国内高校 / 期刊规范。核心优势&#xff08;教授最看重&#xff09;&#xff1a; 20秒出大纲&#xff1a;输入研究方向&…

作者头像 李华
网站建设 2026/10/14 20:57:00

2026年北京售电公司实力排行榜:需求响应与交易能力解析

2026年北京电力市场化改革持续纵深推进&#xff0c;工商业用户对售电公司的筛选标准已从单一的价差套利转向负荷管理精度、跨省绿电组织能力、交易偏差控制水平以及数字化决策支撑等综合维度。北京作为华北电网的核心负荷中心&#xff0c;聚集了大量数据中心、总部楼宇、高端制…

作者头像 李华
网站建设 2026/10/14 20:56:14

Agent Harness工程实战:循环、上下文、沙箱、验证与长时运行

1. 从一次翻车说起&#xff1a;为什么 Agent 光有循环还不够去年冬天我接手了一个内部工具链的自动化改造&#xff0c;目标很朴素&#xff1a;让一个基于大模型的 Agent 自己去读代码仓库、定位一个已知的构建失败、改掉它、跑测试、提交。听起来就是标准的“感知—决策—执行”…

作者头像 李华
网站建设 2026/10/14 20:55:38

PyTorch Vision Transformer落地实战:解包即训的5大避坑指南

简介&#xff1a;本资源是面向计算机视觉初学者与PyTorch进阶学习者的Transformer实战项目&#xff0c;聚焦图像分类任务&#xff0c;解决传统CNN模型之外的新型架构迁移与实现问题&#xff0c;特别适合希望深入理解视觉Transformer原理并动手复现的算法实践者。压缩包共4个Pyt…

作者头像 李华
网站建设 2026/10/14 20:54:45

骑行运动科学指南:从心率监测到个性化训练

1. 骑行运动的基本认知骑车作为一种有氧运动&#xff0c;近年来在城市通勤和健身领域都获得了广泛关注。不同于健身房里的器械训练&#xff0c;骑行兼具实用性和锻炼价值&#xff0c;既能作为日常交通工具&#xff0c;又能有效提升心肺功能。但很多骑行爱好者常常困惑&#xff…

作者头像 李华