当前位置: 首页 > news >正文

Laravel APP_DEBUG=true:存在账户信息泄露风险

Laravel APP_DEBUG=true:存在账户信息泄露风险

在 Laravel 开发过程中,APP_DEBUG=true 是一个高频使用的配置 —— 它能在代码报错时显示详细的堆栈跟踪、变量值和配置信息,极大提升调试效率。但鲜少有人意识到,若将开启调试模式的项目部署到生产环境,会直接沦为账户信息泄露的 “高危漏洞”,小到数据库账号、第三方 API 密钥,大到支付平台凭证,都可能被公开窃取。

本文将深入剖析 APP_DEBUG=true 导致账户信息泄露的原理、典型场景,并提供一套可落地的安全防护方案,帮你规避这一 “低级但致命” 的风险。

一、为什么 APP_DEBUG=true 会泄露账户信息?

Laravel 的调试模式(APP_DEBUG=true)设计初衷是服务开发环境,其核心特性是​暴露完整的错误上下文​—— 包括代码执行路径、请求参数、配置变量,甚至是从 .env 文件读取的敏感信息。

而我们项目中的账户信息(如数据库账号、SendGrid 邮件密钥、支付接口凭证),几乎都会存储在 .env 文件中(遵循 “配置与代码分离” 的最佳实践)。当调试模式开启时,这些本应 “隐藏” 的信息,会通过以下 3 种核心路径泄露:

1. 错误堆栈直接暴露敏感配置

当代码执行触发错误(如数据库连接失败、第三方 API 调用异常)时,调试页面会打印完整的堆栈跟踪,其中可能包含从 .env 读取的账户信息。

典型场景:SendGrid 邮件发送失败
假设项目中用 SendGrid 发送邮件,.env 配置如下:

env

# .env 中的 SendGrid 敏感配置
SENDGRID_API_KEY=SG.8Zxxxxxxxxx.xxxxxxxxxxxxx_xxxxxxxxx  # 核心密钥
SENDGRID_FROM_EMAIL=admin@yourdomain.com                 # 发送者邮箱

若因网络问题导致 SendGrid API 调用超时,调试页面会显示类似错误信息:

plaintext

GuzzleException: Client error: `POST https://api.sendgrid.com/v3/mail/send` 
resulted in a 504 Gateway Timeout response:
Timeout waiting for responsein file /vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113# 堆栈跟踪中包含请求头(直接泄露 API 密钥)
Request Headers:
["Authorization" => "Bearer SG.8Zxxxxxxxxx.xxxxxxxxxxxxx_xxxxxxxxx"  # 密钥明文暴露"Content-Type"  => "application/json"
]

此时,任何访问该错误页面的人,都能直接获取 SendGrid 的 API 密钥,进而操控你的邮件服务(发送垃圾邮件、篡改发送内容等)。

2. 配置加载逻辑间接泄露账户信息

Laravel 加载配置时(如 config/database.phpconfig/services.php),会从 .env 读取变量(例如 env('DB_PASSWORD'))。若错误发生在 “配置初始化阶段”(即使与账户操作无关),调试页面可能暴露配置文件的内容或变量值。

典型场景:数据库连接配置错误
.envDB_HOST 配置错误,导致数据库连接失败,调试页面会显示:

plaintext

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `users` where `id` = 1 limit 1)# 堆栈跟踪中包含数据库配置信息
Config Values:
["database" => ["connections" => ["mysql" => ["driver"    => "mysql","host"      => "wrong-host.local",  # 错误的主机配置"database"  => "your_project_db",   # 数据库名"username"  => "root",              # 数据库账号"password"  => "123456"             # 数据库密码明文暴露]]]
]

短短几行错误信息,就将数据库的账号密码全盘托出,攻击者可直接登录数据库,窃取用户数据或篡改业务数据。

3. 第三方调试工具放大泄露风险

若项目中集成了 Laravel Debugbar、Telescope 等调试工具,且未做环境限制,APP_DEBUG=true 会让这些工具默认展示所有环境变量和​请求详情​。

例如,Laravel Debugbar 的 “Environment” 面板中,会列出 .env 中的所有变量:

plaintext

# Debugbar 环境变量面板(公开可见)
APP_ENV=production
APP_DEBUG=true
DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=123456
SENDGRID_API_KEY=SG.8Zxxxxxxxxx.xxxxxxxxxxxxx_xxxxxxxxx
STRIPE_SECRET_KEY=sk_test_xxxxxxxxxxxxx  # 支付平台密钥

这种 “一站式泄露” 的风险,比单个错误堆栈更致命 —— 攻击者无需等待错误触发,访问页面即可获取所有核心账户信息。

二、哪些账户信息最容易泄露?

基于 Laravel 项目的常见配置,以下几类账户信息在 APP_DEBUG=true 下泄露风险最高:

信息类型 存储位置(.env 示例) 泄露后果
数据库账户 DB_USERNAMEDB_PASSWORD 数据库被登录,数据被窃取 / 篡改
第三方 API 密钥 SENDGRID_API_KEYOSS_ACCESS_KEY 第三方服务被滥用(如发送垃圾邮件、消耗存储)
支付平台凭证 STRIPE_SECRET_KEYPAYPAL_CLIENT_ID 支付权限被劫持,资金安全受威胁
缓存 / 队列服务账户 REDIS_PASSWORDRABBITMQ_USER 缓存数据被篡改,队列任务被劫持
管理员账号相关配置 ADMIN_EMAILJWT_SECRET 管理员身份被伪造,系统被入侵

三、如何彻底规避风险?(安全防护方案)

APP_DEBUG=true 的风险本质是 “开发配置被误用于生产环境”,因此防护的核心是​严格区分环境配置​,并通过技术手段强制限制调试模式的使用范围。

1. 生产环境强制关闭 APP_DEBUG

这是最基础也是最关键的一步 —— 生产环境的 .env 文件中,必须设置:

env

# 生产环境 .env 配置(核心)
APP_ENV=production
APP_DEBUG=false

同时,为了防止 “误操作修改”,可在 config/app.php 中添加环境校验,强制生产环境关闭调试:

php

// config/app.php
'debug' => env('APP_ENV') !== 'production' ? env('APP_DEBUG', false) : false,

这样即使有人误将生产环境的 APP_DEBUG 改为 true,配置文件也会强制将其设为 false

2. 开发 / 测试环境限制调试页面访问

开发或测试环境确实需要 APP_DEBUG=true,但必须限制访问范围(避免公网可访问):

  • 本地开发​:仅允许 localhost127.0.0.1 访问,可在 app/Http/Middleware/VerifyCsrfToken.php 中添加 IP 过滤:
    php

    public function handle($request, Closure $next)
    {// 开发环境仅允许本地 IP 访问if (env('APP_ENV') === 'local' && !in_array($request->ip(), ['127.0.0.1', '::1'])) {abort(403, 'Forbidden');}return parent::handle($request, $next);
    }
    
  • 测试环境​:通过服务器防火墙(如 iptables、UFW)限制仅公司内网 IP 可访问,禁止公网请求。

3. 隐藏敏感配置的具体值

即使在开发环境,也不建议在调试信息中显示敏感配置的明文。可通过 Laravel 的 “配置过滤” 功能,在调试时隐藏敏感值:

php

// app/Providers/AppServiceProvider.php
public function boot()
{// 调试模式下,过滤敏感配置值if (config('app.debug')) {// 隐藏数据库密码、API 密钥等$sensitiveKeys = ['database.connections.mysql.password','services.sendgrid.api_key','services.stripe.secret',];foreach ($sensitiveKeys as $key) {config([$key => '***[REDACTED]***']); // 用占位符替换真实值}}
}

这样调试页面中,敏感配置会显示为 ***[REDACTED]***,既不影响调试逻辑,又避免信息泄露。

4. 禁用生产环境的调试工具

若项目集成了 Laravel Debugbar、Telescope 等工具,需确保生产环境自动禁用:

  • Laravel Debugbar​:在 config/debugbar.php 中设置:
    php

    'enabled' => env('APP_ENV') !== 'production',
    
  • Telescope​:在 app/Providers/TelescopeServiceProvider.php 中添加环境判断:
    php

    public function register()
    {$this->hideSensitiveRequestDetails();// 生产环境禁用 Telescopeif (env('APP_ENV') === 'production') {$this->app->register(TelescopeServerProvider::class);}
    }
    

5. 定期巡检配置安全性

除了技术防护,还需建立 “配置巡检” 机制:

  1. 部署前检查:通过 CI/CD 流程(如 GitHub Actions、Jenkins)自动检测生产环境的 APP_DEBUG 是否为 false,若不是则阻断部署。
  2. 定期审计:每季度检查一次生产环境的 .env 文件和配置文件,确保无敏感信息暴露风险。
  3. 密钥轮换:若怀疑敏感信息可能泄露,立即轮换所有相关密钥(如数据库密码、API 密钥),并排查泄露源头。

四、总结

APP_DEBUG=true 是 Laravel 开发的 “利器”,但在生产环境中却是 “定时炸弹”—— 它暴露的不仅仅是错误信息,更是整个项目的核心账户安全。

安全防护的核心逻辑很简单:​“开发配置不进生产,敏感信息不暴露在外”​。通过 “强制关闭生产调试、限制开发环境访问、隐藏敏感配置、禁用调试工具” 这四步,即可彻底规避风险。

最后提醒:账户信息泄露的后果往往不可逆(如数据被窃取、资金损失),与其事后补救,不如在项目部署之初就做好环境隔离和配置防护 —— 这才是最省力也最有效的安全策略。

相关文章:

Laravel APP_DEBUG=true:存在账户信息泄露风险

Laravel APP_DEBUG=true:存在账户信息泄露风险 在 Laravel 开发过程中,APP_DEBUG=true 是一个高频使用的配置 —— 它能在代码报错时显示详细的堆栈跟踪、变量值和配置信息,极大提升调试效率。但鲜少有人意识到,若将开启调试模式的项目部署到生产环境,会直接沦为账户信息泄…...

将当前目录下的所有文件 / 目录完整复制到/tmp目录,且会保留文件的权限、所有者、时间戳等属性

tar cvf - * | (cd /tmp && tar xvfp -)...

C# 操作 DXF 文件指南

C# 操作 DXF 文件主要借助一些专业的库来解析其结构并处理其中的图形数据。 C# 操作 DXF 文件指南 摘要 通过 C# 操作 AutoCAD 导出的 DXF 文件,你可以实现图纸的读取、编辑、创建和转换。本指南将介绍两个主流的开源库 netDxf 和 DXF.NET (IxMilia.Dxf),并提供核心代码示例、…...

在Proxmox中部署Security Onion的安全配置实战

本文详细记录了在Proxmox虚拟化环境中部署Security Onion网络监控系统的完整过程,重点解决了官方文档未涉及的网桥配置问题,包括创建无IP嗅探接口、Linux网桥设置及虚拟机网络设备配置等关键技术环节。在Proxmox中部署Security Onion的安全配置实战 文档说明 Security Onion项…...

报表到 BI:企业数据从展示到决策的进阶之路

报表与BI分析:从数据展示到决策洞察的进化之路 企业数字化转型的浪潮里,“数据驱动决策” 早成共识,可不少企业仍在 “报表” 与 “BI 分析” 的迷雾里打转:是替代,还是互补?为何满墙报表难寻洞察?为何 BI 工具常被业务部门当作 “数据探索的钥匙”?本文从本质差异、能…...

抢先体验智能测试时代,QA必备AI测试工具

敏捷开发模式下的测试挑战 敏捷开发模式下,业务快速迭代,给测试团队带来了前所未有的压力。每一次功能升级或系统迁移,都意味着从功能测试、兼容性测试、性能测试到安全性的大规模回归验证。测试规模成倍增长,而团队人力却往往难以及时扩充。 再加上多设备、多系统环境下频…...

Flink 与Flink可视化平台StreamPark教程(DataStreamApi基本使用)

本文分享自天翼云开发者社区《Flink 与Flink可视化平台StreamPark教程(DataStreamApi基本使用)》,作者:l****n DataStreamApidataStreamApi是一切的基础,处于调度flink程序处理任务的起点。Flink 有非常灵活的分层 API 设计,其中的核心层就是 DataStream/DataSet API。由…...

内部排序-直接插入排序

内部排序-直接插入排序内部排序-直接插入排序 写在前面:参考《数据结构(C语言版)》严蔚敏 吴伟民 编著 清华大学出版社 2008年10月第27次印刷 📋 算法概述 直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排号序的…...

玩转n8n测试自动化:核心节点详解与测试实战指南

掌握节点,掌握自动化测试的核心 在n8n中,节点(Node)是构建自动化工作流的基础单元。每一个节点都代表一个特定的操作或功能,通过将不同的节点连接起来,我们就能创造出强大的测试自动化流程。本章将深入讲解测试工程师必须掌握的几类核心节点,并通过实际测试场景展示如何…...

Linux:龙晰系统(Anolis)更新yum(dnf)仓库源

一、备份现有仓库源 1. 查看当前系统版本 cat /etc/os-release2. 备份现有仓库源 # 一共两个文件,都需要备份下:AnolisOS-BaseOS.repo AnolisOS-AppStream.repo cp /etc/yum.repos.d/AnolisOS-BaseOS.repo /etc/yum.repos.d/AnolisOS-BaseOS.repo.bak cp /etc/yum.repos.d/…...

(笔记)多项式基础 FFT

多项式 \[F(x)=\sum_{i=0}^{i-1}a_ix^i \]对多项式进行乘法,就是对两个多项式进行加法卷积。其中卷积结果 \(C(k)=\sum_{i=0}^kA(i)B(k-i)\)。 分治乘法 将 \(A(x)\) 左右拆半,不足则末尾(最高位)补上 \(0\),令 \(n=2^k\)。则 \[A(x)=A_0(x)+x^{n/2}A_1(x) \]\[A_0(x)=\su…...

MAC tomcat启动报错

MAC tomcat启动报错 org/apache/catalina/startup/Bootstrap has been compiled by a more recent前言 配置好tomcat启动报错 已连接到地址为 127.0.0.1:50303,传输: 套接字 的目标虚拟机 已与地址为 127.0.0.1:50303,传输: 套接字 的目标虚拟机断开连接 Exception in thread…...

研究生-必看-倒计时3天/武汉科技大学主办/稳定EI会议/高层次教授出席报告

武汉科技大学主办/EI稳定检索/大数据与智慧医学📢大数据与智慧医学国际学术会议(BDIMed 2025) 🔍武汉科技大学主办|高层次嘉宾出席报告| IEEE出版EI/Scopus/IEEE Xplore检索|高录用、快见刊 🔍征稿范围广:数字健康技术|智能医疗与可穿戴智能|物联网与智慧健康|医学成像…...

LGP7113 [NOIP 2020] 排水系统 学习笔记

LGP7113 [NOIP 2020] 排水系统 学习笔记 Luogu Link 题意简述 给定一个 \(n\) 个点的 \(\texttt{DAG}\)。我们认为它是一个排水系统。 节点 \(u\) 有 \(d_u\) 条输出管道,污水会被平分成 \(d_u\) 份流向下家节点。特别的,\(d_u=0\) 时认为这个节点直通污水厂,是一个最终排水…...

MySqlException: Incorrect string value: \xE6\x99\xBA\xE8\x83\xBD... for column FieldName at row 1

问题:MySqlException: Incorrect string value: \xE6\x99\xBA\xE8\x83\xBD... for column FieldName at row 1 原因:在 MySQL 中遇到错误 MySqlException: Incorrect string value: \xE6\x99\xBA\xE8\x83\xBD... 通常是由于尝试将一个不兼容的字符编码插入到数据库中导致的。…...

Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描

Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities 请访问原文链接:https://sysi…...

SQL Server 2022 RTM 累积更新 #21 发布

SQL Server 2022 RTM 累积更新 #21 发布SQL Server 2022 RTM 累积更新 #21 发布 Microsoft SQL Server 2022 RTM GDR & CU21 (2025 年 9 月更新) relational database management system (RDBMS) & Transact-SQL (T-SQL) 请访问原文链接:https://sysin.org/blog/sql-s…...

针对WPF的功耗优化(节能编程)

一、UI渲染优化 1. 减少不必要的视觉元素<!-- 避免过度使用复杂效果 --> <Border Background="LightGray" CornerRadius="5" Margin="5" Padding="10"><!-- 使用简单样式代替复杂模板 --> </Border><!-- 而…...

Docker 清理完整指南:释放磁盘空间的最佳实践 - 详解

Docker 清理完整指南:释放磁盘空间的最佳实践 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monos…...

微算法科技(NASDAQ: MLGO)开发Rollup技术,探索区块链扩展性解决方案

随着区块链技术的广泛应用,其扩展性问题逐渐成为制约行业发展的核心瓶颈。传统区块链架构在高频交易场景下,因链上资源有限,导致交易确认时间长、手续费高昂,难以满足商业级应用需求。为解决这一痛点,微算法科技(NASDAQ: MLGO)基于状态通道技术积累,进一步研发Rollup技…...

征稿倒计时3天/武汉科技大学主办/医学人工智能/现可享优惠

📢大数据与智慧医学国际学术会议(BDIMed 2025) 📮武汉科技大学主办|高层次嘉宾出席报告| IEEE出版EI/Scopus/IEEE Xplore检索|高录用、快见刊 📆征稿范围广:数字健康技术|智能医疗与可穿戴智能|物联网与智慧健康|医学成像和信息学 等方向均可投递 🔥参会多元化:投稿…...

生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!

本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。作者:执少 对,这是一篇你明知道怎么回事儿,但还是会点进来看的文章! 本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构…...

NOI linux使用教程

一、配置NOI linux环境为中文 1. 桌面右键setting 2.下拉找到地区&语言,点击Manage Installed Languages 3. 选择安装其他语言包Install / Remove Languages 4. 勾选简体中文Chinese (simplified) 5. 输入密码后确认 6. 等待安装即可 7. 安装完后,选择语言下拉选项中的中…...

springboot 文件处理框架

-------------------------------------------------------------------------------------------Apache POI 是一款常用的 Excel 处理工具,但在一些场景下,存在内存占用高、处理速度慢等问题。以下是一些比 POI 更具优势的轻量级 Excel 处理工具:EasyExcel:是阿里巴巴开源…...

Docker:龙晰系统(Anolis)更新yum源下载docker

一、配置Docker的yum库 1. 查看系统版本 # 查看系统版本 cat /etc/os-release2. 配置系统yum源 这里可以看我的另一篇文章: 3. 卸载旧版docker与podman 重点:podman与docker冲突!!龙蜥Anolis Linux默认安装Podman作为容器管理工具,这是由于Podman是Red Hat(龙蜥的开发者之…...

针对单输入单输出、多输入多输出及三阶系统带约束的模型预测控制的实现

针对单输入单输出(SISO)、多输入多输出(MIMO)及三阶系统带约束的模型预测控制(MPC)的实现 一、SISO系统MPC实现 1. 系统建模与离散化 % 传递函数定义(二阶惯性环节) s = tf(s); G = 1/(s^2 + 2*s + 1); Ts = 0.1; % 采样时间 Gd = c2d(G, Ts, zoh); % 离散化关键参数:…...

vue3中父子组件数据同步的默认方式update:xxx

update:xxx 是Vue 3中实现自定义v-model的约定。它的工作原理是: 子组件通过emit(update:propName, newValue)通知父组件需要更新某个属性父组件可以通过v-model:propName="data"或@update:propName="data = $event"来接收这个更新 父组件:<template&…...

解决 C# 当另一个read操作挂起时不能调用read方法的问题

life runs on code作者: zhaotianff转载请注明出处...

AI辅助编程_工具和方式

AI编程AI 编程 这个时代的方式定义问题、建构系统、引导协作 方式 1. Copilot 模式:你写头它写尾 2. Agent 模式:你说话,它写程序 “氛围感编程” 产品形态插件和IDE两种 模式 :问答模式(Ask)、文件编辑模式(Edit)、智能体模式(Agent) 国内百度 腾讯: https://c…...

[完结10章]Java大模型工程能力必修课,LangChain4j 入门到实践

在人工智能技术飞速发展的今天,大型语言模型(LLM)已成为推动创新的核心驱动力。对于Java开发者而言,掌握大模型工程能力不再是一种选择,而是一种必需。LangChain4j作为专为Java开发者设计的工具库,正在成为连接传统Java工程与大模型应用的重要桥梁。参考资料:/s/1kSb5z5…...

k8s源码分析——kubectl命令行交互

Cobra库 k8s各组件的cli部分都使用Cobra库实现,Cobra 中文文档 - 掘金 (juejin.cn),获取方式如下:go get -u github.com/spf13/cobra@latestcobra库中的Command结构体的字段,用于定义命令行工具的行为和选项。它们的作用如下:Use: 命令名称。Aliases: 命令的别名。Suggest…...

将 seata 2.5 发布到私服

将 seata 2.5 发布到私服1.概述 我们在使用seata 做分布式事务的时候,有时需要将 seata 发布到私服中,方便 修改和调整。 2.实现过程 2.1 在根目录下的pom.xml 中 增加发布配置 <distributionManagement><repository><id>jpaas-release</id><url&…...

一些感悟

1. 突破分型 50分 2. 驱动浪 30分 3. 驱动浪突破分型 80分 4. 驱动浪突破分型 回调61.8% 或 80% 做单 100分 其中突破分型是做单前提 重中之重!...

五款免费低代码平台深度横评:斑斑、简道云、宜搭、氚云、织信如何选?

在当今数字化转型的浪潮中,低代码开发平台以其可视化、拖拽式的开发模式,极大地降低了企业应用开发的门槛和成本,成为企业提升效率、快速响应市场变化的重要工具。对于预算有限的中小企业、初创团队或业务部门而言,免费的低代码平台是绝佳的入门选择。本文将为您客观评析五…...

ubuntu历史版本下载

https://old-releases.ubuntu.com/releases/LTS版本:...

读书笔记:数据库索引的智能优化:反向键与降序索引

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...

代码随想录算法训练营第十天| 232.用栈实现队列、 225. 用队列实现栈、20. 有效的括号 、1047. 删除字符串中的所有相邻重复项

232.用栈实现队列 题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/description/ 解题思路:用两个栈实现队列,一个入栈,把入栈里面的元素全部放入出栈 代码实现:点击查看代码def __init__(self):self.stack_in = [] #入栈,主要负责pushself.stack_o…...

零成本搭建企业系统:五款免费低代码平台推荐

概述 在数字化转型的背景下,低代码平台正成为企业快速构建信息系统的重要工具。它们通过可视化、组件化的方式,大幅降低了开发门槛和时间成本,即使没有编程背景的业务人员也能参与系统搭建。本文将为大家推荐五款值得尝试的免费低代码平台,帮助中小团队或个人实现零成本高效…...

故障处理:access$表在数据库丢失的恢复

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障处理:access$表在数据库丢失的恢复 下面是测试一把access$基表丢失…...

从需求出发:教你判断选斑斑还是织信

斑斑低代码以免费、私有化部署优势,适合中小企业;织信则提供高端解决方案,适合中大型企业,两者各有特色。​在数字化转型的浪潮中,低代码开发平台正成为企业降本增效的利器。在众多国产平台中,斑斑低代码和织信无疑是受关注的两个选择。本文将从多个维度深入分析这两款平…...

PLC结构化文本设计模式——建造者模式(Builder Pattern)

PLC Structured Text Design Patterns PLC结构化文本设计模式——建造者模式(Builder Pattern) 介绍 建造者模式是一种创建型设计模式,它允许你创建复杂对象的步骤与表示方式相分离。 建造者模式是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示相分离…...

C++ - STL - 迭代器

什么是迭代器?🤔 想象一下,你有一排整齐的书架,上面放着很多书。你现在想从第一本开始,一本一本地看书名。你怎么做呢? 你会用手指指着第一本书,看完书名后,手指移动到下一本书,再看书名,这样一直指到最后一本书。 在C++的STL中,迭代器就是你的"手指"!它…...

MATLAB的智能扫地机器人工作过程仿真

MATLAB的智能扫地机器人工作过程仿真,结合环境建模、路径规划、避障算法和动态清扫流程一、代码 %% 环境建模(20x20网格地图) mapSize = [20,20]; obstacleDensity = 0.2; % 障碍物密度% 生成随机障碍物地图 envMap = ones(mapSize); obstacles = randi([1,mapSize(1)], cei…...

linux redis 8.2.1软件开机启动redis.service与etc下的rc.local配置2种方式

### 2025-9-8 linux redis 8.2.1软件开机启动```linux 软件开机启动第一种:写服务1、sudo vim /etc/systemd/system/redis.service 内容如redis.service.txt下:[Unit]Description=Redis In-Memory Data StoreAfter=network.target [Service]User=redisGroup=redisExecStart=…...

在GA中添加Tag-GetDynamicSpecSourceTags().AddTag(NewTag)

GetDynamicSpecSourceTags().AddTagexample:FGameplayAbilitySpec AbilitySpec = FGameplayAbilitySpec(AbilityClass,1);AbilitySpec.GetDynamicSpecSourceTags().AddTag(NewTag);其中AbilityClass是GA的Class...

python如何在函数中使用全局变量?

在 Python 中,全局变量是定义在函数外部的变量。要在函数中使用全局变量,需要根据具体情况使用 global 关键字,以下是详细说明和示例: 1. 只读全局变量(无需声明) 如果只是在函数中读取全局变量的值,不需要任何特殊声明,直接使用即可: # 定义全局变量 global_var = &q…...

296、贾生

296、贾生296、贾生 唐●李商隐 宣室求贤访逐臣,贾生才调更无伦。 可怜夜半虚前席,不问苍生问鬼神。【现代诗意译】 汉文帝 在宣室求贤访能 召见贾谊 这个被贬逐臣子 他的才华无与伦比皇帝半夜移膝向前 认真求教 可惜不问人民疾苦 问的是鬼神!小学生C++...

ubuntu 24.04部署mysql8.0.41(glibc2.17)

环境Os:ubuntu 24.04 desktop桌面版mysql:8.0.41 glibc2.17查看操作系统信息root@hxl-VirtualBox:/# uname -aLinux hxl-VirtualBox 6.14.0-29-generic #29~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Aug 14 16:52:50 UTC 2 x86_64 x86_64 x86_64 GNU/Linuxroot@hxl-VirtualBox:…...

C++ - STL - 键值对pair

键值对——pair STL中的pair是一个模板类,用于将两个可能类型不同的值组合成一个单元,常用于存储键值对或函数返回多个值的场景。 创建上面尖括号里面,是用来指定类型的。这种指定类型的方式STL会一直使用的。 更准确的应该是叫泛型,用到的技术是模板。 使用pair的元素 pai…...

第四天学习:LSTM

流水不争先,争的是滔滔不绝—— 每日渐进,终抵远方LSTM(Long Short-Term Memory,长短期记忆网络) 他的前身是RNN(循环神经网络),为啥我们拿着好端端的RNN不用,非要寻找其他的网络算法呢? 这是因为RNN本身存在缺陷:RNN的初衷:处理序列数据(如句子、语音、时间序列)…...