做全景图的网站/上海外贸seo公司
@RequestBody、
@RequestParam、
@PathVariable和
getParameter`(你提到的可能是Java Servlet API中的方法)是用于处理HTTP请求参数的不同机制。它们各自有不同的用途和适用场景,下面将详细解释它们之间的区别和联系。
1. @RequestBody
-
用途:用于接收HTTP请求体中的数据,并将其绑定到方法参数上。通常用于处理POST、PUT或PATCH请求,这些请求通常包含JSON、XML或其他格式的数据。
-
应用场景:当客户端发送一个复杂的对象或大量数据时,使用
@RequestBody
可以直接将请求体映射到Java对象中。 -
示例:
@PostMapping("/create") public ResponseEntity<Dish> createDish(@RequestBody Dish dish) {// 处理创建菜品的逻辑return new ResponseEntity<>(dishService.create(dish), HttpStatus.CREATED); }
在这个例子中,
@RequestBody
将HTTP请求体中的JSON数据自动映射到Dish
对象。
2. @RequestParam
-
用途:用于从HTTP请求的查询字符串或表单数据中获取单个参数值。适用于GET和POST请求。
-
应用场景:当你需要从URL查询参数或表单字段中提取单个参数时,使用
@RequestParam
是最合适的选择。 -
示例:
@GetMapping("/list") public R<List<Dish>> list(@RequestParam Integer categoryId, @RequestParam(required = false) Integer status) {// 使用categoryId和status构建查询条件return R.success(dishService.list(categoryId, status)); }
在这个例子中,
@RequestParam
用于从查询字符串中提取categoryId
和可选的status
参数。
3. @PathVariable
-
用途:用于从URL路径中提取占位符变量。适用于RESTful风格的API设计,其中资源标识符作为URL的一部分传递。
-
应用场景:当你需要从URL路径中提取特定的ID或其他标识符时,使用
@PathVariable
是最合适的选择。 -
示例:
@GetMapping("/dishes/{id}") public ResponseEntity<Dish> getDishById(@PathVariable Long id) {// 根据id查找菜品Dish dish = dishService.getById(id);if (dish != null) {return new ResponseEntity<>(dish, HttpStatus.OK);} else {return new ResponseEntity<>(HttpStatus.NOT_FOUND);} }
在这个例子中,
@PathVariable
用于从URL路径/dishes/{id}
中提取id
参数。
4. getParameter
-
用途:这是Java Servlet API中的一个方法,用于从HTTP请求中获取参数值。它可以用来获取GET请求的查询字符串参数或POST请求的表单数据参数。
-
应用场景:在传统的Servlet编程中,你可以使用
getParameter
方法来手动获取请求参数。它适用于任何类型的HTTP请求(GET、POST等),并且可以获取多个同名参数的值。 -
示例:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String categoryId = request.getParameter("categoryId");String[] statusArray = request.getParameterValues("status");// 进一步处理... }
在这个例子中,
request.getParameter("categoryId")
获取名为categoryId
的查询参数的值,而request.getParameterValues("status")
获取所有名为status
的查询参数的值。
区别总结
-
@RequestBody
:- 作用范围:主要用于接收HTTP请求体中的复杂对象。
- 适用场景:POST、PUT或PATCH请求,通常涉及JSON或XML格式的数据。
-
@RequestParam
:- 作用范围:用于从查询字符串或表单数据中提取单个参数。
- 适用场景:GET和POST请求,通常用于简单的键值对参数。
-
@PathVariable
:- 作用范围:用于从URL路径中提取占位符变量。
- 适用场景:RESTful API设计,URL路径中包含资源标识符。
-
getParameter
:- 作用范围:用于从HTTP请求中获取参数值。
- 适用场景:传统Servlet编程,适用于各种类型的HTTP请求。
联系总结
尽管这些注解和方法的作用不同,但它们都用于处理HTTP请求中的参数。在Spring MVC框架中,@RequestBody
、@RequestParam
和 @PathVariable
提供了更高级别的抽象,简化了参数处理过程,并且与Spring的依赖注入和类型转换机制集成得很好。而在传统的Servlet编程中,getParameter
方法提供了基本的参数获取功能。
在实际开发中,选择哪种方式取决于你的具体需求和技术栈。如果你使用的是Spring MVC,推荐使用 @RequestBody
、@RequestParam
和 @PathVariable
来简化代码并提高可读性。如果你在编写Servlet,或者需要与Servlet兼容的代码,则可以使用 getParameter
方法。
public R status(@PathVariable(“status”) Integer status,@RequestParam List ids){详细解释一下以上代码
这段代码定义了一个Spring MVC控制器方法,用于处理HTTP请求并根据路径变量和查询参数更新菜品状态。下面是对这段代码的详细解释:
1. 方法签名与注解
public R<String> status(@PathVariable("status") Integer status, @RequestParam List<Long> ids)
-
public R<String>
:这是方法的返回类型,表示该方法返回一个封装了字符串结果的对象R<String>
。R
是一个自定义的结果封装类,通常用于统一API响应格式,包含状态码、消息和数据等字段。 -
@PathVariable("status") Integer status
:这是一个Spring MVC注解,用于从URL路径中提取名为status
的占位符变量,并将其绑定到方法参数Integer status
上。这意味着URL路径中必须包含一个名为status
的部分,例如/status/1
,其中1
将被绑定到status
参数。 -
@RequestParam List<Long> ids
:这也是一个Spring MVC注解,用于从HTTP请求的查询字符串中提取名为ids
的参数,并将其绑定到方法参数List<Long> ids
上。这允许你传递多个ID作为查询参数,例如/status/1?ids=1&ids=2&ids=3
。
2. 示例URL
假设这个方法映射到 /status/{status}
路径,那么一个可能的请求URL可能是:
http://example.com/status/1?ids=1&ids=2&ids=3
在这个例子中:
{status}
是路径变量,值为1
。ids
是查询参数,值为1, 2, 3
。
3. 方法逻辑
虽然代码片段中没有提供方法体的具体实现,但根据方法签名可以推测其大致逻辑:
-
接收参数:方法接收两个参数:
status
:来自URL路径的整数值,表示新的状态(如启用或停用)。ids
:来自查询字符串的长整型列表,表示要更新状态的菜品ID列表。
-
业务逻辑:通常会调用服务层的方法来更新这些菜品的状态。例如:
@Autowired private DishService dishService;public R<String> status(@PathVariable("status") Integer status, @RequestParam List<Long> ids) {try {// 调用服务层方法更新菜品状态dishService.updateStatus(ids, status);return R.success("状态更新成功");} catch (Exception e) {log.error("更新菜品状态失败: {}", e.getMessage(), e);return R.error("状态更新失败");} }
在这个例子中:
dishService.updateStatus(ids, status)
:调用服务层方法来更新指定ID的菜品状态。R.success("状态更新成功")
和R.error("状态更新失败")
:创建并返回封装了操作结果的响应对象。
4. 完整上下文
这段代码通常出现在一个控制器类中,如下所示:
@RestController
@RequestMapping("/api/dishes")
public class DishController {@Autowiredprivate DishService dishService;/*** 更新指定菜品的状态* @param status 新的状态值* @param ids 要更新状态的菜品ID列表* @return 操作结果*/@PutMapping("/status/{status}")public R<String> status(@PathVariable("status") Integer status, @RequestParam List<Long> ids) {try {// 调用服务层方法更新菜品状态dishService.updateStatus(ids, status);return R.success("状态更新成功");} catch (Exception e) {log.error("更新菜品状态失败: {}", e.getMessage(), e);return R.error("状态更新失败");}}
}
在这个例子中:
@RestController
:标识这是一个RESTful控制器。@RequestMapping("/api/dishes")
:设置了控制器的基础路径。@Autowired
:自动注入DishService
,以便通过它与数据库进行交互。@PutMapping("/status/{status}")
:这是一个组合注解,结合了@RequestMapping(method = RequestMethod.PUT)
和路径变量{status}
,用于指定该方法只处理PUT请求,并且路径中包含status
占位符。
5. 总结
这段代码的主要功能是:
- 接收路径变量和查询参数:通过
@PathVariable
获取路径中的status
值,通过@RequestParam
获取查询字符串中的ids
列表。 - 更新菜品状态:调用服务层方法
dishService.updateStatus(ids, status)
来更新指定ID的菜品状态。 - 返回操作结果:将操作结果封装为响应对象,并返回给客户端。
这种方式不仅简化了参数处理过程,还确保了代码的清晰性和可维护性。通过使用Spring MVC的注解,你可以轻松地处理复杂的参数绑定和业务逻辑。
6. 改进建议
-
输入验证:可以在服务层或控制器层增加对
status
和ids
参数的验证逻辑,确保传入的数据符合业务规则。例如,检查status
是否在允许范围内,或者验证ids
列表是否为空。 -
异常处理:增加适当的异常处理机制,以确保在出现错误时能够妥善处理并提供有用的反馈信息。例如,可以捕获数据库操作抛出的异常,并返回相应的错误信息给客户端。
-
日志记录:添加更多的日志记录,以便在出现问题时更容易调试和追踪问题来源。例如,在进入和离开方法时记录日志。
通过这些改进,可以使代码更加健壮、安全和易于维护。
queryWrapper.eq(Dish::getStatus, status) 的作用是:如果 status 不为 null,则在查询条件中添加 status = ?,其中 ? 是 status 变量的值。
HTTP GET请求是什么,举个详细的例子
HTTP GET请求是超文本传输协议(HTTP)中的一种请求方法,主要用于从服务器获取资源。它是Web浏览器与服务器之间最常用的一种交互方式,用于检索信息而不进行修改。下面通过一个详细的例子来解释HTTP GET请求的工作原理和使用场景。
1. 场景描述
假设你正在浏览一个在线书店的网站,并想查看某一类别的书籍列表,比如“科幻小说”。你需要向服务器发送一个GET请求以获取该类别的所有书籍信息。
2. URL构造
为了获取“科幻小说”类别下的书籍列表,你需要构造一个URL,其中包含必要的查询参数。例如:
http://www.example.com/books?category=science-fiction
在这个URL中:
http://www.example.com
是服务器的地址。/books
是请求的路径,指向服务器上的资源。?category=science-fiction
是查询字符串,包含了名为category
的参数及其值science-fiction
。服务器可以根据这个参数来过滤返回的书籍列表。
3. 完整的HTTP GET请求
当你在浏览器中访问上述URL时,浏览器会向服务器发送一个HTTP GET请求。以下是这个请求的完整格式:
GET /books?category=science-fiction HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
请求行
GET /books?category=science-fiction HTTP/1.1
:这是请求的第一行,包含请求方法(GET)、请求的URL路径以及HTTP版本(HTTP/1.1)。
请求头
Host: www.example.com
:指定目标服务器的主机名。User-Agent
:提供关于发出请求的客户端的信息(如浏览器类型和版本)。Accept
:告诉服务器客户端可以接受的内容类型(如HTML、XML等)。Accept-Language
:指明客户端偏好哪种语言。Accept-Encoding
:指明客户端支持的压缩算法(如gzip、deflate等)。Connection
:指示是否保持连接(keep-alive
表示保持连接)。Upgrade-Insecure-Requests
:表示客户端希望升级到更安全的HTTPS连接。
请求体
对于GET请求来说,通常没有请求体。所有参数都是通过URL的查询字符串传递的。
4. 服务器响应
服务器接收到这个GET请求后,会根据查询参数 category=science-fiction
查找并返回相应的书籍列表。服务器的响应可能如下所示:
HTTP/1.1 200 OK
Date: Mon, 10 Dec 2024 12:00:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: application/json; charset=utf-8
Content-Length: 542[{"id": 1,"title": "Dune","author": "Frank Herbert","category": "science-fiction"},{"id": 2,"title": "Neuromancer","author": "William Gibson","category": "science-fiction"}
]
响应状态行
HTTP/1.1 200 OK
:这是响应的第一行,表示HTTP版本、状态码(200表示成功)和状态消息(OK)。
响应头
Date
:服务器生成响应的时间。Server
:服务器软件的信息。Content-Type
:指明响应内容的类型(这里是JSON格式)。Content-Length
:响应体的长度(字节数)。
响应体
- JSON数据:实际返回的数据,这里是一个包含两本科幻小说的JSON数组。
5. 总结
通过这个例子,我们可以看到HTTP GET请求是如何工作的:
- 构造URL:用户或客户端应用程序构造一个包含查询参数的URL。
- 发送请求:客户端(如浏览器)通过HTTP协议发送GET请求给服务器。
- 处理请求:服务器接收请求,解析查询参数,并根据这些参数查找相应的资源。
- 返回响应:服务器将找到的资源作为响应返回给客户端,包括状态码、响应头和响应体。
这种方式不仅适用于网页浏览,还广泛应用于RESTful API调用中,允许客户端轻松地从服务器获取所需的数据。理解GET请求的结构和工作流程有助于开发者更好地构建和调试Web应用程序。
@RequestParam
是Spring MVC框架中的一个注解,用于从HTTP请求的查询字符串中提取参数,并将这些参数绑定到控制器方法的参数上。通过使用 @RequestParam
,你可以方便地获取客户端传递的参数值,并直接在方法签名中使用它们。
详细解释
假设你有一个URL如下:
http://example.com/api/dishes/list?categoryId=1&status=1
在这个URL中:
categoryId=1
和status=1
是查询字符串中的参数。categoryId
是必选参数,表示要查询的菜品分类ID。status
是可选参数,表示要查询的菜品状态(如启用或停用)。
使用 @RequestParam
提取参数
在Spring MVC控制器方法中,你可以使用 @RequestParam
注解来提取这些参数。以下是具体代码示例:
@RestController
@RequestMapping("/api/dishes")
public class DishController {@Autowiredprivate DishService dishService;/*** 根据条件查询对应的菜品数据* @param categoryId 分类ID* @param status 状态(可选)* @return 菜品列表*/@GetMapping("/list")public R<List<Dish>> list(@RequestParam Integer categoryId, @RequestParam(required = false) Integer status) {// 构造查询条件LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();if (categoryId != null) {queryWrapper.eq(Dish::getCategoryId, categoryId);}if (status != null) {queryWrapper.eq(Dish::getStatus, status);}// 添加排序条件queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);// 执行查询List<Dish> list = dishService.list(queryWrapper);// 返回结果return R.success(list);}
}
关键点解释
-
@RequestParam Integer categoryId
:@RequestParam
:指定从查询字符串中提取名为categoryId
的参数。Integer categoryId
:提取到的参数值将被绑定到categoryId
方法参数上,类型为Integer
。
-
@RequestParam(required = false) Integer status
:required = false
:指定status
参数是可选的。如果请求中没有提供status
参数,status
将为null
。Integer status
:提取到的参数值将被绑定到status
方法参数上,类型为Integer
。
示例解析
当你访问以下URL时:
http://example.com/api/dishes/list?categoryId=1&status=1
-
categoryId=1
和status=1
会被分别提取并绑定到categoryId
和status
方法参数上。 -
如果你只访问:
http://example.com/api/dishes/list?categoryId=1
categoryId
将被正确绑定,而status
将为null
,因为它是可选参数。
总结
@RequestParam
用于从查询字符串中提取参数,并将这些参数绑定到控制器方法的参数上。通过这种方式,你可以轻松地处理客户端传递的查询参数,无论是必选还是可选的参数。这对于构建RESTful API和动态查询非常有用,因为它简化了参数处理过程,并提高了代码的可读性和维护性。
相关文章:

@RequestBody,getparameter,@RequestParam,@PathVariable之间的区别和联系
RequestBody、RequestParam、PathVariable和getParameter(你提到的可能是Java Servlet API中的方法)是用于处理HTTP请求参数的不同机制。它们各自有不同的用途和适用场景,下面将详细解释它们之间的区别和联系。 1. RequestBody 用途…...

Linx下自动化之路:Redis安装包一键安装脚本实现无网极速部署并注册成服务
目录 简介 安装包下载 安装脚本 服务常用命令 简介 通过一键安装脚本实现 Redis 安装包的无网极速部署,并将其成功注册为系统服务,开机自启。 安装包下载 redis-7.0.8.tar.gzhttp://download.redis.io/releases/redis-7.0.8.tar.gz 安装脚本 修…...

VMware虚拟机搭建和镜像配置
VMware虚拟机搭建和镜像配置 下载安装VMware 开始下载 更改安装路径,需要一个大空间的盘 更改后下一步 下一步后,选择不主动升级更新 一直下一步 直到安装完毕 输入许可密钥,我下载的版本是12,输入完成点击输入ÿ…...

红日靶场vulnstark 4靶机的测试报告[细节](一)
目录 一、测试环境 1、系统环境 2、注意事项 3、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、漏洞利用Getshell ①Struts 2 s2-045漏洞 手工利用s2-45漏洞 Msf综合利用 ②Tomcat框架(CVE-2017-12615) ③phpMyAdmin(CVE-2018-12613) 构造语句写入冰蝎木…...

深入详解人工智能机器学习常见算法——线性回归算法
深入解析线性回归算法 线性回归是机器学习和统计学中最基本、最常用的预测建模技术之一。它通过线性关系描述因变量与一个或多个自变量之间的联系,帮助我们进行数据建模和预测。本篇文章将详细介绍线性回归的基础知识、算法原理、核心概念、实现方法以及其在实际问题…...

Python 开发环境搭建
Python 开发环境搭建 flyfish 版本 Ubuntu 22.04.5 LTS PyTorch 2.5.1 cuda 12.4 python 3.12.7安装 Anaconda3 依赖 sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6安装命令 …...

OpenCV相机标定与3D重建(9)相机标定函数calibrateCameraRO()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::calibrateCameraRO 是 OpenCV 中用于相机标定的函数,它允许固定某些点来进行更精确的标定。 函数原型 double cv::calibrateCa…...

flink终止提交给yarn的任务
接上文:一文说清flink从编码到部署上线 1.查看正在执行的flink 访问地址(参考):http://10.86.97.191:8099/cluster/apps 2.终止任务 yarn application -kill appID 本文为: yarn application -kill application_17…...

算法刷题Day14:BM36 判断是不是平衡二叉树
题目链接 描述 输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是…...

【Golang】Go语言编程思想(六):Channel,第一节,介绍Channel
Channel 下面的几个例子将会展示如何定义一个 channel: func chanDemo() {var c chan int // chan int 的含义是, c 是一个 channel, 里面的内容是 int// 上面的声明语句将会创建一个 nil channel, c nil, 它的作用将在 select 当// 中体现 }创建一个非 nil 的 c…...

【Flux.jl】 卷积神经网络
Flux.jl 是包含卷积神经网络的, 但是官方API文件中没有给出一个完整的程序框架, 只是对所需神经元给了局部解释, 此外对 model-zoo 模型动物园中的案例没有及时跟着 Flux.jl 的版本更新, 也无法运行出来结果。 因此本文搭建了一个完整可训练的卷积神经网络。 Conv 卷积算子…...

大模型在辅导场景的深度应用,猿辅导素养课推出启发性“AI作文通”
猿辅导集团旗下的飞象星球面向学校发布“飞象AI作文”,让教育大模型成为老师的AI批改助手、学生的写作助手。芥末堆注意到,猿辅导集团旗下的猿辅导素养课也推出了名为“AI作文通”的AI作文功能,已于7月正式大规模上线,在AI教育领域…...

深入了解架构中常见的4种缓存模式及其实现
4种缓存模式 随着应用程序的复杂性日益增加,缓存管理变得至关重要。缓存不仅能有效减轻数据库负载,还能显著提升数据访问速度。选择合适的缓存模式能够在不同的业务场景下发挥出最佳效果。 本文将详细介绍四种常见的缓存模式:Cache-Aside (…...

Hermes engine on React Native 0.72.5,function无法toString转成字符串
问题描述 Hermes engine on React Native 0.72.5,function无法toString转成字符串 环境 npm6.14.18 node16.17.1项目依赖 "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.72.5", …...

Spring Boot + MySQL 多线程查询与联表查询性能对比分析
Spring Boot MySQL: 多线程查询与联表查询性能对比分析 背景 在现代 Web 应用开发中,数据库性能是影响系统响应时间和用户体验的关键因素之一。随着业务需求的不断增长,单表查询和联表查询的效率问题日益凸显。特别是在 Spring Boot 项目中࿰…...

Java 设计模式~工厂模式
在java开发,工厂模式应用场景有哪些?在Spring boot原码中 有哪些工厂类,并做相应的代码介绍。 工厂模式 工厂模式(Factory Pattern)是Java中一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。此…...

OmicsTools生信环境全自动化安装配置教程,代做生信分析和辅导
OmicsTools软件介绍和下载安装配置 软件介绍 我开发了一款本地电脑无限使用的零代码生信数据分析作软图神器电脑软件OmicsTools,旨在成为可以做各种医学生物生信领域科研数据分析作图的的全能科研软件,欢迎大家使用OmicsTools进行生物医学科研数据分析…...

鸿蒙HarmonyOS应用开发 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
鸿蒙心路旅程:探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力 HarmonyOS Next 是华为推出的全新一代操作系统,旨在进一步推动分布式技术的深度应用和生态融合。本文将从技术特点、应用场景入手,通过实战案例与代码示例&…...

二分模板题
题目传送门 主要思路: 暴力会tle n的3次方了然后 二分可以找中间然后去二分枚举两边 最后结果 ansa小于它的数*c大于它的数 注意要判断是否符合条件 即如果a的小于它的数还大于它就不成立 或者c的数小于它也不成立结果 要注意转long long ans(long long)tp1*tp2; …...

一篇文章掌握Git的基本原理与使用
目录 一、创建仓库 1.1 git init 1.2 git clone 二、工作区域与文件状态 三、添加和提交文件 3.1 git status 3.2 git add git rm --cached 3.3 git commit git log 四、版本回退 soft hard mixed 总结 五、查看差异 工作区与暂存区 工作区与本地仓库 暂存区…...

「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。 关键词 UI互动应用闪烁动画动态按钮状态管理用户交互 一、功能说明 闪烁按钮效果应用实现了一个动态交互功能…...

朗新科技集团如何用云消息队列 RocketMQ 版“快、准、狠”破解业务难题?
作者:邹星宇、刘尧 朗新科技集团:让数字化的世界更美好 朗新科技集团股份有限公司是领先的能源科技企业,长期深耕电力能源领域,通过新一代数字化、人工智能、物联网、电力电子技术等新质生产力,服务城市、产业、生活中…...

【Ubuntu】Ubuntu的Desktop(学习/用户使用)和Bit版本(工作)
这篇文章似乎没什么必要写,但想了想还是决定记录一下,也许对新手入坑Ubuntu会有帮助, 事实上也很简单,一个是桌面版本,另一个是字符界面版本。 桌面版:拥有图形桌面 字符界面,易上手ÿ…...

cmake CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_LIST_DIR的区别
在 CMake 中,CMAKE_CURRENT_LIST_DIR 和 CMAKE_CURRENT_SOURCE_DIR 都是指代当前 CMake 文件所在的路径,但它们的含义和用途有所不同: CMAKE_CURRENT_LIST_DIR: 表示 当前处理的 CMake 文件(例如 CMakeLists.txt&#…...

学会用VSCode debug
本文主要介绍了 VS Code 的调试功能,包括其强大的内置调试器,支持多种语言,如 JavaScript、TypeScript 等。通过简单项目示例展示调试过程,还介绍了运行面板和菜单、启动配置、调试操作、断点、记录点等功能,以及三种调…...

C语言专题之结构体的使用
结构体(struct)是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起,形成一个新的数据类型。结构体在编程中非常常见,尤其是在需要处理复杂数据结构的情况下。以下是结构体的基本使用方法: 一、结…...

python中的高阶函数
1、什么是高阶函数? 高阶函数是指将函数作为参数传入。就是高阶函数 2、高阶函数有哪些? map 映射函数 >>> print(list(map(lambda x:x*x,range(1,11)))) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> print(list(map(lambda x:st…...

学习笔记063——通过使用 aspose-words 将 Word 转 PDF 时,遇到的字体改变以及乱码问题
文章目录 1、问题描述:2、解决方法: 1、问题描述: Java项目中,有个需要将word转pdf的需求。本人通过使用aspose-words来转换的。在Windows中,转换是完全正常的。但是当部署到服务器时,会出现转换生成的pdf…...

SpringBoot整合Mockito进行单元测试超全详细教程 JUnit断言 Mockito 单元测试
Mock概念 Mock叫做模拟对象,即用来模拟未被实现的对象可以预先定义这个对象在特定调用时的行为(例如返回值或抛出异常),从而模拟不同的系统状态。 导入Mock依赖 pom文件中引入springboot测试依赖,spring-boot-start…...

【AI知识】过拟合、欠拟合和正则
一句话总结: 过拟合和欠拟合是机器学习中的两个相对的概念,正则化是用于解决过拟合的方法。 1. 欠拟合: 指模型在训练数据上表现不佳,不能充分捕捉数据的潜在规律,导致在训练集和测试集上的误差都很高。欠拟合意味着模…...