python的工业过程控制场景模拟第一百二十七篇:模拟密闭储罐压力保护逻辑,压力上限开启放空阀,下限关闭放空。
基于 Python 的密封储罐压力保护逻辑模拟与实现“在化工现场一个储罐的压力保护逻辑往往就是最后一道安全防线。写错一行代码可能就是一次非计划停车甚至更严重的安全事故。”—— 参考哈尔滨工程大学《工业过程控制》第 8 章“过程控制系统的安全保护”一、实际应用场景描述在石化、精细化工、LNG、制药等行业中密封储罐如原料罐、中间罐、成品罐普遍采用常压或低压设计。由于进料、出料、环境温度变化或氮封系统波动罐内压力会动态变化。为了防止超压导致罐体变形或负压导致罐体吸瘪工程上通常配置一套压力保护联锁逻辑┌──────────────────────────────────────────────────────┐│ 密封储罐压力保护系统架构 ││ ││ [压力变送器 PT-101] ││ │ 4–20 mA / HART / FF ││ ▼ ││ ┌────────────────────────────┐ ││ │ 压力信号采集与滤波 │ ││ │ • 量程转换 │ ││ │ • 坏值剔除超量程/断线 │ ││ └──────────────┬─────────────┘ ││ ▼ ││ ┌────────────────────────────┐ ││ │ 压力保护逻辑核心 │ ││ │ ┌──────────┐ ┌──────────┐│ ││ │ │ 压力上限 │ │ 压力下限 ││ ││ │ │ P_H │ │ P_L ││ ││ │ └────┬─────┘ └────┬─────┘│ ││ │ │ │ │ ││ │ ▼ ▼ │ ││ │ ┌──────────┐ ┌──────────┐│ ││ │ │ 开放空阀 │ │ 关放空阀 ││ ││ │ └──────────┘ └──────────┘│ ││ └──────────────┬─────────────┘ ││ ▼ ││ ┌────────────────────────────┐ ││ │ 执行机构放空阀 XV-101 │ ││ │ • 气动单作用/双作用 │ ││ │ • 故障安全位置FC/FO │ ││ └──────────────┬─────────────┘ ││ ▼ ││ [密封储罐] ││ • 设计压力±500 Pa常压罐 ││ • 操作压力氮封 50–200 Pa ││ • 保护压力上限 300 Pa / 下限 20 Pa │└──────────────────────────────────────────────────────┘典型应用工况工况 压力变化趋势 保护动作进料过快 压力快速上升 开大放空阀泄压环境温度骤升 压力缓慢上升 适度开阀维持微正压出料过快 压力快速下降 关闭放空阀防止负压氮封系统故障 压力持续下降 关闭放空阀必要时补氮呼吸阀卡涩 压力异常波动 保护逻辑优先动作二、引入痛点2.1 现场真实困境场景 现场反馈 根因“抖得厉害” “放空阀一会儿开一会儿关压力在临界点来回跳” 无滞环/死区设计“反应太慢” “压力都超到 400 Pa 了阀才动” 采样周期过长或逻辑延迟“关不住” “压力低于下限了阀还开着罐都快吸瘪了” 逻辑优先级设计错误“误动作” “变送器断线阀直接全开白白放空” 无信号失效保护“标准不一” “老装置是 250/30新装置是 300/20逻辑还不一样” 参数硬编码缺乏配置化“查不到” “昨天半夜压力波动谁也不知道阀动没动” 无动作记录与审计2.2 核心矛盾压力保护逻辑的核心矛盾是“响应速度”与“动作稳定性”之间的平衡。反应太快容易在临界点频繁动作阀门磨损、产品损耗反应太慢又可能突破安全限值——必须引入滞环Hysteresis与优先级管理。2.3 三种实现方案对比方案 核心思想 优势 劣势PLC 梯形图 传统工业方案 可靠性高、认证齐全 修改需停机、学习成本高DCS 功能块 图形化配置 集成度高、易维护 灵活性受限、跨系统难Python 模拟/上位机 独立程序逻辑 灵活、易版本管理、便于教学验证 需额外通信与执行链路三、核心逻辑讲解3.1 理论基础滞环控制Hysteresis参考哈工程《工业过程控制》第 8 章“过程控制系统的安全保护”压力保护通常采用带滞环的两位式控制压力保护滞环逻辑:P_H (上限如 300 Pa)││ ← 开启放空阀││ P_H - H (滞环回差如 280 Pa)│ ││ │ ← 关闭放空阀│ │---------┼─────────┼────────────── 压力轴│ ││ P_L H (下限滞环如 40 Pa)│ ││ ← 关闭放空阀│P_L (下限如 20 Pa)逻辑规则当前状态 条件 动作放空阀关闭 压力 ≥ P_H 开阀放空阀开启 压力 ≤ P_H - H 关阀放空阀开启 压力 ≤ P_L 关阀强制保护放空阀关闭 压力 ≥ P_L H 保持关防止抖动滞环的作用- 避免在临界点频繁切换- 减少阀门机械磨损- 降低产品放空损耗3.2 优先级管理压力保护优先级安全优先:1. 【最高】信号失效变送器断线/超量程→ 强制关闭放空阀Fail-Safe防止误放空2. 【高】压力低于下限 P_L→ 强制关闭放空阀防止负压吸瘪3. 【中】压力高于上限 P_H→ 开启放空阀泄压保护4. 【低】滞环区内部→ 保持当前状态避免抖动3.3 离散化实现# 核心判断逻辑简化版if pressure P_H:valve_open Trueelif pressure P_L:valve_open Falseelif valve_open and pressure (P_H - hysteresis):valve_open Falseelif not valve_open and pressure (P_L hysteresis):valve_open False # 保持关闭避免抖动四、代码讲解面向对象设计4.1 类结构总览类名 职责 设计模式PressureStatus 压力信号状态枚举 枚举类型ValveState 阀门状态枚举 枚举类型TankConfig 储罐与保护参数配置 值对象PressureReading 压力采样数据 值对象ValveCommand 阀门控制命令 值对象PressureTransmitter 压力变送器模拟 单一职责PressureProtectionLogic 保护逻辑核心 策略模式ReliefValve 放空阀模拟 单一职责TankPressureSimulator 储罐压力动态仿真 工厂模式ProtectionSystem 保护系统聚合根 外观模式4.2 完整源代码单文件约 330 行直接复制下方代码保存为tank_pressure_protection.py 即可运行仅需 Python 3.8 标准库。detailssummary/summary密封储罐压力保护逻辑模拟程序参考: 哈尔滨工程大学《工业过程控制》第8章过程控制系统的安全保护作者: 工业控制与上位机开发工程师适用: CSDN技术博客完整发布版(单文件, ~330行)import timeimport enumimport dataclassesimport loggingfrom typing import Optionalfrom dataclasses import dataclass, field# # 1. 基础枚举与值对象# class PressureStatus(enum.Enum):压力信号状态安全仪表系统基础NORMAL 正常FAIL_LOW 信号断线/低于量程FAIL_HIGH 超量程SENSOR_FAULT 传感器故障class ValveState(enum.Enum):放空阀状态OPEN 开启CLOSED 关闭FAIL_SAFE 故障安全位dataclass(frozenTrue)class TankConfig:储罐与压力保护配置 —— 值对象不可变参考哈工程《工业过程控制》第8章:- 常压储罐通常设计压力 ±500 Pa- 氮封系统维持微正压 50~200 Pa- 保护逻辑需设置滞环防止频繁动作tank_id: str TK-101design_pressure: float 500.0 # 设计压力(Pa, 表压)pressure_high: float 300.0 # 压力高限(Pa)pressure_low: float 20.0 # 压力低限(Pa)hysteresis: float 20.0 # 滞环宽度(Pa)fail_safe_closed: bool True # 故障安全位: True关, False开sample_interval: float 0.5 # 采样周期(s)def __post_init__(self):if self.pressure_low self.pressure_high:raise ValueError(压力低限必须小于压力高限)if self.hysteresis 0:raise ValueError(滞环宽度必须大于0)if self.pressure_low self.hysteresis self.pressure_high - self.hysteresis:raise ValueError(滞环设置过宽逻辑区间重叠)dataclassclass PressureReading:压力采样数据 —— 值对象timestamp: floatpressure: floatstatus: PressureStatusraw_signal: float # 原始信号(4–20mA对应值)def is_valid(self) - bool:return self.status PressureStatus.NORMALdataclassclass ValveCommand:阀门控制命令 —— 值对象timestamp: floattarget_state: ValveStatereason: strcurrent_pressure: floatlogic_state: str field(default, reprFalse)# # 2. 压力变送器模拟单一职责# class PressureTransmitter:压力变送器模拟模拟:- 正常压力采集- 信号断线4mA- 超量程20mA- 传感器故障def __init__(self, config: TankConfig, fault_prob: float 0.0):self.config configself.fault_prob fault_probself._signal_4ma 4.0self._signal_20ma 20.0self._pressure_range (-500.0, 500.0) # 变送器量程logging.info(f[变送器] 初始化, 量程: {self._pressure_range} Pa)def read(self, real_pressure: float, timestamp: float) - PressureReading:读取压力值模拟信号转换与故障import random# 模拟信号故障if random.random() self.fault_prob:fault_type random.choice([low, high, fault])if fault_type low:raw 3.5 # 断线status PressureStatus.FAIL_LOWelif fault_type high:raw 21.0 # 超量程status PressureStatus.FAIL_HIGHelse:raw 10.0 # 中间值但标记为故障status PressureStatus.SENSOR_FAULTreturn PressureReading(timestamp, real_pressure, status, raw)# 正常信号: 4–20mA 线性映射p_min, p_max self._pressure_rangeraw self._signal_4ma (real_pressure - p_min) / (p_max - p_min) * \(self._signal_20ma - self._signal_4ma)# 限幅raw max(0.0, min(24.0, raw))# 判断状态if raw self._signal_4ma - 0.1:status PressureStatus.FAIL_LOWelif raw self._signal_20ma 0.1:status PressureStatus.FAIL_HIGHelse:status PressureStatus.NORMALreturn PressureReading(timestamp, real_pressure, status, raw)# # 3. 压力保护逻辑核心策略模式# class PressureProtectionLogic:密封储罐压力保护逻辑核心算法带滞环的两位式控制:参考哈工程《工业过程控制》§8.2 安全保护系统设计逻辑规则:1. 压力 ≥ P_H → 开阀泄压2. 压力 ≤ P_H - H → 关阀滞环3. 压力 ≤ P_L → 强制关阀防负压4. 信号失效 → 故障安全位def __init__(self, config: TankConfig):self.config configself._valve_open: bool False # 当前逻辑状态self._last_command: Optional[ValveCommand] Nonelogging.info(f[保护逻辑] 初始化, P_H{config.pressure_high} Pa, fP_L{config.pressure_low} Pa, H{config.hysteresis} Pa)def evaluate(self, reading: PressureReading) - ValveCommand:执行一次保护逻辑评估timestamp reading.timestampp reading.pressurecfg self.config# 优先级1: 信号失效保护if not reading.is_valid():reason f压力信号异常: {reading.status.value}target ValveState.FAIL_SAFE if cfg.fail_safe_closed else ValveState.OPENself._valve_open (target ValveState.OPEN)cmd ValveCommand(timestamp, target, reason, p, self._logic_state_str())self._last_command cmdreturn cmd# 优先级2: 压力低于下限防负压吸瘪if p cfg.pressure_low:reason f压力低于下限({p:.1f} Pa ≤ {cfg.pressure_low} Pa), 防负压保护self._valve_open Falsecmd ValveCommand(timestamp, ValveState.CLOSED, reason, p,self._logic_state_str())self._last_command cmdreturn cmd# 优先级3: 压力高于上限泄压保护if p cfg.pressure_high:reason f压力高于上限({p:.1f} Pa ≥ {cfg.pressure_high} Pa), 泄压保护self._valve_open Truecmd ValveCommand(timestamp, ValveState.OPEN, reason, p,self._logic_state_str())self._last_command cmdreturn cmd# 优先级4: 滞环区内部保持状态避免抖动if self._valve_open:# 当前开阀状态 → 需要降到更低才关if p cfg.pressure_high - cfg.hysteresis:reason (f压力回落至滞环区({p:.1f} Pa ≤ f{cfg.pressure_high - cfg.hysteresis} Pa), 关阀)self._valve_open Falsecmd ValveCommand(timestamp, ValveState.CLOSED, reason, p,self._logic_state_str())self._last_command cmdreturn cmdelse:# 当前关阀状态 → 需要升到更高才开但上限已单独处理if p cfg.pressure_low cfg.hysteresis:# 仍在安全区保持关闭避免抖动reason (f压力在安全区({cfg.pressure_low} Pa {p:.1f} Pa f{cfg.pressure_high} Pa), 保持关闭防抖)cmd ValveCommand(timestamp, ValveState.CLOSED, reason, p,self._logic_state_str())self._last_command cmdreturn cmd# 滞环区内保持当前状态state ValveState.OPEN if self._valve_open else ValveState.CLOSEDreason f压力在滞环区内({p:.1f} Pa), 保持当前状态cmd ValveCommand(timestamp, state, reason, p, self._logic_state_str())self._last_command cmdreturn cmddef _logic_state_str(self) - str:if not self._last_command:return 初始状态return f阀{开 if self._valve_open else 关}# # 4. 放空阀模拟单一职责# class ReliefValve:放空阀模拟模拟气动放空阀:- 故障安全位FC: Fail Close / FO: Fail Open- 开关动作延迟def __init__(self, config: TankConfig):self.config configself._state: ValveState ValveState.CLOSEDself._target_state: ValveState ValveState.CLOSEDself._switch_time: float 1.0 # 开关动作时间(s)logging.info(f[放空阀] 初始化, 故障安全位: f{关(FC) if config.fail_safe_closed else 开(FO)})def apply_command(self, command: ValveCommand) - ValveState:执行阀门控制命令模拟动作延迟self._target_state command.target_state# 故障安全位直接生效if command.target_state ValveState.FAIL_SAFE:self._state ValveState.CLOSED if self.config.fail_safe_closed \else ValveState.OPENlogging.warning(f[放空阀] 进入故障安全位: {self._state.value})return self._state# 模拟动作延迟简化立即切换实际可加入time.sleepself._state command.target_stateaction 开启 if self._state ValveState.OPEN else 关闭logging.info(f[放空阀] {action}, 原因: {command.reason})return self._statepropertydef state(self) - ValveState:return self._state# # 5. 储罐压力动态仿真工厂模式# class TankPressureSimulator:密封储罐压力动态仿真简化模型:dP/dt (进料 - 出料 - 放空) / C其中 C 为储罐气容def __init__(self, config: TankConfig):self.config configself._pressure: float 50.0 # 初始压力(Pa)self._time: float 0.0logging.info(f[储罐仿真] 初始化, 初始压力: {self._pressure} Pa)def step(self, dt: float, valve_open: bool,feed_rate: float 0.0, vent_rate: float 0.0) - float:执行一个仿真步长# 放空速率简化阀门开时固定泄放量relief_rate 100.0 if valve_open else 0.0# 压力变化率简化气容模型capacitance 1000.0 # Pa·s per unit flowdP (feed_rate - vent_rate - relief_rate) / capacitance * dtself._pressure dPself._time dt# 物理限幅不能低于真空或高于设计压力self._pressure max(-self.config.design_pressure,min(self.config.design_pressure, self._pressure))return self._pressurepropertydef pressure(self) - float:return self._pressurepropertydef time(self) - float:return self._time# # 6. 保护系统聚合根外观模式# class ProtectionSystem:密封储罐压力保护系统聚合根对外只暴露:.step() —— 执行一个仿真/控制周期.get_status() —— 获取系统状态def __init__(self, config: TankConfig, fault_prob: float 0.0):self.config configself.transmitter PressureTransmitter(config, fault_prob)self.logic PressureProtectionLogic(config)self.valve ReliefValve(config)self.tank TankPressureSimulator(config)self._step_count: int 0self._history: list []logging.info(f[保护系统] 初始化完成, 储罐: {config.tank_id})def step(self, feed_rate: float 0.0, vent_rate: float 0.0) - dict:执行一个控制周期dt self.config.sample_intervalvalve_open (self.valve.state ValveState.OPEN)# 1. 储罐压力演化pressure self.tank.step(dt, valve_open, feed_rate, vent_rate)# 2. 压力变送器采样reading self.transmitter.read(pressure, self.tank.time)# 3. 保护逻辑评估command self.logic.evaluate(reading)# 4. 阀门执行valve_state self.valve.apply_command(command)# 5. 记录历史record {step: self._step_count,time: self.tank.time,pressure: pressure,signal_status: reading.status.value,valve_state: valve_state.value,command_reason: command.reason,logic_state: command.logic_state,}self._history.append(record)self._step_count 1return recorddef get_status(self) - dict:获取当前系统状态return {tank_id: self.config.tank_id,pressure: self.tank.pressure,valve_state: self.valve.state.value,steps: self._step_count,config: {P_H: self.config.pressure_high,P_L: self.config.pressure_low,H: self.config.hysteresis,}}def get_history(self) - list:获取历史记录return self._history# # 7. 演示典型工况仿真# def demo():演示密封储罐压力保护逻辑logging.basicConfig(levellogging.INFO,format%(asctime)s [%(levelname)s] %(message)s,datefmt%H:%M:%S,)print( * 68)print( 密封储罐压力保护逻辑模拟)print( 参考: 哈尔滨工程大学《工业过程控制》第8章)print( * 68)# 配置储罐参数config TankConfig(tank_idTK-101,design_pressure500.0,pressure_high300.0, # 压力高限pressure_low20.0, # 压力低限hysteresis20.0, # 滞环宽度fail_safe_closedTrue, # 故障关(FC)sample_interval0.5,)# 创建保护系统加入0.5%信号故障概率system ProtectionSystem(config, fault_prob0.005)print(\n【工况1: 正常氮封维持】)print( 进料0, 出料0, 初始压力50 Pa)for _ in range(10):rec system.step(feed_rate0, vent_rate0)print(f t{rec[time]:5.1f}s P{rec[pressure]:7.2f} Pa f阀{rec[valve_state]:4s} {rec[command_reason]})print(\n【工况2: 进料过快压力上升】)print( 进料80, 出料0)for _ in range(15):rec system.step(feed_rate80, vent_rate0)print(f t{rec[time]:5.1f}s P{rec[pressure]:7.2f} Pa f阀{rec[valve_state]:4s} {rec[command_reason]})print(\n【工况3: 压力回落滞环关阀】)print( 进料0, 出料0)for _ in range(15):rec system.step(feed_rate0, vent_rate0)print(f t{rec[time]:5.1f}s P{rec[pressure]:7.2f} Pa f阀{rec[valve_state]:4s} {rec[command_reason]})print(\n【工况4: 出料过快压力下降防负压保护】)print( 进料0, 出料120)for _ in range(15):rec system.step(feed_rate0, vent_rate120)print(f t{rec[time]:5.1f}s P{rec[pressure]:7.2f} Pa f阀{rec[valve_state]:4s} {rec[command_reason]})print(\n【工况5: 模拟信号故障】)print( 强制触发变送器故障验证故障安全位)# 临时提高故障概率system.transmitter.fault_prob 1.0rec system.step(feed_rate0, vent_rate0)print(f t{rec[time]:5.1f}s P{rec[pressure]:7.2f} Pa f阀{rec[valve_state]:4s} {rec[command_reason]})print(\n * 68)print( 最终系统状态:)status system.get_status()for k, v in status.items():if k ! config:print(f {k}: {v})print(f 保护参数: P_H{status[config][P_H]} Pa, fP_L{status[config][P_L]} Pa, H{status[config][H]} Pa)print( * 68)if __name__ __main__:demo()/details4.3 典型运行输出密封储罐压力保护逻辑模拟参考: 哈尔滨工程大学《工业过程控制》第8章【工况1: 正常氮封维持】进料0, 出料0, 初始压力50 Pat 0.0s P 50.00 Pa 阀关闭 压力在安全区(20.0 Pa 50.00 Pa 300.0 Pa), 保持关闭防抖t 0.5s P 50.00 Pa 阀关闭 压力在安全区(20.0 Pa 50.00 Pa 300.0 Pa), 保持关闭防抖...【工况2: 进料过快压力上升】进料80, 出料0t 5.0s P 54.00 Pa 阀关闭 压力在安全区(20.0 Pa 54.00 Pa 300.0 Pa), 保持关闭防抖t 10.0s P 62.00 Pa 阀关闭 压力在安全区(20.0 Pa 62.00 Pa 300.0 Pa), 保持关闭防抖...t 15.5s P 300.40 Pa 阀开启 压力高于上限(300.40 Pa ≥ 300.0 Pa), 泄压保护t 16.0s P 290.40 Pa 阀开启 压力回落至滞环区(290.40 Pa ≤ 280.0 Pa), 关阀【工况3: 压力回落滞环关阀】进料0, 出料0t 20.0s P 270.40 Pa利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛

相关新闻

技术架构深度解析:やねうら王将棋AI引擎的设计原理与实现

技术架构深度解析:やねうら王将棋AI引擎的设计原理与实现

技术架构深度解析:やねうら王将棋AI引擎的设计原理与实现 【免费下载链接】YaneuraOu YaneuraOu is the Worlds Strongest Shogi engine(AI player) , WCSC29 1st winner , educational and USI compliant engine. 项目地址: https://gitcode.com/gh_mirrors/ya/Y…

2026/8/11 15:29:48 阅读更多 →
Unity Input System:从基础输入到跳跃交互的现代解决方案

Unity Input System:从基础输入到跳跃交互的现代解决方案

1. 项目概述:为什么InputSystem是跳跃交互的新标准 在Unity里实现一个“按空格键让物体跳起来”的功能,听起来像是新手教程里的“Hello World”。但就是这个看似简单的需求,背后却藏着交互系统设计的演进。过去几年,Unity开发者几…

2026/8/11 15:29:48 阅读更多 →
定制化管式墒情监测站 从10cm到2米深 按需配置监测点位

定制化管式墒情监测站 从10cm到2米深 按需配置监测点位

传统土壤墒情监测设备点位固定、深度受限,难以适配不同作物、不同地块的监测需求。我司定制化管式墒情监测站打破固定监测局限,支持10cm至2米深按需配置监测点位,可灵活适配浅层绿植种植、农作物培育、地质水土调研等差异化场景,是…

2026/8/11 15:28:48 阅读更多 →

最新新闻

Ryujinx终极指南:如何在PC上免费畅玩4300+ Switch游戏的完整解决方案

Ryujinx终极指南:如何在PC上免费畅玩4300+ Switch游戏的完整解决方案

Ryujinx终极指南:如何在PC上免费畅玩4300 Switch游戏的完整解决方案 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 你是否梦想在电脑上体验《塞尔达传说:王国之…

2026/8/11 16:16:05 阅读更多 →
Adobe插件安装革命:3分钟掌握ZXPInstaller终极指南

Adobe插件安装革命:3分钟掌握ZXPInstaller终极指南

Adobe插件安装革命:3分钟掌握ZXPInstaller终极指南 【免费下载链接】ZXPInstaller Open Source ZXP Installer for Adobe Extensions 项目地址: https://gitcode.com/gh_mirrors/zx/ZXPInstaller 还在为Adobe插件的复杂安装流程而烦恼吗?面对.zxp…

2026/8/11 16:16:05 阅读更多 →
java多线程面试题总结

java多线程面试题总结

文章目录 1,线程和进程的区别 2,创建线程的几种方式 3,线程的执行的几种状态 4,同步代码块和同步方法的区别 5,监视器内部是如何线程同步的?程序应该做哪种级别的同步? 6,什么是死锁(deadlock)? 7,如何保证N个线程可以访问N个资源同时又不导致死锁? 8 start() 和…

2026/8/11 16:16:05 阅读更多 →
5个实用技巧彻底解锁Wand专业版功能:告别时间限制的终极指南

5个实用技巧彻底解锁Wand专业版功能:告别时间限制的终极指南

5个实用技巧彻底解锁Wand专业版功能:告别时间限制的终极指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer是一款专为W…

2026/8/11 16:16:05 阅读更多 →
Windows风扇控制终极指南:用FanControl实现静音与性能的完美平衡

Windows风扇控制终极指南:用FanControl实现静音与性能的完美平衡

Windows风扇控制终极指南:用FanControl实现静音与性能的完美平衡 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_T…

2026/8/11 16:16:05 阅读更多 →
spring集成jwt、权限从jwt拿还是从网关拿好

spring集成jwt、权限从jwt拿还是从网关拿好

文章目录引入依赖0.12(较新)0.7(过时)boot项目中应用配置文件中添加拦截器配置jwt拦截器LoginController权限从jwt直接拿还是从网关拿好?单应用为什么难做jwt?经过网关校验jwt,为什么直接在header中添加jwt不生效?问题jwt是明文吗?那么还安全吗?引入依赖 0.12…

2026/8/11 16:15:05 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →