java之路—— SpringMVC的常用注解解析以及作用、应用

news2024/11/18 22:38:49

在这里插入图片描述

创作不易,真的希望能给个免费的小在这里插入图片描述

文章目录

  • 1、@Controller
  • 2、@RequestMapping
  • 3.@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
  • 4. @RequestParam
  • 5.@PathVariable
  • 6.@RequestHeader
  • 7.@CookieValue
  • 8.@RequestBody
  • 9.@ResponseBody
  • 10.@SessionAttribute
  • 11.@ControllerAdvice
  • 12、@ModelAttribute

这篇文章主要介绍了SpringMVC一些常用注解,详细介绍了每一个注解的使用方法

1、@Controller

@Controller注解将一个普通的Java类标记为处理请求的控制器,在Spring MVC中起到了路由请求和处理业务逻辑的作用,并注册为Spring容器的Bean。通过扫描或显式配置等方式,让Spring能够自动检测到这个控制器并进行实例化和管理。

2、@RequestMapping

@RequestMapping注解用于将一个HTTP请求映射到控制器类或处理请求的方法上,告诉Spring MVC如何匹配和处理请求。

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/profile")
    public String userProfile() {
        // 处理用户个人资料请求
        return "profile";
    }
}

3.@GetMapping、@PostMapping、@PutMapping、@DeleteMapping

1.@GetMapping: 处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)
新方法可以简写为:
@GetMapping(“/get/{id}”)

2.@PostMapping: 处理post请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”,method = RequestMethod.POST)
新方法可以简写为:
@PostMapping(“/get/{id}”)

3. @PutMapping: 和PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。两者差别不是很明显。

**4.@DeleteMapping **删除URL映射,具体没有再实践中用过,不知道好在什么地方
**5.@PatchMapping ** PATCH 请求通常用于对资源进行部分更新。

@RestController
@RequestMapping("/users")
public class UserController {

    @PatchMapping("/{id}")
    public ResponseEntity<Void> updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
        // 根据 id 获取要更新的用户信息
        User user = userRepository.findById(id);

        if (user == null) {
            return ResponseEntity.notFound().build();
        }

        // 更新用户信息
        user.setName(updatedUser.getName());
        user.setEmail(updatedUser.getEmail());

        // 保存更新后的用户信息
        userRepository.save(user);

        return ResponseEntity.ok().build();
    }
}

4. @RequestParam

@RequestParam 是 Spring MVC 框架中的一个注解,用于将请求参数绑定到处理请求的方法的参数上。
使用 @RequestParam 注解时,可以在处理请求的方法的参数前添加该注解,并指定参数名。Spring MVC 在接收到请求时,会自动将请求中对应名称的参数值绑定到方法参数上。

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/search")
    public ResponseEntity<List<User>> searchUsers(@RequestParam("name") String name, @RequestParam("age") int age) {
        // 根据姓名和年龄搜索用户列表
        List<User> userList = userService.searchUsers(name, age);

        return ResponseEntity.ok(userList);
    }
}

@RequestParam 注解有一些属性可以进一步配置参数的行为,例如设置参数是否是必需的、设置默认值等。

@GetMapping("/search")
public ResponseEntity<List<User>> searchUsers(
        @RequestParam(value = "name", required = true) String name,
        @RequestParam(value = "age", defaultValue = "0") int age) {
    // ...
}

required = true 表示参数必需,如果请求中没有该参数,则会返回 400 Bad Request 错误;defaultValue = “0” 表示如果请求中没有提供该参数,则将参数默认值设置为 0。

5.@PathVariable

@PathVariable 是 Spring MVC 框架中的一个注解,用于将请求路径中的变量绑定到处理请求的方法的参数上。

使用 @PathVariable 注解时,可以在处理请求的方法的参数前添加该注解,并指定路径中的变量名称。Spring MVC 在接收到请求时,会自动从路径中提取对应名称的变量值,并将其绑定到方法参数上。

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        // 根据用户id查询用户信息
        User user = userService.getUserById(id);

        if (user == null) {
            return ResponseEntity.notFound().build();
        }

        return ResponseEntity.ok(user);
    }
}

@PathVariable 注解还支持一些属性进行进一步的配置,例如设置变量的默认值、正则表达式等。

@GetMapping("/{id}/{username}")
public ResponseEntity<User> getUserByUsername(
        @PathVariable("username") String username,
        @PathVariable(value = "id", defaultValue = "0") Long id) {
    // ...
}

6.@RequestHeader

作用:用于获取请求消息头。
value:提供消息头名称
required:是否必须有此消息头

@RequestMapping("/useRequestHeader")
public String useRequestHeader(@RequestHeader(value="Accept-Language",
required=false)String requestHeader){
	System.out.println(requestHeader);
return "success"; }

7.@CookieValue

@CookieValue 是 Spring MVC 框架中的一个注解,用于将请求中指定名称的 Cookie 值绑定到处理请求的方法的参数上。

使用 @CookieValue 注解时,可以在处理请求的方法的参数前添加该注解,并指定要绑定的 Cookie 名称。Spring MVC 在接收到请求时,会自动从请求的 Cookie 中查找指定名称的 Cookie 值,并将其绑定到方法参数上。

示例代码如下:

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/info")
    public ResponseEntity<UserInfo> getUserInfo(@CookieValue("sessionToken") String sessionToken) {
        // 根据 sessionToken 获取用户信息
        UserInfo userInfo = userService.getUserInfoBySessionToken(sessionToken);

        if (userInfo == null) {
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
        }

        return ResponseEntity.ok(userInfo);
    }
}

在上面的示例中,@GetMapping(“/info”) 表示当收到一个 GET 请求,并且路径为 “/users/info” 时,将调用 getUserInfo() 方法来处理请求。通过 @CookieValue 注解标识的 sessionToken 参数,表示从请求的 Cookie 中获取名为 “sessionToken” 的值,并将其赋值给 sessionToken 参数。

通过这种方式,在处理请求的方法中可以直接使用请求的 Cookie 值,进行相应的操作和逻辑处理。

@CookieValue 注解还支持一些属性进行进一步的配置,例如设置是否为必需的、设置默认值等。

示例代码如下:

@GetMapping("/info")
public ResponseEntity<UserInfo> getUserInfo(
        @CookieValue(value = "sessionToken", required = true) String sessionToken,
        @CookieValue(value = "theme", defaultValue = "light") String theme) {
    // ...
}

在上面的示例中,@CookieValue(value = “sessionToken”, required = true) 表示获取名为 “sessionToken” 的 Cookie 值,并将其赋值给 sessionToken 参数。如果请求中没有提供该 Cookie,则会返回 400 Bad Request 错误;`@CookieValue(value = “theme”, defaultValue = "light

8.@RequestBody

@RequestBody 是 Spring MVC 框架中的一个注解,用于将请求体中的数据绑定到处理请求的方法的参数上。

使用 @RequestBody 注解时,可以在处理请求的方法的参数前添加该注解。
Spring MVC 在接收到请求时,会自动将请求体中的数据按照指定的数据类型转换,并将其绑定到方法参数上。

示例代码如下:

@RestController
@RequestMapping("/users")
public class UserController {

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        // 创建用户的逻辑
        userService.createUser(user);

        return ResponseEntity.ok(user);
    }
}

在上面的示例中,@PostMapping 表示当收到一个 POST 请求,并且路径为 “/users” 时,将调用 createUser() 方法来处理请求。方法参数中的 @RequestBody User user 表示从请求体中获取 JSON 格式的数据并转换为 User 对象,然后将其赋值给 user 参数。

通过这种方式,在处理请求的方法中可以直接使用请求体中的数据进行相应的操作和逻辑处理。

@RequestBody 注解还支持一些属性进行进一步的配置,例如设置请求体的媒体类型、是否必需等。

示例代码如下:

@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> createUser(@RequestBody(required = true) User user) {
    // ...
}

在上面的示例中,consumes = MediaType.APPLICATION_JSON_VALUE 表示只接受 JSON 格式的请求体;required = true 表示该参数是必需的,如果请求体中没有提供相应的数据,则会返回错误。

9.@ResponseBody

@ResponseBody 是 Spring MVC 框架中的一个注解,用于将处理请求的方法的返回值直接作为响应体的内容返回给客户端。

使用 @ResponseBody 注解时,可以在处理请求的方法上添加该注解。
Spring MVC 在调用方法后,会将方法的返回值转换为指定的数据格式(如 JSON、XML等),然后将其作为响应体返回给客户端。
@ResponseBody 是 Spring MVC 框架中的一个注解,用于将处理请求的方法的返回值直接作为响应体的内容返回给客户端。
示例代码如下:

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    @ResponseBody
    public User getUserById(@PathVariable("id") Long id) {
        // 根据用户ID查询用户
        User user = userService.getUserById(id);
        return user;
    }
}

上述示例中,@GetMapping(“/{id}”) 表示当收到一个 GET 请求,并且路径为 “/users/{id}” 时,将调用 getUserById() 方法来处理请求。方法的返回类型为 User 对象。

通过在方法上添加 @ResponseBody 注解,Spring MVC 将方法的返回值 User 对象转换为 JSON 格式,并将其作为响应体返回给客户端。

使用 @ResponseBody 注解还可以实现其他类型的数据格式转换,例如返回 XML 格式的数据。

示例代码如下:

@GetMapping("/{id}", produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public User getUserById(@PathVariable("id") Long id) {
    // ...
}

在上面的示例中,通过设置 produces = MediaType.APPLICATION_XML_VALUE,表示返回 XML 格式的数据。

总之,@ResponseBody 注解用于将处理请求的方法的返回值直接作为响应体返回给客户端。可以通过该注解指定返回数据格式,如 JSON、XML等。

10.@SessionAttribute

@SessionAttribute 是 Spring MVC 框架中的一个注解,用于将模型属性(Model Attribute)存储到会话(Session)中,并在后续请求中可以直接访问和使用。

使用 @SessionAttribute 注解时,可以在处理请求的方法的参数或类级别上添加该注解。
当使用在方法参数上时,它将从会话中获取相应的属性值;
当使用在类级别上时,它将对整个类的所有处理请求的方法生效。

示例代码如下:

@Controller
@RequestMapping("/cart")
@SessionAttributes("cartItems")
public class CartController {

    @ModelAttribute("cartItems")
    public List<Item> setupCartItems() {
        return new ArrayList<>(); // 初始化空的购物车项列表
    }

    @GetMapping("/items")
    public String showCartItems(@ModelAttribute("cartItems") List<Item> cartItems) {
        // 显示购物车项
        return "cart/items";
    }

    @PostMapping("/items")
    public String addToCart(@ModelAttribute("cartItems") List<Item> cartItems, Item item) {
        // 将商品项加入购物车
        cartItems.add(item);
        return "redirect:/cart/items"; // 重定向到展示购物车项的页面
    }
}

上述示例中,@SessionAttributes(“cartItems”) 注解表示将名为 “cartItems” 的模型属性存储到会话中,并在后续请求中可以共享和访问。

在类级别的 setupCartItems() 方法上使用 @ModelAttribute(“cartItems”) 注解,表示从会话中获取名为 “cartItems” 的属性值。如果会话中不存在该属性,则会调用 setupCartItems() 方法进行初始化,并将其添加到会话中。

在处理请求的方法中,通过 @ModelAttribute(“cartItems”) 注解从会话中获取购物车项列表,并进行相应的操作,例如显示购物车项、加入商品项等。

需要注意的是,当使用 @SessionAttribute 注解时,要确保在会话结束后及时清理会话属性,以避免可能的内存泄漏和数据一致性问题。

总之,@SessionAttribute 注解用于将模型属性存储到会话中,并在后续请求中可以直接访问和使用。通过在方法参数或类级别上添加该注解,可以轻松实现会话级别的属性共享。

11.@ControllerAdvice

@ControllerAdvice 是 Spring MVC 框架中的一个注解,用于定义全局控制器增强(Controller Advice)。它允许开发者在多个控制器中共享相同的行为或异常处理逻辑,并将这些通用逻辑集中到一个类中。

使用 @ControllerAdvice 注解时,需要创建一个带有 @ControllerAdvice 注解的类,并在该类中定义通用的控制器增强逻辑。这些逻辑可以包括以下方面:

异常处理:通过在方法上添加 @ExceptionHandler 注解定义通用的异常处理方法,处理特定类型的异常或一般性的异常。
数据绑定:通过在方法上添加 @InitBinder 注解自定义数据绑定逻辑,例如格式化日期、类型转换等。
模型属性:通过在方法上添加 @ModelAttribute 注解定义通用的模型属性方法,将模型属性添加到每个请求的模型中。
示例代码如下:

@ControllerAdvice
public class GlobalControllerAdvice {

    @ExceptionHandler(Exception.class)
    public ModelAndView handleException(Exception ex) {
        // 处理并返回异常视图
        ModelAndView modelAndView = new ModelAndView("error");
        modelAndView.addObject("errorMessage", "Sorry, something went wrong.");
        return modelAndView;
    }

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 自定义数据绑定逻辑
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
    }

    @ModelAttribute
    public void addCommonAttributes(Model model) {
        // 添加通用的模型属性
        model.addAttribute("appName", "MyApp");
    }
}

上述示例中,@ControllerAdvice 注解表示这个类是一个全局控制器增强类。

在 handleException() 方法上使用 @ExceptionHandler(Exception.class) 注解,当发生任何类型的异常时,都会调用该方法进行处理,并返回相应的错误视图。

通过 @InitBinder 注解定义了一个自定义数据绑定逻辑,并注册到默认的数据绑定器中。这里使用了一个 CustomDateEditor 将日期字符串转换为 Date 类型。

在 addCommonAttributes() 方法上使用 @ModelAttribute 注解,该方法会在每个请求之前被调用,并将指定的模型属性添加到每个请求的模型中。

12、@ModelAttribute

当使用 @ModelAttribute 注解时,可以在方法参数、方法返回值或方法上添加该注解。它的作用如下:

方法参数上的 @ModelAttribute 注解:

  1. 当用于处理请求的方法中的方法参数上时,它表示从模型中获取对应名称的属性,并将其绑定到被注解的方法参数上。如果模型中不存在对应名称的属性,则会创建一个新的对象,并绑定到方法参数上。
    例如,在处理表单提交时,可以使用 @ModelAttribute 注解将表单数据绑定到方法参数上,以便进一步处理。
    方法返回值上的 @ModelAttribute 注解:

  2. 当用于处理请求的方法中的方法返回值上时,它表示将方法返回的对象添加到模型中。默认情况下,以对象的类名首字母小写作为属性的名称,也可以通过指定 name 属性来自定义属性的名称。
    方法上的 @ModelAttribute 注解:

  3. 当用于处理请求的方法上时,它表示该方法用于在处理请求之前向模型中添加属性。
    例如,在每个请求之前需要将一些共享的属性添加到模型中时,可以在一个专门的方法上添加 @ModelAttribute 注解,然后该方法的返回值会自动添加到模型中。

@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/{id}")
    public String getUser(@PathVariable("id") int id, @ModelAttribute("user") User user) {
        // 根据用户ID查询用户信息,并将结果绑定到方法参数中的 User 对象上
        return "user/profile";
    }

    @PostMapping("/edit")
    public String updateUser(@ModelAttribute("user") User user) {
        // 更新用户信息
        return "redirect:/user/" + user.getId();
    }

    @ModelAttribute("user")
    public User setupUser() {
        // 在处理请求之前向模型中添加名为 "user" 的属性
        return new User();
    }
}

上述示例中,@ModelAttribute(“user”) 注解用于将模型中的名为 “user” 的属性与方法参数或方法返回值进行绑定。

在 getUser() 方法中, 使用 @ModelAttribute(“user”) 注解将 User 对象与方法参数进行绑定。如果模型中存在名为 “user” 的属性,则会将其绑定到方法参数上;否则,会创建一个新的 User 对象并绑定到方法参数上。

在 updateUser() 方法中 ,使用 @ModelAttribute(“user”) 注解将方法返回的 User 对象添加到模型中。这样,在方法执行完毕后,模型中就会包含名为 “user” 的属性。

在 setupUser() 方法中, 使用 @ModelAttribute(“user”) 注解表示该方法用于在每个请求之前向模型中添加名为 “user” 的属性。根据需要可以从数据库或其他途径获取初始化数据,并返回一个新的 User 对象。

总之,@ModelAttribute 注解用于在 Spring MVC 框架中实现方法参数、方法返回值与模型属性的绑定。通过在方法参数、方法返回值或方法上添加该注解,可以方便地进行数据的传递和处理。

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

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

相关文章

二层、三层交换机是什么?有什么区别?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解二层交换机和三层交换机是什么&#xff0c;以及他们的区别。 目录 一、二层交换机是什么&#xff1f; 二、二层交换机的主…

本地生活多城市合伙人系统开发

本地生活多城市合伙人项目是一种基于本地生活服务的创业项目&#xff0c;旨在为各个城市的居民提供方便、实惠、高品质的生活服务。该项目通过招募多个城市的合伙人&#xff0c;建立完整的本地生活服务平台和供应链体系&#xff0c;覆盖不同类型的本地生活服务&#xff0c;如餐…

Nginx的Rewrite(地址重定向)

目录 前言 一、Rewrite 跳转场景 二、Rewrite 跳转实现 三、Rewrite实际场景 3.1Nginx跳转需求的实现方式 3.2rewrite放在 server{}&#xff0c;if{}&#xff0c;location{}段中 3.3对域名或参数字符串 四、Rewrite正则表达式 五、Rewrite语法格式 5.1rewrite语法格式…

互联网常见架构接口压测性能分析及调优手段建议

目录 互联网常见架构接口压测性能分析及调优手段建议 1 接口名称: 获取列表 1.1 压测现象:单台tps700多&#xff0c;应用cpu高负载 1.1.1 问题分析: 1.1.2 改进措施: 1.1.3 改进效果: 1.2 压测现象&#xff1a;数据库资源利用率高 1.2.1 问题分析: 1.2.2 改进措施: 1.2.3 改…

SciencePub学术 | 计算机科学类重点SCIEEI征稿中

SciencePub学术 刊源推荐:计算机科学类重点SCIE&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机科学类重点SCIE&EI 【期刊简介】IF&#xff1a;3.0-3.5&#xff0c;JCR 2区&#xff0c;中科院4区&#xff1b; 【检…

使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

大家好&#xff0c;我是带我去滑雪&#xff01; 一幅精美的科研绘图会有诸多益处&#xff0c;精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像&#xff0c;可以更好地向读者展示研究的发现&#xff0c;有助于读者理解和解释数据。还…

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景&#xff1a; 最近在发布一个web项目&#xff0c;在测试环境都是可以的&#xff0c;发布到生产环境通过IP访问也是可以的&#xff0c;但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通&#xff0c;域名却不行&…

如何在矩池云上运行 AI 图像编辑工具 DragGAN

5 月&#xff0c;DragGAN 横空出世&#xff0c;在开源代码尚未公布前&#xff0c;就在Github上斩获近 20000 Star&#xff0c;彼时&#xff0c;页面上只有效果图和一句“Code will be released in June”&#xff0c;然而这也足够带给人们无限期待。 在6月末&#xff0c;在若干…

SpringBoot最多可以处理多少个请求?

SpringBoot最多可以处理多少个请求&#xff1f; SpringBoot夺命连环14问&#xff0c;1天刷完别人半个月的springboot面试内容&#xff0c;比啃书效果好多了&#xff01;_哔哩哔哩_bilibili 最小线程数&#xff1a;最少的厨师的量&#xff0c;饭店人不多的时候的量。 最大线程数…

微信可以自动跟圈的软件有吗?

对于许多人而言&#xff0c;每日发朋友圈已成为必要的任务之一&#xff0c;如同上学时老师检查作业般。但发圈何尝不像是写作业一样呢&#xff1f;有许多小号需发几十上百条朋友圈&#xff0c;令人感到枯燥、浪费时间。再加上我们还有其他事务要处理&#xff0c;例如服装店老板…

让你不再疑惑ai绘画生成器有哪些

有一天&#xff0c;设计师小李接到了一份任务&#xff0c;要在短时间内完成一幅复杂的插画。小李感到非常苦恼。于是&#xff0c;他开始寻找一种新的解决方案。通过搜索和咨询同事&#xff0c;小李发现通过使用ai绘画工具可以提高快速绘制图画的速度.那么&#xff0c;你知道最新…

paddlespeech 声纹识别embedding向量提取

参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md 注意 1&#xff09;安装paddlespeech&#xff0c;参考&#xff1a; https://blog.csdn.n…

儿童牙刷语音方案,低功耗语音芯片NV040C,支持UART指令

随着人们对生活品质的追求越来越高&#xff0c;家庭中的日常用品也开始注重便携性、功能性与智能化。牙刷作为家庭必备的清洁用品&#xff0c;同样也在走向智能化的方向。为此&#xff0c;市场上出现了一些支持语音指令的儿童牙刷语音方案&#xff0c;其中低功耗语音芯片NV040C…

TypeScript 中接口类型【Interfaces】的定义使用解读

导语&#xff1a; 什么是 类型接口&#xff1f; 在面向对象语言中&#xff0c;接口&#xff08;Interfaces&#xff09;是一个很重要的概念&#xff0c;它是对行为的抽象&#xff0c;而具体如何行动需要由类&#xff08;classes&#xff09;去实现&#xff08;implement&#x…

从“裸辞”到“终于找到理想工作”,面试了37家公司,经过5个月的时间终于如愿以偿。

软件测试行业裸辞5个月&#xff0c;面试了37家公司&#xff0c;终于找到理想工作了... 在软件测试行业里工作已经有7年的时间了。然而&#xff0c;在今年初&#xff0c;我因为一些原因选择了离开原来的公司&#xff0c;成为了一名“裸辞族”。我并不后悔这个决定&#xff0c;因…

QT Creator上位机学习(一)基本类别及主体框架解析

系列文章目录 文章目录 系列文章目录前言基础认识多种项目3种基类文件管理编译 项目程序项目管理文件UI文件信号与槽主程序窗体头文件窗体源文件 前言 之前也学习制作过串口上位机和利用Qchart完成数据的曲线显示等等&#xff0c;但大多只是对网上的程序进行拼接&#xff0c;这…

15.RocketMQ中的负载均衡

1.3负载均衡 1.3.1什么是负载均衡 负载均衡(Load Balance)是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载&#xff0c;达到最优化资源使用&#xff0c;避免单台服务器过载。 RocketMQ中的负载均衡主要可以分为生产者发送消息的负载均衡和消费者订阅消息的负载均衡…

记一次phpMyAdmin弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量phpMyAdmin登录请求&#xff0c;现需根据流量情况进行…

leetcode887. 鸡蛋掉落(动态规划-java)

鸡蛋掉落 leetcode887. 鸡蛋掉落题目描述暴力递归 二分查找代码演示 动态规划代码演示 动态规划专题 leetcode887. 鸡蛋掉落 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/super-egg-drop 题目描述 给你 k 枚相同的鸡…

Python实现所有英雄皮肤图片采集,超高清

目录标题 前言环境使用:模块使用:代码基本四个步骤:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 Pycharm 模块使用: requests —> 数据请求模块 需要安装 re 正则表达式 内置模块 不需要安装 os 文件操作模块 内置模块 不需…