自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(223)
  • 收藏
  • 关注

原创 力扣简单题集合

@[TOC] 分类题目链接动态规划题目链接: link.

2020-08-01 08:01:48 261

原创 spark streaming

流处理是一种处理连续数据流的技术,适用于实时数据分析、监控和报警等场景。Spark Streaming 是 Spark 生态系统中的一个模块,用于处理实时数据流。

2025-02-22 09:46:07 978

原创 spark sql

Spark SQL 是 Spark 生态系统中的一个模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,支持 SQL 查询、数据源集成和优化执行。

2025-02-22 09:28:27 591

原创 RDD介绍

RDD(Resilient Distributed Dataset)是 Spark 的核心数据结构,代表一个不可变、分区的元素集合,可以在集群中并行操作。通过以上内容,你可以深入理解 RDD 的核心概念和操作,并掌握如何在实际应用中使用 RDD 进行高效的数据处理。检查点将 RDD 持久化到可靠的存储系统(如 HDFS),用于切断 lineage 信息,减少恢复时间。RDD 支持两种类型的操作:转换操作(Transformations)和行动操作(Actions)。行动操作会触发实际计算并返回结果。

2025-02-22 08:46:38 480

原创 2.环境搭建

集群模式适合生产环境,支持 Standalone、YARN 和 Mesos 三种集群管理器。Spark Shell 是一个交互式的命令行工具,支持 Scala 和 Python。通过以上步骤,你可以成功搭建 Spark 环境,并运行 Spark 应用程序。本地模式是 Spark 最简单的安装方式,适合开发和测试。

2025-02-22 08:33:53 746

原创 什么是spark

Spark 简介Apache Spark 是一个开源的分布式计算系统,旨在处理大规模数据集的快速计算。它最初由加州大学伯克利分校的 AMPLab 开发,并于 2010 年开源。Spark 提供了一个高效、通用的计算框架,支持多种数据处理任务,包括批处理、流处理、机器学习和图计算。

2025-02-22 08:21:02 687

原创 spark学习大纲

希望这份大纲能帮助你系统地学习 Spark!

2025-02-22 08:12:27 608

原创 Hadoop 学习大纲

通过这份大纲,你可以系统地学习 Hadoop 及其生态系统,掌握大数据处理的核心技能。

2025-02-21 08:51:38 669

原创 附加:异步日志聚合

假设有一个订单处理服务,主线程接收请求后,提交异步任务到线程池执行。需确保主线程和异步任务的日志共享相同的。在异步或多线程场景中,日志聚合的关键在于确保同一请求链路的日志能通过唯一标识(如。此方案不仅适用于异步任务,还可扩展至微服务间的调用追踪(如在 HTTP 头中传递。通过装饰器模式封装线程池,自动处理 MDC 上下文的传递与清理,减少重复代码。,并结合日志配置和实际代码,实现跨线程的日志聚合追踪。提交异步任务时,手动复制主线程的。),是构建可观测性系统的基石。,便于后续在日志系统中通过。

2025-02-16 20:09:05 886

原创 附加:MDC(Mapped Diagnostic Context)使用详解

是日志框架(如Logback、Log4j2)提供的一种机制,用于在多线程或异步场景中,将上下文信息(如请求ID、用户ID等)与当前线程绑定,从而在日志中自动记录这些信息,方便追踪请求链路。在异步任务(如线程池、CompletableFuture)中,MDC 不会自动跨线程传递,需手动复制上下文。MDC 是实现日志链路追踪的核心工具,尤其在异步和分布式系统中至关重要。假设有一个处理用户请求的服务,需要在日志中记录请求的唯一标识。通过合理使用 MDC,可以极大提升日志的可读性和问题排查效率。

2025-02-16 20:04:24 917

原创 分布式锁实现验证

在单元测试中,日志和诊断工具是快速定位问题的关键,尤其当涉及复杂Mock交互或异步逻辑时。本章结合Mockito的高级功能与第三方工具,提供一套完整的日志记录、调用跟踪和问题排查方案,帮助开发者快速穿透测试失败的迷雾。通过系统化的日志与诊断策略,开发者可将测试失败转化为优化代码的契机,而非阻碍交付的绊脚石。分析Mock方法调用耗时及线程阻塞情况。

2025-02-16 15:36:45 544

原创 测试日志与诊断

在单元测试中,日志和诊断工具是快速定位问题的关键,尤其当涉及复杂Mock交互或异步逻辑时。本章结合Mockito的高级功能与第三方工具,提供一套完整的日志记录、调用跟踪和问题排查方案,帮助开发者快速穿透测试失败的迷雾。通过系统化的日志与诊断策略,开发者可将测试失败转化为优化代码的契机,而非阻碍交付的绊脚石。分析Mock方法调用耗时及线程阻塞情况。

2025-02-16 12:33:33 494

原创 1.2 混合环境配置技巧(JUnit5 + PowerMock + 其他框架)

注:所有配置示例基于Java 17 + Spring Boot 3.0验证通过,实际使用时请根据项目环境调整版本号。

2025-02-16 11:00:10 298

原创 测试覆盖率提升

提升测试覆盖率是确保代码质量的重要手段,但覆盖率本身并非终极目标,关键在于通过有效测试覆盖核心逻辑和边界条件。Mockito 结合覆盖率工具(如 JaCoCo)可精准定位未覆盖代码,设计针对性测试用例。:计算折扣率,根据订单金额不同返回不同折扣。:验证参数内容和格式,覆盖对象构造逻辑。,可视化展示行覆盖率、分支覆盖率等。:用户服务根据年龄验证用户类型。:邮件服务发送带特定内容的邮件。:覆盖所有金额区间和异常输入。:批量处理订单,验证集合操作。:覆盖集合遍历和流式处理逻辑。:用户注册时数据库访问失败。

2025-02-16 09:41:08 338

原创 微服务间调用验证

在微服务架构中,服务间通过HTTP或消息队列进行通信。单元测试需验证服务是否正确调用下游接口,并处理各类响应(如成功、超时、异常)。本章以Feign Client和RestTemplate为例,详解如何模拟和验证跨服务调用。微服务间通过消息队列(如RabbitMQ、Kafka)通信时,需验证消息是否正确发布。的旧代码,需Mock其行为以验证HTTP交互。:根据区域调用不同库存中心,处理404异常。:订单服务调用支付服务完成支付。:商品服务调用库存服务扣减库存。:支付服务超时后触发重试。

2025-02-16 08:55:57 279

原创 数据库操作模拟

在单元测试中模拟数据库操作是隔离业务逻辑与持久层的关键步骤。通过Mockito精准模拟DAO(数据访问对象)或Repository的行为,可以避免依赖真实数据库,提升测试速度和可靠性。本章以JPA和MyBatis为例,详解数据库操作模拟的常见场景与最佳实践。通过精准模拟数据库交互,开发者可以隔离持久层细节,聚焦业务逻辑验证。验证事务管理器的行为,如回滚逻辑。:测试分页查询用户列表的逻辑。:测试根据邮箱查询用户的逻辑。:测试数据库超时后的重试逻辑。:测试邮箱重复时的错误处理。:测试动态条件查询。

2025-02-16 08:43:11 305

原创 JMockit学习大纲

的详细用法或Spring集成示例)的深入解释,请告诉我!如果需要针对某个主题(如。

2025-02-15 23:30:17 623

原创 异步代码测试

异步代码(如多线程任务、回调函数、消息队列消费等)的单元测试面临时序不确定性和线程隔离等挑战。本章通过具体示例解析如何利用 Mockito 和辅助工具(如。通过合理选择工具链和验证策略,可有效应对异步代码的不可预测性,构建稳定可靠的单元测试。方法允许在指定时间内等待异步调用完成。提供更灵活的等待条件,避免硬编码。和异步等待机制,深入验证回调参数。模拟依赖服务异常,验证错误处理逻辑。测试一个异步任务处理器。)可靠地验证异步逻辑。

2025-02-15 23:03:04 340

原创 1.1 PowerMock兼容性矩阵

如需具体项目的配置验证或进一步问题排查,可参考。或相关技术社区讨论。

2025-02-15 22:52:41 969

原创 powsermock学习大纲

在新项目中优先考虑代码可测试性设计,将PowerMock使用率控制在5%以下。对于JUnit5新项目,建议先尝试使用Mockito 3.4+的新特性替代大部分PowerMock需求。

2025-02-15 22:50:57 873

原创 参数匹配器精确匹配是否使用eq的规则

在 Mockito 中使用when和verify时,决定了何时可以直接使用具体参数值,何时必须使用eq()(或其他参数匹配器)。当方法的any()contains()eq()当方法参数中(如any()),其他参数必须用eq()即使参数均为具体值,也可以使用eq()eq。

2025-02-15 11:33:10 379

原创 Junti5测试用例支持的预定义参数

JUnit 5 允许测试方法声明参数,并通过 机制在运行时自动注入预定义的参数。以下是 JUnit 5 支持的 预定义参数类型 及其用途和示例:2. 功能:向测试报告发布附加信息(键值对形式)。适用场景:记录测试过程中的自定义指标(如性能数据、中间结果)。示例:3. 功能:获取重复测试的上下文(当前重复次数、总次数)。适用场景:在 中动态调整逻辑(如不同重复次数的输入)。示例:4. 功能:在动态测试()中获取单个动态测试的执行结果。适用场景:动态测试的后续处理(如

2025-02-15 11:01:38 661

原创 JUnit 5 自定义注解:方法级 JSON 参数注入

并通过注解属性指定参数名称和 JSON 字符串(转换为 Java 对象)在测试方法执行前解析注解,将 JSON 转换为对象并存储到上下文。,用于在测试方法上指定参数名和 JSON 字符串。从上下文中获取存储的对象并注入到测试参数。确保 JSON 结构与 Java 类匹配。在测试类中注册自定义扩展。

2025-02-15 10:59:52 403

原创 doReturn().when()` 与 `when().thenReturn()` 的区别

Mockito 提供两种方式配置方法的返回值:doReturn().when()虽然它们功能相似,但行为差异显著,需根据具体场景选择使用。正确选择方法可避免意外的副作用,提升测试的稳定性和可维护性。和 when().thenReturn()时,Spy 对象的真实方法会被执行。:真实方法可能抛出异常(如未初始化)。无法直接用于 void 方法。

2025-02-15 10:30:02 366

原创 参数捕获与分析

开发者可以深入方法调用的细节,确保数据传递的准确性和业务逻辑的可靠性。结合断言库和异步等待机制,能够覆盖从简单到复杂的所有测试场景。参数捕获是 Mockito 提供的核心功能之一,允许开发者捕获方法调用时传递的实际参数,并进行详细验证。,可以深入分析参数内容,确保交互逻辑符合预期,尤其适用于验证复杂对象或多次调用的场景。参数捕获与分析是单元测试中验证复杂交互逻辑的关键技术。

2025-02-14 23:38:57 470

原创 BDD风格测试

BDD风格测试通过自然语言和清晰的结构,让单元测试成为活的文档(Living Documentation)。结合Mockito的BDD API,开发者可以编写出既满足技术验证需求,又具备业务可读性的测试代码,促进团队协作与需求对齐。

2025-02-14 22:33:37 677

原创 3.1 严格Stubbing模式

严格Stubbing模式通过强制检测冗余和无效的桩代码,显著提升单元测试的健壮性和可维护性。结合示例中的修复策略,开发者可以快速定位问题并优化测试逻辑,确保每个Stubbing都精准服务于测试目标。通过严格模式,可以避免测试代码中的“虚假通过”(False Positive),确保每个Stubbing都有明确的目的。严格模式会检测Stubbing的覆盖顺序。:Stubbing存在但未被使用,且不影响测试结果。:同上,提示存在不必要的Stubbing。:配置了未被调用的Stubbing。

2025-02-13 07:03:50 584

原创 2.7 ContextLoader详解

启动 PostgreSQL 容器,并将动态生成的数据库 URL 注入 Spring 上下文。,开发者可以完全控制 Spring 上下文的创建过程。动态创建一个配置类,包含随机生成的数据库连接属性(模拟动态环境配置)。在自定义 Loader 中同时支持测试类声明的配置(如。是 Spring Test 中用于加载。的核心接口,通过自定义。

2025-02-13 07:02:26 303

原创 2.6 TestExecutionListener

TestExecutionListener` 是 Spring Test 的核心扩展接口,允许开发者监听测试执行的生命周期事件,并插入自定义逻辑。通过实现此接口,可以干预测试的。在测试方法执行前,自动模拟外部服务(如 HTTP API),并在测试后重置。,开发者可以深度定制 Spring 测试流程,实现诸如。等高级功能,显著提升测试的灵活性和可维护性。,适用于监控、资源管理、日志记录等场景。:在控制台输出每个测试方法的执行耗时。:在每个测试方法结束后删除临时文件。注解将监听器绑定到测试类。

2025-02-13 07:01:45 420

原创 2.5 动态属性注入

在集成测试中,某些属性值需在运行时动态确定(例如随机端口、临时数据库 URL 等)。通过动态属性注入,可轻松应对测试环境的不确定性,提升集成测试的可靠性和灵活性。

2025-02-13 06:59:21 414

原创 2.7 静态方法/构造函数Mock

的Mock是相对复杂的需求,因为Mockito的核心设计基于对象实例的模拟。然而,通过扩展工具或特定技巧,可以实现对这些场景的处理。通过合理选择工具和遵循最佳实践,可以在必要时有效处理静态方法和构造函数的Mock需求,同时保持测试代码的简洁性和可维护性。是Mockito的扩展,支持静态方法、构造函数、私有方法等的Mock,但需复杂配置且与现代框架兼容性有限。提供Inline Mock Maker,支持静态方法Mock(无需PowerMock),但功能有限。

2025-02-13 06:55:21 1197

原创 2.6 参数化测试

参数化测试允许使用不同的输入数据多次运行同一测试逻辑,显著提升测试覆盖率并减少重复代码。结合 Mockito,可以高效验证多种场景下的组件行为。本章基于 JUnit 5 和 Mockito,详解参数化测试的实现技巧。通过参数化测试,开发者可以系统性地验证代码在多种输入下的行为,结合 Mockito 精准控制依赖逻辑,显著提升测试效率和代码健壮性。注解及多种数据源注解,支持灵活的数据驱动测试。提供简单类型的参数集合(字符串、整数等)。通过 CSV 格式提供多参数组合。从静态方法获取复杂参数对象。

2025-02-13 06:46:15 446

原创 制表符用于对齐介绍

在纯文本文件中,用制表符分隔数据列,快速实现视觉对齐。编辑器支持将制表符转换为固定宽度空格(如设置。),确保跨平台显示一致。

2025-02-12 22:28:21 668

原创 制表符,回车符,换行符介绍

(Windows 换行)。

2025-02-12 22:25:27 644

原创 1.1 库的作用与定位

Apache Commons Lang 是 Java 开发者必备的"瑞士军刀",通过提供经过千锤百炼的工具方法,可显著提升代码健壮性和开发效率。理解其设计哲学,是后续深入学习的基石。

2025-02-12 22:22:20 781

原创 http协议学习大纲

通过这份大纲,你可以逐步掌握HTTP协议的核心机制、设计思想及实际应用,为进一步学习Web开发、网络安全或后端架构打下坚实基础。

2025-02-12 22:17:22 569

原创 1.2 快速搭建环境

通过本章节,你可以快速搭建一个基于传统 Spring MVC 的 Spring Security 环境,并实现基础的认证与授权功能。后续章节将深入认证、授权及高级配置的细节。Spring Security 的依赖管理需明确区分模块,避免引入 Spring Boot 相关依赖。注册 Spring Security 的入口过滤器。

2025-02-12 22:14:06 753

原创 1.2 JSON数据类型与Java类型对应关系

以下是。

2025-02-12 22:11:35 853

原创 2.6 常见问题与解决方案

在模块化迁移或开发过程中,开发者常会遇到反射访问限制、未命名模块依赖冲突及自动模块适配问题。本章详细分析典型问题场景,并提供可操作的解决方案。模块化系统的强封装和显式依赖特性在提升安全性的同时,也带来了反射限制、自动模块适配等问题。通过系统化的解决方案和严谨的工程实践,可高效应对模块化迁移中的挑战,充分发挥 JDK 9 的现代化能力。:自动模块默认依赖所有模块,可能导致冗余依赖。:不同 JAR 文件生成相同的自动模块名。模块化系统默认禁止反射访问未通过。未命名模块无法被显式依赖(),且默认不导出任何包。

2025-02-12 22:07:28 650

原创 2.5 模块化迁移策略:从传统项目到模块化系统

将传统 Java 项目迁移至 JDK 9 模块化系统是一项系统性工程,需分阶段实施以降低风险。以下是详细的迁移策略、工具使用和实战示例。通过模块化,项目将获得更强的封装性、更清晰的架构和更高效的运行时,为后续技术演进(如云原生、微服务)奠定基础。在不修改代码的情况下,验证项目在 JDK 9 上的运行能力。将部分代码转换为模块,依赖未模块化的第三方库作为自动模块。模块化迁移需结合工具链、分阶段策略和严格测试,核心在于。全项目模块化,显式管理所有依赖(包括第三方库)。

2025-02-12 22:06:30 680

mockito教程-自整理

mockito教程-自整理

2025-02-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除