【数据安全必修课】:MyBatis-Plus逻辑删除配置的6个关键步骤,少一步都危险

第一章:MyBatis-Plus逻辑删除的核心概念与安全意义

MyBatis-Plus 的逻辑删除是一种软删除机制,通过标记字段而非物理移除数据库记录来保障数据完整性与系统安全性。该机制在企业级应用中尤为重要,可有效防止误删关键业务数据,并支持后续的数据审计与恢复。

逻辑删除的基本原理

逻辑删除并非真正从数据库中清除记录,而是通过更新某一个特定字段(如 `deleted`)的值来标识该数据是否“已删除”。例如,将 `deleted = 0` 表示正常数据,`deleted = 1` 表示已删除,在查询时 MyBatis-Plus 自动拦截并添加 `WHERE deleted = 0` 条件。 常见的逻辑删除字段定义如下:
ALTER TABLE user ADD COLUMN deleted TINYINT(1) DEFAULT 0 COMMENT '0:正常, 1:已删除';

配置与使用方式

在实体类中通过注解标明逻辑删除字段:
@TableName("user")
public class User {
    private Long id;
    private String name;
    
    @TableLogic // 标记为逻辑删除字段
    private Integer deleted;
}
同时需在配置类中注册逻辑删除插件(MyBatis-Plus 3.4.0+ 已自动集成,无需手动注入)。

安全优势分析

  • 避免敏感数据永久丢失,提升系统容错能力
  • 支持操作追溯,便于合规性审计
  • 减少级联删除引发的外键异常风险
  • 配合回收站功能实现数据可恢复机制
删除方式数据可见性可恢复性适用场景
物理删除完全不可见不可恢复临时数据、日志清理
逻辑删除对业务透明隐藏可通过修改标记恢复核心业务表(用户、订单等)

第二章:环境准备与基础配置

2.1 理解逻辑删除机制及其在数据安全中的作用

逻辑删除是一种通过标记而非物理移除来处理数据记录的技术,广泛应用于对数据完整性要求较高的系统中。
核心实现原理
通过在数据表中引入状态字段(如 is_deleted),将删除操作转化为更新操作。例如:
UPDATE users 
SET is_deleted = TRUE, deleted_at = NOW() 
WHERE id = 1;
该语句将用户标记为已删除,并记录时间,避免数据永久丢失。
优势与应用场景
  • 保障数据可追溯性,支持审计与恢复
  • 防止误删导致的业务中断
  • 配合软删除ORM策略,统一控制数据可见性
安全性增强机制
结合行级权限与查询拦截器,确保被标记删除的数据自动从常规查询中过滤,提升系统整体数据防护能力。

2.2 引入MyBatis-Plus依赖并集成Spring Boot项目

在Spring Boot项目中集成MyBatis-Plus,首先需在pom.xml中添加核心依赖:
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>
该依赖自动装配MyBatis-Plus核心功能,包括增强的Mapper接口、分页插件和条件构造器。引入后无需额外配置即可替代原生MyBatis。
配置扫描路径
确保Spring Boot主类或配置类上添加@MapperScan注解:
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Application { ... }
指定Mapper接口所在包路径,使MyBatis-Plus能自动注册映射器。
简化CRUD开发
继承BaseMapper<T>后,实体对应的Mapper将自动拥有常用增删改查方法,显著提升数据访问层开发效率。

2.3 数据库表结构设计:预留逻辑删除字段的最佳实践

在数据库设计初期,应预先考虑数据的可维护性与可恢复性。逻辑删除是一种常见的软删除策略,通过标记而非物理移除记录来保留历史数据。
核心字段设计
建议在每张业务表中添加以下字段:
  • is_deleted:布尔类型,标识是否已删除(0-未删,1-已删)
  • deleted_at:时间戳类型,记录删除时间,便于审计和恢复
示例建表语句
CREATE TABLE users (
  id BIGINT PRIMARY KEY,
  name VARCHAR(64) NOT NULL,
  is_deleted TINYINT DEFAULT 0 COMMENT '逻辑删除: 0-正常, 1-删除',
  deleted_at DATETIME NULL COMMENT '删除时间',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
该结构确保数据可追溯,且可通过索引优化查询性能,例如在 (is_deleted, deleted_at) 上建立复合索引,提升软删除场景下的检索效率。

2.4 实体类中配置@TableLogic注解的正确方式

在使用 MyBatis-Plus 实现逻辑删除功能时,需在实体类的对应字段上正确使用 `@TableLogic` 注解。
注解应用示例
@TableName("user")
public class User {
    private Long id;
    
    @TableLogic
    private Integer deleted;
}
上述代码中,`deleted` 字段标记为逻辑删除字段。默认情况下,MyBatis-Plus 认为值为 0 表示未删除,1 表示已删除。
自定义值映射
若业务中使用其他值表示状态,可通过注解属性自定义:
@TableLogic(value = "0", delval = "1")
private Integer isDeleted;
其中,`value` 指定未删除值,`delval` 指定已删除值。该配置确保 SQL 自动注入时能正确拼接条件 `WHERE isDeleted = 0`。 此外,数据库表结构必须包含对应字段,并建立索引以提升查询性能。

2.5 全局配置文件中启用逻辑删除插件支持

在 MyBatis-Plus 中,逻辑删除功能需在全局配置中显式启用,以确保数据操作时自动过滤被标记删除的记录。
配置逻辑删除插件
通过 Spring Boot 的 Java 配置方式注册逻辑删除插件:
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加逻辑删除插件
        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
        LogicalDelByIdWithFill innerInterceptor = new LogicalDelByIdWithFill();
        innerInterceptor.setLogicNotDeleteValue("0"); // 未删除值
        innerInterceptor.setLogicDeleteValue("1");    // 已删除值
        interceptor.addInnerInterceptor(innerInterceptor);
        return interceptor;
    }
}
上述代码中,`setLogicNotDeleteValue("0")` 表示未删除状态,`setLogicDeleteValue("1")` 表示已删除状态,字段值匹配数据库中的标识规则。该配置将自动拦截 delete 操作并更新逻辑删除字段,而非执行物理删除。

第三章:核心功能实现与SQL行为分析

3.1 删除操作的底层执行流程与SQL改写原理

在数据库系统中,删除操作并非直接移除数据记录,而是经历一系列底层处理流程。当执行 DELETE FROM users WHERE id = 1 时,系统首先解析SQL语句,生成执行计划。
SQL解析与改写
查询优化器会对原始SQL进行语义分析和条件重写,确保谓词下推和索引可用性。例如:
DELETE FROM orders 
WHERE user_id IN (
  SELECT id FROM users WHERE status = 'inactive'
);
该语句可能被重写为连接形式,提升执行效率。数据库会将子查询展开,并转换为 DELETE ... JOIN 形式,便于使用索引加速匹配。
事务与日志记录
删除操作在事务上下文中执行,需先写入WAL(Write-Ahead Log)日志,确保持久性。每条被删记录生成对应的undo日志,支持回滚。
  • 定位目标行:通过索引找到待删记录的物理地址
  • 标记删除:在B+树中标记记录为已删除(惰性删除)
  • 清理阶段:由后台线程异步回收存储空间

3.2 查询语句自动过滤已删除记录的机制解析

在现代数据库系统中,软删除已成为保障数据安全与可恢复性的常见设计。为避免已标记删除的记录出现在查询结果中,系统通常在底层自动注入过滤条件。
自动过滤实现原理
ORM 框架或数据访问层会在生成 SQL 查询时,自动附加 AND is_deleted = 0 条件,屏蔽已被逻辑删除的记录。
SELECT id, name, created_at 
FROM users 
WHERE status = 'active' 
  AND is_deleted = 0;
上述 SQL 中,is_deleted = 0 由框架自动注入,开发者无需手动添加,确保所有查询默认忽略已删除数据。
过滤机制配置方式
  • 通过模型注解启用软删除(如 GORM 的 DeletedAt 字段)
  • 全局中间件统一处理查询条件注入
  • 数据库视图封装隐藏删除状态

3.3 自定义逻辑删除值类型(0/1、true/false等)的扩展配置

在实际业务场景中,逻辑删除字段的值类型可能不仅限于默认的 `1/0`,还可能是布尔值 `true/false`、字符串 `"deleted"` 等。为支持多样化需求,框架允许对逻辑删除的“已删除”与“未删除”状态值进行扩展配置。
配置方式示例
通过全局插件配置,可自定义逻辑删除的判断值:

MybatisPlusConfig.setLogicDeleteValue("true");  // 标记为已删除的值
MybatisPlusConfig.setLogicNotDeleteValue("false"); // 标记为未删除的值
上述代码将逻辑删除字段的语义从数字类型切换为布尔类型,适用于使用 `BOOLEAN` 类型字段的数据库设计。
支持的值类型对照表
字段类型deleteValuenotDeleteValue
TINYINT10
BOOLEANtruefalse
VARCHAR"deleted""active"

第四章:进阶场景与常见问题规避

4.1 多租户环境下逻辑删除的兼容性处理

在多租户系统中,逻辑删除需兼顾租户隔离与数据一致性。若仅依赖全局 `deleted_at` 字段,可能引发跨租户数据误读。
字段扩展设计
为确保兼容性,建议在逻辑删除字段基础上增加租户标识联合判断:
ALTER TABLE tenant_data 
ADD COLUMN deleted_at TIMESTAMP NULL,
ADD COLUMN tenant_id CHAR(36) NOT NULL;

CREATE INDEX idx_tenant_deleted ON tenant_data(tenant_id, deleted_at);
该SQL扩展了 `deleted_at` 并创建复合索引,确保查询时能同时过滤租户和删除状态,提升查询效率。
查询逻辑修正
所有数据访问必须显式添加双条件:
SELECT * FROM tenant_data 
WHERE tenant_id = 'tenant-001' 
  AND deleted_at IS NULL;
此机制避免已删除数据被错误检索,保障多租户间的数据隔离完整性。

4.2 联表查询中逻辑删除字段的统一过滤策略

在联表查询场景中,若多张表均采用逻辑删除(如 `is_deleted` 字段标记),需确保所有关联表的数据过滤策略一致,避免已删除数据被意外关联。
统一过滤条件的实现
可通过在 JOIN 条件中显式添加状态过滤,确保仅有效数据参与关联:
SELECT u.name, o.order_sn
FROM users u
JOIN orders o ON u.id = o.user_id AND o.is_deleted = 0
WHERE u.is_deleted = 0;
上述 SQL 在 JOIN 和主 WHERE 中均限制 `is_deleted = 0`,防止软删除记录污染结果集。
使用全局查询作用域
现代 ORM(如 GORM)支持定义默认查询作用域,自动注入 `is_deleted = 0` 条件,减少手动遗漏风险。通过统一抽象,可保障所有联表操作自动遵循数据可见性规则。

4.3 批量删除与恢复操作的安全控制要点

在执行批量删除与恢复操作时,必须建立严格的安全控制机制,防止误操作或恶意行为导致数据丢失。首要措施是实施权限分级管理,确保只有授权角色可触发高危操作。
最小权限原则与操作审计
通过RBAC模型分配操作权限,并记录完整操作日志,包含操作者、时间、目标资源等信息,便于追溯与审查。
软删除与回收机制
采用软删除标记替代物理删除,保留数据恢复窗口期。以下为基于状态字段实现软删除的示例代码:

-- 添加删除状态字段
ALTER TABLE files ADD COLUMN status TINYINT DEFAULT 1;
-- 标记删除(非物理清除)
UPDATE files SET status = 0 WHERE id IN (1001, 1002, 1003);
-- 恢复已标记数据
UPDATE files SET status = 1 WHERE id IN (1001);
该逻辑通过status字段区分数据可见性,避免直接清除记录,提升恢复安全性。同时结合定时任务清理过期软删除数据,实现空间与安全的平衡。

4.4 避免误删的关键审计日志与权限校验建议

在高权限操作场景中,误删操作可能导致不可逆的数据损失。建立完善的审计日志机制和细粒度权限校验是防范风险的核心手段。
审计日志记录关键操作
所有删除请求应被完整记录,包括操作者、IP、时间及目标资源。例如:
// 记录删除操作日志
logEntry := AuditLog{
    Action:     "DELETE",
    Resource:   "/api/v1/users/123",
    User:       ctx.User.Email,
    ClientIP:   ctx.ClientIP(),
    Timestamp:  time.Now().UTC(),
}
auditLogger.Write(logEntry)
该代码片段确保每次删除行为都被持久化,便于后续追溯与分析。
基于角色的权限校验流程
使用RBAC模型控制删除权限,避免越权操作:
  • 用户发起删除请求
  • 中间件验证JWT并提取角色
  • 检查角色是否具备delete权限
  • 执行预检逻辑(如资源是否存在)
  • 最终执行删除或拒绝

第五章:生产环境部署前的最终检查清单

配置文件与敏感信息隔离
确保所有环境变量和密钥已从代码中移除,使用外部配置管理工具如 Vault 或 Kubernetes Secrets。避免在版本控制系统中暴露敏感数据。
  • 确认 .env 文件已被加入 .gitignore
  • 验证 CI/CD 流水线使用加密的 secret 注入机制
  • 检查数据库连接字符串是否通过运行时注入
日志级别与监控集成
生产环境应禁用调试日志,仅保留 warn 或 error 级别输出,防止性能损耗与信息泄露。

// main.go
log.SetLevel(log.WarnLevel) // 确保上线前调整日志等级
log.WithFields(log.Fields{
    "service": "user-api",
    "version": "1.2.0",
}).Info("Service starting")
健康检查与就绪探针
Kubernetes 部署需配置正确的 liveness 和 readiness 探针,避免流量进入未准备就绪的实例。
探针类型路径初始延迟(秒)间隔(秒)
Liveness/healthz3010
Readiness/ready105
资源限制与自动伸缩策略
为容器设置合理的 CPU 与内存 request/limit,防止资源争抢或 OOMKill。

请求延迟 > 200ms → HPA 触发扩容 → 新实例加入负载均衡 → 健康检查通过后接收流量

确保镜像标签为不可变版本(如 v1.4.2),禁止使用 latest 标签。同时验证所有依赖库无已知高危 CVE 漏洞,可通过 Trivy 扫描:

trivy image my-registry.com/user-service:v1.4.2
SQL注入攻防实战:从原理剖析到应急响应全流程 SQL注入作为Web安全领域的经典漏洞,其核心原理在于应用程序未能正确处理用户输入,导致攻击者能够将恶意SQL代码注入到查询语句中执行。这种攻击利用了数据与指令边界模糊的安全缺陷,通过构造特定的输入,可以绕过身份验证、窃取敏感数据、篡改数据库内容,甚至控制整个数据库服务器。在技术价值层面,理解SQL注入不仅是防御的基础,更是深入理解Web应用与数据库交互机制的关键。从应用场景来看,无论是电商、金融还是企业OA系统,任何涉及数据库交互的Web应用都可能面临此类威胁。本文聚焦于SQL注入的实战攻防,通过剖析数字 阅读详情

相关推荐

JeecgBoot漏洞利用工具解析:一键getshell原理与安全加固实践

在应用安全领域,远程代码执行(RCE)和文件上传漏洞是Web系统面临的高危威胁,其核心原理在于对用户输入的控制不足或安全校验缺失。攻击者通过构造恶意请求,可绕过系统边界,在服务器上执行任意命令或上传恶意文件,从而获取系统控制权。这类漏洞的技术价值在于揭示了应用层安全防护的薄弱环节,其利用方式自动化、集成化趋势明显,极大地提升了攻击效率。在低代码开发平台等快速构建的业务系统中,此类风险尤为突出。应用场景广泛覆盖安全测试、渗透评估与应急响应。本文聚焦于JeecgBoot平台的历史高危漏洞,深入解析其SQL注入、

weixin_30787531的博客 553

MyBatis-Plus selectOne方法TooManyResultsException异常深度解析与解决方案

在数据库查询操作中,确保查询结果的唯一性是保证数据一致性和业务逻辑正确性的关键基础。其核心原理在于通过WHERE条件在数据库层面精确筛选记录,当预期返回单条记录但实际匹配到多条时,便会触发异常。这一机制的技术价值在于遵循了防御式编程思想,通过快速失败(Fail-Fast)避免脏数据流向业务层,从而预防更隐蔽的逻辑错误。在实际应用场景中,这常见于用户查询、配置项获取等需要唯一性保证的业务环节。本文聚焦于MyBatis-Plus框架中的`selectOne`方法,深入探讨其遇到`TooManyResultsEx

weixin_34099526的博客 297

Spring Boot访客管理系统实战:可落地的工程化样本

访客管理系统是企业门禁与行政管理的关键数字化环节,其本质是围绕身份核验、预约登记、状态流转、通行控制与数据归档构建的业务闭环。系统需兼顾高可靠性、低耦合扩展性及合规安全要求,技术上涉及Spring Boot分层架构设计、MyBatis-Plus高效数据访问、RESTful API契约治理、JWT+短信双因子确认机制,以及Redis缓存支撑的离线扫码核验等核心能力。本文以真实可运行的Spring Boot 2.7工程为载体,深入剖析从数据库范式设计、慢查询优化、敏感信息加密脱敏,到Docker容器化部署与K8

weixin_34279579的博客 426

Mybatis-Plus入门系列(6)- MybatisPlus之防止全表更新与删除插件BlockAttackInnerInterceptor

前言 业务bug或者漏洞可能导致把整个表都更新或者删除,在生产环境中这是十分危险的事情,plus也考虑到了这一点,提供了防止全表更新与删除插件 测试案例 创建全表删除与更新接口,先测试发现可以删除或更新表所有数据 @GetMapping("deleteAll") public Object deleteAll() { int delete = orderTblMapper.delete(null); return "删除成功"; } @G

记录知识、锤炼自我 1万+

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

双向全桥CLLC谐振变换器仿真模型(Simulink仿真实现)

内容概要:本文系统介绍了双向全桥CLLC谐振变换器的Simulink仿真模型,重点阐述了变频控制、闭环仿真及其与多种电力电子拓扑(如维也纳整流器、DAB变换器、图腾柱PFC等)的联合仿真设计。资源包涵盖2.5kW双向全桥LLC、V2G电动汽车充放电系统、三相PFC、多相交错LLC等多种变换器的仿真案例,并深入展示了三电平VIENNA整流器在双闭环PI控制与SVPWM调制策略下,结合上下电容电压差值补偿实现中点电位平衡的先进控制方法。通过仿真验证,该策略不仅有效维持了800V直流母线电压的稳定,还在动态工况下显著提升了电容电压的均衡度,同时保持了较低的输入电流THD,充分体现了SVPWM与中点平衡控制协同优化的技术优势。; 适合人群:具备电力电子与自动控制理论基础,从事新能源发电、电动汽车、工业电源、微电网等领域的研究生、工程师及科研人员。; 使用场景及目标:① 学习并构建高频谐振变换器(如LLC、CLLC)的Simulink仿真模型,掌握其变频与混合控制策略;② 深入理解并应用中点电位平衡、双闭环PI控制、SVPWM调制等核心技术于VIENNA等三电平变换器中;③ 复现高水平期刊论文中的控制算法,服务于科研项目申报、学术论文撰写或工程产品开发。; 阅读建议:该资源为综合性仿真资料库,建议使用者结合自身研究方向(如电动汽车充电、新能源并网)选择对应案例进行精学,重点关注控制策略的设计逻辑、仿真参数的整定方法以及SVPWM与中点平衡的协同机制,并充分利用附带的计算书和参考文献深化理解,以实现从仿真模型到实际工程应用的顺利转化。

MyBatis与MyBatis-Plus核心面试题解析

ORM框架是Java开发中处理数据库操作的核心技术,MyBatis作为半自动化的SQL映射框架,通过XML或注解配置实现SQL与Java对象的灵活映射。其核心原理包括SqlSessionFactory构建、Executor执行器机制以及动态SQL生成。MyBatis-Plus在MyBatis基础上进行了增强,提供了ActiveRecord模式、Lambda表达式查询等高效功能,显著提升开发效率。在实际应用中,MyBatis插件机制和TypeHandler扩展点为定制化需求提供了可能,而性能优化方面则涉及流式

weixin_33904756的博客 541

ADS高级技巧:用DAC控件实现多变量参数扫描(以S参数和阻抗匹配为例)

本文深入解析了ADS软件中DAC控件的高级应用,指导用户如何利用其实现多变量参数扫描。通过构建支持多变量的MDF文件,并将其与原理图变量动态映射,可以高效完成如S参数和阻抗匹配等复杂场景的联合仿真与可视化分析,显著提升射频电路设计的效率和深度。

3a9bq4r8t2y的博客 254

别再写delete了!MybatisPlus的@TableLogic注解,让你的删除操作更安全(Spring Boot实战)

本文详细介绍了MybatisPlus的@TableLogic注解在Spring Boot项目中的应用,通过逻辑删除替代物理删除,提升数据安全性。文章涵盖注解的使用方法、行为解析及生产环境实战技巧,特别适合需要数据保护的金融、医疗等场景。

weixin_30568591的博客 370

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4550

安鸾渗透测试平台-CTF系列-bash

工具Xshell 公网VPS接收反弹shell Xshell新手的下载及安装教程(超详细)_新手程序员攀爬之路的博客-优快云博客_xshell使用教程 Xshell连接后 #!/bin/bash cat ${0} while : do echo "$" read input output=`$input` 显示了一个文件,不过咋做呢?这里可能考察的是linux的语法 方法 输入bash 获得shell cat ${0} while : do .

AAAAAAAAAAAA66的博客 2689

MyBatis-Plus多租户数据隔离下,如何安全实现全局数据操作?

在多租户(Multi-Tenancy)架构中,数据隔离是保障业务安全与逻辑的核心机制,通常通过在SQL中自动追加租户ID条件实现。其原理是基于拦截器对数据访问层进行统一过滤,确保不同租户的数据视图严格分离。这一技术对于SaaS平台或企业级应用至关重要,它能有效实现数据层面的安全隔离与资源复用。然而,在诸如全局数据统计、跨租户数据同步或系统维护等特定应用场景下,需要临时、可控地绕过这层隔离。为此,可以结合Spring AOP与自定义注解技术,设计一个声明式的“开关”。通过定义@IgnoreTenant注解标记

weixin_33857230的博客 399

利用ORCAD/pspice 仿真分析电路的幅度相位谱

利用ORCAD的pspice仿真分析电路的相位谱1.介绍2.搭建电路原理图3.建立仿真文件,进行交流分析4.仿真、查看输出5.总结 1.介绍 orcad配合pspice一直是电路原理图绘制和仿真的主要工具,pspice工具提供了诸如暂态分析、直流分析、交流分析等多个工具。学校主要教的是multisim,对orcad讲得很少,最进要利用orcad对运放构成的电路的频响、相移特性进行分析,发现资料幅度...

qq_40011737的博客 1万+

MyBatisPlus SQL注入攻击防护保障CosyVoice3数据安全

在CosyVoice3这类AI语音系统中,后端数据交互频繁,SQL注入风险不容忽视。MyBatisPlus通过预编译和Wrapper构造器从设计层面杜绝注入漏洞,让开发者天然写出安全代码。结合最佳实践,可为系统提供默认的安全防护能力,无需额外干预即可抵御常见攻击。

weixin_30600615的博客 928

ANSYS ACT插件开发实战指南:从IronPython脚本到XML界面设计

本文提供了一份详尽的ANSYS ACT插件开发实战指南,重点讲解如何利用IronPython脚本实现仿真自动化,并通过XML设计用户友好的向导界面。内容涵盖从环境搭建、脚本编写(如自动创建材料)、界面控件绑定到调试打包的全流程,旨在帮助仿真工程师和团队负责人将重复性工作流程标准化,显著提升ANSYS软件的使用效率。

weixin_29310605的博客 457

PX4代码解析(1)

前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。 目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构 一、代码整体结构 既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V

qq_36903625的博客 1万+

AI编程与Agent实战:构建AI代码审查工具

AI编程工具的快速演进正在重塑开发者的工作方式,从代码补全到对话式编程,再到可自主拆解任务的AI Agent,技术边界不断被拓宽。理解其核心原理,如提示词工程如何约束模型输出、AI幻觉为何会产生误导性结果,是工程落地的前提。在实际开发中,AI不仅用于生成代码,更能通过本地规则与大模型结合,承担代码审查、缺陷扫描等确定性任务,降低风险并提升效率。从环境配置到提示词设计,从规则引擎到API调用,一套轻量级AI代码审查Agent的完整实现,能帮助开发者直观掌握AI工程实践的方法论。这并非取代程序员的未来预言,而是

weixin_33769125的博客 409

【华为OD机试真题】65、高矮个子排队 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 >  我们现在希望小朋友排队,以"高" "矮" "高" "矮" 顺序排列,每一个高位置的小朋友要比相邻的位置高或者相等;每个 "矮" 位置的小朋友要比相邻的位置矮或者相等; >  要求小朋友们移动的距离和最小,第一个从“高"位开始排,输出最小移动距离即可。 >  例如,在示范小队{5,3,1,2,3}中, {5, 1, 3, 2, 3}是排序结果。 > 

KJ.JK 2104

MySQL数据操作进阶:从增删改查到企业级安全实践

很多开发者学 MySQL,都是从“增删改查”这四个字开始的。但真正在企业里做项目时你会发现,把数据“放进去”、“改一改”、“删掉它”这几件事,远不止会写 INSERT 、 UPDATE 、 DELETE 这么简单。 你有没有遇到过这些问题? 新功能上线,批量导入用户数据,结果因为一条数据格式不对,整个导入失败,需要人工一条条核对。 运营同学误操作,把商品价格批量改成了0,如何快速、准确地恢复? 想删除一条“无用”的测试数据,却因为外键约束,导致删除失败,报错信息看得一头雾水。 在高并发场景下,简单的更新操作

dfdfadsf3443的博客 474

实战案例四:Claude Code + Excel 技能处理表格数据

Excel 是商业世界中最通用的数据工具。无论是财务报表、销售数据还是项目计划,Excel 无处不在。本案例将展示如何利用 Claude Code 的 Excel 技能,自动化处理复杂的表格数据,告别繁琐的手工操作。

gaoxiang_120的专栏 475

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

表维护视图:标准化CRUD后台的架构设计与工程实践

在软件开发中,CRUD(增删改查)是构建业务系统后台管理功能的基础操作。其原理是通过抽象通用数据操作逻辑,将数据库表的维护界面标准化和配置化,从而实现快速生成。这项技术的核心价值在于显著提升开发效率、降低维护成本,并保障数据操作规范。它广泛应用于基础数据配置、内容管理(CMS)、系统参数管理等需要频繁进行数据维护的内部运营场景。本文聚焦于表维护视图这一具体实现模式,深入探讨其基于元数据驱动与动态渲染的整体架构,并解析如何通过钩子函数等机制平衡通用性与灵活性,以应对企业级应用中的复杂需求。

weixin_34416649的博客 432

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

编辑框参数模板的保存与回显:从数据清洗到安全渲染的完整实践

在Web应用开发中,数据持久化与安全渲染是构建健壮系统的核心基础。其原理在于确保用户输入的数据能够完整、准确地存储,并在需要时安全地呈现。这一过程的技术价值在于保障数据一致性、防止安全漏洞(如XSS与SQL注入),并提升用户体验。典型的应用场景包括报表系统的参数模板、后台管理配置以及任何需要保存用户自定义输入的表单。本文聚焦于编辑框这一基础但灵活的输入控件,深入探讨如何实现其参数的可靠保存与回显。针对编辑框内容的不确定性(如特殊字符、长文本),方案涵盖了从前端数据收集、后端业务逻辑增强(借鉴ABAP保存增强

weixin_34163553的博客 403

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Redis企业实战:从基础到高级架构的完整指南(不全)

《Redis企业级实战与高级架构》课程摘要 本课程全面讲解Redis从基础到企业级应用的完整知识体系,分为基础篇、实战篇和高级篇三部分,总时长超过13小时。 基础篇(12章): 系统讲解Redis核心概念、安装部署和5种数据结构 详细演示String/Hash/List/Set/ZSet等命令操作 深入讲解Key层级设计、通用命令和图形化工具 实战篇(30章): 通过黑马点评项目实现短信登录、商户缓存等10大业务场景 解决缓存穿透/击穿/雪崩问题,实现分布式锁方案 使用Lua脚本、Redisson和消息队列

2501_90864902的博客 267

MySQL 入门

本文全面介绍了MySQL数据库及其相关技术,内容涵盖: 数据库基础概念:包括数据库系统组成、关系型与非关系型数据库对比、MySQL核心特点等; MySQL操作管理:详细讲解了安装配置、SQL语句分类、数据类型、索引原理等核心内容; 高级特性:深入分析事务、锁机制、存储引擎、主从复制等关键特性; 扩展架构:系统介绍了读写分离、集群部署、分库分表等企业级解决方案; 开发集成:提供了JDBC连接、MyCat中间件等实践指南。 文章采用结构化组织方式,从基础到高级层层递进,包含了大量实用性强的代码示例和配置模板

weixin_51689532的博客 1245

【课程设计】基于Spring boot与Vue的医疗与健康管理系统实现 计算机毕业设计源码40171

本系统基于Spring Boot框架与Vue.js前端技术,结合Java编程语言和MySQL数据库,旨在实现一个高效、便捷且用户体验良好的医疗与健康管理系统。该系统主要分为患者用户、医生用户和管理员三大模块,覆盖了从注册登录到健康管理的全流程服务。患者用户可以通过系统进行注册登录、查看医生信息、在线预约、管理个人健康档案等操作;医生用户则能够管理个人信息、处理患者咨询和预约请求、安排排班计划等;管理员负责整个系统的用户管理、信息发布、权限分配等工作.....

Biye_Design的博客 670

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+
上一篇: (XX:MaxGCPauseMillis设置指南):从理论到生产环境的最佳实践全曝光
下一篇: 【Java 14记录类深度解析】:equals方法底层实现原理揭秘与性能优化策略
fastdebug
博客等级 码龄11年 149粉丝 2006原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值