SpringBoot

一、什么是RabbitMQ的预取值?在使用RabbitMQ的消费者确认机制(ACK)时,RabbitMQ会按照一定策略分配消息给消费者。预取值(prefetch)的作用就是:控制消费者在未确认(unacked)消息的数量上限。达到上限之前,RabbitMQ会继续给该消费者分发消息;达到上限后,不再推送新消息。简单说:prefetch决定了“消费者最多能同时处理多少条消息”。二、为什么需要设置prefetch?如果不设置prefetch或设置为默认值0(无限),RabbitMQ会不断推消息给消费者——只要它“空着”。这会带来两个问题:1.单一消费者被塞满某个消费者可能瞬间积压几十几百条消息,压力...
一、为什么要关注“空值”问题?在Java开发中,**NullPointerException(空指针异常)**是最常见也最头疼的异常之一。很多时候,我们写的逻辑本身没问题,但因为某个变量意外为null,就让整个程序崩溃。正所谓:“空指针一时爽,调试火葬场。”因此,如何“优雅地处理空值”,不仅是写出健壮代码的关键,也体现了开发者的编程素养。二、传统做法:繁琐的空值判断最常见的写法大概是这样👇if(user!=null){if(user.getAddress()!=null){Stringcity=user.getAddress().getCit...
一、为什么要限制容器内存?在使用Docker部署服务时,如果不加限制,某个容器可能因为内存泄漏或负载过高,导致主机内存被耗尽,拖垮其他容器甚至整个系统。因此,在生产环境中,限制容器内存使用量(MemoryLimit)是一项关键的资源控制措施。二、Docker中的内存限制参数Docker基于Linux的cgroups(控制组)机制实现资源隔离。和内存相关的主要参数如下:参数说明--memory或-m限制容器最大可使用的物理内存--memory-swap限制容器可使用的总内存(物理内存+swap)--oom-kill-disable是否禁用OOMKiller(不建议在生产中关闭)三、基础用法示例1...
一、前言在使用RabbitMQ构建消息队列系统时,很多人都知道它有“轮询分发(Round-RobinDispatching)”机制。也就是说:如果有多个消费者同时订阅同一个队列,RabbitMQ会尽量让每个消费者轮流接收相同数量的消息。听起来很“公平”,但实际运行中你可能会发现——有的消费者几乎“忙不过来”,而另一些消费者却“闲得发慌”。这,就是所谓的不公平分发(UnfairDispatching)现象。二、为什么会出现“不公平分发”?RabbitMQ默认是按轮询(round-robin)方式推送消息的,并不会实时了解每个消费者的“处理能力”或“忙碌程度”。举个例子:有两个消费者:Consum...
一、问题背景在使用MyBatis-Plus进行更新操作时,我们常常会写出如下代码:Useruser=newUser();user.setId(1L);user.setEmail(null);userService.updateById(user);本意是希望将用户ID为1的那条记录的email字段更新为NULL,但执行后发现——数据库中的email并没有被置空!很多开发者第一次遇到这个问题都会疑惑:“明明set了null,为什么没更新?”要理解这个行为,我们先得了解MyBatis-Plus的默认更新策略。二、默认行为:忽略null字段MyBatis-Plus默认在执行updateBy...
         大家好,在日常开发中,你是否经常遇到前端传参时不知道如何选择注解的情况?尤其是@RequestBody和@ModelAttribute,这两个注解看似相似,实则有着本质的区别。今天,我们就来深入聊聊它们的不同之处,帮你彻底搞懂如何正确使用。一、@RequestBody:处理JSON数据的利器@RequestBody注解的主要作用是将HTTP请求体中的JSON或XML数据绑定到Java对象上。它通常用于接收前端通过Ajax或RESTfulAPI传递的复杂结构数据。使用场景示例:假设我们有一...
日常开发中,我们经常需要处理表单数据绑定、参数预处理等场景。今天就来聊聊SpringBoot中一个非常实用的注解——@ModelAttribute。什么是@ModelAttribute?@ModelAttribute注解主要用来将请求参数绑定到Model对象上,或者用于在方法级别进行数据预处理。它在SpringMVC中扮演着重要的角色,能够大大简化我们的开发工作。基本用法1.标注在方法参数上最常见的用法是在Controller方法的参数前使用:@PostMapping("/user/save")publicStringsaveUser(@ModelAtt...
一、服务器docker配置1、配置服务器端docker远程连端口编辑docker.service文件,添加-Htcp://0.0.0.0:2375参数vi/usr/lib/systemd/system/docker.service2、重启dockersystemctldaemon-reloadservicedockerrestart3、测试端口连接是否正常curlhttp://localhost:2375/version二、idea开发环境配置1、安装docker插件2、通过docker插件连接服务器上的docke...
如果想要使用ApplicationEvent实现观察者模式,只需要简单几步:创建业务相关的Event,需要继承ApplicationEvent,重写有参构造函数定义不同的监听器(观察者)Listener实现ApplicationListener接口,重写onApplicationEvent方法通过ApplicationContext#publishEvent方法发布具体事件1、创建业务相关的Event事件/***@Author:knight*@Description:新用户注册事件*@Date:Createdin2021/9/816:05*/public...