@RequestParam 和 @RequestBody、HttpServletrequest 与HttpServletResponse
在Java Web开发中,@RequestParam
、@RequestBody
、HttpServletRequest
和 HttpServletResponse
是常用的组件,它们用于处理HTTP请求和响应。下面分别介绍它们的使用场景和使用方法:
1. @RequestParam
@RequestParam
是Spring MVC框架中的注解,用于将请求参数绑定到控制器方法的参数上。
使用场景
-
当需要从HTTP请求的查询字符串(URL参数)或表单数据中获取单个参数时。
-
常用于GET请求或简单的POST请求。
使用方法
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@GetMapping("/hello")public String sayHello(@RequestParam String name) {return "Hello, " + name;}// 可选参数@GetMapping("/greet")public String greet(@RequestParam(value = "name", defaultValue = "Guest") String name) {return "Welcome, " + name;}
}
-
@RequestParam
的参数:-
value
:指定请求参数的名称。 -
required
:是否必须,默认为true
。如果为true
且请求中没有该参数,会抛出异常。 -
defaultValue
:默认值,如果请求中没有该参数,则使用默认值。
-
2. @RequestBody
@RequestBody
是Spring MVC框架中的注解,用于将HTTP请求体中的JSON或XML数据绑定到控制器方法的参数上。
使用场景
-
当需要接收复杂的请求体数据(如JSON或XML格式)时。
-
常用于POST或PUT请求。
使用方法
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@PostMapping("/user")public String createUser(@RequestBody User user) {return "User created: " + user.getName();}
}class User {private String name;private int age;// Getters and Setterspublic String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
- 客户端发送的JSON数据:
{"name": "Alice","age": 25
}
-
Spring会自动将JSON数据反序列化为
User
对象。
3.HttpServletRequest
HttpServletRequest
是Servlet API中的类,代表客户端的请求。它提供了对请求头、请求参数、请求体等的访问。
使用场景
-
当需要直接访问底层的HTTP请求信息时。
-
常用于需要处理复杂的请求头、请求体,或者与Servlet API紧密集成的场景。
使用方法
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@GetMapping("/request-info")public String getRequestInfo(HttpServletRequest request) {String method = request.getMethod();String path = request.getRequestURI();String userAgent = request.getHeader("User-Agent");return "Method: " + method + ", Path: " + path + ", User-Agent: " + userAgent;}
}
-
通过
HttpServletRequest
可以访问请求的详细信息,如请求方法、请求路径、请求头等。
4. HttpServletResponse
HttpServletResponse
是Servlet API中的类,代表服务器对客户端的响应。它提供了设置响应头、响应状态码、响应体等功能。
使用场景
-
当需要直接操作HTTP响应时。
-
常用于需要自定义响应状态码、响应头,或者向客户端发送特殊响应的情况。
使用方法
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@GetMapping("/custom-response")public void customResponse(HttpServletResponse response) throws IOException {response.setStatus(HttpServletResponse.SC_OK); // 设置状态码response.setContentType("text/plain"); // 设置响应内容类型response.getWriter().write("This is a custom response");}
}
-
通过
HttpServletResponse
可以设置响应的状态码、响应头和响应体。
5.总结
-
@RequestParam
:用于获取请求参数(如URL参数或表单数据)。 -
@RequestBody
:用于接收请求体中的JSON或XML数据。 -
HttpServletRequest
:用于直接访问底层的HTTP请求信息。 -
HttpServletResponse
:用于直接操作HTTP响应。
在实际开发中,通常优先使用Spring提供的注解(如@RequestParam
和@RequestBody
),因为它们更加简洁和方便。而HttpServletRequest
和HttpServletResponse
则用于需要直接操作底层请求和响应的场景。
@RequestParam
、@RequestBody
、HttpServletRequest
和 HttpServletResponse
在功能和使用场景上存在明显的区别。以下从多个维度对它们进行详细对比,帮助你更好地理解它们的具体区别:
6. 数据来源
-
@RequestParam
-
来源:从HTTP请求的查询字符串(URL参数)或表单数据中获取参数。
-
示例:
http://example.com?name=Kimi
,通过@RequestParam String name
获取name
参数。
-
-
@RequestBody
-
来源:从HTTP请求的**请求体(Body)**中获取数据,通常是JSON或XML格式。
-
示例:客户端发送一个JSON请求体
{"name": "Kimi", "age": 25}
,通过@RequestBody User user
接收。
-
-
HttpServletRequest
-
来源:可以访问HTTP请求的所有信息,包括请求头、请求参数、请求体等。
-
示例:通过
request.getParameter("name")
获取查询字符串或表单参数,通过request.getInputStream()
获取请求体。
-
-
HttpServletResponse
-
来源:用于操作HTTP响应,不涉及从请求中获取数据,而是用于设置响应的状态码、响应头和响应体。
-
示例:通过
response.setStatus(HttpServletResponse.SC_OK)
设置响应状态码。
-
7. 数据类型
-
@RequestParam
-
数据类型:通常用于获取简单类型的数据(如
String
、int
、boolean
等)。 -
示例:
@RequestParam String name
。
-
-
@RequestBody
-
数据类型:通常用于接收复杂类型的数据,如自定义的Java对象(通过JSON或XML反序列化)。
-
示例:
@RequestBody User user
,其中User
是一个包含多个字段的Java类。
-
-
HttpServletRequest
-
数据类型:可以获取任何类型的数据,包括简单类型和复杂类型。通过
getParameter
获取简单类型,通过getInputStream
或getReader
获取复杂类型。 -
示例:
request.getParameter("name")
获取String
类型,request.getInputStream()
获取请求体的字节流。
-
-
HttpServletResponse
-
数据类型:用于设置响应的状态码、响应头和响应体。响应体可以是文本、JSON、XML等。
-
示例:
response.getWriter().write("Hello, World!")
,向客户端发送文本响应。
-
8. 使用场景
-
@RequestParam
-
场景:用于处理简单的GET请求或表单提交的POST请求,通常用于获取单个参数。
-
示例:
http://example.com?name=Kimi
,通过@RequestParam
获取name
参数。
-
-
@RequestBody
-
场景:用于处理复杂的POST或PUT请求,通常用于接收JSON或XML格式的请求体。
-
示例:客户端发送一个JSON请求体
{"name": "Kimi", "age": 25}
,通过@RequestBody
接收并反序列化为Java对象。
-
-
HttpServletRequest
-
场景:用于需要直接访问底层HTTP请求信息的场景,例如:
-
获取请求头信息(如
User-Agent
)。 -
处理非标准的请求体格式(如文件上传)。
-
获取请求的完整路径、方法等。
-
-
示例:
request.getMethod()
获取请求方法,request.getHeader("User-Agent")
获取请求头。
-
-
HttpServletResponse
-
场景:用于需要直接操作HTTP响应的场景,例如:
-
设置自定义的响应状态码(如404、500)。
-
设置响应头(如
Content-Type
)。 -
向客户端发送自定义的响应体(如JSON、XML、文本)。
-
-
示例:
response.setStatus(HttpServletResponse.SC_NOT_FOUND)
设置404状态码,response.getWriter().write("Not Found")
发送响应体。
-
9. 简洁性与灵活性
-
@RequestParam
-
简洁性:非常简洁,直接将请求参数绑定到方法参数上。
-
灵活性:功能较为单一,仅用于获取简单类型的请求参数。
-
-
@RequestBody
-
简洁性:简洁且强大,可以自动将请求体反序列化为Java对象。
-
灵活性:适用于复杂的数据结构,支持JSON、XML等多种格式。
-
-
HttpServletRequest
-
简洁性:相对复杂,需要手动处理请求参数和请求体。
-
灵活性:非常灵活,可以访问请求的所有信息,适用于复杂的场景。
-
-
HttpServletResponse
-
简洁性:相对复杂,需要手动设置响应状态码、响应头和响应体。
-
灵活性:非常灵活,可以自定义响应的各个方面。
-
10. 使用示例对比
假设有一个用户注册的接口,客户端发送一个包含用户名和年龄的JSON请求体:
{"name": "Kimi","age": 25
}
使用@RequestBody
@PostMapping("/register")
public String registerUser(@RequestBody User user) {return "User registered: " + user.getName();
}
-
优点:代码简洁,自动反序列化JSON为Java对象。
-
缺点:只能处理请求体,无法直接获取请求头或查询参数。
使用HttpServletRequest
@PostMapping("/register")
public String registerUser(HttpServletRequest request) throws IOException {User user = new ObjectMapper().readValue(request.getInputStream(), User.class);return "User registered: " + user.getName();
}
-
优点:可以访问请求的所有信息,包括请求头、请求体等。
-
缺点:代码复杂,需要手动处理请求体的反序列化。
11. 总结
表格
特性 | @RequestParam | @RequestBody | HttpServletRequest | HttpServletResponse |
---|---|---|---|---|
数据来源 | 查询字符串/表单数据 | 请求体(JSON/XML) | 请求的所有信息 | 响应的所有信息 |
数据类型 | 简单类型(如String 、int ) | 复杂类型(如Java对象) | 任何类型 | 状态码、响应头、响应体 |
使用场景 | 获取单个请求参数 | 接收复杂请求体 | 访问底层请求信息 | 操作底层响应信息 |
简洁性 | 非常简洁 | 简洁且强大 | 相对复杂 | 相对复杂 |
灵活性 | 功能单一 | 适用于复杂数据 | 非常灵活 | 非常灵活 |
选择建议
-
如果只需要获取单个请求参数,优先使用
@RequestParam
。 -
如果需要接收复杂的请求体(如JSON或XML),优先使用
@RequestBody
。 -
如果需要访问请求的详细信息(如请求头、请求方法等),使用
HttpServletRequest
。 -
如果需要自定义响应的状态码、响应头或响应体,使用
HttpServletResponse
。
希望这些对比和总结能帮助你更好地理解它们的区别和使用场景!
相关文章:
@RequestParam 和 @RequestBody、HttpServletrequest 与HttpServletResponse
在Java Web开发中,RequestParam、RequestBody、HttpServletRequest 和 HttpServletResponse 是常用的组件,它们用于处理HTTP请求和响应。下面分别介绍它们的使用场景和使用方法: 1. RequestParam RequestParam 是Spring MVC框架中的注解&am…...
HashMap 的特点及应用场景
一、HashMap 核心特点 1. 基本特性 键值对存储:基于 Map 接口实现,存储 Key-Value 对 允许 null 键/值:可以有一个 null 键和多个 null 值 非线程安全:多线程环境下需要额外的同步措施 无序存储:不保证元素的插入顺…...
day30 python 模块、包与库的高效使用指南
目录 一、Python库的分类与适用场景 表格 1.1 基础工具库 1.2 科学计算库 1.3 数据分析库 1.4 Web开发库 1.5 机器学习库 1.6 自动化脚本库 1.7 网络爬虫库 二、模块与包的导入方式 2.1 标准导入 2.2 从模块中导入特定项 2.3 非标准导入(不推荐&#x…...
JVM核心配置参数详解与调优指南
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 Java虚拟机(JVM)的配置参数直接影响应用程序的性能、稳定性和资源利用率。合理配置参数能够显著提升吞吐量、降低延迟并避免内存…...
python打卡第30天
知识点回顾: 一,导入官方库的三种手段。 使用 import 直接导入整个模块 import module_name 使用 from ... import ... 导入特定功能 from module_name import function_name 使用 as 关键字重命名模块或功能 import module_name as alias # 或 from mod…...
数据要素及征信公司数据要素实践
数据要素及征信公司数据要素实践 1.数据要素的定义与核心特征2.征信公司应用数据要素的实践路径3.总结1.数据要素的定义与核心特征 数据要素是数字经济时代的新型生产要素,指以电子形式存在、通过计算方式参与生产经营活动并创造价值的数据资源。 其核心特征包括: 新型生产…...
耗时十分钟,做了一个 uniapp 灵感泡泡机
最近,我用 UniApp 搭配 CodeBuddy 实现了一个充满童话感的小应用,名叫 IdeaBubbles(灵感泡泡机)。它是一个单页 WebApp,用来记录那些转瞬即逝的灵感时刻。整个界面以梦幻气泡和彩虹玻璃拟态为主题,视觉效果…...
《Head First 设计模式》第二章 - 笔记
本书是本人写的设计模式的笔记,写下核心要点,如果你掌握过设计模式,想快速阅读本书内容,这个笔记适合你阅读。如果你是新手,有 java 基础和 oo 设计原则基础,你适合跟我一样从零阅读本书。 第一章 观察者模…...
matlab绘制光学传递函数mtf曲线
在 MATLAB 中绘制光学系统的光学传递函数(Modulation Transfer Function,MTF)曲线可以通过以下步骤实现。MTF 是描述光学系统对物体细节的传递能力的函数,通常用于分析成像系统的性能。 假设我们有一个理想的光学系统,…...
贵州某建筑物挡墙自动化监测
1. 项目简介 某建筑物位于贵州省某县城区内,靠近县城主干道,周边配套学校、医院、商贸城。建筑物临近凤凰湖、芙蓉江等水系,主打“湖景生态宜居”。改建筑物总占地面积:约5.3万平方米;总建筑面积:约15万平…...
自定义协议与序列化
前言 书接上回,我们上一篇提到了协议并且我们草率的写了一个协议,然后又对TCP的R和W留了一个伏笔,我们今天彻底做个了断。 UDP是面向数据报的,它要么不读,要么就是一次读完的,所以不存在数据断断续续的问…...
MySQL中的Change Buffer是什么,它有什么作用?
MySQL 中的 Change Buffer(更改缓冲区)是 InnoDB 存储引擎使用的一种特殊数据结构,主要用于优化对二级索引(secondary indexes)的写操作性能。 它的核心作用是: 当对表进行 INSERT、UPDATE 或 DELETE 操作…...
Ubuntu 20.04之Docker安装ES7.17.14和Kibana7.17.14
你需要已经安装如下运行环境: Ubuntu 20.04 docker 28 docker-compose 1.25 一、手动拉取镜像 docker pull docker.elastic.co/kibana/kibana:7.17.14docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.14 或者手动导入镜像 docker load -i es7.17.14.ta…...
ThreadLocal作一个缓存工具类
1、工具类 import java.util.HashMap; import java.util.Map;public class ThreadLocalUtil {// 使用Map存储多类型数据private static final ThreadLocal<Map<String, Object>> CONTEXT_HOLDER new ThreadLocal<>();// 存储数据public static void set(Str…...
DeepSeek在旅游行业的智能化革命
2025年,从贵州全域智慧旅游平台的行程规划革命,到黄山景区"AI旅行助手"的实时服务升级,再到宁夏"游宁AI"的全域智能导览,DeepSeek通过技术创新与行业场景的深度融合,正在重新定义"智慧旅游"的内涵。这场变革不仅体现在效率提升层面,更通过…...
说一下响应状态码有哪些?
HTTP响应状态码分类(RFC 7231标准) 1. 1xx(信息类) 临时响应,表示请求已被接收,需要继续处理 100 Continue:客户端应继续发送请求体 101 Switching Protocols:服务器同意升级协议(如WebSocket) 102 Processing(WebDAV):服务器正在处理但未完成 2. 2xx(成功类)…...
ABAP实战案例--获取当前数据由哪个用户锁住
1、业务场景: A用户正在打开订单,订单已上锁;B用户打开时只允许查看并提醒由哪个用户正在操作该笔订单。 2、函数使用:ENQUEUE_READ 代码示例: DATA:LV_MESSAGE TYPE SY-MSGV1,LV_UNAME TYPE UNAME.DATA:LV_GARG …...
CSS 选择器入门
一、CSS 选择器基础:快速掌握核心概念 什么是选择器? CSS 选择器就像 “网页元素的遥控器”,用于定位 HTML 中的特定元素并应用样式。 /* 结构:选择器 { 属性: 值; } */ p { color: red; } /* 选择所有<p>元素,…...
【深度学习新浪潮】如何入门人工智能?
入门人工智能(AI)需要结合数学基础、编程技能、机器学习理论和实践项目,逐步深入。以下是一个系统的学习路径,适合零基础或初学者参考: 一、打好基础:数学与编程 1. 数学基础(关键) AI的核心依赖数学,尤其是以下领域: 线性代数:向量、矩阵运算、特征分解等(用于…...
软件工程第六章-详细设计
文章目录 程序流程图PAD图N-S图(盒图)流图根据PDL创建流图把程序流程图映射到流图 程序流程图 PAD图 N-S图(盒图) 流图 根据PDL创建流图 把程序流程图映射到流图...
Profinet转Modbus TCP协议转换技术,打通能耗监控‘最后一公里’
在工业自动化领域,Profinet与Modbus TCP是两种广泛使用的通讯协议。Profinet通常用于实时性要求较高的工业控制系统,而Modbus TCP则因其简单、开放的特性广泛应用于各类设备的通信。然而,由于两者在技术规范上的差异,直接的互联互…...
C++:因子问题
【描述】 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 【输入】 包括两个整数N、M。N不超过1,000,000。 【输出】 输出一个整数a,表示结果。如果某个案例中满足条件的正整数不存在,则在对应行输出-1 【样例…...
SAP系统的委外业务是什么?委外采购(标准委外)与工序外协的区别有哪些?
【SAP系统研究】 #SAP #委外 #外包 #代工 委外业务是很常见的业务类型。 企业生产过程中,会在自制生产之外,产生委外加工业务,也称之为外包或者代工。还有一些企业,自己只负责设计、市场等业务,而将生产加工环节交给其他公司。 一、委外产生的原因 有的企业由于环评、…...
小乌龟git中的推送账户、作者账户信息修改
文章目录 修改git文档作者信息修改git推送用户信息参考文献 修改git文档作者信息 小乌龟中的用户信息为:作者信息,并非推送用户。 上边用户信息,修改的是文件的作者信息。如果想要修改git服务中记录的推送用户信息需要修改推送用户信息。 …...
vue2.0 组件
个人简介 👨💻个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...
5月19日笔记
BGP的路由聚合 BGP(Border Gateway Protocol,边界网关协议)是互联网中用于在不同自治系统(AS)之间交换路由信息的一种协议。在BGP中,路由聚合是一种技术,它允许网络管理员通过减少路由表中冗余的…...
【SPIN】PROMELA并发编程(SPIN学习系列--3)
一、active与run:Promela的进程创建基石 在Promela语言中,**active和run**是构建并发模型的核心关键字,分别用于定义主动进程和动态创建被动进程: active proctype <进程名>() 作用:声明主动进程类型࿰…...
深入理解 Redisson 看门狗机制:保障分布式锁自动续期
在分布式系统的开发中,分布式锁是解决资源竞争、数据一致性问题的关键手段。Redisson 作为一个在 Java 领域广泛使用的 Redis 客户端框架,为我们提供了功能强大且易用的分布式锁实现。其中,看门狗(watchDog)机制更是 R…...
App 发布后才想起安全?iOS 后置混淆的实战方法与工具路线(含 Ipa Guard 应用体验)
作为一名 iOS 开发者,我们对“上线前打包”和“上线后复盘”都不会陌生。但坦白说,在忙完功能、优化、测试、提交审核这些流程之后,大多数人对“App 安全”只剩下一个念头:上线了,就算了吧。 然而,真正在 …...
k8s1.27集群部署mysql8.0双主双从
环境介绍: #节点分配 159m--->两个master,生产环境建议,一个master一个节点。 160n-->slave-0 161n-->slaves-0 #存储卷 pv-->放在节点上,没用nfs/云存储。hostpath方式存储。pv的资源分配1G,较小&#…...
C++经典库介绍
在 C 开发的漫长历程中,涌现出了许多经典的库,它们在不同的领域发挥着重要作用,极大地提升了 C 开发的效率和质量。下面为你介绍一些 C 开发中的经典库。 标准模板库(STL) STL 堪称 C 编程领域的基石,是每…...
树莓派系列教程第八弹:结合 ESP32-CAM 实现远程摄像头监控
在当今数字化时代,远程监控技术已经渗透到我们生活的方方面面。无论是家庭安防、远程办公,还是物联网设备的监控,能够随时随地查看摄像头的画面都显得尤为重要。今天,我们将带你走进一个充满创意和技术挑战的项目——利用树莓派和…...
AI人工智能写作平台:AnKo助力内容创作变革!
AI人工智能写作平台:AnKo助力内容创作变革! AI人工智能写作平台正改变内容创作方式。AnKo作为领先的AI人工智能写作平台,免费为用户提供强大创作支持。AnKo AI人工智能写作平台整合多模型技术,提升写作效率和质量。 AI人工智能写…...
学习黑客 PowerShell 详解
PowerShell 详解:管道、过滤和常用命令技术指南 🚀 作者: 海尔辛 | 发布时间: 2025-05-19 12:18:38 UTC 📋 目录 PowerShell 管道详解文本搜索与过滤结果限制与选择比较和条件操作符格式化输出对象操作与属性访问错误处理综合实例与最佳实…...
【QT】一个界面中嵌入其它界面(二)
以下是使用 QStackedWidget 实现动态切换界面的完整代码,包含详细的注释和实现步骤: 完整代码 1. 子界面类:Page1 和 Page2 首先创建两个简单的子界面类,用于嵌入到 QStackedWidget 中。 // Page1.h #ifndef PAGE1_H #define P…...
前端的面试笔记——HTMLJavaScript篇(二)前端页面性能检测
前端页面性能检测和判定是优化用户体验的核心环节,需要结合实验室数据(Lab Data)、现场数据(Field Data)和行业标准综合评估。以下是主流方法、工具及判定标准的详细解析: 一、性能检测的核心维度与指标 …...
FD+Mysql的Insert时的字段赋值乱码问题
方法一 FDQuery4.SQL.Text : INSERT INTO 信息表 (中心, 分组) values(:中心,:分组); FDQuery4.Params[0].DataType : ftWideString; //必须加这个数据类型的定义,否则会有乱码 FDQuery4.Params[1].DataType : ftWideString; //ftstring就不行,必须是…...
论坛系统(中-2)
软件开发 实现业务功能 个人中心 页面结构介绍 个人中心的页面结构分为三部分 1> 导航栏 2> 正文部分 3> 页脚部分 index.html 的页面结构 1> 导航栏 2> 正文部分 3> 页脚部分 获取用户信息 实现逻辑 ⽤⼾提交请求,服务器根据是否传⼊I…...
火山 RTC 引擎9 ----集成 appkey
一、集成 appkey 1、网易RTC 初始化过程 1)、添加头文件 实现互动直播 - 互动直播 2.0网易云信互动直播产品的基本功能包括音视频通话和连麦直播,当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间…...
Protobuf协议生成和使用
知识点一 利用protoc.exe编译器生成脚本文件 //1.打开cmd窗口 //2.进入protoc.exe所在文件夹(也可以直接将exe文件拖入cmd窗口中) //3.输入转换指令 //protoc.exe -I配置路径 --csharp_out输出路径 配置文件名 //注意&…...
2025年—ComfyUI_关于ComfyUI的零碎小知识
之前有个朋友问我要了一个软件安装包,我分享了网盘链接,过了会儿朋友说解压后点击安装一直提示失败,还发给我报错信息,我从没遇到过,也不知做何解,于是要了截图,看着不对劲,问其在哪…...
用 SamGeo 库实现遥感影像自动分割:从本地 TIFF 到 SHP/GeoJSON 的一站式处理(Python 脚本实现)
背景:地理空间数据处理的智能化转型与 SAM 模型的革新应用 在遥感测绘、城市规划、环境监测等领域,地理空间影像数据的自动化处理一直是提升效率的核心需求。传统的影像分割方法依赖人工标注或复杂的参数调优,难以应对海量卫星 / 无人机影像的快速分析;而栅格数据(如 Geo…...
Excel导入校验
校验监听器 /*** Excel 校验监听器* param <T>*/ public class AnalysisValidReadListener<T> extends AnalysisEventListener<T> {private static final Logger logger LoggerFactory.getLogger(AnalysisValidReadListener.class);private static final i…...
【批量图片查找】在电脑上如何根据文件名清单一次性查找多张图片并复制到指定文件夹,基于Python的解决方案
一、应用场景 这个工具适用于以下场景: 设计师需要从大量素材中筛选特定图片复制并保存摄影师需要根据文件名批量整理照片查找筛选复制电商运营人员需要从产品库中提取特定商品图片复制到指定文件夹数据分析师需要批量收集特定图片复制保存用于处理任何需要从大量图…...
湖北理元理律师事务所观察:债务服务中的“倾听者价值”
在债务纠纷解决过程中,法律专业能力与心理支持同样重要。调研显示,72%的债务人在咨询初期存在“隐瞒真实负债”“抗拒沟通”等行为,直接影响方案有效性。湖北理元理律师事务所通过服务模式创新,尝试破解这一难题。 建立信任的三大…...
GPT-4.1特点?如何使用GPT-4.1模型,GPT-4.1编码和图像理解能力实例展示
几天前,OpenAI在 API 中推出了三个新模型:GPT-4.1、GPT-4.1 mini 和 GPT-4.1 nano。这些模型的性能全面超越 GPT-4o 和 GPT-4o mini(感觉这个GPT-4.1就是GPT-4o的升级迭代版本),主要在编码和指令跟踪方面均有显著提升。还拥有更大的上下文窗口…...
网络工程师案例分析
✅ Huawei Super VLAN 通信规则总结 🌐 基本结构 Super VLAN:逻辑 VLAN,承载三层网关(VLANIF 接口)。 Sub VLAN:实际的用户 VLAN,不配置 IP,仅做二层转发。 🔒 通信规…...
tcp/ip协议
OSI参考模型 应用层:OSI最高层。确定进程之间通信性质 协议:http:80,https:443,ftp:21,telnet:23,ssh:22,smtp:25,pop3 表示层:处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的消息可被另一系统的应用层读出,数据压缩和加…...
小红书的视频怎么保存没有水印(方法分享)
你是不是也经常在小红书上刷到超赞的旅行vlog、美妆教程或美食探店视频,想保存下来慢慢看,却发现下载后总有烦人的水印?别急!今天教你一招,3秒轻松保存无水印高清视频,简单又实用! 为什么需要无…...
RK3568解码1080P视频时遇到系统崩溃内核挂掉的解决方案
接上篇rk3568。 实际使用 rock_mpp库硬解码时,会遇到解码1080P视频整个系统卡死,内核崩溃的问题。 以下是内核崩溃的日志,下面这句是典型的内核某块驱动挂掉的信息。 [ 292.469580] Unable to handle kernel NULL pointer dereference at…...