微服务SpringCloud开弓之SpringCloud Stream消息驱动「十二」

【论文学习】《Fully-Convolutional Siamese Networks for Object Tracking》2016年SiamFC 全卷积孪生网络用于目标跟踪 在这项工作中,我们脱离了跟踪中采用的传统在线学习方法,并展示了一种专注于在离线阶段学习强嵌入的替代方法。与在分类设置中的使用不同,我们证明,对于跟踪应用,孪生全卷积深度网络能够更有效地使用可用数据。这不仅反映在测试时,通过执行有效的空间搜索,也反映在训练时,其中每个子窗口都有效地代表一个有用的样本,而几乎没有额外的成本。实验表明,深度嵌入为在线跟踪器提供了自然丰富的特征来源,并使简单的测试时策略表现良好。我们相信这种方法是对更复杂的在线跟踪方法的补充,并期望未来的工作能够更彻底地探索这种关系。 阅读详情

SpringCloud Stream消息驱动

1、消息驱动概述

  • 是什么

    官网地址

    文档

    一句话:屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型
    在这里插入图片描述

  • 设计思想

    1、标准MQ

    • 生产者/消费者之间靠消息媒介传递信息内容:Message
    • 消息必须走特定的通道:MessageChannel
    • 消息通道里的消息如何被消费呢?谁负责收发。处理消息通道MessageChannel的子接口SubscribeChannel,由MessageHandler消息处理器所订阅

    2、为什么用CloudStream

    • Stream凭什么可以统一底层差异
      在这里插入图片描述

    • Binder

在这里插入图片描述

在这里插入图片描述

==通过定义绑定器Binder作为中间件,实现了应用程序与消息中间件细节之间的隔离。==

==INPUT适用于消费者==

==OUTPUT适用于生产者==

3、Stream中的消息通讯方式遵循了发布-订阅模式

  • 在RabbitMQ就是Exchange

  • 在Kafka中就是Topic

  • Springcloud Stream标准流程套路
    在这里插入图片描述

Binder:很方便的连接中间件,屏蔽差异

Channel:通道,是队列Queue的一种抽象,在消息通讯系统中就是实现存储和转发的媒介,通过channel对队列进行配置

Source和Sink:简单的可理解为参照对象是Springcloud Stream自身,从Stream发布消息就是输出,接受消息就是输入

  • 编码API和常用注解

在这里插入图片描述

2、案例说明

  • cloud-stream-rabbitmq-provider8801,作为生产者进行消息模块
  • cloud-stream-rabbitmq-consumer8802,作为消费者接受模块
  • cloud-stream-rabbitmq-consumer8803,作为消费者接受模块

3、消息驱动之生产者

  • 新建module:cloud-stream-rabbitmq-provider8801

  • POM

     <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>com.atguigu.springcloud</groupId>
                <artifactId>cloud-api-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
        </dependencies>
    
  • yml

    server:
      port: 8801
    spring:
      application:
        name: cloud-stream-privider
      cloud:
        stream:
          binders:   #自此处配置要绑定的rabbitmq的服务信息
            defaultRabbit: #表示定义的名称,用于binding整合
              type: rabbit #消息组件类型
              environment:  # 设置rabbitmq的相关的环境配置
                spring:
                  rabbitmq:
                    host: localhost
                    port: 5672
                    username: guest
                    password: guest
            bindings:   #服务的整合处理
              output: #这个名字是一个通道的名称
                destination: springboot-mq #表示要使用的exchange名称定义
                content-type: application/json #设置消息类型,本次为json
                binder: defaultRabbit   #设置要绑定的消息服务的具体设置
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka
      instance:
        lease-expiration-duration-in-seconds: 5 #如果现在超过了5秒的间隔
        lease-renewal-interval-in-seconds: 2 #设置心跳的时间间隔
        instance-id: send-8801.com
        prefer-ip-address: true #访问的路径变为IP地址
    
  • 主启动类

    @EnableEurekaClient
    @SpringBootApplication
    public class StreamMQMain8801 {
    
        public static void main(String[] args) {
            SpringApplication.run(StreamMQMain8801.class,args);
        }
    }
    
  • 业务类

    1、接口

    /*
     *@author:C1q
     */
    public interface IMessageProvider {
        public String send();
    }
    
    

    2、实现类

    @EnableBinding(Source.class)
    public class IMessageProviderImpl implements IMessageProvider {
    
        @Resource
        private MessageChannel output; //消息发送管道
    
        @Override
        public String send() {
            String serial = UUID.randomUUID().toString();
            output.send(MessageBuilder.withPayload(serial).build());
            System.out.println("*****serial: " +serial);
            return null;
        }
    
    }
    
  • controller

    @RestController
    public class SendMessageController {
        @Resource
        private IMessageProvider messageProvider;
    
        @GetMapping("/sendMessage")
        public String sendMessage(){
            return messageProvider.send();
        }
    }
    
  • 测试

在这里插入图片描述

在这里插入图片描述

4、消息驱动之消费者

  • 新建module:cloud-stream-rabbitmq-provider8801

  • POM

     <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--基础配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
  • yml

    server:
      port: 8802
    
    spring:
      application:
        name: cloud-stream-consumer
      cloud:
          stream:
            binders: # 在此处配置要绑定的rabbitmq的服务信息;
              defaultRabbit: # 表示定义的名称,用于于binding整合
                type: rabbit # 消息组件类型
                environment: # 设置rabbitmq的相关的环境配置
                  spring:
                    rabbitmq:
                      host: localhost
                      port: 5672
                      username: guest
                      password: guest
            bindings: # 服务的整合处理
              input: # 这个名字是一个通道的名称
                destination: studyExchange # 表示要使用的Exchange名称定义
                content-type: application/json # 设置消息类型,本次为对象json,如果是文本则设置“text/plain”
                binder: defaultRabbit # 设置要绑定的消息服务的具体设置
    
    
    
    eureka:
      client: # 客户端进行Eureka注册的配置
        service-url:
          defaultZone: http://localhost:7001/eureka
      instance:
        lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)
        lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)
        instance-id: receive-8802.com  # 在信息列表时显示主机名称
        prefer-ip-address: true     # 访问的路径变为IP地址
    
  • 主启动类

    @SpringBootApplication
    public class StreamMQMain8802
    {
        public static void main(String[] args)
        {
            SpringApplication.run(StreamMQMain8802.class,args);
        }
    }
    
  • controller

    @Component
    @EnableBinding(Sink.class)
    public class ReceiveMessageListenerController
    {
        @Value("${server.port}")
        private String serverPort;
    
    
        @StreamListener(Sink.INPUT)
        public void input(Message<String> message)
        {
            System.out.println("消费者1号,----->接受到的消息: "+message.getPayload()+"\t  port: "+serverPort);
        }
    }
    
  • 测试

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5、分组消费与持久化

依照8802创建另外的消费着8803

在这里插入图片描述

在这里插入图片描述

  • 重复消费的问题

    默认分配到不同的组内

    Queue studyExchange.anonymous.ylrmAknBR_-k7fRGw14iBg

    Queue studyExchange.anonymous.FDLWrJWsRUG9479vFRO8Ug

    微服务应用放置于同一个group中,就能够保证消息只会被其中一个应用消费一次。
    不同的组是可以消费的,同一个组内会发生竞争关系,只有其中 一个可以消费。

  • 自定义分组

1、分为不同的组配置yml

group: 名字

 bindings: # 服务的整合处理
          input: # 这个名字是一个通道的名称
            destination: studyExchange # 表示要使用的Exchange名称定义
            content-type: application/json # 设置消息类型,本次为对象json,如果是文本则设置“text/plain”
            binder: defaultRabbit # 设置要绑定的消息服务的具体设置
            group: atguiguB
  input: # 这个名字是一个通道的名称
            destination: studyExchange # 表示要使用的Exchange名称定义
            content-type: application/json # 设置消息类型,本次为对象json,如果是文本则设置“text/plain”
            binder: defaultRabbit # 设置要绑定的消息服务的具体设置
            group: atguiguA

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMCW08kI-1594442650744)(SpringCloud.assets/1587561017103.png)]

2、相同的组配置yml

group: 名字 多个配置名字相同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
微服务应用放置于同一个group中,就能够保证消息只会被其中一个应用消费一次。不同的组是可以消费的,同一个组内会发生竞争关系,只有其中一个可以消费。

  • 持久化

    拥有group分组的可以持久化数据,重启可以继续消费没有消费的内容

    在这里插入图片描述

2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制) 本文详细介绍了Ribo-seq数据的质控分析流程,重点讲解了使用fastp进行原始数据质控的关键步骤和参数设置。作者通过Snakemake自动化流程示例,展示了如何去除接头序列、过滤低质量reads、生成质控报告等操作。文章强调高质量的Ribo-seq数据对转录后调控和翻译动态研究的重要性,并提供了兼顾数据质量和下游分析需求的参数配置建议。该流程有助于研究人员规范高效地完成Ribo-seq数据质控,为后续分析提供可靠数据基础。 阅读详情

相关推荐

SpringBoot+Vue实现图片上传

SpringBoot+Vue实现图片上传

叶♥璃 2730

springcloud stream 简单示例

新建module 端口8801 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--监控--

Mqye_1的博客 554

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 259

ElasticSearch最新搞定版

ElasticSearch概述 Lucene 和 ElasticSearch 关系: ElasticSearch 是基于 Lucene 做了一些封装和增强 Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检 索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用 Java开发并使用Lucene作为其核心...

python_start的博客 926

COMSOL实现裂缝性储层油水两相流模拟的关键技术

多孔介质中的流体流动模拟是油气藏开发的核心技术,其基本原理基于达西定律和质量守恒方程。在裂缝性储层中,离散裂缝网络与基质系统的耦合流动带来了特殊的数值挑战。通过COMSOL Multiphysics平台实现的多物理场耦合技术,可以精确模拟油水两相在复杂裂缝系统中的渗流行为。该技术采用Level Set方法表征裂缝几何形态,结合自适应网格生成技术解决狭窄裂缝的网格剖分难题,并创新性地引入Bang-Larsen毛管压力滞后模型,显著提高了采收率预测精度。这些方法在致密油藏开发、水驱优化等工程实践中具有重要应用价

weixin_34005090的博客 229

【大唐杯学习超快速入门】5G技术原理仿真教学——5G网络开通调测与车联网

自用笔记,比较乱。

qq_41224270的博客 1万+

微服务SpringCloud开弓之SpringCloud Alibaba Sentinel实现熔断与限流「十四」

文章目录SpringCloud Alibaba Sentinel实现熔断与限流1、Sentinel2、安装Sentinel控制台3、初始化演示工程4、流控规则5、降级规则6、热点key限流1、基本介绍2、参数例外项7、系统规则8、@SentinelResource1、按资源名称限流+后续处理2、按照Url地址限流+后续处理3、客户自定义限流处理逻辑4、更多注解属性说明9、服务熔断功能Ribbon系列Feign系列熔断框架比较10、规则持久化 SpringCloud Alibaba Sentinel实现熔断与

python_start的博客 869

项目安全等保测评加固手册

安全等级测评的目的是通过对目标系统在安全技术及管理方面的测评,对目标系统的安全技术状态及安全管理状况做出初步判断,给出目标系统在安全技术及安全管理方面与其相应安全等级保护要求之间的差距。测评结论作为委托方进一步完善系统安全策略及安全技术防护措施依据!!

菜鸟运维升级之路 2416

微服务SpringCloud开弓之SpringCloud Alibaba Seata处理分布式事务「十五」

文章目录SpringCloud Alibaba Seata处理分布式事务1、分布式事务问题2、Seata-Server安装3、订单/库存/账户业务数据库准备4、订单/库存/账户业务微服务准备5、Seata之原理简介再次回顾 SpringCloud Alibaba Seata处理分布式事务 1、分布式事务问题 分布式前 单机单库没这个问题 从1:1 -> 1:N -> N: N 分布式之后 一句话 一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题

python_start的博客 498

linux内核学习(八)---摄像头框架移植(上)

本章来开始进行摄像头的移植,同时回顾一下V4L2的整个框架

文艺小少年的博客 112

Uni-App 使用极光推送完整指南

Uni-App集成极光推送的完整指南:从注册极光账号到代码实现。包含前期准备(获取AppKey、注册厂商账号)、Uni-App配置(插件导入、初始化代码)、高级功能(角标设置、Java后台接口)及常见问题排查。详细说明了推送监听、registrationID获取、消息接收处理等核心功能实现步骤,并提供两种推送接口示例(按平台推送和统一推送)。适合需要在Uni-App项目中实现推送功能的开发者参考。

cyj0919的博客 424

微服务Springcloud开弓之框架搭建《一》

微服务体系 服务注册与发现 配置中心管理 服务调用 服务网关 服务熔断 服务监控 负载均衡 全链路跟踪 服务降级 自动化构建部署 服务消息队列 服务定时任务调度操作 对微服务的实现 Eureka : 服务注册与发现 Netelix Ribbon: 服务负载与调用 Netelix Feign: 服务负载与调用 Hystrix : 服务熔断与降级 Netelix Zuul : 服...

python_start的博客 481

uniapp [安卓苹果App端] - 在“安卓app/苹果app“平台端打包编译后,微信授权登录报错 login:fail [:-1]未能完成操作。(PGWXAPI错误-1。)错误码code:-10

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,微信授权登录,uniAppAPP端微信登录报错,出现微信确认登录界面后点击登录报错,BundleID,应用ID,微信登录,app微信一键登录,微信登录绑定点确定就出错,AppSecrect,login:fail[:-1]未能完成操作。(PGWXAPI错误-1。),"errCode":-100,"code":-100,在uniappmanifest.json配置了AppSecrect还是报错无

🏆 前端领域优质创作者 3762

负载均衡与网络底层刨析

网络 OS网络七层: 应用层,表示层,会话层,传输控制层,网络层,链路层,物理层 TCP/IP四层: 应用层,传输层,网络层,网络接口层 图片: https://uploader.shimo.im/f/35T3sSMRq81B5FGL.png 图片: https://uploader.shimo.im/f/gsLwOx0aG1QUfK2l.png 交换机:物理层进行网络通信 路由器:网络层,链路层,物理层 网络通信连接 https://baijiahao.baidu.com/s?id=16542257446

python_start的博客 475

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

微服务SpringCloud开弓之Consul服务注册与发现《五》

目录1、 Consul简介2、安装并运行Consul3、服务提供者4、服务消费者5、三个注册中心异同点 1、 Consul简介 是什么 https://www.consul.io/intro/index.html 能干嘛 服务发现 提供HTTP/DN 健康检测 支持多种方式,HTTP、TCP、Docker、shell脚本定制化 KV存储 Key、Value的存储方式 ...

python_start的博客 471

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

微服务SpringCloud开弓之Eureka服务注册与发现《三》

目录1、Eureka基础知识2、单机Eureka构建步骤3、集群Eureka构建步骤4、支付服务提供者8001集群环境搭建5、actuator微服务信息完善6、eureka自我保护 1、Eureka基础知识 什么是服务治理 什么是服务注册 Eureka两组件 2、单机Eureka构建步骤 IDEA生成EurekaServer端服务注册中心 建Module cloud-e...

python_start的博客 414

微服务SpringCloud开弓之 Rest微服务工程搭建《二》

Rest微服务工程搭建 这里写目录标题Rest微服务工程搭建构建步骤1. Cloud-provider-payment8001 微服务提供者Module模块2.热部署3.cloud-consumer-order80 微服务消费者订单Module模块4. 工程重构 构建步骤 1. Cloud-provider-payment8001 微服务提供者Module模块 建module 改POM ...

python_start的博客 403

微服务SpringCloud开弓之SpringCloud Alibaba Nacos服务注册和配置中心「十三」

文章目录SpringCloud Alibaba Nacos服务注册和配置中心1、Nacos简介2、Nacos作为服务注册中心演示3、服务注册中心对比4、Nacos作为配置中心--基础配置5、Nacos作为配置中心--分类配置6、Nacos集群和持久化配置(重要)7、Linux版nacos+mysql生产环境配置 SpringCloud Alibaba Nacos服务注册和配置中心 1、Nacos简介 地址 官方文档 为什么叫Nacos 前四个字母分别为naming和Configuration的前两个字母

python_start的博客 366

微服务SpringCloud开弓之Ribbon负载均衡调用《六》

目录1、概述2、Ribbon负载均衡演示3、Ribbon核心组件IRule4、Ribbon负载均衡算法 1、概述 是什么 官网资料 ​ 地址 Ribbon目前也进入维护模式 用途 LB(负载均衡) - 集中式LB - 进程内LB 2、Ribbon负载均衡演示 架构说明 总结: Ribbon其实就是一个软负载均衡的客户端组件, 他可以和其他所需请...

python_start的博客 304

微服务SpringCloud开弓之Zookeeper服务注册与发现《四》

目录SpringCloud整合Zookeeper替代Eureka1、注册中心Zookeeper2、服务提供者3、服务消费者 Eureka停止更新了 地址 SpringCloud整合Zookeeper替代Eureka 1、注册中心Zookeeper 关闭Linux服务器防火墙后启动Zookeeper服务器 //临时关闭 service iptables stop //禁止开机启动 chkconf...

python_start的博客 269

微服务SpringCloud开弓之SpringCloud config分布式配置中心「十」

文章目录1、概述2、Config服务端配置与测试3、Config客户端配置与测试4、Config客户端手动动态刷新 1、概述 地址 分布式系统面临的问题–配置问题 是什么 ​ Springcloud config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供一个中心化的外部配置。 能干嘛 ​ 1、集中管理配置文件 ​ 2、不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release

python_start的博客 263

微服务SpringCloud开弓之SpringCloud Bus消息总线「十一」

文章目录SpringCloud Bus消息总线1、针对问题:2、概述3、RabbitMQ环境配置4、SpringCloud Bus动态刷新全局广播5、Springcloud Bus动态刷新定点通知 SpringCloud Bus消息总线 1、针对问题: 每次微服务都要执行一次post请求,手动刷新 可否广播?一次通知,处处生效 我们想大范围的自动刷新 2、概述 1、分布式自动刷新配置功能 2、SpringCloud Bus配合Springcloud Config使用可以实现配置的动态刷新 是什么 s

python_start的博客 259

getProperty读出流的解决

解决 properties.getProperty() 字符串中文乱码的情况 错误实例 InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); Properties properties = new Properties(); properties.load(...

python_start的博客 241

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 215

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 325

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 140

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 112
上一篇: 微服务SpringCloud开弓之SpringCloud Bus消息总线「十一」
下一篇: 微服务SpringCloud开弓之SpringCloud Alibaba Nacos服务注册和配置中心「十三」
漂吧
博客等级 码龄8年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值