- 博客(279)
- 资源 (1)
- 收藏
- 关注
原创 基于 Playwright 的小型分布式爬虫 —— Docker化部署与优化
这步是核心,一次性把 Redis、MongoDB、多个 Worker、Monitor 启动起来!services:redis:ports:mongodb:ports:build: .- redisnetworks:worker:build: .- redis- mongodbnetworks:deploy:replicas: 3 # 启动3个Worker副本(可根据需要调整)monitor:build: .ports:- redis- mongodb。
2025-04-27 11:29:30
423
原创 基于 Playwright 构建小型分布式爬虫(进阶版)
项目特点说明架构简洁易扩展只需增加 Worker 数量即可横向扩展高效率Playwright 原生并发,MongoDB 批量写入优化易监控FastAPI 实现爬虫状态实时可视化可持续升级支持 Docker/Kafka/ES 等进一步大规模演进✅ 非常适合中小型互联网数据采集项目、舆情监控、商品价格监控、招聘信息采集等实际业务需求。
2025-04-27 11:26:41
838
原创 基于 Playwright 构建小型分布式爬虫项目实战
启动调度器,将目标 URL 推送到 Redis。启动多个 Worker,自动从 Redis 取任务并使用 Playwright 抓取。抓取结果统一存储(MongoDB / Elasticsearch / 文件)。任务消耗完毕后,系统自动停止。架构简单 ✚ 可扩展 ✚ 容错好,非常适合中小型分布式爬虫项目。
2025-04-27 11:21:07
1473
原创 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
优点缺点适配所有现代 JS 网站启动浏览器实例占用一定资源支持多标签页/多浏览器并发相比requests,整体速度稍慢支持复杂交互操作学习曲线略高于传统爬虫框架提供丰富的防反爬功能支持截图、录屏、PDF 导出等扩展操作。
2025-04-27 11:15:48
1654
原创 深入理解 Spring 单元测试:@SpringBootTest、@Value 注入、@MockBean 使用实战与陷阱
✅ 使用加载完整 Spring 环境;✅ 注入 Bean 一定要靠容器注入,不能 new 测试类;✅ Nacos 配置项建议使用 mock 或测试 profile 提供;✅ Mapper 不用 mock,直接@Autowired测试;✅ 区分@Mock与@MockBean使用场景,选对注解是关键。
2025-04-19 17:30:00
877
1
原创 Spring 单元测试核心注解全解:@InjectMocks、@MockBean、@Mock、@Autowired 的区别与实战
对比维度@Mock@MockBean@Autowired所属体系MockitoMockito是否进容器否否是(替换容器中的 Bean)是(注入容器中的 Bean)是否自动注入依赖否是是是推荐场景纯 Java 单测搭配 @Mock 使用替换容器依赖(整合测试)注入容器内真实对象@Mock:用于快速构造模拟对象,脱离容器;:自动注入多个 mock 到目标类;@MockBean:Spring Boot 提供的 Mock 注入工具,替换容器中原始 Bean;
2025-04-14 19:05:03
1175
原创 Spring Boot 使用 QQ 企业邮箱发送邮件的完整指南(含 535 错误排查)
QQ 企业邮箱作为企业通讯工具,在 Spring Boot 中使用非常方便。但由于安全机制较为严格,使用授权码 + 正确 SSL 配置是发送邮件成功的关键。如果你遇到错误,按照本文 checklist 逐一排查,基本可以快速定位问题所在。
2025-04-14 16:31:38
612
原创 使用 Mockito 快速构建 Mock 测试环境
Mockito 是编写高质量 Java 单元测试的强大利器。通过它,我们可以模拟外部依赖、聚焦业务逻辑、提升测试效率,是现代 Spring Boot 项目中不可或缺的工具。
2025-04-03 14:48:17
1059
原创 Mock 框架选型:Mockito、EasyMock、PowerMock 横向对比
框架特点适用场景Mockito使用最广泛,语法简洁,集成简单,支持行为验证和交互验证大多数业务逻辑的单元测试EasyMock基于接口生成 Mock,使用录制-回放机制,语法风格不同于 Mockito传统项目或接口驱动系统PowerMock可 Mock 静态方法、final 类、构造函数等旧代码改造、遗留系统测试、难以解耦的代码单元Mock 框架是提升单测效率与覆盖率的有力工具,不同框架各有优势。
2025-04-03 14:32:25
1014
原创 IOC 和 DI 的核心思想
Autowired是 Spring 提供的一个注解,用于实现依赖注入(DI)。它告诉 Spring 容器自动满足对象的依赖关系,无需显式地在代码中创建依赖对象。@Autowired构造方法上字段上Setter 方法上Spring 会根据容器中的 Bean 类型自动进行注入(如果有多个匹配的 Bean,可以通过@Qualifier来指定注入的 Bean)。2.3.1 构造方法注入构造方法注入是@Autowired 最常见的使用方式,当 Spring 创建一个对象时,他会通过构造方法传入所有的依赖对象。
2025-03-25 10:25:49
624
原创 扩展 MyBatis-Plus 支持的查询条件
MyBatis-Plus 支持通过@Select@Update@Insert@Delete注解实现自定义 SQL 查询。在中定义自定义 SQL:</在UserMapper接口中定义自定义查询方法。订单表(Order)@Data订单项表(OrderItem)@Data通过扩展 MyBatis-Plus 支持的查询条件,可以满足复杂的业务需求。自定义 SQL 查询:通过注解或 XML 实现复杂的 SQL 查询。Lambda 查询与条件构造器扩展。
2025-03-11 14:34:28
531
原创 乐观锁与悲观锁的 MyBatis-Plus 实现
乐观锁:适用于读多写少、并发冲突较少的场景,通过版本号实现。悲观锁:适用于写多读少、并发冲突较多的场景,通过数据库锁机制实现。
2025-03-09 15:00:00
759
原创 使用 MyBatis-Plus 实现数据库的多租户管理
多租户是指在一个应用实例中,多个租户(客户或组织)共享相同的硬件和软件资源,但每个租户的数据和配置是相互隔离的。资源共享:降低硬件和运维成本。数据隔离:确保每个租户的数据安全性和隐私性。通过 MyBatis-Plus 的多租户支持,可以轻松实现多租户管理。多租户的实现原理独立数据库、独立 Schema、共享数据库三种方式。核心是通过租户 ID 实现数据隔离。MyBatis-Plus 的多租户配置使用实现 SQL 拦截与动态参数注入。在实体类中标记租户 ID 字段。SQL 拦截与动态参数注入。
2025-03-08 16:00:00
1461
原创 MyBatis-Plus 性能优化实践
MyBatis-Plus 提供了丰富的功能和插件,帮助开发者优化数据库性能。通过分析常见的 SQL 性能瓶颈、使用缓存、配置性能分析插件以及优化批量操作和分页查询,可以显著提升系统的整体性能。在实际开发中,建议根据具体场景选择合适的优化策略,并结合监控工具持续跟踪和优化性能。
2025-03-08 10:00:00
709
4
原创 Spring Data JPA 的原理、使用方法与实战场景举例
JPA 是 Java EE 提供的一种 ORM(对象关系映射)规范,用于将 Java 对象映射到数据库表。它的主要实现包括 Hibernate、EclipseLink 等。实体(Entity):通过@Entity注解标记的 Java 类,表示数据库中的一张表。Repository:数据访问层接口,用于操作实体。:JPA 的核心接口,用于管理实体的生命周期和持久化操作。使用@Entity注解标记实体类,并通过@Id@Entity@Data@Id创建一个继承// 根据用户名查询用户。
2025-03-07 11:38:29
825
原创 MyBatis-Plus 与 Spring Boot 的最佳实践
MyBatis-Plus 与 Spring Boot 的结合为开发者提供了强大的功能和便捷的开发体验。通过合理的配置和优化,我们可以构建出高性能、易维护的应用程序。希望本文的内容能够帮助你在实际项目中更好地使用 MyBatis-Plus 和 Spring Boot。
2025-03-07 11:32:42
1463
原创 如何高效使用 Mybatis-Plus 的批量操作
Mybatis-Plus 提供了强大的批量操作 API,能够帮助开发者高效处理大量数据。通过分批处理、使用 JDBC 批处理、调整数据库连接池配置等优化策略,可以进一步提升批量操作的性能。同时,结合事务管理,能够确保批量操作的数据一致性和原子性。在实际开发中,开发者应根据具体业务场景,合理选择批量操作的方式和优化策略,以达到最佳的性能和可靠性。希望本文能够帮助大家更好地理解和使用 Mybatis-Plus 的批量操作功能。
2025-03-06 16:46:34
977
原创 支持多数据源的 MyBatis-Plus 实现
在 MyBatis-Plus 中,除了 AbstractRoutingDataSource 方式,还可以使用 @DS 注解指定数据源。
2025-03-06 16:35:34
706
原创 分布式系统中的 Mybatis-Plus 使用技巧
微服务架构中,能简化数据库操作,提高开发效率。在 Spring Cloud 微服务架构下,作为 Mybatis 的增强工具,在。下,数据库配置可能动态变化,推荐使用。中,Mybatis-Plus 提供了。:缓存减少数据库查询,提升系统吞吐量。在微服务架构下,不同服务间需要通过。下,数据分散在多个微服务,面临。,但需要手动实现事务补偿逻辑。数据库高并发访问时,可以结合。的分布式环境下,通常采用。,能够提升系统吞吐量,实现。在高并发场景下,可以采用。当数据量增大时,可以采用。中,数据库操作通常是。
2025-03-05 11:43:13
644
原创 高并发场景下的数据库优化
在高并发系统中,数据库通常是性能瓶颈。面对高并发请求,我们需要采用合适的优化策略,以保证数据库的稳定性和高效性。本文将介绍数据库高并发问题的成因,并结合。数据库连接池(DataSource)是高并发优化的核心组件,推荐使用。,可以极大提高数据库吞吐能力,确保系统在高并发下依然稳定高效!在高并发场景下,数据库优化是一个系统性工程。需要开启 Mybatis-Plus 扩展插件。在高并发场景下,数据库并发控制策略主要分为。在高并发场景下,数据库并发控制策略主要分为。在高并发写入场景下,逐条。
2025-03-04 13:48:10
1358
原创 使用 Mybatis-Plus 实现用户管理系统
数据库表设计用户管理的增删改查角色管理与权限分配优化用户管理功能(分页、模糊查询、缓存)通过 Mybatis-Plus,可以简化 SQL 编写,提高开发效率,使用户管理系统更加高效和易维护。
2025-03-04 11:39:55
342
原创 Mybatis-Plus 插件机制与自定义插件实现
Mybatis-Plus 提供了一个简单而强大的插件机制,允许开发者在 MyBatis 执行 SQL 的过程中插入自定义逻辑。通过插件机制,用户可以实现对 SQL 执行过程的拦截和修改。Mybatis-Plus 插件基于 MyBatis 的拦截器模式进行实现,能够在 MyBatis 执行 SQL 语句前、后进行自定义操作。插件机制的核心是接口,开发者可以通过实现该接口,自定义拦截 SQL 执行的行为。Mybatis-Plus 内置了多个常用插件,例如分页插件、性能分析插件等。
2025-03-03 18:29:34
1264
原创 Mybatis-Plus 配合Sharding-JDBC 实现分库分表
本文介绍了数据库分库分表的概念,并对比了垂直拆分与水平拆分的优缺点。在 MyBatis-Plus 中,可以通过 Sharding-JDBC 轻松实现分库分表,提高数据库的可扩展性和查询性能。此外,我们深入分析了 MyBatis-Plus 与 Sharding-JDBC 结合的底层执行逻辑,展示了 SQL 路由、改写及执行的完整过程,并补充了范围查询的实现方式及底层机制。在实际应用中,选择合适的拆分策略需要结合业务需求,确保数据分布均匀,并考虑事务一致性和查询优化等问题。
2025-03-03 16:08:41
2029
原创 MyBatis-Plus 条件构造器的使用(左匹配查询)
的基本使用方法、常见查询条件(如等于、不等于、大于、小于)以及如何使用 Lambda 表达式来构建动态查询和更新条件。可以与其他查询条件结合使用,构建更复杂的查询。例如,查询所有年龄大于 20 且名字以 “John” 开头的用户。你可以将它们与其他查询条件结合使用,构建更加灵活的查询。等查询条件,开发者可以轻松构建多种查询场景,满足复杂的业务需求。查询的变体)功能,帮助开发者更好地构建复杂的查询条件。来构建查询条件,提供了更好的类型安全。,结合起来,进行复杂的条件查询。,我们希望查询所有名字以。
2025-03-02 15:00:00
1879
原创 MyBatis-Plus 条件构造器的使用(一)
功能让开发者可以更加灵活和高效地构建数据库查询,同时提高代码的可读性和可维护性,避免了手写 SQL 时可能出现的错误。,开发者可以灵活地构建动态查询和更新条件。条件构造器使得 SQL 查询的构建更加简洁和易于维护。来构建查询条件,避免了手动拼接字符串或字段名的错误,提升了代码的类型安全性和可读性。是用于构建查询条件的构造器,它使得动态 SQL 查询的构建变得非常简洁和直观。提供了许多方法,允许开发者构建不同类型的查询条件。支持链式调用,可以通过多种方法构建复杂的查询条件。方法来构建多个条件的组合查询。
2025-03-02 10:00:00
872
原创 MyBatis-Plus 分页查询(PageHelper)
是一个基于 MyBatis 的分页插件,它通过拦截器拦截 SQL 查询,自动为 SQL 增加分页信息。分页查询时,尽量避免查询过大的数据集,尤其是在高并发环境中。是另一个广泛使用的分页插件,它也能与 MyBatis-Plus 配合使用,提供更丰富的分页功能。,开发者能够在处理大数据量时,轻松实现高效的分页查询,提升应用的性能和用户体验。对象进行分页查询时,它会自动处理分页的参数(如页码、每页大小),并返回分页结果。在数据量较大时,可以考虑使用异步分页查询,减轻数据库的负载,并加快响应时间。
2025-03-01 15:00:00
2996
原创 MyBatis-Plus 逻辑删除实现
MyBatis-Plus 的逻辑删除功能简化了数据的删除操作,保留了删除记录的历史数据,确保了应用的数据一致性和安全性。通过合理配置和使用 MyBatis-Plus 的逻辑删除功能,开发者能够更加高效地管理数据,并满足业务需求。)的值,将记录标记为已删除,而不是将其从数据库中删除。MyBatis-Plus 会自动处理该字段的值,并在查询时自动排除已删除的记录。查询时,MyBatis-Plus 会自动过滤掉逻辑删除的记录。的方式,而不是物理删除。,表示该记录已被删除,而不是从数据库中删除该记录。
2025-03-01 10:00:00
1529
原创 MyBatis-Plus 自动填充功能
通过 MyBatis-Plus 提供的自动填充功能,开发者可以更加高效地进行数据处理,减少代码冗余,并确保系统字段的一致性和正确性。操作时,某些字段可以由 MyBatis-Plus 自动赋值,无需开发者手动提供。该功能可以在执行插入或更新操作时,自动为某些字段赋值,免去手动设置这些字段的麻烦。如果需要自定义填充规则,例如在创建时使用自定义的时间格式或设置特定的字段值,可以在。字段的自动填充,帮助开发者在处理数据时更加高效,减少人为错误。字段通常在数据更新时自动填充,记录数据最后一次修改的时间。
2025-02-28 11:31:18
1094
原创 MyBatis-Plus 高效增删改查操作原理
MyBatis-Plus 提供了强大的增删改查操作的功能,并通过简单的配置和条件构造器大大简化了 SQL 查询和数据库操作。N+1 查询问题是数据库性能优化中的常见问题,通常在进行多个查询时,每个查询都会生成一次 SQL,导致大量的查询开销。条件构造器在 MyBatis-Plus 中的作用非常重要,它允许开发者通过简单的链式调用来构造复杂的查询或更新条件。分页查询是大多数应用中常见的操作,MyBatis-Plus 提供了内置的分页插件,简化了分页操作。子句和总记录数的计算,简化了开发者的工作。
2025-02-28 11:27:33
1293
原创 MyBatis-Plus 常见错误与调试技巧
通过掌握这些常见错误的调试技巧和性能优化方法,开发者可以高效地排查问题并提升应用的性能,确保 MyBatis-Plus 在大规模数据处理场景中的高效运作。MyBatis-Plus 提供了简单的方式来查看执行的 SQL,启用 SQL 日志有助于调试和分析问题。参数可以输出 MyBatis 的执行过程,包括 SQL 语句、参数等,帮助开发者深入分析问题。分页查询能够有效避免全表扫描,尤其是在数据量较大的情况下,分页查询能显著提升性能。中配置,但如果配置错误,可能导致一些功能无法正常工作,例如分页插件未启用。
2025-02-28 11:21:48
844
原创 为什么@Autowired 在属性上被警告,在 setter 方法上不被警告
在 Spring 开发中,@Autowired注解常用于实现依赖注入。它可以应用于类的或上。然而,当@Autowired注解在上使用时,IntelliJ IDEA 等 IDE 会给出的警告,而在上使用@Autowired时却不会出现这个警告。@Autowired当@Autowired注解应用于类的上时,Spring 会直接注入该属性,而不通过构造函数或 setter 方法显式地传递依赖项。这种注入方式称为IntelliJ IDEA 等 IDE 会根据这些设计缺点发出警告,提示@Autowired。
2025-02-27 16:15:14
922
原创 MyBatis-Plus 对比传统 MyBatis 的优势
在现代的 Java 开发中,和都是流行的持久层框架。MyBatis 是一个轻量级的 ORM 框架,帮助开发者通过映射文件或注解方式来执行 SQL 操作。是在 MyBatis 基础上进行的增强,提供了许多简化和优化功能,使得开发者在使用时能更加高效。本文将对比和,并详细分析 MyBatis-Plus 提供的增强功能、性能优化以及它如何提升开发效率。SqlSessionMyBatis-Plus 是对 MyBatis 的扩展,提供了更高效的配置和操作方式,尤其在减少了大量重复代码的编写。saveremove。
2025-02-27 15:14:23
2018
原创 MyBatis-Plus 数据库配置与数据源整合
MyBatis-Plus 支持多数据源的配置和切换,具体可以通过配置不同的。通过合适的配置和管理,MyBatis-Plus 可以帮助开发者在 Spring Boot 应用中高效管理数据源、简化数据库操作,并根据需求实现更加复杂的数据库架构。只要在 Spring Boot 项目中配置好数据源,MyBatis-Plus 会自动进行配置,无需额外的手动配置。的常见方法,包括单数据源与多数据源的配置、配置文件与 Spring 配置类的使用、以及如何进行数据源切换和管理。中的配置自动进行数据源配置。
2025-02-27 15:08:09
731
原创 除了增删改查,MyBatis-Plus 中 的这些方法,你知道吗?
通过这些方法,MyBatis-Plus 大大减少了代码量,简化了数据库操作,使得开发者能够专注于业务逻辑的实现,提升开发效率。在实际开发中,合理使用这些方法能够提高代码的简洁性和性能,增强应用的可维护性。方法适用于需要判断记录是否存在,并根据结果决定是插入新记录还是更新现有记录的场景。方法用于执行批量操作,可以一次性执行多条插入、更新或删除操作,大大提高性能。,开发者可以直接使用这些通用方法,无需手写大量的 SQL 操作代码。,简化了代码的编写,避免了开发者手动判断记录是否存在。
2025-02-26 10:36:43
885
原创 MyBatis-Plus 核心设计原理
尽管 MyBatis-Plus 提供了丰富的内置功能,但对于复杂的查询需求,开发者仍然可以自定义 SQL 查询。通过 MyBatis-Plus,开发者能够更加高效地进行数据库操作,减少了大量手写 SQL 和复杂配置的工作,使得开发过程更加简洁和高效。MyBatis-Plus 是一个轻量级的框架,它通过简单的配置和注解即可实现增强功能,而不会破坏 MyBatis 原有的设计模式。以上代码会根据指定的数据库表,自动生成相应的实体类、Mapper 接口、Service 层代码,并存储到指定的目录。
2025-02-26 10:22:58
998
原创 Spring 之 SseEmitter —— 让你的进度条实时更新
在 web 开发中经常遇到一种功能,开始之后过程与时间复杂而漫长,使用者在操作等待的时候一头雾水。进度条与输出面板成了解决此类问题的最佳良药。进度条展示实时进度,用户能够感知预计时间;输出面板实时展示执行进度,关键节点,使用者不再是完全黑盒。本文主要介绍这种效果实现的方式之一,spring 对 SSE 的支持实现—— SseEmitter
2025-02-26 10:12:11
2729
原创 Spring 中 @Transactional 注解的用法
注解的方法,Spring 会忽略事务配置,方法不会参与事务管理。要确保事务的有效性,应该确保调用的事务方法是在事务上下文中执行的。如果抛出异常,事务会回滚。的方法时,Spring 会自动启动一个事务,并在方法执行成功时提交事务,执行过程中出现异常时回滚事务。Spring 提供了对事务的全面管理,允许开发者通过注解来配置事务的行为,而不需要手动编写事务管理代码。类中的所有方法都将自动开启事务,并且如果其中任何方法抛出异常,所有数据库操作都会回滚。注解的方法,默认情况下,外部方法的事务会传播到内部方法。
2025-02-25 16:47:24
1319
1
原创 MyBatis-Plus 简介与安装
是在 MyBatis 基础上扩展的高效 ORM 框架,它简化了 MyBatis 的配置和操作,提供了对常见操作(如增、删、改、查)的封装,使得开发者可以快速实现数据访问层的操作,提升开发效率。MyBatis-Plus 的出现大大简化了数据库操作,提升了开发效率,尤其适用于需要大量 SQL 操作的企业级应用开发。尽管 MyBatis-Plus 提供了很多通用的 CRUD 方法,但有时你可能需要编写自定义的 SQL 查询。是 MyBatis-Plus 提供的基础服务类,提供了常用的业务方法,如。
2025-02-25 14:46:01
853
chatgpt+cursor 开发微信小程序 文案提取F
2025-02-12
人工智能+FastAPI React Docker+车牌识别网站+开发教程
2025-02-10
ubuntu-chrome-安装包-版本 131
2025-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人