当前位置: 首页 > news >正文

使用JDK的数据校验和Spring的自定义注解校验前端传递参数的两种方法

第一种:JDK的数据校验注解

    @PostMapping("/test")public String test(QueryParam param, @RequestHeader(value = "App_key") String App_key,@RequestHeader(value = "App_secret") String App_secret) throws IOException {param.setApp_key(App_key);param.setApp_secret(App_secret);return service.test(param);}
@Data
public class QueryParam {private String url;private String App_key;private String App_secret;
}

QueryParam 里面的 url 为必传参数,当前端没有传递的时候,我需要报错提示前端,需要怎么做呢?

  1. 在QueryParam 里面的 url 字段上加上JDK的 NotBlank 注解
@Data
public class QueryParam {@NotBlank(message = "url参数不能为空")private String url;private String App_key;private String App_secret;
}
  1. 在接口的 QueryParam 参数前面加上 @Valid 注解
    @PostMapping("/test")public String test(@Valid QueryParam param, @RequestHeader(value = "App_key") String App_key,@RequestHeader(value = "App_secret") String App_secret) throws IOException {param.setApp_key(App_key);param.setApp_secret(App_secret);return service.test(param);}
  1. 在全局异常控制器中获取到 @NotBlank 注解上的描述信息,并返回给前端。
package com.tyler.web.exception;/*** 全局异常处理器*/
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 方法参数校验失败*/@ExceptionHandler(MethodArgumentNotValidException.class)public Result<Object> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {e.printStackTrace();String errorMessage = e.getBindingResult().getFieldErrors().stream().map(FieldError::getDefaultMessage) // 获取注解中定义的 message.findFirst().orElse("参数校验错误");return Result.fail(400, errorMessage, e.getMessage());}
}

这样写完之后就可以开启校验了。返回给前端的效果如下:

{"code": 400,"flag": false,"desc": "url参数不能为空","cause": "Validation failed for argument [0] in public java.lang.String com.yxai.web.controller.transfer.TransferController.entityExtraction(com.yxai.common.params.QueryParam,byte[],java.lang.String,java.lang.String) throws java.io.IOException: [Field error in object 'queryParam' on field 'url': rejected value [null]; codes [NotBlank.queryParam.url,NotBlank.url,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [queryParam.url,url]; arguments []; default message [url]]; default message [url参数不能为空]] ","traceId": "3806dae5-d8bc-48b0-8164-b947483c83e1","data": null
}

第二种:使用Spring的自定义注解校验

现在我想对接口上的 App_key 和 App_secret 做校验,这两个 header 也是必传字段,我需要怎么做呢?

在 Spring Boot 里可以借助@Validated注解和自定义校验注解达成对请求头参数的校验。当用户未传递App_key和App_secret时,就会给出相应的报错提示。

下面是具体的实现步骤与代码示例:

1. 自定义校验注解

先创建自定义的校验注解,用来校验请求头参数是否为空。

import com.tyler.web.utils.validator.NotEmptyValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;import static java.lang.annotation.ElementType.*;// 自定义注解,用于校验字符串是否为空
@Target({METHOD,FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = NotEmptyValidator.class)
public @interface NotEmpty {String message() default "该参数为必传参数";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}

2. 实现校验逻辑

接着实现校验注解对应的校验器。

import com.tyler.web.annotation.NotEmpty;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;// 自定义注解的校验器
public class NotEmptyValidator implements ConstraintValidator<NotEmpty, String> {@Overridepublic void initialize(NotEmpty constraintAnnotation) {}@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {return value != null && !value.isEmpty();}
}
  1. 在接口方法上使用校验注解

最后在接口方法的请求头参数上运用自定义的校验注解。

    @PostMapping("/test")public String test(@Valid QueryParam param, @RequestHeader(value = "App_key") @NotEmpty(message = "App_key为必传参数") String App_key,@RequestHeader(value = "App_secret") @NotEmpty(message = "App_secret为必传参数") String App_secret) throws IOException {param.setApp_key(App_key);param.setApp_secret(App_secret);return service.test(param);}

然后在前端试一下不传递 App_key 或 App_secret, 你会发现返回结果如下:

{"code": 200000,"flag": false,"desc": "系统异常","cause": "Required request header 'App_secret' for method parameter type String is not present","traceId": "0fb0ccb5-c2cb-4dfd-b4bf-030a0c18bc89","data": null
}

似乎我们写的代码没有生效。

这个问题在于 Spring 框架在执行自定义校验逻辑之前,就因为请求头缺失而抛出了异常。@RequestHeader注解默认要求参数必须存在,若缺失就会直接抛出异常,不会触发后续的自定义校验。

我们可以把@RequestHeader的required属性设为false,允许请求头缺失,之后再通过自定义校验注解进行检查。以下是修改后的代码:

    @PostMapping("/test")public String test(@Valid QueryParam param, @RequestHeader(value = "App_key", required = false) @NotEmpty(message = "App_key为必传参数") String App_key,@RequestHeader(value = "App_secret", required = false) @NotEmpty(message = "App_secret为必传参数") String App_secret) throws IOException {param.setApp_key(App_key);param.setApp_secret(App_secret);return service.test(param);}

修改点说明:

把@RequestHeader的required属性设置成false,这样即便请求头缺失,Spring 也不会立即抛出异常,而是会继续执行后续的自定义校验逻辑。当App_key或App_secret为空时,@NotEmpty注解会发挥作用,抛出相应的校验异常。

然后前端试一下不传递 App_secret, 会返回如下结果:

{"code": 200001,"flag": false,"desc": "未知异常","cause": "receiptCropAndRecogMulti.App_secret: App_secret为必传参数","traceId": "d6d83dfd-fd05-456e-a3de-ed5f180e3b07","data": null
}

但是我觉得这个返回结果不好看,我想要 desc 返回我定义的描述信息,怎么做呢?

当 App_secret 或 App_key 缺失的时候,代码会抛出 ConstraintViolationException 异常,所以我们需要在全局异常控制器里面捕捉该异常,然后对其进行处理即可。

package com.tyler.web.exception;/*** 全局异常处理器*/
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 方法参数校验失败*/@ExceptionHandler(MethodArgumentNotValidException.class)public Result<Object> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {e.printStackTrace();String errorMessage = e.getBindingResult().getFieldErrors().stream().map(FieldError::getDefaultMessage) // 获取注解中定义的 message.findFirst().orElse("参数校验错误");return Result.fail(400, errorMessage, e.getMessage());}/*** 自定义注解参数错误*/@ExceptionHandler(ConstraintViolationException.class)public Result<Object> handleBindException(ConstraintViolationException e) {e.printStackTrace();ConstraintViolation<?> violation = e.getConstraintViolations().iterator().next();return Result.fail(400, violation.getMessage(), e.getMessage());}
}

然后再请求一次,返回结果如下:

{"code": 400,"flag": false,"desc": "App_key为必传参数","cause": "entityExtraction.App_key: App_key为必传参数","traceId": "a4537203-3820-4442-9c35-e3a9f653c489","data": null
}

这就是我想要的效果了,到此本教程结束。

相关文章:

使用JDK的数据校验和Spring的自定义注解校验前端传递参数的两种方法

第一种&#xff1a;JDK的数据校验注解 PostMapping("/test")public String test(QueryParam param, RequestHeader(value "App_key") String App_key,RequestHeader(value "App_secret") String App_secret) throws IOException {param.setApp…...

JS错误处理的新方案 (不使用try-catch)

错误处理一直是JavaScript开发者需要认真对待的问题&#xff0c;传统的try-catch语法虽然简单直观&#xff0c;但在异步代码中使用时存在诸多限制。 try-catch的局限性 传统try-catch模式在现代JavaScript开发中面临的问题&#xff1a; 1. 异步错误捕获的缺陷 try-catch无法…...

前端实现商品放大镜效果(Vue3完整实现)

前端实现商品放大镜效果&#xff08;Vue3完整实现&#xff09; 前言 在电商类项目中&#xff0c;商品图片的细节展示至关重要。放大镜效果能显著提升用户体验&#xff0c;允许用户在不跳转页面的情况下查看高清细节。本文将基于Vue3实现一个高性能的放大镜组件&#xff0c;完整…...

redis未授权访问漏洞学习

一、Redis常见用途 1. Redis介绍 全称与起源: Redis全称Remote Dictionary Service(远程字典服务)&#xff0c;最初由antirez在2009年开发&#xff0c;用于解决网站访问记录统计的性能问题。发展历程: 从最初仅支持列表功能的内存数据库&#xff0c;经过十余年发展已支持多种…...

阿里qiankun微服务搭建

主服务 chat vue3 ts vite 子服务 ppt react 18 vite 子服务 agent 主服务 npm i vite-plugin-qiankun mian.ts import ./style/base.scss import virtual:svg-icons-register import { createApp } from vue import { createPinia } from piniaimport App from ./App.vue im…...

【CodeSprint】第二章-2.1 简单模拟

第二章 2.1 简单模拟 ✏️ 关于专栏&#xff1a;专栏用于记录 prepare for the coding test。 1. 简单模拟 简单模拟题目不需要复杂算法&#xff0c;直接按照题意一步步模拟即可。 1.1 促销计算 题目描述 某百货公司为了促销&#xff0c;采用购物打折的优惠方法&#xff1a…...

Golang实现函数默认参数

golang原生不支持默认参数 在日常开发中&#xff0c;我们有时候需要使用默认设置&#xff0c;但有时候需要提供自定义设置 结构体/类&#xff0c;在Java我们可以使用无参、有参构造函数来实现&#xff0c;在PHP中我们也可以实现(如 public function xxx($isCName false, $sec…...

【Python Web开发】03-HTTP协议

文章目录 1. HTTP协议基础1.1 请求-响应模型1.2 请求方法1.3 请求和响应结构1.4 状态码 2. Python 发送 HTTP 请求2.1 urllib库2.2 requests 库 3. Python 构建 HTTP 服务器3.1 http.server模块3.2 Flask 框架 4. HTTP 协议的安全问题5. 缓存和性能优化 HTTP&#xff08;Hypert…...

提高营销活动ROI:大数据驱动的精准决策

提高营销活动ROI:大数据驱动的精准决策 大家好,我是Echo_Wish。今天我们来聊聊如何通过大数据来提高营销活动的ROI(投资回报率)。我们都知道,随着市场的日益竞争,营销的成本不断增加,如何在这片红海中脱颖而出,不仅需要精准的营销策略,还需要依靠先进的技术,尤其是大…...

前端excel导出

在数据可视化和管理日益重要的今天&#xff0c;前端实现 Excel 导出功能已经成为众多项目中的刚需。 一、Excel 导出的常见场景​ 数据报表导出&#xff1a;在企业管理系统、数据分析平台中&#xff0c;用户经常需要将系统中的数据以 Excel 表格的形式导出&#xff0c;便于离…...

pymsql(SQL注入与防SQL注入)

SQL注入&#xff1a; import pymysql# 创建数据库连接 返回一个对象 conn pymysql.connect(host"localhost", # MySQL服务器地址 本地地址 127.0.0.1user"root", # 用户名 &#xff08;账号&#xff09;password"155480", # 密码database&qu…...

基于Springboot + vue + 爬虫实现的高考志愿智能推荐系统

项目描述 本系统包含管理员和学生两个角色。 管理员角色&#xff1a; 个人中心管理&#xff1a;管理员可以管理自己的个人信息。 高校信息管理&#xff1a;管理员可以查询、添加或删除高校信息&#xff0c;并查看高校详细信息。 学生管理&#xff1a;管理员可以查询、添加或…...

delphi使用sqlite3

看了一下delphi调用sqlite3最新版本的调用&#xff0c;网上说的都很片面&#xff0c;也没有完整的资料了。 我自己研究了一下&#xff0c;分享出来。 在调用demo中&#xff0c;官方也给了一个demo但是功能很少&#xff0c;没有参考价值。 1.定义&#xff1a; 首先把sqlite3…...

高压开关柜局部放电信号分析系统

高压开关柜局部放电信号分析系统 - 开发笔记 1. 项目概述 这个项目是我在2025年实现的高压开关柜局部放电信号分析系统&#xff0c;目的是通过采集分析局部放电信号&#xff0c;判断设备的工作状态和潜在故障。系统包含从信号模拟生成、特征提取、到深度学习模型训练的全流程…...

ai环境conda带torch整体迁移。

conda打包好的GPU版torch环境&#xff0c;其实很简单&#xff0c;就是conda装好的torch环境env整体打包&#xff0c;然后到新机器上再解压到env路径。 打开搭建好的环境&#xff0c;找自己路径&#xff0c;我默认的是这个。 cd/root/anaconda3/envs/ 然后整个文件夹打包。tar -…...

电价单位解析与用电设备耗电成本计算

一、电价单位 元/kWh 的解析 定义&#xff1a; 元/kWh 表示每千瓦时电能的费用&#xff0c;即1度电的价格。例如&#xff0c;若电价为0.5元/kWh&#xff0c;则使用1千瓦的电器1小时需支付0.5元。 电价构成&#xff1a; 中国销售电价由四部分组成&#xff1a; 上网电价&#xf…...

辛格迪客户案例 | 华道生物细胞治疗生产及追溯项目(CGTS)

01 华道&#xff08;上海&#xff09;生物医药有限公司&#xff1a;细胞治疗领域的创新先锋 华道&#xff08;上海&#xff09;生物医药有限公司&#xff08;以下简称“华道生物”&#xff09;是一家专注于细胞治疗技术研发与应用的创新型企业&#xff0c;尤其在CAR-T细胞免疫…...

C++(初阶)(十三)——继承

继承 继承概念示例 定义格式 继承和访问方式继承方式访问方式实例 继承类模板基类和派生类之间的转换继承中的作用域隐藏规则选择题 派生类的默认成员函数默认成员函数派生类中的实现 实现一个不能被继承的类继承与友元继承与静态成员多继承及其菱形继承问题虚继承多继承指针偏…...

S09-电机运行时间

感谢粉丝网友的支持&#xff0c;也欢迎你们的讨论和分享。昨天我们简单讨论了一下标准功能块的重要性&#xff0c;仅仅是拿电机块举了一个例子&#xff0c;有粉丝问能否把电机运行时间做到块里面&#xff0c;完善一下功能呢&#xff1f;那是绝对当然的100%可以的啊&#xff01;…...

大语言模型(LLMs)微调技术总结

文章目录 全面总结当前大语言模型&#xff08;LLM&#xff09;微调技术1. 引言2. 为什么需要微调&#xff1f;3. 微调技术分类概览4. 各种微调技术详细介绍4.1 基础微调方法4.1.1 有监督微调&#xff08;Supervised Fine-Tuning, SFT&#xff09;4.1.2 全参数微调&#xff08;F…...

python练习:求数字的阶乘

求数字的阶乘 eg:5的阶乘 54321 """ 求数字的阶乘 eg:5的阶乘 5*4*3*2*1 """count 1 for i in range(1,6):count count * iprint(count)运行结果&#xff1a;...

综合练习一

背景 某银行监管系统&#xff0c;需要设计并实现用户登入记录功能&#xff0c;每个用户登入系统时&#xff0c;系统自动记录登入用户的账户、登入时间、登入失败成功与否信息等&#xff0c;普通用户只能登入登出&#xff0c;管理员可以登入后查看日志及分析统计信息等。 用户…...

List--链表

一、链表 1.1 什么是List&#xff1f; 在C语言中&#xff0c;我们需要使用结构体struct来进行List(链表&#xff09;的实现&#xff1a; struct ListNode {DataType Data;//DataType是任意类型的变量定义struct ListNode* next;//指向下一个结点的指针变量 }; 与之前的vect…...

SpeedyAutoLoot

SpeedyAutoLoot自动拾取插件 SpeedyAutoLoot.lua local AutoLoot CreateFrame(Frame)SpeedyAutoLootDB SpeedyAutoLootDB or {} SpeedyAutoLootDB.global SpeedyAutoLootDB.global or {}local BACKPACK_CONTAINER BACKPACK_CONTAINER local LOOT_SLOT_CURRENCY LOOT_SLOT…...

编程日志4.23

栈的C顺序表实现 #include<iostream> #include<stdexcept> using namespace std; //模板声明&#xff0c;表明Stack类是一个通用的模板&#xff0c;可以用于存储任何类型的元素T template<typename T> //栈的声明 //Stack类的声明&#xff0c;表示一个栈的…...

打印所有字段

package com.volvo.midend.vehicle;import com.volvo.midend.vehicle.dto.out.vista.VistaDemoVO;import java.lang.reflect.Field;public class TestAllFiled {// 递归打印类的所有字段public static void printAllFields(Class<?> clazz, int indentLevel) {// 根据缩…...

4G FS800DTU上传图像至巴法云

目录 1 前言 2 准备工作 2.1 硬件准备 2.2 软件环境 2.3 硬件连接 3 实现方案 4 巴法云平台账号创建与设备联网配置 4.1 创建账号 4.2 进入巴法云 4.3 获取联网参数 4.4 连接巴法云 5 拍照上传至巴法云 6 ESP32-CAM程序 7 总结 1 前言 巴法云(Bemfa Cloud)是一个…...

一键叠图工具

写了个拼图小工具 供大家测试 APP安卓的 测试下载 点击下载 百度网盘: https://pan.baidu.com/s/17B5KVIMMZlOAsF7a16KNug?pwd1234 提取码: 1234 拼图步骤&#xff1a;选图--选择变亮或变暗--滤镜发色 在正式开始之前&#xff0c;我们来定义几条原则先&#xff08;熟悉…...

【OSG学习笔记】Day 12: 回调机制——动态更新场景

UpdateCallback 在OpenSceneGraph&#xff08;OSG&#xff09;里&#xff0c;UpdateCallback是用来动态更新场景的关键机制。 借助UpdateCallback&#xff0c;你能够实现节点的动画效果&#xff0c;像旋转、位移等。 NodeCallback osg::NodeCallback 是一个更通用的回调类&…...

快速上手Prism WPF 工程

1、Prism 介绍 ​定位​&#xff1a; Prism 是 ​微软推出的框架&#xff0c;专为构建 ​模块化、可维护的复合式应用程序​ 设计&#xff0c;主要支持 WPF、Xamarin.Forms、UWP 等平台。​核心功能​&#xff1a; ​模块化开发​&#xff1a;将应用拆分为独立模块&#xff0c…...

Dockerfile讲解与示例汇总

容器化技术已经成为应用开发和部署的标准方式,而Docker作为其中的佼佼者,以其轻量、高效、可移植的特性,深受开发者和运维人员的喜爱。本文将从实用角度出发,分享各类常用服务的Docker部署脚本与最佳实践,希望能帮助各位在容器化之路上少走弯路。 无论你是刚接触Docker的…...

MATLAB Coder代码生成(工业部署)——MATLAB技巧

MATLAB Coder是MATLAB生态中用于将算法代码转换为C/C++代码的核心工具,其生成的代码可直接部署到嵌入式硬件、工业控制器或企业级应用中,尤其在智能制造、物联网和实时控制领域具有广泛应用。 通过 MATLAB Coder,可以轻松地将 MATLAB 代码转换为高效的 C/C++ 代码,适用于嵌…...

3、CMake语法:制作和使用动态库和静态库

动态库和静态库 1 动态库和静态库简介1.1 静态库静态库文件类型.lib 文件.pdb 文件 1.2 动态库动态库文件类型 1.3 总结 2. 制作和使用静态库2.1 CMake指定输出的路径 2.2 VS利用第三方库编译静态库 2.3 使用静态库CMake链接静态库VS链接静态库 3. 制作和使用动态库3.1 CMake指…...

使用双端队列deque模拟栈stack

使用双端队列deque模拟栈stack 今天的内容有点简单~ 众所周知&#x1f913;&#x1f446;&#xff0c;栈作为一个先进后出的结构&#xff0c;在计算机的世界确实能够发挥很多的作用。 而我们C祖师爷本贾尼是第一批把这个结构作为实实在在的容器做进std的人~ 那为了更好的了解…...

Spring系列四:AOP切面编程第三部分

&#x1f40b;AOP-JoinPoint 1.通过JoinPoint可以获取到调用方法的签名 2.其他常用方法 ●代码实现 1.com.zzw.spring.aop.aspectj.SmartAnimalAspect Aspect //表示是一个切面类 Component //会将SmartAnimalAspect注入到容器 public class SmartAnimalAspect {//给Car配置…...

为什么使用ThreadLocal后要调用remove()方法呢?

ThreadLocalMap中包含一个数组&#xff0c;每个节点对应的类名叫Entry&#xff0c;这个类继承WeakReference<ThreadLocal<?>>&#xff0c;entry中有两个属性&#xff1a;key和value。特别需要指出的是key来自于父类中的threadLocal对象。 为了避免内存泄露&#…...

如何在idea 中写spark程序

在 IntelliJ IDEA 中编写 Spark 程序可以通过以下步骤进行&#xff1a; 1. **安装 Scala 插件**&#xff1a;首先确保已经安装了 Scala 插件。在 IntelliJ IDEA 中选择 File -> Settings -> Plugins -> 搜索 Scala -> 安装插件。 2. **创建新项目**&#xff1a;在…...

国产全兼容ADS131E08芯片---LHA7878

LHA787X是一系列多通道同步采样、24位A-∑模数转换器(ADC)&#xff0c;内置可编程增益放大器(PGA)、内部基准和振荡器。凭借ADC的宽动态范围、可扩展数据传输速率以及内部故障检测监测计&#xff0c;LHA787X受到工业电源监测和保护以及测试和测量应用的青睐。真正的高阻抗输入支…...

免费LUT网站

FREE LUTs | Color Lookup Tables - Presetpro.com...

ICH CTD中ISS的关键内容与作用

1. ISS在ICH CTD中的定位 1.1 模块2与模块5的分工 1.1.1 模块2:整体总结的全局视角 模块2的2.7.4 ISS对所有临床研究安全性数据整合分析,涵盖I-III期试验,提供药物安全性全局视角,确保其在目标人群中的可接受性。 ISS需与风险控制措施关联,如说明书警示、风险管理计划,…...

Ocelot的应用案例

搭建3个项目&#xff0c;分别是OcelotDemo、ServerApi1和ServerApi2这3个项目。访问都是通过OcelotDemo进行轮训转发。 代码案例链接&#xff1a;https://download.csdn.net/download/ly1h1/90715035 1.架构图 2.解决方案结构 3.步骤一&#xff0c;添加Nuget包 4.步骤二&…...

OpenCV VC编译版本

vc12 Visual Studio 2013 vc14 Visual Studio 2015 vc15 Visual Studio 2017 vc16 Visual Studio 2019 vc17 Visual Studio 2022 opencv支持情况&#xff1a; OpenCV2.4.10 支持 VS2010&#xff0c;VS2012&#xff0c;VS2013 &#xff08;x64&#xff0c;x86&#xff09; …...

测试用例介绍

文章目录 一、测试用例基本概念1.1 测试用例基本要素 二、测试用例的设计方法2.1 基于需求的设计方法2.2 等价类2.3 边界值2.4 错误猜测法2.6 场景设计法2.7 因果图2.5 正交排列 三、综合&#xff1a;根据某个场景去设计测试用例&#xff08;万能公式&#xff09;四、如何使用F…...

Vue 2 中 Vue 实例对象(vm)的所有核心方法,包含完整示例、使用说明及对比表格

以下是 Vue 2 中 Vue 实例对象&#xff08;vm&#xff09;的所有核心方法&#xff0c;包含完整示例、使用说明及对比表格&#xff1a; 1. $mount() 作用&#xff1a;手动挂载 Vue 实例到 DOM 元素 参数&#xff1a; element&#xff1a;DOM 元素或选择器字符串&#xff08;可…...

大模型的scaling laws:Scaling Laws for Neural Language Models

一、TL&#xff1b;DR Loss与模型size、数据集大小以及用于训练的计算量呈幂律关系其他架构细节&#xff0c;如网络宽度或深度&#xff0c;在较宽范围内影响极小简单的公式可以描述过拟合与模型/数据集大小的依赖关系&#xff0c;以及训练速度与模型大小的依赖关系作用&#x…...

【Docker】使用 jq 管理镜像源

国内访问 Docker Hub 速度较慢&#xff0c;通过配置国内镜像加速器&#xff0c;可显著加快拉取镜像速度。使用 jq 操作 /etc/docker/daemon.json 的 registry-mirrors 字段&#xff0c;可避免手动编辑带来的格式错误&#xff0c;并在添加、替换、删除等场景下保持高效与安全。 …...

青年座谈会的读书汇报

今天&#xff0c;单位组织了一个五四青年座谈会&#xff0c;我们室由于大家都在出差忙之类的&#xff0c;我必须要参加&#xff0c;还要我做一个汇报&#xff0c;我一新来的还没深入到研发工作中&#xff0c;于是决定写了一篇简单的读书笔记&#xff0c;再用deepseek润色一下&a…...

leetcode刷题日记——两数相加

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 通过两个循环将 l1, l2存储的数字读出&#xff0c;然后求和&#xff0c;再将结果存储链表中由此发了一个问题&#xff0c;结果溢出&#xff0c;如果使用更大的 long 类型&#xff0c;后续不出所料&#xff0c;仍然超出所以只能…...

使用腾讯地图检索地点

最近需求又多了&#xff0c;现在需要使用腾讯地图检索功能&#xff0c;需要经纬度返给商户后端 效果图&#xff1a; 把地图写成组件 现在components创建map/Getpoint.vue 代码如下 <template><div class"getpoint-container"><div><div id&…...

VINS-FUSION:跑通手机录制数据

文章目录 &#x1f4da;简介&#x1f680;手机录制数据&#x1f680;跑通数据&#x1f527;启动rviz&#x1f527;启动配置&#x1f527;播放rosbag&#x1f3af;跑通结果 &#x1f4da;简介 利用智能手机的 摄像头IMU 采集数据&#xff0c;并在 VINS-Fusion&#xff08;视觉惯…...