![](https://img-blog.csdnimg.cn/direct/7701569403124caebd3807bee3919d85.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA框架
文章平均质量分 80
框架能够极大地提高开发效率、代码质量以及应用程序性能。
missterzy
世界上没有做不到的事
只有不想去完成的事
可惜我比较懒
展开
-
基于 MyBatis Plus 实现多租户支持:数据隔离与访问控制
多租户是一种软件架构,允许多个租户(通常是不同的客户或组织)共享同一个应用程序实例,同时确保他们的数据彼此隔离。在多租户环境中,数据隔离确保了每个租户只能访问属于自己的数据,防止数据泄露和安全问题。MyBatis Plus 是在 MyBatis 基础上扩展的一个增强工具包,提供了更简单和高效的 CRUD 操作,同时支持多种高级特性,如分页、多租户等。多租户架构是一种允许多个租户共享同一系统或应用资源的设计模式,但每个租户的数据和配置是相互隔离的。通过角色和权限管理,实现对不同租户和用户的细粒度访问控制。原创 2024-07-09 15:00:00 · 742 阅读 · 0 评论 -
Spring Boot+Blockchain:区块链入门Demo
本文介绍了如何使用SpringBoot集成区块链技术,构建一个简单的区块链Demo。我们从项目创建、区块链基础知识、实现区块链代码,到最后通过HTTP接口进行交互,逐步完成了一个完整的区块链应用。为了便于理解和应用区块链技术,本文将介绍如何使用Spring Boot集成区块链,构建一个简单的区块链Demo。为了使我们的区块链Demo可通过HTTP接口进行交互,我们需要创建一个Controller类。区块头(Block Header):包括区块的元数据,如版本号、时间戳、前一个区块的哈希等。原创 2024-07-07 18:45:00 · 898 阅读 · 0 评论 -
Springboot项目中使用Redis作为消息队列
现在在软件开发中,消息队列扮演着至关重要的角色,它帮助我们解耦系统组件,实现异步处理,提高系统的可扩展性和弹性。Redis,这个著名的键值存储系统,不仅仅限于数据缓存,其灵活的数据结构和快速的内存操作也使其成为构建轻量级消息队列的理想选择。轻量级:易于部署和维护,特别适合小规模或快速原型开发。高性能:基于内存的操作,极低的延迟。灵活性:多种数据结构适应不同场景。集成简便:对于已使用Redis作为缓存的系统。消息丢失风险:特别是使用List结构时,消息未被确认即可能丢失。原创 2024-07-06 17:15:00 · 338 阅读 · 0 评论 -
Spring Boot集成jasypt快速入门Demo
Jasypt(Java Simplified Encryption)是一个专注于简化Java加密操作的工具。它提供了一种简单而强大的方式来处理数据的加密和解密,使开发者能够轻松地保护应用程序中的敏感信息,如数据库密码、API密钥等。Jasypt的设计理念是简化加密操作,使其对开发者更加友好。原创 2024-07-07 10:00:00 · 487 阅读 · 0 评论 -
SpringBoot实现图片压缩
最近博客刚开始上线,用java代码开发不是很熟,对于文章的图片上传仅仅只是上传了,没有对图片进行处理,导致博客的页面图片加载太慢太大,今天打算优化一下,在上传图片的时候进行图片压缩,这样虽然破环了原图片的清晰度,单数不影响图片的美感,博客用来作为缩略图正好。今天我们来看一下SpringBoot使用thumbnailator对图片进行压缩。1.在pom.xml引入thumbnailator依赖。原创 2024-07-06 13:45:00 · 227 阅读 · 1 评论 -
使用Spring Boot和mkcert解决本地及局域网HTTPS访问
通过结合使用Spring Boot和mkcert,可以轻松地在本地和局域网环境中配置HTTPS,从而提升开发和测试过程中的安全性。在使用HTTPS的情况下,浏览器与服务器之间传输的数据是加密的,防止了中间人攻击和数据窃听。它非常适合开发环境下的使用,因为它可以快速生成受信任的自签名证书,并在本地系统上自动安装这些证书,使浏览器不会显示不安全的警告。首先,将生成的证书和私钥文件放在项目的src/main/resources目录下。你可以将mkcert生成的根证书安装到其他设备上,使它们信任你生成的证书。原创 2024-07-04 19:00:00 · 743 阅读 · 0 评论 -
SpringCloud是什么
Spring Cloud 是一系列框架的集合,旨在为分布式系统的开发提供解决方案。它基于 Spring Boot,利用 Spring Boot 的快速开发特性,帮助开发者快速构建分布式微服务架构系统。Spring Cloud 通过集成和封装各种成熟的开源解决方案,提供了配置管理、服务发现、负载均衡、断路器、分布式追踪、消息驱动微服务、网关路由等功能。了解了 SpringCloud 提供了什么能力,现在跟着我来简单了解一下这些能力是干嘛的,别等了!来吧:1)配置管理:集中管理配置,支持动态刷新。原创 2024-07-04 10:00:00 · 1284 阅读 · 0 评论 -
通过Spring Boot结合实时流媒体技术对考试过程进行实时监控
本章将深入探讨考试系统中常见的复杂技术问题,并提供基于Spring Boot 3.x的解决方案。涵盖屏幕切换检测与防护、接打电话识别处理、行为监控摄像头使用、网络不稳定应对等,每篇文章详细剖析问题并提供实际案例与代码示例,帮助开发者应对挑战,提升考试系统的安全性、稳定性与用户体验。原创 2024-07-03 15:15:00 · 972 阅读 · 0 评论 -
Spring Boot 3.x 使用 Druid
通过本文的介绍,我们了解了如何在Spring Boot 3.x项目中集成 Druid,以及 Druid的主要功能和优势。Druid提供的强大监控和SQL分析功能,可以帮助开发者实时了解数据库的运行状况,进行有效的性能调优和安全防护。Druid是阿里巴巴开源的数据库连接池,提供了强大的监控和统计功能,以及良好的性能和扩展性。Druid是一个高效的数据库连接池,由阿里巴巴开源,它集成了监控、扩展以及性能优化等功能,是企业级应用开发的常用工具。通过精细化的连接池配置,可以避免连接泄漏和连接池饱和的问题。原创 2024-07-03 10:00:00 · 773 阅读 · 0 评论 -
如何优雅地将 Tio Boot 集成到 Spring Boot 项目中
将Tio Boot与Spring Boot Starter进行集成,可以充分利用两者的优势,提高应用的开发效率和性能。将 Tio Boot 与 Spring Boot Starter 集成,可以充分发挥两者的优势,提供高性能、低延迟的网络通信能力,同时简化了配置和开发过程。Spring Boot Starter 是 Spring Boot 框架中的一部分,它通过自动配置和依赖管理,简化了 Spring 应用的开发。Tio Boot 是 Tio 框架的一个扩展,提供了简化的配置和快速启动的能力。原创 2024-07-02 15:00:00 · 1639 阅读 · 0 评论 -
Spring Boot 创建定时任务
通过本文的介绍和示例代码,我们了解了如何在Spring Boot中创建和管理定时任务。Spring Boot的@Scheduled注解和TaskScheduler接口为定时任务提供了强大的支持,使得开发者能够轻松实现各种定时任务的需求。无论是简单的固定间隔任务,还是复杂的Cron表达式任务,Spring Boot都能提供简洁优雅的解决方案。在实际应用中,我们可能需要更复杂的定时任务管理功能,例如动态修改任务的执行时间、任务状态监控等。定时任务是指在预定的时间间隔或特定的时间点自动执行的任务。原创 2024-07-02 10:45:00 · 1988 阅读 · 0 评论 -
Spring Boot 自动配置:化繁为简的魔法
尽管 Spring Boot 提供了丰富的自动配置,但开发者仍然可以自定义配置,覆盖自动配置的行为。Spring Boot 提供了多种自定义配置的方式,例如:使用或你可以通过创建自定义的类,并使用@Bean@Bean// 自定义视图解析器另外,你可以在这样,你就可以自定义视图的前缀和后缀。Spring Boot 的自动配置机制是其核心特性之一,它通过 Starter 依赖、条件化配置、自动配置类和自定义配置,极大地简化了 Spring 应用的开发和部署。原创 2024-07-01 20:41:11 · 1330 阅读 · 0 评论 -
使用设计模式来增强你的 SpringBoot 开发
SpringBoot 是一个出色的框架,可以快速构建强大而高效的应用程序。但你是否知道设计模式可以将 SpringBoot 开发提升到一个新的水平?• 设计模式的重要性:了解设计模式如何促进代码的可重用性、可维护性和整体应用程序健康。• SpringBoot 的顶级设计模式:一些特别适合 SpringBoot 开发的最强大的设计模式。• 增强您的开发能力:了解这些模式如何简化您的编码过程、提高代码的可读性以及如何使您的应用程序更加灵活和可扩展。原创 2024-07-01 20:31:03 · 778 阅读 · 0 评论 -
强力组合:Spring Boot + 策略模式,打造灵活易扩展的系统接口
策略模式是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。通过使用策略模式,我们可以在运行时选择算法,并且可以动态地改变系统的行为。Context(环境):它持有一个对策略对象的引用,负责将具体的算法委托给策略对象执行。Strategy(策略):它是一个接口或抽象类,定义了一个算法族,具体的算法则实现了这个接口或继承了这个抽象类。ConcreteStrategy(具体策略):它实现了策略接口,提供了具体的算法实现。原创 2024-06-30 14:45:00 · 347 阅读 · 0 评论 -
Spring Boot中泛型参数的灵活运用:最佳实践与性能优化
泛型是Java中一种强大的特性,它提供了编写通用代码的能力,使得代码更加灵活和可复用。在Spring Boot应用程序中,泛型参数的灵活运用可以带来诸多好处,包括增强代码的可读性、提高系统的健壮性以及优化系统的性能。本文将深入探讨在Spring Boot中如何灵活运用泛型参数,并提供最佳实践与性能优化的建议。原创 2024-06-30 10:30:00 · 1138 阅读 · 0 评论 -
在Spring Boot项目中引入本地JAR包的步骤和配置
通过本文的介绍,读者可以了解到如何在Spring Boot项目中引入本地JAR包并进行相应的配置。无论是使用Maven还是Gradle,本文提供的步骤和代码示例都可以帮助开发者顺利完成本地JAR包的引入和使用。本文将详细介绍如何在Spring Boot项目中引入本地JAR包的步骤和配置,并提供相应的代码示例。假设我们有一个名为my-library.jar的本地JAR包,并且它位于项目的根目录下的libs文件夹中。引入本地JAR包后,可以在Spring Boot项目中使用其中的类和方法。原创 2024-06-29 18:45:00 · 772 阅读 · 1 评论 -
SpringBoot 与 PageHelper 的正确集成方法,避免常见误区!
在现代Java Web开发中,分页是一个常见且重要的功能。本文详细介绍了如何在最新版SpringBoot中正确集成PageHelper,帮助开发者避开常见误区,实现高效的分页查询功能。通过合理配置和正确使用PageHelper,我们可以在实际项目中轻松实现分页功能,提高开发效率。在SpringBoot项目中实现分页有多种方法,但PageHelper凭借其简单、高效和功能丰富的特点,成为开发者的首选工具。这样,我们就实现了一个简单的分页查询功能,通过PageHelper来控制分页参数。原创 2024-06-29 13:41:51 · 859 阅读 · 0 评论 -
Spring框架FactoryBean接口的作用和应用
如果还带有泛型XxxxFactoryBean,就说明这是一个抽象类,具体的创建实例的过程在其子类中。FactoryBean是一个特殊的bean,用于创建和管理自定义 Bean 实例的工厂bean,其中类名中的泛型就是要创建Bean的类名,如果子类是一个抽象类,那么具体的创建实例过程会延伸到其子类。当我们使用 FactoryBean 的时候,Spring 在实例化 Bean 的时候,实例化的是MyBean2FactoryBean 工厂 Bean,MyBean2则是在工厂 Bean中实例化的。原创 2024-06-27 15:45:00 · 603 阅读 · 0 评论 -
Spring框架Aware接口的作用和应用
在看源码的时候,经过层层追踪,发现有这么一个接口 Aware,这是一个空接口,空接口又称标记接口。标记接口的作用是实现该接口的类都被标记具有某项功能。那么扩展Aware接口的类都具有什么功能呢?Aware 是 Spring框架 3.1 版本 beans 包中的一个接口,源码如下:一个超级标记接口,指示一个Bean有资格通过回调式方法被Spring容器通知某个特定框架对象。具体的方法签名由各个子接口确定,但通常应该只包含一个接受单个参数且返回void的方法。这段话不好懂,没关系,继续往下看。原创 2024-06-27 10:45:00 · 804 阅读 · 0 评论 -
BaseMapper 接口介绍
这是最灵活的一点,在BaseMapper中直接复制了FnMapper/*** 根据主键更新实体中不为空的字段,强制字段不区分是否 null,都更新* * 当前方法来自 {@link io.mybatis.mapper.fn.FnMapper},该接口中的其他方法用 {@link ExampleMapper} 也能实现* @param entity 实体类。原创 2024-06-26 10:15:00 · 1608 阅读 · 0 评论 -
基于 Spring Boot 与 WebSocket 实现实时车位管理与状态更新
本章将深入探讨停车场管理系统中的技术难题,并提供基于Spring Boot 3.x的解决方案。每篇文章集中解决一个实际的技术难题,涵盖车位管理、自动识别、数据监控、系统优化等多方面的问题。通过详细的剖析和实际案例与代码示例,帮助开发者应对挑战,提升停车场管理系统的智能化、稳定性与用户体验。原创 2024-06-25 18:00:00 · 732 阅读 · 0 评论 -
使用Spring Boot 3.x结合专有算法生成电子印章
本章将是关于如何用Spring Boot 3.x实现网上政务统一电子印章的一站式解决方案。我们将深度探讨电子印章的生成、管理、应用,并探讨其在不同平台的兼容性问题和OCR技术的应用。同时,也会讨论如何结合电子签章、电子印章与文档的绑定,以及印章与文档状态的管理。有关电子印章的防伪技术、审计与备案,以及图像质量的处理,我们也会提供详尽的解答。专题旨在提供全方位的电子印章应用指南,帮助你轻松解决实际问题。原创 2024-06-25 10:00:00 · 817 阅读 · 0 评论 -
Spring Boot实现多环境配置
在实际项目开发过程中,我们往往需要区分开发,测试,联调,预发布,生产等不同的应用环境。这些应用环境用途不同,对应环境的配置项,稳定性,数据质量,保障性,可接触人群等要求也不同,比如 Swagger 一般上在生产时是关闭的;使用多环境配置,可以针对不同的应用环境,提前配置好对应的环境配置信息。在使用时,仅需要修改具体的环境名称,就可以把对应环境配置信息,系统参数等相关内容全部切换。访问 http://127.0.0.1:8088/hello。启动Spring Boot 应用程序。实现不同环境配置和切换。原创 2024-06-24 12:21:49 · 515 阅读 · 0 评论 -
SpringBoot 3 统一结果封装
在现代Web应用程序中,向客户端提供一致且有意义的响应对于良好的用户体验和更容易的调试至关重要。SpringBoot 3 提供了多种方法来实现统一的结果封装机制,确保所有API响应都符合标准结构。通过上述步骤,我们实现了SpringBoot 3中统一结果封装的方法。统一的响应结构不仅提高了代码的一致性和可维护性,还方便了异常处理和日志记录。我们可以通过全局异常处理器来捕获所有未处理的异常,并将其包装成统一的响应格式。接下来,我们通过编写统一的响应封装方法,将所有API接口的返回值包装成统一的结构。原创 2024-06-22 15:30:00 · 995 阅读 · 0 评论 -
Spring Boot 源码分析五:Spring Boot AutoConfiguration 自动配置机制
SpringBoot 的自动配置机制旨在根据项目中的类路径和配置属性,自动配置 Spring 应用程序。通过自动配置,开发者无需编写大量的配置代码,就可以快速启动和运行 Spring 应用程序。原创 2024-06-22 10:00:00 · 813 阅读 · 0 评论 -
SpringBoot+AOP+Redis自定义注解实现防重复提交
*** 防重复提交切面类*/@Aspect@Component@Resource/*** 切入点定义:指明要在什么样的条件下才能被触发* @Pointcut注解表达式, 通过特定的规则来筛选连接点, 就是Pointcut,选中那几个你想要的方法* @annotation:条件:当执行的方法上拥有指定的注解时生效*//*** 环绕通知,围绕着方法执行* @return*/try {= null;// 被拦截的方法// 注解信息。原创 2024-06-21 17:30:00 · 340 阅读 · 0 评论 -
Spring Boot + GraphQL实现实时数据推送
随着互联网的发展和用户体验的不断提升,实时数据的需求日益增长。在这样的背景下,GraphQL作为一种新兴的API查询语言,提供了一种更加灵活、高效的数据获取方案。通过本文的介绍,我们了解了GraphQL的基本概念和特点,以及如何利用Spring Boot集成GraphQL实现实时数据推送。结合Spring Boot作为后端框架,我们可以轻松地构建出实时数据推送的应用,满足用户对实时数据的需求。在社交网络应用中,可以利用GraphQL实时获取用户的动态、消息等信息,并实时推送给关注的用户。原创 2024-06-21 10:00:00 · 492 阅读 · 0 评论 -
SpringBoot配置Druid连接池
连接池的作用是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问。这样省略(复用)了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁时的四次握手),从而在性能上得到了提高。Druid是一个JDBC组件,它包括三部分:DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系、DruidDataSource 高效可管理的数据库连接池、SQLParser。原创 2024-06-21 15:00:00 · 493 阅读 · 0 评论 -
SpringBoot配置Swagger3
启动程序,在浏览器中输入地址:http://localhost:8083/swagger-ui/index.html#/@ApiModelProperty(value = “字段描述”)@Parameter(description = “参数描述”)@Operation(summary = “接口方法描述”)1.在Controller中写上接口的api注解。@ApiModel(“实体类的描述”)@Api(tags=“接口描述”)controller的方法参数中。controller 方法上。原创 2024-06-21 10:00:00 · 358 阅读 · 0 评论 -
SpringBoot这2个接口非常实用
通过上面的输出对比,ApplicationRunner对参数的操作方法更加的完善不仅包括了完整原始的参数信息,还将提供了其它获取所有参数名及参数名对应的值(上面并未调用对应方法。这两个接口的工作方式相同,都提供了一个run方法,在SpringApplication.run(…如果你项目中有多个Runner实现,并且希望按照一定的顺序执行,那么你可以通过如下方式定义执行顺序。这两个类的方法名都是run,仅仅是他们的参数不同,接下来查看具体参数有何不同。首先,在启动程序时添加如下参数。使用@Order注解。原创 2024-06-19 15:00:00 · 351 阅读 · 0 评论 -
SpringBoot 源码分析四:启动流程中的扩展机制
通过深入分析ApplicationContextInitializer和ApplicationListener接口,以及自定义SpringApplicationRunListener,我们可以看到SpringBoot启动流程中的强大扩展机制。在本篇文章中,我们将进一步分析SpringBoot启动流程中的扩展机制,特别是ApplicationContextInitializer和ApplicationListener,并展示如何自定义这些组件来扩展SpringBoot的功能。原创 2024-06-19 14:45:00 · 1041 阅读 · 0 评论 -
Spring Boot 源码分析三:深入探讨 SpringApplication 类及其子组件
在前两篇文章中,我们介绍了SpringBoot的启动流程,并深入分析了启动流程中的核心方法。本篇文章将进一步探讨SpringApplication类及其子组件,分析它们在启动过程中所扮演的角色和实现细节。SpringApplicationRunListeners类用于管理多个 SpringApplicationRunListener实例,并在不同的启动阶段调用它们。:在应用程序启动的不同阶段,调用所有注册的 SpringApplicationRunListener 实例。原创 2024-06-19 10:00:00 · 742 阅读 · 0 评论 -
SpringBoot 源码分析二:深入探讨启动流程
本篇文章将继续深入分析SpringBoot的启动流程,聚焦SpringApplication类中的关键方法以及各个启动阶段的细节。createApplicationContext方法用于创建具体的应用上下文,例如 AnnotationConfigApplicationContext或ReactiveWebServerApplicationContext。配置上下文,加载配置和Bean定义,调用监听器的contextPrepared方法。:调用Spring框架的refresh方法,触发应用上下文的刷新过程。原创 2024-06-18 14:30:00 · 1177 阅读 · 0 评论 -
Spring Boot源码分析一:启动流程
通过深入分析SpringBoot应用程序的启动流程,我们可以更好地理解其内部机制,进而在开发中更好地利用这些机制,提高开发效率和代码质量。SpringBoot是一个广泛使用的Java框架,旨在简化基于Spring框架的应用程序的开发过程。在这篇文章中,我们将深入探讨SpringBoot应用程序的启动流程,了解其背后的机制。这里的SpringApplication.run是启动SpringBoot应用程序的入口。:准备上下文,加载配置,注册Bean,调用监听器的 contextPrepared 方法。原创 2024-06-18 10:00:00 · 735 阅读 · 0 评论 -
Spring Boot 3.x + Flowable 实现加签功能
加签(Sign-up)是一种在工作流中,当某个节点的审批操作需要增加额外的参与者时,通过动态地添加新审批人的操作。这个过程通常用于复杂的审批操作场景,如需要额外的审核或重新确认等。创建一个新的bpmn流程文件,比如通过Spring Boot 3.x + Flowable实现加签功能,可以有效地提升工作流程的灵活性和可控性。在实际应用中,需根据业务需求进行定制和优化,确保功能的稳定和高效。如有疑问或深入探讨,欢迎进一步交流和分享经验。原创 2024-06-16 19:00:00 · 1816 阅读 · 0 评论 -
SpringBoot应用数据加密实战:守护信息安全的多维度策略
SpringBoot应用的数据加密是一项系统工程,需结合对称加密、非对称加密、HTTPS、数据库加密等多种手段,形成多层次、全方位的安全防护体系。在实践中,还需关注加密算法的选择、密钥管理、性能优化以及合规性要求,不断迭代完善安全策略,以应对日益复杂的网络安全挑战。:首先,在你的SpringBoot项目中引入Bouncy Castle库,以支持AES加密,或者直接使用Hutool工具类。非对称加密,如RSA,提供了更高的安全性,常用于密钥交换、数字签名等场景。:公钥加密,私钥解密,或反之用于签名验证。原创 2024-06-15 14:45:00 · 1434 阅读 · 0 评论 -
在Spring Bean生命周期的不同阶段如何插入自定义的处理逻辑?Spring框架提供了两种类型的接口
Spring框架在一个Bean的不同生命周期阶段都有提供钩子,以供在不同的阶段增加自定义方法,实际上不止这7个接口,还有更多可能选择。我们先了解一下,以便在使用的时候逐步深入。通过实现以上接口的实现,或者使用注解,我们可以在Bean的生命周期中的特定阶段执行自定义的逻辑,从而实现更精细化的控制和管理。原创 2024-06-15 09:45:00 · 1100 阅读 · 0 评论 -
Spring框架Bean生命周期的5个阶段及举例说明
Bean生命周期划分为五大步:第一步:实例化Bean;第二步:Bean属性赋值,依赖注入;第三步:初始化Bean;第四步:使用Bean;第五步:销毁Bean。实例化和初始化是两个完全不同的过程,实例化只是给 Bean分配了内存空间,而初始化则是将程序的执行权,从系统级别转换到用户级别,并开始执行用户添加的业务代码。通过这些生命周期阶段,Spring 提供了灵活的机制来管理 Bean 对象的创建、初始化和销毁过程,以确保它们在应用程序中的正确管理和运行。原创 2024-06-14 10:30:00 · 843 阅读 · 0 评论 -
在 Spring 中使用 @Transactional 要避的坑
假设你正在使用一个银行的应用程序,用户想要将钱从一个账户转到另一个账户,这个看似简单的操作涉及多个数据库更新(从一个账户扣除并添加到另一个账户),事务在这里发挥作用以确保数据一致性。本质上,事务将多个数据库操作组合成一个单元,它保证所有操作要么成功(提交),要么全部失败(回滚)。这确保了数据完整性——在一系列操作之后,数据库的整体状态保持一致。如果没有事务,部分故障可能会导致数据处于不一致的状态(例如,从一个帐户中扣除了钱,但没有添加到另一个帐户)。Spring 使用。原创 2024-06-11 08:45:00 · 696 阅读 · 0 评论 -
Sharding-JDBC如何实现读写分离
Sharding-JDBC是一个分布式数据库框架,它提供了读写分离的功能,以提高数据库的读取性能。原创 2024-06-13 14:45:00 · 597 阅读 · 0 评论