- 博客(26)
- 收藏
- 关注
原创 RabbitMq:如何防止mq重复消费消息?
为了保证消息不重复消费,生产者可以给每条消息配置一个全局唯一id,在消费端可以将生产者发送的mq消息的id存在数据库或者redis中,每次消费之前检查数据库中。将id存在list中,并且设置过期时间。(需要注意的是如果redis过期时间小于服务器宕机时间,而且没有持久化消息的情况就会导致消息丢失)将id存入string中,以queueName为key,id为value。缺点:一但数据量大的时候,占用redis内存,需要清理数据。是否存在消息id,如果不存在则直接消费,否则跳过这条消息。
2024-08-30 15:56:32
317
原创 RabbitMQ:如何确保消息不丢失?
1,生产者开启mq事务(channel.txSelect)。如果发送不成功则会报错,此时可以通过事务来回滚(channel.txRollback),成功收到消息则事务提交(channel.txCommit)。因为生产者事务是同步的机制,当事务提交后会阻塞在那儿,当吞吐量上来后这种方式会影响性能。2,开启生产者确认机制。使用confirm机制,confirm是异步形式。生产者发送消息时会给消息添加一个ia,当生产者成功发送消息到mq时,mq会返回一个ack给生产者,生产者收到ack说明。
2024-08-30 15:53:21
1131
原创 关于AOP使用导致Controller里面的service报NPE错误
总结来说,如果你想要在Spring中使用AOP来增强Controller中的方法,你应该确保这些方法是public的,这样Spring AOP才能够正确地应用增强逻辑。如果你需要在Controller内部使用Service的Bean,并且希望这些Service方法能够被AOP增强,那么你应该将Service中的方法也设置为public。
2024-08-23 16:56:56
270
原创 策略模式+工厂模式替代if-else实现会员折扣价转换
无意中了解到策略模式可以替代繁杂而又臃肿的if-else逻辑判断。所以就研究了一下。策略模式是一个简单容易理解的设计模式之一。首先。创建一个策略接口,以便于其他策略实现类继承该接口。我们这里以会员等级来获取不同折扣为例:public interface Strange { double getDiscount();}然后,实现各种不同的策略,我这里分为三种:1级会员原价;2级会员8折;3级会员6折;public class Vip1Price implements Strang
2022-04-02 11:26:11
235
原创 Jsoup文件下载
package com.swb.utils;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import org.jsoup.Connection;import org.jsoup.Connection.Method;import org.jsoup.Jsoup;public class JsoupGetF
2022-03-08 17:37:45
1485
原创 Java返回给前端一棵树形?那就用stream吧
之前写项目,前端要求返回一棵树形,刚开始我还不知道,要递归遍历?这是肯定的,但是有些树形不知道它的深度。所以单纯的查询应该是不行。了解到可用Stream()方法,发现真的很好用,简直不要太爽。先上实体类,这是一张地区表。我用的是MyBatis-Plus。地区表获取:链接:https://pan.baidu.com/s/1Ia8m9FjjYoyRw3qt574Wbw提取码:zhl1import com.baomidou.mybatisplus.annotation.TableField;...
2022-02-15 10:45:17
451
2
原创 linux安装jdk
linux安装jdk1,下载安装包点击进入官网下载2,通过Xshell上传到/usr/local目录下解压: tar -zxvf jdk-8u321-linux-x64.tar.gz然后删除压缩包; rm -f jdk-8u321-linux-x64.tar.gz随后配置环境变量,编辑/etc/profile文件:vim /etc/profile在最后添加如下内容:export JAVA_HOME=/usr/local/jdk1.8.0_321 #jdk安装目录export JRE_H
2022-02-12 16:40:05
1003
原创 java日期类型转换
经常使用到的一个工具类。将Date类型或LocalDateTime类型转换成yyyy-MM-dd等格式。import java.text.SimpleDateFormat;import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZonedDateTime;import java.time.format.DateTimeFormatter;import jav
2022-01-06 15:23:17
935
原创 关于poi操作word,word转换pdf预览,这边文章就够了
最近公司一个项目中需要导出一个简历word版,对于实习生的我开始是无从下手的,后来通过搜索发现可以使用poi来操作。话不多说,先引入依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version>
2022-01-04 15:19:06
1625
原创 SpringMVC 工作流程
SpringMVC 工作流程流程图话不多说,先上流程图工作流程1,先由前端用户发起一个请求,请求到前端控制器DispatcherServlet2,前端控制器收到请求会向HandlerMapping(处理器映射器)根据配置或注解获取Handler3,HandlerMapping找到Handler之后会返回给DispatcherServlet4,紧跟着DispatcherServlet会请求处理器适配器(HandlerAdaptor)来执行Handler5,HandlerAdaptor处理器适
2021-11-25 16:21:12
176
原创 2021-11-09
String,StringBuilder和StringBUffer区别以及使用场景1.作用1.1 StringString是 Java 中很常用的类之一,同时,字符串是 Java 面试中最重要的话题之一。注意一个常见的错误,不要记错了。因为 String 是 final 修饰的,无法被继承。所以 String 不是 Java 的基本数据类型。字符串在 Java 中是不可变的,因此适合在多线程环境下使用。当我们使用双引号创建一个字符串时,如下,JVM 首先在字符串池中寻找具有相同值的字符串。 如
2021-11-09 19:01:35
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人