若依4.7.8升级到4.8.1实战:SpringBoot3+Dubbo3集成避坑指南

若依4.8.1(SpringBoot3.3.5)集成Dubbo3客户端:从JDK8到JDK17的平滑升级实践 本文详细介绍了将若依后台管理系统从JDK8升级至JDK17,并集成Spring Boot 3.3.5与Dubbo3客户端的完整实践。文章阐述了升级的必要性,提供了从环境准备、依赖梳理到核心集成的具体步骤,并针对服务发现、元数据上报等常见问题给出了解决方案,旨在帮助开发者实现技术栈的平滑升级,以更好地接入微服务生态。 阅读详情

若依4.7.8至4.8.1升级实战:Spring Boot 3与Dubbo 3集成深度解析与避坑指南

最近在帮团队将一个核心业务系统从若依4.7.8迁移到4.8.1版本,过程中最棘手的部分莫过于在Spring Boot 3环境下集成Dubbo 3。这不仅仅是版本号的简单变更,更是一次从JDK 8到17、从Spring Boot 2到3、从Dubbo 2到3的“三重跳跃”。网上能找到的碎片化资料不少,但真正能串联起整个流程、讲清楚背后原理和具体坑点的完整指南却不多。这篇文章,我就把自己趟过的路、踩过的坑,以及最终验证可行的方案,系统地梳理出来,希望能给面临同样挑战的中高级开发者提供一个清晰的路线图。

1. 升级前的全景评估与环境准备

在动手写第一行代码之前,我们必须对整个升级工程有一个全局性的认识。若依4.8.1基于Spring Boot 3.3.5,这是一个重大的框架升级,它不仅仅是Spring Boot自身版本的迭代,更伴随着一系列底层依赖和编程模型的变革。与此同时,Dubbo 3.x也带来了全新的服务治理模型和通信协议。这两者的结合,意味着我们需要在多个层面上进行适配和调整。

核心升级矩阵: 首先,我们通过一个表格来直观对比升级前后的关键组件变化,这能帮助我们快速定位潜在的兼容性问题。

组件升级前 (若依 4.7.8)升级后 (若依 4.8.1 + Dubbo 3)主要影响与注意事项
Java 版本JDK 8JDK 17语法、API、模块化系统(JPMS)均有变化,需检查第三方库兼容性。
Spring Boot2.5.153.3.5配置属性前缀大规模变更(如server.servlet->server.servlet部分保留,但spring.redis->spring.data.redis),包路径变化(javax->jakarta)。
Dubbo通常为 2.7.x3.3.2默认协议变为Triple (gRPC),服务发现模型升级,元数据管理方式变化。
注册中心Nacos 1.x / 2.xNacos 2.4.3+ (推荐)Dubbo 3对Nacos 2.x的客户端有更好的支持,服务注册的元数据结构不同。
依赖管理Spring Boot BOMSpring Boot BOM + Dubbo BOM需要显式管理Dubbo及其相关组件的版本,避免传递依赖冲突。

提示:强烈建议在独立的开发分支上进行升级操作,并利用Git等版本控制工具做好每一步的提交记录,便于回滚和问题定位。

开发环境升级步骤:

  1. IDE配置:将IntelliJ IDEA或Eclipse的Project SDK和Language Level调整为JDK 17。确保Maven/Gradle的编译插件也指向JDK 17。
  2. 基础代码获取:从官方仓库拉取若依4.8.1的纯净版代码。我的做法是,将其作为一个新的“基础模板”,然后将我们现有的业务模块(如alarm-webhook、system等)逐个迁移过去,而不是直接在4.7.8的代码上覆盖升级。这样可以最大程度减少因若依框架本身代码变动带来的干扰。
  3. 依赖对比分析:仔细对比新旧两个版本ruoyi-common等核心模块的pom.xml。重点关注Spring Boot、MyBatis、Shiro等核心依赖的版本变化。若依4.8.1已经将这些依赖升级到位,我们主要需要处理业务模块中引入的额外依赖的兼容性。

2. Maven依赖配置的重构与冲突解决

依赖管理是升级过程中最繁琐但也最关键的一环。Spring Boot 3的BOM(Bill of Materials)管理了一系列依赖的兼容版本,而Dubbo 3也有自己的BOM。如何让它们和谐共处,是第一个技术挑战。

父POM与依赖管理: 在若依的多模块项目中,我们通常在父POM中通过<dependencyManagement>统一管理版本。对于Dubbo,我们需要引入Apache Dubbo的BOM。以下是一个业务模块(例如alarm-webhook)的pom.xml配置示例,它清晰地展示了如何整合Spring Boot 3和Dubbo 3:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <!-- 继承若依4.8.1的父工程 -->
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi</artifactId>
        <version>4.8.1</version>
    </parent>

    <artifactId>alarm-webhook</artifactId>

    <properties>
        <!-- 指定Dubbo版本 -->
        <dubbo.version>3.3.2</dubbo.version>
        <!-- 确保编译环境为JDK 17 -->
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- Spring Boot 3 基础依赖已通过父POM引入 -->

        <!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>

        <!-- Dubbo 注册中心 Nacos 客户端 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

        <!-- Dubbo Triple 协议 (Dubbo 3 默认) -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-rpc-triple</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

        <!-- 其他业务所需依赖... -->
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- 引入 Dubbo BOM,统一管理Dubbo生态组件版本 -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-bom</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

常见依赖冲突与解决:

  • Jakarta EE API:Spring Boot 3将javax包全面迁移至jakarta。确保所有显式引入的依赖(如Servlet API、JAXB、JPA等)都支持Jakarta命名空间。例如,如果使用了javax.servlet:javax.servlet-api,需要替换为jakarta.servlet:jakarta.servlet-api。
  • Fastjson等序列化库:若依历史版本可能使用了Fastjson 1.x。在JDK 17和Spring Boot 3环境下,建议升级到Fastjson 2.x,或者评估改用Jackson(Spring Boot默认)。升级时注意API的变化。
  • Nacos Client:使用dubbo-registry-nacos时,它会传递引入适配的Nacos客户端版本。通常无需手动指定,但若出现类找不到或方法签名错误,可尝试排除旧版本并显式引入与Dubbo 3兼容的版本(如com.alibaba.nacos:nacos-client:2.4.3)。

注意:每次添加或修改依赖后,运行mvn dependency:tree命令查看依赖树,排查是否存在同一个库的不同版本冲突。使用<exclusions>标签排除不必要的传递依赖。

3. 应用配置的迁移与Dubbo 3核心配置详解

配置文件是连接框架与业务的桥梁。从Spring Boot 2到3,大量的配置属性前缀发生了改变;而Dubbo 3的配置模型也与2.x有显著差异。

Spring Boot 3配置属性变更: 最大的挑战来自于配置项的重命名。这里列举几个关键点:

  • 数据源与Redis:
    # Spring Boot 2.x
    spring.datasource.url=jdbc:mysql://localhost:3306/ry
    spring.redis.host=localhost
    
    # Spring Boot 3.x (部分保持不变,但Redis变了)
    spring.datasource.url=jdbc:mysql://localhost:3306/ry
    spring.data.redis.host=localhost # 注意前缀变为 spring.data.redis
    
  • Servlet相关:server.servlet下的配置大部分保留,但涉及上传等细节需核对官方文档。
  • Actuator监控端点:management.endpoints.web.exposure.include=* 在3.x中仍然有效,但安全策略可能更严格。

Dubbo 3配置的“道”与“术”: Dubbo 3推崇“应用级服务发现”,这与Dubbo 2.x的“接口级服务发现”有根本区别。我们的配置需要明确这一点。以下是一个完整的application.yml配置示例,适用于作为Dubbo消费者(Consumer)的Spring Boot 3应用:

# Spring Boot 基础配置
spring:
  application:
    name: alarm-webhook-service
  profiles:
    active: dev
  data:
    redis:
      host: 10.13.xx.xx
      port: 6379
      password: your_password

# Dubbo 3 配置
dubbo:
  application:
    name: ${spring.application.name}
    # 注册模式:all, instance, interface (默认 interface)
    # 在Dubbo 3 + Nacos 2环境下,建议使用 'instance' 或 'all' 以适配应用级发现
    register-mode: instance
  protocol:
    name: tri # 使用Triple协议,Dubbo 3的默认及推荐协议
    port: -1 # 端口为-1表示随机分配,避免冲突
  registry:
    address: nacos://10.13.xx.55:8848
    parameters:
      namespace: your_namespace # Nacos命名空间
      group: DEFAULT_GROUP # 服务分组
      username: nacos
      password: nacos
    # 关键:用于解决服务发现前缀问题
    simplified: true
    extra-keys: revision,version,app-group,environment,services
  metadata-report:
    address: nacos://10.13.xx.55:8848
    # 元数据上报,对于服务测试和治理很有用
    cycle-report: false
  consumer:
    check: false # 启动时不检查提供者是否可用
    timeout: 5000 # 调用超时时间(毫秒)
    loadbalance: roundrobin # 负载均衡策略
  config-center:
    address: none # 若不使用外部配置中心,可显式关闭

配置项深度解析:

  1. register-mode: instance:这是解决“Nacos界面只看到应用名,看不到服务接口名”问题的关键。设置为instance(或all)后,Dubbo会将服务注册到应用级别,这在Dubbo 3和Nacos 2的组合中是更现代和推荐的方式。与之对应的是interface模式(Dubbo 2.x默认),它会在Nacos中创建大量以接口名为维度的服务条目。
  2. protocol: tri:Triple协议基于HTTP/2和gRPC,具有更好的穿透性、跨语言支持和可观测性。它是Dubbo 3的默认协议,与Dubbo 2的默认dubbo协议不兼容。这意味着消费者和提供者必须使用兼容的协议。如果提供者是Dubbo 2.x(使用dubbo协议),消费者是Dubbo 3.x(使用tri协议),则无法直接调用。通常升级时,需要先将提供者升级到Dubbo 3并支持双协议暴露,或者消费者暂时也使用dubbo协议(不推荐)。
  3. registry.simplified: true 与 extra-keys:这两个配置联合作用,用于控制注册到Nacos的服务元数据的格式和内容。simplified=true会使用简化的URL格式进行注册,而extra-keys则定义了哪些元数据需要被包含。这个配置能有效避免因元数据格式不一致导致的服务发现失败,是连接Dubbo 3消费者与Dubbo 2/3提供者的重要桥梁。

4. 服务消费端代码适配与常见问题攻防

配置就绪后,接下来就是业务代码的改造。对于消费者而言,核心改动点在于服务引用的注解和可能存在的API兼容性处理。

服务引用注解的变迁: 在Dubbo 3中,@Reference注解已经从com.alibaba.dubbo.config.annotation.Reference迁移到了org.apache.dubbo.config.annotation.DubboReference。虽然旧注解在特定兼容包下可能仍能工作,但为了清晰和未来兼容性,建议统一改用新注解。

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class SmsAssembleService {

    // Dubbo 3.x 方式
    @DubboReference
    private SmsLinkageService smsLinkageService;

    // 如果需要更精细的控制,可以配置参数
    // @DubboReference(version = "1.0.0", loadbalance = "leastactive", timeout = 3000)
    // private SmsLinkageService smsLinkageService;

    public void doBusiness() {
        try {
            String result = smsLinkageService.saasCtTopErrMsg2("systemCode", "time");
            log.info("Dubbo调用结果:{}", result);
        } catch (Exception e) {
            log.error("调用远程服务失败", e);
            //  fallback 处理逻辑
        }
    }
}

高频问题排查清单(FAQ): 在实际升级中,我遇到了以下几个最具代表性的问题,这里给出排查思路和解决方案:

  • 问题一:消费者启动后,在Nacos服务列表看不到提供者的服务接口,只看到应用名。

    • 原因:Dubbo 3默认或配置为register-mode: instance(应用级注册),而你在Nacos控制台查看的是“服务列表”标签页,这里默认展示的是接口级服务。你需要切换到“服务管理”->“服务列表”页面,并选择对应的命名空间,这里会以应用名的形式展示服务。
    • 解决:理解这是正常现象。确认dubbo.registry.register-mode=instance或all。调用是否成功不取决于在哪个界面看到,而取决于服务发现逻辑。可以通过Dubbo的QoS命令(telnet localhost 22222)或Admin控制台来验证服务引用是否成功。
  • 问题二:消费者报错“No provider available for the service ...”。

    • 排查步骤:
      1. 检查网络与Nacos连接:确保消费者能连通Nacos服务器,并且Nacos上确实有健康的提供者实例(应用级)。
      2. 检查协议是否匹配:这是最隐蔽的坑。确认提供者暴露的协议(dubbo.protocol.name)和消费者引用的协议是否兼容。如果提供者是Dubbo 2.x的dubbo协议,消费者是Dubbo 3.x的tri协议,则需要修改一方。临时方案可将消费者的协议也改为dubbo,但长远看需升级提供者。
      3. 检查分组(Group)和版本(Version):确保@DubboReference注解上的group和version属性与提供者暴露的服务完全一致。Nacos中注册的服务名是service:group:version的组合。
      4. 检查metadata-report配置:如果提供者是Dubbo 3,且配置了元数据上报,确保消费者的metadata-report.address配置正确,或者尝试暂时注释掉该配置看是否恢复正常。
  • 问题三:调用时出现序列化/反序列化错误。

    • 原因:JDK升级、Dubbo版本升级都可能引起序列化机制的变化。特别是如果传输的POJO类没有实现Serializable接口,或者在不同模块中使用了不同版本的类定义(即使包名类名相同)。
    • 解决:
      1. 确保所有通过Dubbo传输的DTO、VO、Param类都实现了java.io.Serializable接口。
      2. 检查并统一服务接口API模块(JAR包)的版本。消费者和提供者必须依赖完全相同版本的API模块。
      3. 考虑使用更健壮的序列化方式。Dubbo 3的Triple协议默认使用Protobuf进行序列化,兼容性更好。也可以尝试配置serialization属性为hessian2或kryo进行测试。
  • 问题四:应用启动变慢,或出现Socket绑定失败错误。

    • 原因:Dubbo服务在启动时会初始化网络连接和监听端口。dubbo.protocol.port=-1表示随机端口,但在某些环境下(如频繁重启、容器环境)可能冲突。或者,Triple协议和Dubbo协议默认端口范围有重叠。
    • 解决:
      1. 可以尝试为Triple协议指定一个固定端口范围,例如在配置中修改:dubbo.protocol.port=20880(Dubbo协议)或 dubbo.protocol.port=50051(Triple协议常用端口)。
      2. 检查服务器防火墙是否开放了对应的端口。

5. 全链路验证与生产就绪检查

当所有代码修改完成、配置调整到位、并且本地启动不再报错后,我们还需要进行系统的全链路验证,以确保升级后的应用在生产环境中是稳定可靠的。

验证阶段与检查清单:

  1. 单元测试与集成测试:

    • 运行项目中所有的JUnit单元测试,确保基础功能不受影响。
    • 编写或执行针对Dubbo服务调用的集成测试。可以利用Spring Boot的@SpringBootTest注解,在测试环境中启动消费者,并调用一个真实的或Mock的提供者。
  2. 服务注册与发现验证:

    • 登录Nacos控制台,确认消费者和提供者应用都已正确注册到预期的命名空间和分组下。
    • 在消费者应用中,通过Dubbo内置的QoS命令查看服务引用状态。启动应用后,使用命令 telnet 127.0.0.1 22222(22222是QoS默认端口)连接,输入 ls 查看提供的服务,invoke 命令可以手动触发调用测试。
  3. 端到端业务流测试:

    • 这是最重要的环节。模拟真实的用户请求,触发包含Dubbo远程调用的完整业务链路。检查日志中是否有异常,验证返回的数据是否正确。
    • 特别关注超时和重试机制。故意模拟提供者响应缓慢或短暂不可用的情况,观察消费者的行为是否符合dubbo.consumer.timeout和retries等配置的预期。
  4. 性能与监控基线:

    • 升级后,应对关键接口进行简单的压力测试(如使用JMeter),对比升级前后的响应时间(RT)、吞吐量(QPS)和错误率。由于Triple协议基于HTTP/2,理论上在连接复用和头部压缩上有优势。
    • 整合监控。确保Dubbo的Metrics数据能够暴露出来(通常通过Micrometer),并接入到你们的APM系统(如SkyWalking, Prometheus + Grafana)中。监控服务调用的成功率、耗时、流量等指标,建立新的性能基线。

回滚预案: 无论准备多么充分,都必须有可靠的回滚方案。我们的策略是:

  • 代码回滚:升级分支未通过全部测试和评审前,不合并到主分支。
  • 配置回滚:将旧的application.yml或bootstrap.yml配置文件备份。如果新配置出现问题,可以快速替换。
  • 数据库与数据兼容性:本次升级若不涉及数据库表结构变更,则风险较低。若涉及,需准备好数据库回滚脚本。
  • 部署回滚:使用容器化部署(如Docker+K8s)可以大大简化回滚操作,直接使用上一个版本的镜像重新部署即可。

整个升级过程就像一次精密的系统手术,需要耐心、细致的准备和验证。从若依4.7.8到4.8.1,再集成Dubbo 3,最大的收获不是仅仅让系统跑起来,而是深入理解了Spring Boot 3的配置哲学和Dubbo 3面向云原生的设计理念。这次升级后,我们的系统在可观测性、跨语言调用潜力以及未来向更彻底的云原生架构演进的道路上,都打下了更坚实的基础。最后一个小建议,在测试环境充分模拟生产流量进行灰度验证,是上线前不可或缺的最后一道保险。

JAVA架构升级:JDK11 升级JDK21 Springboo2.5.14 升级至Springboo3.1.7 原架构:JDK11、springboot 2.5.14 升级至JDK21、Springboot 3.1.17 阅读详情

相关推荐

若依4.8.1(SpringBoot3.3.5)集成Dubbo3客户端:从环境搭建到服务调用的完整实践

本文详细介绍了在若依4.8.1(基于SpringBoot3.3.5)中集成Dubbo3客户端的完整实践。内容涵盖从环境准备、依赖配置、核心参数详解到服务调用代码编写的全过程,重点解决了与Nacos注册中心的集成、服务发现以及常见问题排查,旨在帮助开发者实现若依系统对Dubbo微服务的高效、稳定调用。

weixin_29302047的博客 441

私活神器!若依微服务Plus版源码详解与二次开发教程

本课程基于国内最大开源网站gitee上的GVP项目--若依的扩展项目:RuoYiCloudPlus进行一次应用级别的系统化讲解。主要分为源码讲解和二次开发两部分。源码会进行应用级别的逐行分析讲解,二次开发会讲解到如何快速高效的使用该私活神器构建项目。文档地址:https://blog.csdn.net/zhaozhiqiang1981/category_12221291.html

从JDK8+SpringBoot2到JDK21+SpringBoot3.2:一次完整的Java项目升级实战与避坑指南

本文详细记录了从JDK8+SpringBoot2升级到JDK21+SpringBoot3.2的全过程,包括前期准备、依赖升级、代码适配、新特性应用及性能优化等关键步骤。特别针对java21升级中的常见问题提供了实用解决方案和避坑指南,帮助开发者顺利完成大型Java项目的现代化改造。

dgjm4087的博客 453

一套完整的微服务框架,实战若依 ruoyi cloud

基于若依微服务版 ruoyi cloud 的完整框架调试、修正、注解说明和扩展,包含nacos、sentinel、seata等服务器环境,提供易于上手的完整微服务运行环境。

MAStudio移动信息化专栏 6050

若依4.8.1(SpringBoot3.3.5)集成Dubbo3客户端实战:从环境搭建到服务调用

本文详细介绍了将若依4.8.1(Spring Boot 3.3.5)框架集成Dubbo3客户端的完整实战流程。内容涵盖从老版本升级、环境准备、依赖引入、Nacos注册中心配置,到使用@DubboReference注解进行服务调用的核心步骤,并提供了常见问题的排查指南,帮助开发者顺利完成微服务化改造。

weixin_29209825的博客 371

springcloud整合dubbo3使用nacos作为注册中心

springcloud整合dubbo3使用nacos作为注册中心

congge 7952

在微服务整合dubbo,以为微服务版的若依为例

微服务版若依3.6.3 dubbo2021.0.1 nacos2.2.1 2、生产者 因为我要调用若依的文件服务,所以直接将文件服务作为生产者。依赖如下: 主要是这个依赖 先在文件服务的 bootstrap.yml 加上如下配置,解决循环引用 如何在nacos中对应的配置文件中添加如下配置: 接着在启动类中加上 @EnableDubbo 注解接着是dubbo的接口,接口放在这里具体如下: 对应的实现类 其实要用的方法都在 IMinioSysFileService 的实现类中写好了,这里只是为了使用 @Dub

studio_1的博客 2182

【微服务】springcloud整合dubbo3使用nacos作为注册中心

springcloud整合dubbo3使用nacos作为注册中心

congge 3332

Ruby与Java大比拼:哪个性能更强、开发更快?

在选择后端开发语言时,Ruby与Java是两种常被对比的技术。Ruby以其优雅简洁著称,能极大提升开发效率;而Java则以其稳定可靠的生态系统,长期主导着企业级应用。

2509_93883384的博客 372

lion-upms:微服务,spring boot,spring cloud,spring alibaba cloud,dubbo,sentinel,seata,oauth2,gateway

狮子UPMS 微服务,spring boot,spring cloud,spring alibaba cloud,dubbo,sentinel,seata,oauth2,gateway

springboot-demo(springboot+mybatis+mysql+springmvc+thy)

springboot-demo(springboot+mybatis+mysql+springmvc+thy)

若依4.7.8升级到4.8.1实战:SpringBoot3+Dubbo3客户端集成避坑指南

本文详细解析了将若依(RuoYi)框架从4.7.8版本升级至4.8.1,并集成Spring Boot 3与Dubbo 3客户端的完整实战过程。文章重点分享了升级前的环境评估、核心依赖重构、配置文件迁移、服务调用适配等关键步骤,并提供了针对服务发现失败、序列化错误等常见问题的深度避坑指南,旨在帮助开发者实现平滑、高效的技术栈升级。

info6的博客 430

放弃Dubbo,选择最流行的SpringCloud微服务架构实践与经验总结

在使用SpringCloud之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉SpringBoot,到项目中的慢慢使用,再到最后全面拥抱SpringCloud。这篇文章给大家介绍我们使用SpringBoot/Cloud一年多的经验总结。在开始之前我们先介绍几个概念,什么是微服务,它的特点是什么?SpringBoot/Cloud都做了那些事情?他们三者之间又有什么关系?微服务的概念源于2014年3月MartinFowler所写的一篇文章“Microservices”。文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配

若依4.7.8(springboot2.5.15)升级到4.8.1(springboot3.3.5)并集成Dubbo3客户端

本文讲解若依4.7.8(springboot2.5.15)升级到4.8.1(springboot3.3.5)并集成Dubbo3客户端,同时使用nacos做服务发现的实现过程。深入浅出。

搬砖工 1584

ARIMA模型的R实现

1.模型简介 ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。 ARIMA模型的形式如下: Φ(B)∇

heirenmin的博客 1万+

新手避坑:RT-Thread-Studio外设驱动配置最容易忽略的3个地方(附WDT实例)

本文针对RT-Thread-Studio新手在配置外设驱动时常见的编译报错问题,以看门狗(WDT)为例,详细解析了最易忽略的三个关键配置环节:RT-Thread-Studio的图形化Setting开关、Kconfig中的依赖关系以及SConscript的编译规则。掌握这三层配置模型,能有效避免头文件包含正确却依然编译失败的问题,确保驱动代码被正确加入构建。

gray5的博客 506

dubbo2.7升级到dubbo3--dubbo2.7升级到dubbo3系列

dubbo2.7升级到dubbo3系列

北巷东东的专栏 2683

(ZOS-API)Matlab控制ZEMAX软件调整光学系统某镜面位姿

所用软件的版本:MatlabR2022a, Zemax OpticStudio2024R1交互扩展功能,Zemax和可以同时打开,操作会比较方便在ZEMAX软件中,调整次镜位置通常有两种方法:1.在次镜前后各添加一个坐标间断面,并修改其“偏心X”“偏心Y”等参数来调整次镜的位姿;2.或者直接在次镜属性选项中设置相关数值。这两种方法对Zernike系数的采集结果无显著影响。

ecilifurt的博客 912

JDK8升级至JDK17等一系列关联升级

一直在用eclipse,还是Oxygen版本,但是这个版本JDK8以上不支持,去年查eclipse官网,还没有新版本,尝试过IDEA的破解版和社区版,破解版在自动引用最新spring依赖包时,总会出现unknown的版本号问题,社区版装配起来太繁琐,碰巧今年eclipse终于推出新版,所以,最终确定,还是使用完全开源的eclipse,专做java语言开发的IDE。目前java的技术迭代相当快,相关框架组件和中间件的配套升级也是一系列,下面记录一下遇到的相关问题及其解决办法。5、zookeeper升级。...

u011017880的专栏 7345

QT绘制饼图+柱状图+折线图

使用qt绘制,折线图,饼图,柱状图,多柱状图

梅山 3879

关于光耦隔离与SP3485E芯片一起使用无法拉高485使能引脚问题

最近在做的一个项目,定制了一块STM32F407ZG的工控板,工控板载4个485接口全部都是只能接收数据,不能对外发送数据。1.接线不正确:接线不正确导致485收发出现问题。 2.程序端口初始化问题:控制光耦隔离的输入脚IO的初始化和置位状态有问题。 3.GPIO复用问题:控制对应串口的GPIO不是正点原子默认的GPIO,而是经过复用的其他IO,复用问题。 4.程序设置与485E芯片收发模式不对应:对于使能引脚的电平要根据光耦的输出情况确定输入IO与RE的关系,可能模式没有对应。 5.光耦隔离或者SP485

weixin_45862642的博客 2978

10. Springboot集成Dubbo3(一)简单介绍

Dubbo是一个开源的Java分布式服务框架,最初由阿里团队于2011年开发,其设计目标是为了解决阿里巴巴内部的大规模分布式系统中遇到的问题,包括服务治理、RPC通信等。后来阿里团队将Dubbo贡献给了Apache开源基金会,开源后,得到了广泛的关注和使用。此后阿里团队宣布不在维护Dubbo框架(可能转到了SpringCloud Alibaba框架设计),Dubbo版本停在了2.x。此后当当网基于2.x版本的基础上进行优化和维护,出现了Dubbox版本。

有一只柴犬的专栏 2456

PCIe 全解析笔记:从协议本质到工程实现

学习 PCIe,最容易陷入的误区是直接跳进协议手册(Base Spec 1300 多页),然后在 TLP 字段、LTSSM 状态、Ordering Rules 中迷失方向。正确的思维路径历史维度:从 PCI 到 PCIe,解决了什么核心矛盾?抽象维度:协议栈分层的真正意图是什么?工程维度:高速串行链路面临哪些物理挑战?协议如何应对?系统维度:作为 CPU 与外设的"动脉",PCIe 如何融入整个计算机体系?带着这四个视角去看每一个细节,知识才能内化为认知。

m0_46644103的博客 265
上一篇: 游戏水面的秘密:用URP和Blinn-Phong打造逼真高光(含完整Shader代码)
下一篇: Rocky Linux 8实时内核安装后的优化与配置指南
gitlab7runner
博客等级 码龄4年 78粉丝 1747原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值