【AOP】AOP-面向切面编程 (系统性知识体系全解)

news2026/3/17 11:38:11
文章目录AOP 面向切面编程 系统性知识体系全解一、AOP 基础认知层1.1 核心定义1.2 诞生背景与解决的核心痛点1.3 核心价值二、AOP 核心概念体系2.1 核心结构术语2.2 通知Advice的5种标准类型通知标准执行顺序三、AOP 底层实现机制3.1 织入时机的三大分类3.2 静态AOP实现3.3 动态AOP实现3.3.1 JDK动态代理3.3.2 CGLIB动态代理3.3.3 JDK动态代理 vs CGLIB动态代理 核心对比四、主流AOP框架实现详解4.1 AspectJ4.2 Spring AOP4.3 Spring AOP vs AspectJ 核心对比五、AOP 核心应用场景5.1 通用技术场景5.2 业务定制场景六、AOP 进阶与高级特性6.1 切点表达式高级用法6.2 切面优先级控制6.3 引入Introduction类型间声明6.4 高级织入能力七、AOP 常见问题、避坑指南与最佳实践7.1 高频问题与避坑方案问题1代理自调用问题最常见问题2切面不生效的通用排查思路问题3Transactional事务注解不生效问题4环绕通知常见坑问题5通知执行顺序不符合预期7.2 工程最佳实践八、AOP 与相关编程范式/技术的对比8.1 AOP vs OOP8.2 AOP vs 装饰器模式8.3 AOP vs 过滤器(Filter) vs 拦截器(Interceptor)8.4 AOP vs 责任链模式AOP 面向切面编程 系统性知识体系全解本文从基础认知、核心概念、底层原理、主流实现、工程应用、进阶特性、避坑实践、范式对比8大维度构建AOP完整的知识体系覆盖从入门到精通的全链路内容。一、AOP 基础认知层1.1 核心定义AOPAspect-Oriented Programming面向切面编程是一种横向抽象的编程范式是OOP面向对象编程的重要补充核心目标是将跨多个业务模块的横切关注点与核心业务逻辑无关的通用行为与业务主逻辑解耦实现非侵入式的代码增强、统一管控与复用。1.2 诞生背景与解决的核心痛点OOP以纵向继承、封装为核心解决了业务模块的划分与复用问题但面对横切关注点时存在天然缺陷代码冗余通用逻辑日志、权限、事务、监控分散在大量业务方法中重复编码耦合度高通用逻辑与业务逻辑强绑定修改通用逻辑需要改动所有业务代码维护性差通用逻辑散落在各处无法统一管控排查问题成本极高侵入性强业务代码中充斥大量非业务代码破坏了业务逻辑的纯粹性AOP通过横向抽取、统一织入的思想完美解决了上述问题。1.3 核心价值解耦横切逻辑与业务逻辑完全分离互不干扰复用一套切面逻辑可应用于无数个业务节点无需重复编码无侵入业务代码无需任何修改即可获得增强能力集中管控所有横切逻辑统一维护修改一处全量生效高可维护性降低代码复杂度提升系统可测试性与可扩展性二、AOP 核心概念体系AOP的所有能力都基于以下核心术语构建术语间的关联关系是理解AOP的核心。2.1 核心结构术语术语核心定义核心定位切面Aspect横切关注点的模块化封装是切点通知的组合体比如日志切面、事务切面AOP的核心载体一个切面对应一类通用能力连接点JoinPoint程序执行过程中能够被拦截的节点比如方法执行、构造器调用、字段访问、异常抛出等Spring AOP仅支持方法执行类型的连接点AOP的作用目标是切面可以插入代码的位置切点Pointcut用于匹配连接点的规则表达式定义了哪些连接点会被拦截、被增强AOP的筛选规则解决在哪里增强的问题通知/增强Advice在匹配的连接点上要执行的具体横切逻辑代码比如日志打印、权限校验AOP的执行逻辑解决什么时候增强、做什么的问题目标对象Target被AOP增强的原始业务对象也叫被代理对象AOP的增强对象是业务逻辑的载体织入Weaving将切面逻辑应用到目标对象生成增强后的代理对象的过程AOP的实现手段是连接切面与目标对象的桥梁引入Introduction也叫类型间声明为现有类动态添加新的方法/属性无需修改原类代码AOP的进阶能力实现对类结构的动态扩展2.2 通知Advice的5种标准类型通知定义了切面逻辑的执行时机是AOP最核心的执行单元按执行顺序与场景分为5类前置通知Before连接点目标方法执行之前执行无法阻止目标方法执行除非主动抛出异常常用于参数校验、权限校验、日志记录。后置返回通知AfterReturning目标方法正常执行完成、无异常抛出后执行可获取目标方法的返回值常用于正常流程的日志记录、返回值处理。后置异常通知AfterThrowing目标方法抛出指定异常时执行可获取异常对象常用于异常监控、告警、统一异常处理。后置最终通知After目标方法执行完成后无论正常结束还是异常抛出都会执行类似Java的finally块常用于资源释放。环绕通知Around包围整个目标方法的执行可在方法执行前后自定义逻辑甚至可以决定是否执行目标方法、修改入参/返回值、处理异常是功能最强大的通知类型常用于事务管理、缓存、限流、性能监控。通知标准执行顺序正常执行流程环绕前置逻辑 → 前置通知 → 目标方法 → 后置返回通知 → 后置最终通知 → 环绕后置逻辑异常执行流程环绕前置逻辑 → 前置通知 → 目标方法抛异常 → 后置异常通知 → 后置最终通知 → 环绕异常处理逻辑三、AOP 底层实现机制AOP的核心实现基于代理模式根据织入时机的不同分为静态AOP和动态AOP两大实现体系。3.1 织入时机的三大分类织入是AOP的核心流程决定了切面逻辑何时被嵌入到目标代码中分为3个阶段织入时机执行阶段代表实现核心特点编译期织入CTWJava源码编译为Class字节码时AspectJ ajc编译器织入彻底运行期无开销需特殊编译器灵活性低类加载期织入LTWJVM加载Class文件时AspectJ LTW、Spring LTW无需修改源码/编译器通过javaagent修改字节码织入能力强运行期织入RTW程序运行过程中Spring AOPJDK/CGLIB动态代理无需修改编译/加载流程完全动态灵活性高运行期有少量开销3.2 静态AOP实现静态AOP在程序运行前就将切面逻辑织入到目标类的字节码中生成的Class文件已经包含完整的增强逻辑运行期直接执行。核心代表AspectJ核心原理通过专用的ajc编译器在编译期/编译后二进制织入修改字节码将切面代码直接插入到目标类的对应连接点位置优势性能极高运行期无反射/代理开销、织入彻底、支持所有类型的连接点、无自调用问题劣势依赖专用编译器编译期确定增强逻辑灵活性差调试成本略高3.3 动态AOP实现动态AOP在程序运行期动态生成代理对象将切面逻辑嵌入到代理对象中不修改原始目标类的字节码是Java企业级开发中最主流的实现方式核心分为两种代理机制。3.3.1 JDK动态代理核心原理基于Java原生反射机制实现要求目标类必须实现至少一个接口运行期动态生成一个实现了目标类所有接口的代理类代理类通过InvocationHandler的invoke方法在调用目标方法前后执行增强逻辑。核心APIjava.lang.reflect.Proxy代理类生成、java.lang.reflect.InvocationHandler增强逻辑处理器核心特点必须基于接口只能代理接口中定义的方法JDK原生支持无需第三方依赖基于接口实现无继承限制可代理final类只要实现了接口无法代理类的非接口方法、private方法、static方法3.3.2 CGLIB动态代理CGLIBCode Generation Library基于ASM字节码生成框架实现是JDK动态代理的补充方案。核心原理运行期动态生成目标类的子类重写目标类的非final方法在子类的重写方法中嵌入增强逻辑通过继承实现代理。核心特点无需目标类实现接口可代理普通类基于继承实现无法代理final类、final方法、private方法、static方法Spring 3.2 内置CGLIB无需额外引入依赖Spring Boot 2.x 默认强制使用CGLIB代理无需手动配置3.3.3 JDK动态代理 vs CGLIB动态代理 核心对比对比维度JDK动态代理CGLIB动态代理底层依赖JDK原生反射机制ASM字节码生成框架接口要求目标类必须实现接口无接口要求实现方式实现目标类的接口继承目标类生成子类限制场景无法代理非接口方法无法代理final类、final方法性能表现JDK 1.8 性能优于CGLIB早期版本性能占优高版本略逊于JDK代理Spring默认规则目标类实现接口时默认使用目标类未实现接口时默认使用Boot 2.x 全局默认四、主流AOP框架实现详解Java生态中最主流的AOP实现为Spring AOP与AspectJ二者定位不同适用场景差异显著。4.1 AspectJ产品定位完整的、企业级AOP解决方案是AOP规范的标准实现功能覆盖AOP的全部能力核心特性支持全类型连接点方法执行、构造器调用、字段访问/修改、静态方法执行、异常抛出、类初始化等支持全阶段织入编译期织入、编译后织入、类加载期织入语法完善支持复杂的切点表达式、切面作用域、类型间声明等高级特性性能极致静态织入无运行期开销性能与原生代码几乎无差异适用场景对性能要求极高、需要细粒度AOP控制、非Spring环境、需要解决代理自调用问题的场景4.2 Spring AOP产品定位Spring生态内置的轻量级AOP实现与Spring IoC容器深度整合专为Spring业务开发设计核心特性仅支持方法执行类型的连接点不支持字段、构造器等其他连接点基于运行期动态代理实现JDK/CGLIB无编译期依赖兼容AspectJ的注解语法Aspect、Pointcut等但底层仍为Spring动态代理并非AspectJ编译器与Spring IoC无缝整合仅支持Spring容器管理的Bean的增强学习成本低配置简单开箱即用核心注解AspectJ风格注解作用Aspect标记一个类为切面类Pointcut定义切点表达式实现切点复用Before定义前置通知AfterReturning定义后置返回通知AfterThrowing定义后置异常通知After定义后置最终通知Around定义环绕通知DeclareParents实现引入功能为类动态添加接口实现Order定义切面的执行优先级适用场景Spring/Spring Boot生态下的业务开发解决通用横切关注点事务、日志、权限、缓存等是Java后端开发的首选AOP方案4.3 Spring AOP vs AspectJ 核心对比对比维度Spring AOPAspectJ定位轻量级、Spring生态专属的AOP实现完整的、全场景的AOP标准实现底层实现运行期动态代理JDK/CGLIB静态字节码织入编译期/类加载期连接点支持仅支持方法执行支持所有类型的连接点织入时机仅运行期织入编译期、编译后、类加载期性能有动态代理与反射的少量开销静态织入性能接近原生代码自调用问题无法解决需额外处理原生支持无自调用问题学习成本低配置简单与Spring无缝整合略高需学习专用语法与织入配置适用范围仅Spring容器管理的Bean所有Java类包括第三方库五、AOP 核心应用场景AOP的核心价值在于处理跨模块的横切关注点分为通用技术场景与业务定制场景两大类覆盖Java后端开发的绝大多数通用需求。5.1 通用技术场景统一日志记录接口入参出参、执行耗时、操作人、异常日志的统一打印替代每个方法中的重复日志代码声明式事务管理Spring核心功能Transactional底层基于AOP环绕通知实现统一处理事务的开启、提交、回滚统一权限校验接口访问权限、操作权限的统一校验替代每个接口中的重复权限判断代码统一性能监控方法执行耗时统计、接口吞吐量监控、慢接口告警实现系统性能的统一管控统一缓存管理Spring Cache的Cacheable/CachePut/CacheEvict基于AOP实现缓存的读写、更新、删除的统一处理限流熔断降级Sentinel、Resilience4j、Hystrix的注解式限流熔断基于AOP实现接口的流量控制与容错处理统一异常处理特定模块/层级的异常捕获、封装、告警与全局异常处理器形成互补统一参数校验自定义参数校验规则的统一执行补充JSR-380标准校验的能力5.2 业务定制场景操作审计日志记录用户的操作行为包括操作人、操作时间、操作类型、修改前后的数据对比满足合规审计要求数据权限过滤基于AOP动态为SQL添加数据权限条件实现用户只能查看自身/所属部门数据的需求注解式分布式锁基于Redisson、Curator等框架通过AOP实现注解式分布式锁的自动加锁、释放、超时处理多数据源动态切换基于AOP根据注解/业务场景动态切换数据源实现读写分离、分库分表的数据源路由敏感数据脱敏接口返回数据时对手机号、身份证号、银行卡号等敏感字段进行统一脱敏处理接口重复提交防护基于AOPRedis实现接口幂等性控制防止用户重复提交表单业务流程埋点对核心业务流程的节点进行统一埋点上报用户行为数据用于数据分析与业务优化六、AOP 进阶与高级特性6.1 切点表达式高级用法切点表达式是AOP的核心筛选规则Spring AOP支持AspectJ的切点表达式语法核心分为9类指示器支持逻辑组合与复用。核心执行指示器execution最常用的指示器匹配方法执行的连接点语法execution(修饰符? 返回值类型 包名.类名.方法名(参数列表) 异常?)示例execution(* com.xxx.service.*.*(..))匹配service包下所有类的所有方法类型匹配指示器within匹配指定类型内的所有方法示例within(com.xxx.service.*)代理/目标对象匹配this匹配代理对象类型、target匹配目标对象类型参数匹配指示器args匹配方法参数类型符合要求的连接点注解匹配指示器业务开发最常用annotation匹配方法上有指定注解的连接点示例annotation(org.springframework.transaction.annotation.Transactional)within匹配类上有指定注解的所有方法target匹配目标对象上有指定注解的所有方法args匹配方法参数上有指定注解的连接点组合与复用通过、||、!实现多规则逻辑组合通过Pointcut定义命名切点实现表达式的复用。6.2 切面优先级控制多个切面作用于同一个连接点时可通过优先级控制执行顺序规则为优先级值越小切面优先级越高高优先级切面的前置通知先执行后置通知后执行先进后出的栈结构。实现方式1切面类实现org.springframework.core.Ordered接口重写getOrder()方法返回优先级值实现方式2切面类添加Order注解示例Order(1)注意同一个切面内的多个通知执行顺序由Spring固定无法通过Order修改。6.3 引入Introduction类型间声明引入是AOP的进阶能力可为目标类动态添加新的接口和实现无需修改原类的任何代码。Spring AOP实现方式通过DeclareParents注解实现语法示例// 为所有Service接口的实现类动态添加LogService接口的实现DeclareParents(valuecom.xxx.service.*,defaultImplDefaultLogService.class)publicstaticLogServicelogService;适用场景为一批类统一添加通用能力接口比如日志、校验、数据脱敏等。6.4 高级织入能力类加载期织入LTW通过JVM的javaagent机制在类加载到JVM时通过字节码转换器织入切面逻辑Spring提供了原生的LTW支持无需修改编译器即可实现比动态代理更彻底的织入解决部分自调用问题。二进制织入AspectJ支持对已编译好的Class文件、Jar包进行织入可对第三方依赖库的类进行AOP增强无需修改第三方源码。七、AOP 常见问题、避坑指南与最佳实践7.1 高频问题与避坑方案问题1代理自调用问题最常见现象同一个类内部方法A调用方法B方法B上的AOP切面不生效根因AOP的增强逻辑仅在代理对象上生效内部调用是this.方法B()this是原始目标对象而非代理对象因此无法触发切面解决方案按推荐优先级排序【最优】将被调用的方法B拆分到独立的Spring Bean中彻底避免自调用【兼容方案】开启代理暴露通过AopContext.currentProxy()获取当前代理对象再调用方法B需在启动类添加EnableAspectJAutoProxy(exposeProxy true)【终极方案】使用AspectJ静态织入直接修改目标类字节码无代理对象彻底解决自调用问题【不推荐】从Spring容器中手动获取当前Bean的代理对象耦合Spring容器API问题2切面不生效的通用排查思路检查切面类是否添加了Aspect注解且被Spring扫描到添加了Component等注解在启动类扫描包范围内检查目标对象是否是Spring容器管理的Bean非Spring管理的对象无法被Spring AOP增强检查切点表达式是否正确是否能匹配到目标连接点检查被增强的方法是否是private、final、static类型此类方法无法被动态代理增强检查是否存在自调用问题Spring Boot环境下检查是否开启了EnableAspectJAutoProxy注解Spring Boot 2.x 默认开启问题3Transactional事务注解不生效本质是AOP切面不生效除上述排查点外额外注意事务注解只能作用于public方法非public方法的事务注解会被Spring忽略异常被try-catch捕获且未重新抛出事务无法感知异常不会回滚抛出的异常不是RuntimeException/ErrorSpring默认只对非受检异常回滚需通过rollbackFor指定受检异常事务方法的自调用导致切面不生效问题4环绕通知常见坑未调用ProceedingJoinPoint.proceed()方法导致目标方法无法执行未返回proceed()方法的执行结果导致目标方法的返回值丢失proceed()方法传入的参数与目标方法的入参不匹配导致参数传递异常未处理proceed()方法抛出的异常导致异常被吞掉或向上传递异常问题5通知执行顺序不符合预期After后置最终通知会在AfterReturning/AfterThrowing之前执行这是Spring的固定设计After对应finally块无论是否异常都会先执行多个切面未指定Order/Ordered接口导致执行顺序随机不可控7.2 工程最佳实践切面职责单一一个切面仅处理一类横切关注点比如日志切面只处理日志权限切面只处理权限避免切面逻辑臃肿最小粒度切点尽量使用精准的切点表达式优先使用annotation匹配注解避免使用过于宽泛的全量匹配减少不必要的性能开销与意外增强优先使用轻量通知非必要不使用环绕通知优先使用前置、后置通知降低代码出错概率切面无业务侵入切面中仅编写横切通用逻辑禁止编写业务代码保持切面的纯粹性异常处理规范切面中禁止无差别吞掉异常除非明确业务需求否则必须将异常向上抛出避免掩盖业务异常明确优先级为所有切面指定明确的Order优先级避免执行顺序混乱导致的业务问题可测试性切面逻辑必须可单元测试避免编写强依赖Spring容器的切面代码性能优先性能敏感场景优先使用AspectJ静态织入而非Spring动态代理切面中避免编写耗时逻辑尤其是环绕通知中八、AOP 与相关编程范式/技术的对比8.1 AOP vs OOPOOP核心是纵向抽象通过对象、封装、继承、多态解决业务模块的划分与核心业务逻辑的复用问题是系统架构的主体AOP核心是横向抽象通过切面、织入解决跨模块的通用横切逻辑的复用与解耦问题是OOP的补充而非替代关系二者相辅相成共同构建高内聚、低耦合的系统架构8.2 AOP vs 装饰器模式装饰器模式静态的手动增强需要为每个目标类编写装饰器实现相同的接口/继承相同的父类编译期确定增强逻辑适合单个对象的增强AOP动态的自动增强无需修改业务代码一套切面可批量增强无数个目标对象灵活性极高适合大规模的横切逻辑增强底层关联AOP的动态代理本质上是动态的、自动化的装饰器模式实现8.3 AOP vs 过滤器(Filter) vs 拦截器(Interceptor)技术作用范围底层实现粒度适用场景FilterServlet规范Web请求入口在Servlet之前执行函数回调粗粒度Web请求的全局编码、跨域、全局限流等InterceptorSpring MVC仅作用于Controller层的方法动态代理中粒度Controller层的登录校验、权限校验、日志记录等AOPSpring全场景可作用于任意Spring Bean的任意方法动态代理/静态织入细粒度全层级Controller/Service/Dao的通用横切逻辑事务、缓存、监控等8.4 AOP vs 责任链模式责任链模式将多个处理器串联成链依次处理请求每个处理器可决定是否终止请求传递适合有明确顺序的请求处理流程AOP多个切面的执行顺序本质上就是责任链模式的实现Spring AOP的拦截器链就是典型的责任链结构差异AOP是更高层次的抽象通过注解/配置即可实现责任链的能力无需手动编写链结构开发成本更低适配性更强

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2414955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…