SpringBoot基础使用及对其他项目进行整合

目录

一、简介

1-讲述

2-特点

二、创建配置

1.创建

2.配置

3.代码生成

三、项目整合

每篇一获


一、简介

1-讲述

众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的框架,它就是Spring Boot。

SpringBoot是一个用于构建基于Spring框架的快速应用程序的开源框架。它简化了Spring应用程序的配置和部署过程,提供了一种快速构建生产级别的应用程序的方式。SpringBoot基于约定优于配置的原则,通过自动配置和起步依赖简化了Spring应用程序的开发过程。

2-特点

SpringBoot提供了一系列的特性,包括:

1. 自动配置:SpringBoot根据应用程序的依赖和配置自动配置应用程序的环境,大大减少了开发人员的配置工作。

2. 起步依赖:SpringBoot提供了一系列的起步依赖,可以快速地集成各种常用的框架和库,如Web开发、数据访问、安全等。

3. 嵌入式容器:SpringBoot集成了常用的嵌入式容器,如Tomcat、Jetty等,可以方便地将应用程序打包成可执行的JAR文件,直接运行。

4. Actuator:SpringBoot提供了Actuator模块,可以监控和管理应用程序的运行状态,包括健康状况、运行指标等。

5. 外部化配置:SpringBoot支持将应用程序的配置外部化,可以通过属性文件、环境变量等方式灵活配置应用程序。

  • 独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。

  • 内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

  • 提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。

  • 提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。

  • 自带应用监控

Spring Boot 可以对正在运行的项目提供监控。

  • 无代码生成和 xml 配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

总的来说,SpringBoot通过简化配置、提供起步依赖、集成嵌入式容器等特性,大大简化了Spring应用程序的开发和部署过程,使开发人员可以更加专注于业务逻辑的实现。因此,SpringBoot已经成为了构建Java应用程序的首选框架之一。

二、创建配置

需要将IDEA转换为中文,下载图中的插件即可,在重启IDEA。

1.创建

在我们的IDEA中创建SpringBoot项目,如图操作:

之后就是选择依赖,选择的依赖在创建项目是会自动配置好。

根据图中所示,选择5项,当然,如果还需要可以进行选择增加

以下是所有选择的依赖 : 

之后就是一个版本的选择,我这里选择的是如图 :

参考选择版本如图 : 

注意:创建完成之后,就直接修改maven设置,将maven引进项目中。 

 

2.配置

包和类不能乱改,只能在com.CloudJun.boot01(自己创建的项目包中)建子包,因为程序只加载Application.java所在包及其子包下的内容。

  • src/main/java:主程序入口 Application,可以通过直接运行该类来启动SpringBoot应用

  • src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等。由于我们应用了Web模块,因此产生了 static目录与templates目录,前者用于存放静态资源,如图片、CSS、JavaScript等;后者用于存放Web页面的模板文件。

  • src/test:单元测试目录,生成的 ApplicationTests 通过 JUnit4实现,可以直接用运行 SpringBoot应用的测试。

  • application.properties/application.yml:Ø 用于存放程序的各种依赖模块的配置信息,比如:服务端口,数据库连接配置等。

    application.properties,这个后缀的模块的配置,不推荐使用,所有我们需要将这个文件转换会application.yml后缀的。

    在插件中下载如图的插件 : 

    下载完成之后,选中项目中application.properties的文件,右键点击如图中的选项,将会自动换成.yml后缀的,并且格式也会自动修改为.yml后缀的格式

application.yml文件中的配置修改为以下 : 

#mybatis:
#    mapper-locations: classpath:mappers/*xml
#    type-aliases-package: org.example.boot01.mybatis.entity
#服务器运行的端口
server:port: 8080
spring:#数据源的配置datasource:url: jdbc:mysql://localhost:3306/bookshopusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
#mybatis配置
mybatis:# mapper.xml 所在位置mapper-locations: classpath*:mapper/*xml

在pom.xml文件中手动配置一个aop

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency> 

pom.xml 配置文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>boot01</artifactId><version>0.0.1-SNAPSHOT</version><name>boot01</name><description>boot01</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--        <dependency>-->
<!--            <groupId>org.mybatis.spring.boot</groupId>-->
<!--            <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--            <version>2.3.0</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.mysql</groupId>-->
<!--            <artifactId>mysql-connector-j</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.15</version></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><!-- 只负责定义依赖--><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.CloudJun.boot01.Boot01Application</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

数据库连接,在右侧会有一个数据库的增加连接,如图 :

3.代码生成

选中连接数据库中的数据表,右键点击

如图输入填写 :

如图选中

注意 : template选择中可以选择default-all,这个会生成增删改查的SQL及方法,这里只演示查询,我这里就选择了default-empty,这个不会生成增删改查的SQL及方法

再将对象打上两个注释

@AllArgsConstructor  @NoArgsConstructor

将实体中设置set/get方法

三、项目整合

增加分页依赖

 <!-- 分页插件的依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency>

pom.xml 配置

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>boot01</artifactId><version>0.0.1-SNAPSHOT</version><name>boot01</name><description>boot01</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- 分页插件的依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.15</version></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><!-- 只负责定义依赖--><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.CloudJun.boot01.Boot01Application</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

application.yml 文件

#mybatis:
#    mapper-locations: classpath:mappers/*xml
#    type-aliases-package: org.example.boot01.mybatis.entity
#服务器运行的端口
server:port: 8080
spring:#数据源的配置datasource:url: jdbc:mysql://localhost:3306/bookshopusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:# 初始化时建立物理连接的个数initial-size: 5# 最小连接池数量min-idle: 5# 最大连接池数量max-active: 20#配置获取连接等待超时的时间max-wait: 60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000# 一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 30000# 用来检测连接是否有效的 sql,要求是一个查询语句validation-query: SELECT 1 FROM DUAL# 建议配置为 true,不影响性能,并且保证安全性test-while-idle: true# 申请连接时执行 validationQuery 检测连接是否有效test-on-borrow: true# 归还连接时执行 validationQuery 检测连接是否有效test-on-return: false# 是否缓存 preparedStatement,即 PsCache# PSCache 对支持游标的数据库性能提升巨大,比如说 oracle,而 mysql 则建议关闭pool-prepared-statements: true# 要启用 PSCache,必须配置大于0max-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计filter:stat:merge-sql: trueslow-sql-millis: 5000# 基础监控配置web-stat-filter:enabled: trueurl-pattern: /*exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"session-stat-enable: truesession-stat-max-count: 100stat-view-servlet:enabled: trueurl-pattern: /druid/*reset-enable: truelogin-username: admin #设置监控页面的登录名和密码login-password: adminallow: 127.0.0.1 #deny: 192.168.1.100
#mybatis配置
mybatis:# mapper.xml 所在位置mapper-locations: classpath*:mapper/*xml#实体类所在位置type-aliases-package: com.CloudJun.boot01.domain
logging:level:com.CloudJun.boot01.mapper: debug
# 分页插件的配置
pagehelper:# 数据库方言helperDialect: mysql# 是否启用 reasonablereasonable: true# mapper是否支持方法参数supportMethodsArguments: true# 参数params: count=countSql

TBookMapper.xml 动态SQL的编写

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.CloudJun.boot01.mapper.TBookMapper"><resultMap id="BaseResultMap" type="com.CloudJun.boot01.domain.TBook"><id property="id" column="id" jdbcType="INTEGER"/><result property="bookname" column="bookname" jdbcType="VARCHAR"/><result property="price" column="price" jdbcType="FLOAT"/><result property="booktype" column="booktype" jdbcType="VARCHAR"/></resultMap><select id="bookList" resultType="com.CloudJun.boot01.domain.TBook">select * from t_book</select><sql id="Base_Column_List">id,bookname,price,booktype</sql>
</mapper>

TBookMapper  编写

package com.CloudJun.boot01.mapper;import com.CloudJun.boot01.domain.TBook;
import com.CloudJun.boot01.utils.PageBean;import java.util.List;/*** @Entity com.CloudJun.boot01.domain.TBook*/
public interface TBookMapper {List<TBook> bookList(PageBean pageBean);}

 BookService

package com.CloudJun.boot01.service;import com.CloudJun.boot01.domain.TBook;
import com.CloudJun.boot01.utils.PageBean;import java.util.List;/*** @author CloudJun* @create  2023-12-12 15:49*/
public interface BookService {List<TBook> bookList(PageBean pageBean);
}

BookServiceImpl

package com.CloudJun.boot01.service.Impl;import com.CloudJun.boot01.domain.TBook;
import com.CloudJun.boot01.mapper.TBookMapper;
import com.CloudJun.boot01.service.BookService;
import com.CloudJun.boot01.utils.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @author CloudJun* @create  2023-12-12 15:51*/
@Service
public class BookServiceImpl implements BookService {@Autowiredprivate TBookMapper  bookMapper;@Overridepublic List<TBook> bookList(PageBean pageBean) {return bookMapper.bookList(pageBean);}
}

 PageBean 分页工具类

package com.CloudJun.boot01.utils;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PageBean {private Integer page = 1;private Integer rows = 5;private Long total = 0L;private boolean open = true;public int start() {return (page - 1) * rows;}public int previous() {return Math.max(this.page - 1, 1);}public int next() {return Math.min(this.page + 1, maxPage());}public int maxPage() {return (int) Math.ceil(this.total.intValue() / (this.rows * 1.0));}}

BookController 

package com.CloudJun.boot01.controller;import com.CloudJun.boot01.service.BookService;
import com.CloudJun.boot01.utils.PageBean;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** @author CloudJun* @create  2023-12-12 15:16*/
@RestController
@RequestMapping("/book")
public class BookController {@Autowiredprivate BookService bookService;@RequestMapping("/list")public Map List(PageBean pageBean){Map map = new HashMap();PageHelper.startPage(pageBean.getPage(),pageBean.getRows());map.put("data",bookService.bookList(pageBean));map.put("code",200);return map;}}

在项目中找到Boot01Application启动类,这个是根据项目的命名来的并且拼接一个Application,如图操作进行启动:

访问路径 : localhost:8080/book/list
  (不带参数自动分页到第已页) 访问路径根据自己在BookController 中配置的

 访问路径 : localhost:8080/book/list?page=2
  (带参数会根据参数分页到第参数页)

每篇一获

基础学习可以带来以下收获:

1. 快速搭建项目:SpringBoot提供了快速搭建项目的能力,可以减少项目搭建的时间和精力,让开发者更专注于业务逻辑的实现。

2. 简化配置:SpringBoot通过自动配置和约定大于配置的原则,简化了项目的配置过程,减少了繁琐的配置代码,提高了开发效率。

3. 内嵌服务器:SpringBoot内置了Tomcat、Jetty等服务器,可以方便地将应用程序打包成可执行的JAR文件,简化了部署和运行的流程。

4. 微服务开发:SpringBoot与SpringCloud结合可以快速搭建微服务架构,实现服务注册、服务发现、负载均衡等功能,为微服务架构的开发提供了便利。

5. 生态丰富:SpringBoot拥有丰富的生态系统,包括各种插件、第三方库和开发工具,可以满足不同需求的开发。

总之,学习SpringBoot基础可以让开发者更快速、更高效地开发和部署应用程序,提高了开发效率和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

i春秋云镜之Initial

首先拿到目标IP&#xff1a;39.99.156.72 通过Fscan进行扫描发现存在Thinkphp RCE漏洞。 ./fscan_amd64 -h 39.99.156.72然后通过利用工具进行RCE。 我们进行getshell之后通过蚁剑进行连接。 反弹shell并转换成python 交互式shell。 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/b…

《儿童绘本》期刊杂志发表论文投稿

《儿童绘本》杂志是由国家新闻出版管理部门批准&#xff0c;由吉林省舆林报刊发展有限责任公司主管主办&#xff0c;国内外公开发行的全国优秀期刊。办刊宗旨&#xff1a;以“普及绘本知识、推动儿童阅读”为理念&#xff0c;带动家庭亲子阅读&#xff0c;推动阅读教育及图画书…

C语言刷题数组------数组交换

输入一个长度为 10的整数数组 X[10]&#xff0c;将里面的非正整数全部替换为 1&#xff0c;输出替换完成后的数组。 输入格式 输入包含 10个整数&#xff0c;每个整数占一行。输出格式 输出新数组中的所有元素&#xff0c;每个元素占一行。输出格式为 X[i] x&#xff0c;其中…

根文件系统(一):基础

本文主要探讨210根文件系统相关知识。 根文件系统 存储设备(flash等)是分块(扇区),访问存储设备是按块号 (扇区号)来访问,文件系统(软件)对存储设备扇区进行管理,将对扇区的访问变成对目录和文件名的访问 根文件系统init进程的应用程序和其他应用程序,提供根目…

多家高校设立“鸿蒙班”;ChatGPT 成为 Nature 年度十大人物丨 RTE 开发者日报 Vol.107

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

FPGA巩固基础:秒表的设计

设计要求&#xff1a; 6位8段数码管&#xff0c;低三位显示毫秒计数&#xff0c;最高位显示分钟&#xff0c;其余两位显示秒计数。 开始案件与暂停按键&#xff0c;复位按键直接全部归零。 扩展部分&#xff1a;每计满一次&#xff0c;led移位一次。 框图设计&#xff1a; …

linux 应用开发笔记---【信号:基础】

1.基本概念 信号是发生事件时对进程的通知机制&#xff0c;也可以称为软件中断 信号的目的是用来通信的 1.硬件发生异常&#xff0c;将错误信息通知给内核&#xff0c;然后内核将相关的信号给相关的进程 2.在终端输入特殊字符产生特殊信号 3.进程调用kill()将任意信号发送…

解决nuxt3环境中css样式失效的问题

现象: 底部播放器进度条拖动按钮没有了&#xff01; 然后通过chrome开发工具检查html元素的结构&#xff1a; 发现progressbar这个元素是存在的&#xff0c;但是为什么没有显示呢&#xff0c;然后回到代码中&#xff1a; 发现原来是组件的名字写错了&#xff0c;多写了一个字母…

Leetcode 47 全排列 II

题意理解&#xff1a; 首先理解全排列是什么&#xff1f;全排列&#xff1a;使用集合中所有元素按照不同元素进行排列&#xff0c;将所有的排列结果的集合称为全排列。 这里的全排列难度升级了&#xff0c;问题在于集合中的元素是可以重复的。 问题&#xff1a;相同的元素会导致…

vivado约束方法5

打开向导时可用的报告功能 当定时约束向导打开时&#xff0c;它会阻止Vivado IDE中的大多数操作包括使用Tcl控制台或运行时序分析&#xff0c;以避免数据库差异。向导窗口始终位于其他Vivado IDE窗口的前面。如果你需要访问Vivado IDE菜单或窗口&#xff0c;必须将向导窗口移动…

推荐一个界面设计软件aardio,配合python三分钟制作一个小软件。【批量doc文件转docx文件】

文章目录 前言一、aardio软件代码二、python代码总结 前言 aardio这个软件不多说&#xff0c;好用方便。 一、aardio软件代码 import win.ui; /*DSG{{*/ mainForm win.form(text"批量doc文件转docx文件";right623;bottom171) mainForm.add( button{cls"butto…

DataFunSummit:2023年数据科学在线峰会-核心PPT资料下载

一、峰会简介 数据会说谎&#xff1f;如何正确的挖掘并使用数据&#xff1f;前沿的科学实验如何做&#xff1f;实验又是如何欺骗你的&#xff1f;数据中台如何发挥功效&#xff1f;用户增长有捷径吗&#xff1f;数据科学的最佳实践有哪些&#xff1f; 本次峰会共包含了&#…

人工智能与数据分析:新时代的趋势和机会

目录 写在开头1. 融合AI和数据分析的趋势1.1 趋势变化1.2 数据驱动目标转换 2 对数据分析行业的影响2.1 技能需求2.2 工作流程和角色的变化2.3 创新和业务驱动的数据分析 3.场景变化3.1 场景1&#xff1a;智能决策支持系统3.1.1 智能决策支持系统的架构设计3.1.2 Python代码演示…

RocketMQ —消费重试

消费者出现异常&#xff0c;消费某条消息失败时&#xff0c; Apache RocketMQ 会根据消费重试策略重新投递该消息进行故障恢复。本文介绍消费重试机制的原理、版本兼容性和使用建议。 一、应用场景​ Apache RocketMQ 的消费重试主要解决的是业务处理逻辑失败导致的消费完整性…

DICOM 文件中,VR,VL,SQ,图像二进制的几个注意点

DICOM 文件的结构&#xff0c;在网上有很多的学习资料&#xff0c;这里只介绍些容易混淆的概念&#xff0c;作为回看笔记。 1. 传输语法 每个传输语法&#xff0c;起都是表达的三个概念&#xff1a;大小端、显隐式、压缩算法 DICOM Implicit VR Little Endian: 1.2.840.1000…

解决VSCode打开终端Terminal闪退的问题

一、背景 在新电脑上使用了VSCode&#xff0c;但是一打开Terminal&#xff0c;Terminal马上就消失了&#xff0c;在网上找了很久&#xff0c;都没有找到对应的分析 二、解决思路 首先&#xff0c;是从这个文档中找到了灵感&#xff0c;这个文档里面汇集了大部分的问题&#…

孩子都能学会的FPGA:第三十二课——用FPGA实现一个通用的SPI主机发送模块

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)

一、目的 对于Flume的复制和多路复用拓扑结构&#xff0c;进行一个小的开发测试 二、复制和多路复用拓扑结构 &#xff08;一&#xff09;结构含义 Flume 支持将事件流向一个或者多个目的地。 &#xff08;二&#xff09;结构特征 这种模式可以将相同数据复制到多个channe…

微信生态下的私域流量载体有哪些?

私域流量的本质就是&#xff1a;降低我的获客成本&#xff0c;提高我产品服务的复购率&#xff0c;增加我和用户之间的粘性&#xff0c;挖掘用户的终身价值。 私域流量一般我们特指微信体系的个人号、公众号、社群和小程序&#xff0c;现在朋友圈和视频号也成为了打造微信私域…