Java中关于抛出异常的几个关键点
前言编写代码过程中,使用事务回滚很常见,但关于事务回滚有几个很基础的问题
事务错误示范1234567@Transactionalpublic String checkDemo(String id) throws Exception{ if (id == null){ throw new Exception("ID不能为空"); } return "success";}
上述代码中,直接抛出了Exception异常,这种事务是无法控制住的,无法进行回滚。
进入@Transactional注解,其中有一个rollbackFor()回滚,官方文档中规定了只会对运行时异常和错误进行回滚。
如果仅仅抛出一个Exception受检异常,是无法进行回滚的。
正确示范想实现事务回滚,必须要符合官方文档中规定的方式
例如:在注解中声明一下回滚异常类型,或抛出RuntimeException异常
方式一:注解规定类型代码中虽然使用了Exception异常,但是在注解中声明了方法中需要回滚的异常类型,所以下 ...
一文理解NAS协议
前言NAS是网络附加存储(Network-Attached Storage)的缩写,是一种将硬盘存储设备连接到计算机网络上的设备。它的主要意义在于提供了一种高效、安全、可靠、低成本的数据存储和共享方案。
背景上来看,随着互联网技术的快速发展和普及,人们对数据存储和共享的需求日益增长。传统的存储方式,如硬盘、U盘等,存在容量小、易丢失、不便于共享等问题。而NAS作为新兴的存储方式,通过网络连接,可以大幅度提高存储容量、安全性和使用便利性,逐渐成为企业和家庭用户的首选存储方案。
除此之外,NAS还具有多种功能,如文件共享、数据备份、流媒体服务等,可以满足不同用户的需求,并且使用起来非常简单,只需要在局域网内接通电源和网络即可。
什么是NAS协议NAS (Network Attached Storage) 协议是一种用于网络存储设备的通讯协议,它允许用户通过局域网或互联网连接到存储设备并访问和管理其中的数据。NAS 协议有多种实现方式,包括 NFS、CIFS/SMB、FTP、HTTP 和 iSCSI 等。它是一种基于文件级别的存储方案,可以提供高效的数据共享和备份,并支持多用户同时访问。 ...
SpringBoot中如何使用Filter、Interceptor和Aop拦截REST服务
前言在SpringBoot中使用REST服务时,往往需要对Controller层的请求进行拦截或者获取请求数据和返回数据,就需要过滤器、拦截器或者切片。
执行请求的处理顺序:过滤器(Filter)> 拦截器(Interceptor)> 切片(Aspect)
过滤器(Filter)过滤器(Filter):对HttpServletRequest处理,也可以对HttpServletResponse进行后处理,无法获取请求方法的信息。
方式一:注解方式项目启动类,需要加上 @ServletComponentScan 注解TestFilter 使用注解的方式过滤,在class上面加上 @Component
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpSer ...
Linux下安装NodeJS
前言Nodejs,一个能在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境
通俗来讲就是,Nodejs提供了一个可以让javascript代码运行在服务端的环境。
下载安装包官网地址:Download | Node.js
指定其他版本下载【Download Dist | Node.js】
我这里下载的是:【node-v20.11.1-linux-x64.tar.xz】
解压安装12345# 创建node文件夹mkdir /usr/local/node# 解压node安装包tar -xvf node-v20.11.1-linux-x64.tar.xz -C /usr/local/node
配置软连接直接允许全局使用node、npm命令
12ln -s /usr/local/node/node-v20.11.1-linux-x64/bin/node /usr/local/bin/ln -s /usr/local/node/node-v20.11.1-linux-x64/bin/npm /usr/local/bin/
查看ndoe版本123npm - ...
你真的了解RabbitMQ消息队列吗
五种常见消费模型总的来说,不同的消息队列模型适用于不同的场景和需求。简单队列模型适合于点对点通信;工作队列模型适用于任务分配和负载均衡;发布/订阅模型适用于消息广播和解耦;路由模型适用于动态消息路由和选择性投递;主题模型适用于灵活的消息路由和过滤。根据具体的业务需求和系统架构,合理选择适用的消息队列模型可以提高系统的可扩展性、可靠性和性能。
简单队列模型简单队列模型(Simple Queue Model)是最基础的RabbitMQ模型。它包括单个生产者和单个消费者。生产者将消息发送到一个队列中,然后消费者从队列中读取消息并处理。这种模式不适用于多个消费者或消息广播,因为一旦消息被一个消费者接收,它就会从队列中删除。
适用场景优点缺点代码示例
单生产者和单消费者之间的点对点通信。
系统中只有一个进程或线程可以处理消息。例如,一个后端服务向另一个后端服务发送消息,或者一个客户端将任务发送给服务器
实现简单,易于理解和部署
可以提供一些基本的可靠性保证,例如消息确认和持久化
不支持并发消费
不支持多个消费者共同消费一个队列
123456789101112131415161718192 ...
SpringBoot中如何使用RabbitMQ消息队列
前言
该文章,列举三种调用RabbitMQ消息队列的方式,分别是:【Java原生代码调用】【Spring Boot starter amqp】【Spring Cloud Stream调用】
使用RabbitMQ首先确保已经启用RabbitMQ消息队列。
如果没有启用或还没安装RabbitMQ,可以先了解【RabbitMQ在Linux下载安装及部署】
记得把防火墙的端口【5672、15672】放开
JAVA原生代码调用
创建了一个ConnectionFactory来指定与RabbitMQ服务器的连接信息
通过factory.newConnection()获取一个连接对象。
在连接上创建一个通道(channel)并声明一个队列。
向队列中发布消息/接收消息
关闭通道和连接(生产者)
引入Maven依赖123456789101112<!-- amqp clien --><dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</ar ...
Linux中遇到的一些报错问题
Nginx篇make: * No rule to make target…
展开查看
make: *** No rule to make target “build”, needed by “default”. Stop.make:***没有规则可制作目标“build”,由“default”需求。停止。make:*** 没有规则可制作目标“instal1”。停止原因:缺少依赖,需要先更新下yum,再下载所需要的依赖解决方案如下:1234# 更新yumyum update# 下载依赖yum -y install gcc gcc-c++ automake autoconf libtool openssl openssl-devel gd gd-devel pcre pcre-devel make
更换yum源地址
展开查看
`Invalid configuration value: failovermethod= ...
消息队列(MQ)究竟是什么
MQ是什么?MQ 通常指的是消息队列(Message Queuing)
它是一种用于在应用程序之间传递消息的技术,可以实现异步通信,允许不同组件之间解耦合,提高系统的可伸缩性和可靠性。
在消息队列系统中,消息由生产者发送并排队,消费者按照一定的顺序从队列中读取并处理这些消息。
这种设计模式使得发布者和订阅者之间不需要相互了解,各自独立工作,提高了系统的灵活性和扩展性。
MQ的组成是什么?消息生产者、消息消费者、消息队列、消息通道、消息代理、管理和监控工具
详情介绍
消息生产者(Producer)消息生产者是向消息队列发送消息的组件或应用程序。它们负责创建消息并将其发送到队列中。消息消费者(Consumer)消息消费者是从消息队列中接收并处理消息的组件或应用程序。它们订阅队列并等待接收消息,一旦有消息可用,消费者会将其取出并进行处理。消息队列(Message Queue)消息队列是消息在内存或持久化存储中的缓冲区或容器。它们接收来自消息生产者的消息,并将其保存在队列中,以等待消息消费者处理。消息通道(Message C ...
RabbitMQ在Linux下载安装及部署
RabbitMQ介绍RabbitMQ 是一个开源的消息队列(MQ)
最初由Rabbit Technologies开发,并使用Erlang编程语言编写。
它实现了高级消息队列协议(AMQP),是一个功能丰富、灵活可靠的消息中间件。
安装环境PS:RabbitMQ支持的版本及环境,新旧版本是有差异的,先检查一下系统环境是否支持安装安装的版本
文章的安装环境:
系统版本:Linux CentOS Stream 8 64位
内核:4.18.0-348.7.1.el8_5.x86_64
Erlang版本:erlang-26.2.2-1.el8.x86_64.rpm
RabbitMQ版本:rabbitmq-server-3.13.0-1.el8.noarch.rpm
1234# 查看Linux系统版本lsb_release -a# 查看Linux内核版本uname -r
Erlang的安装下载下载ErlangRabbitMQ开发语言是Erlang,安装RabbitMQ需要Erlang环境,所以需要先安装Erlang【RabbitMQ和Erlang版本对照表】【Erlang 介绍地址】 ...
SpringBoot中如何使用基于Swagger的Knife4j接口文档
前言Knife4j是一个,基于Swagger,集Swagger2和OpenAPI3为一体的增强解决方案
基于SpringFox2.x版本提供Swagger2规范的增强扩展
基于Springdoc-openapi项目提供OAS3规范的增强扩展
适配兼容SpringBoot 2.2、2.3、2.4、2.5、2.6、2.7、3.0
兼容OpenAPI 2.0/3.0
【官方使用手册API】
引入依赖123456<!-- knife4j --><dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>4.4.0</version></dependency>
创建Swagger配置类12345678910111213141516171819202122232425262728293 ...