java 异常验证框架validation,全局异常处理,请求验证
1、依赖
异常验证框架validation<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring-boot.version}</version></dependency>
当鼠标放在依赖上,依赖文字会变蓝
@NotNull@NotNullprivate String content;@Validated:标识参数不能为空public Integer register(@RequestBody @Validated UserRegDTO user) {}
全局接口异常处理:@ControllerAdvice和@ExceptionHandler
//@ControllerAdvice//能捕获异常,但是不能输出给客户端
@RestControllerAdvice//会自动将错误包装成json返回给客户端
package cn.tedu._05weibo.common.ex;/**** 全局异常处理器***/import cn.tedu._05weibo.common.reponse.JsonResult;
import cn.tedu._05weibo.common.reponse.ServiceCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.Set;@Slf4j
//@ControllerAdvice//能捕获异常,但是不能输出给客户端
@RestControllerAdvice//会自动将错误包装成json返回给客户端
public class GlobalExceptionHandler {@ExceptionHandlerpublic JsonResult handMethodArgumentNotValidException(MethodArgumentNotValidException ex){StringBuffer stringBuffer=new StringBuffer();for (FieldError fieldError : ex.getFieldErrors()) {stringBuffer.append(fieldError.getDefaultMessage());}// @NotNull(message = "内容不能为空") 获取错误消息,与之对应System.out.println("全局捕获验证异常:"+stringBuffer);return new JsonResult(ServiceCodeEnum.PARAM_ERROR.getCode(),stringBuffer.toString());}@ExceptionHandlerpublic JsonResult handConstraintViolationException(ConstraintViolationException exception){log.error("捕获非封装异常:"+exception.getMessage());StringBuffer stringBuffer=new StringBuffer();Set<ConstraintViolation<?>> constraintViolations = exception.getConstraintViolations();for (ConstraintViolation<?> constraintViolation : constraintViolations) {stringBuffer.append(constraintViolation.getMessage());}
// 使接口报错和java处理的异常同步return new JsonResult(ServiceCodeEnum.SERVICE_ERROR.getCode(),stringBuffer.toString());}/*** 运行时抛出异常,都不会崩溃,只会在这里处理错误日志* 不会抛出500的异常* */@ExceptionHandlerpublic JsonResult handRuntimeException(RuntimeException exception){log.error("捕获运行时异常:"+exception.getMessage());return new JsonResult(ServiceCodeEnum.SERVICE_ERROR);}/*** 捕获java中异常,不会抛出500的异常** Exception的父类是Throwable* Error的父类也是Throwable* */@ExceptionHandlerpublic JsonResult handThrowable(Throwable throwable){log.error("捕获所有异常:"+throwable.getMessage());return new JsonResult(ServiceCodeEnum.SERVICE_ERROR);}
}
JsonResult
package cn.tedu._05weibo.common.reponse;import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;/*** 统一接口返回数据* */
//统一接口返回数据@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class JsonResult {Integer code;String msg;
// 相应数据Object data;public JsonResult() {}public JsonResult(ServiceCodeEnum serviceCodeEnum){this.code=serviceCodeEnum.getCode();this.msg=serviceCodeEnum.getMsg();}public JsonResult(Integer code,String msg){this.code=code;this.msg=msg;}public JsonResult(ServiceCodeEnum serviceCodeEnum, Object data){this.code=serviceCodeEnum.getCode();this.msg=serviceCodeEnum.getMsg();this.data=data;}public JsonResult test(){return new JsonResult(ServiceCodeEnum.SUCCESS);}
}
ServiceCodeEnum
@Getter//生成get方法
@AllArgsConstructor//构造参数
public enum ServiceCodeEnum {// 构造方法SUCCESS(1,"OK"),PARAM_ERROR(2,"参数错误"),SERVICE_ERROR(3,"网络错误,请检查你的网络"),USER_NAME_OR_PASSWORD_ERROR_CODE(300,"用户名或密码错误"),NO_LOGIN(200,"未登录");private Integer code;private String msg;
}
ValidationConfig
@Configuration
public class ValidationConfig {// 设置全局异常,是快速失败,默认为true
// 为false时,会收集所有错误@Beanpublic javax.validation.Validator validator() {return Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();}
}
@NotNull(message = "内容不能为空"):判断字符串,是否为null ,tag:null
@NotEmpty //什么都没有字符串
即能验证字符串是否为null,也能验证字符串为空,例:"content": null、"content": ""
@NotBlank//空白:“ ”
@NotBlank = @NotNull + @NotEmpty,且也可以验证:"content": " "
@Size(min=2,max = 6,message = "标签长度为2-6")
@Range(min = 2,max = 6,message = "大小在2-6之内")
"".substring(0,10);这句会报错,但是,因为有运行时异常处理,就不会报错
/*** 运行时抛出异常,都不会崩溃,只会在这里处理错误日志* */@ExceptionHandlerpublic JsonResult handRuntimeException(RuntimeException exception){log.error("捕获运行时异常:"+exception.getMessage());return new JsonResult(ServiceCodeEnum.SERVICE_ERROR);}
自定义内部状态码
错误码:10300-10399
订单模块:10100-10199
支付模块10500-10599
@Validated 表示为验证对象
package cn.tedu._05weibo.controller;import cn.tedu._05weibo.mapper.UserMapper;
import cn.tedu._05weibo.pojo.dto.UserLoginDTO;
import cn.tedu._05weibo.pojo.dto.UserRegDTO;
import cn.tedu._05weibo.pojo.entity.User;
import cn.tedu._05weibo.pojo.vo.UserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpSession;
import java.util.Date;@Slf4j
@RestController
@RequestMapping(value = "/v1/users")
@Api(tags = "用户相关接口")
public class UserController {@Autowired UserMapper userMapper;
// 注册@PostMapping(value = "reg")@ApiOperation("注册功能")public Integer register(@RequestBody @Validated UserRegDTO user) {// soutpSystem.out.println("UserController.register:"+user);UserVo userVo = userMapper.selectByUsername(user.getUsername());if(userVo!=null) {return 2;}User u = new User();BeanUtils.copyProperties(user,u);u.setCreated(new Date());userMapper.insertUser(u);return 1;}// HttpSession:做会话@PostMapping(value = "login")public int login(@RequestBody UserLoginDTO user, HttpSession session) {UserVo userVo = userMapper.selectByUsername(user.getUsername());System.out.println("user = " + user);log.info("myMethod方法被执行");log.debug("");if(userVo==null) {return 3;}if(!userVo.getPassword().equals(user.getPassword())) {return 2;}session.setAttribute("user", userVo);return 1;}@GetMapping(value = "currentUser")public UserVo currentUser(HttpSession session){UserVo userVo = (UserVo) session.getAttribute("user");return userVo;}@GetMapping(value = "logout")public void logout(HttpSession session){session.removeAttribute("user");System.out.println("退出成功" );}
}
相关文章:
java 异常验证框架validation,全局异常处理,请求验证
1、依赖 异常验证框架validation<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring-boot.version}</version></dependency> 当鼠标放在依…...
如何使用VH6501进行CAN采样点测试
Vector 的 VH6501 是一种专为 CAN 和 CAN FD 网络设计的干扰测试设备,集成了干扰生成和 CANoe 网络接口功能,支持通过 CAPL 脚本实现测试自动化。 硬件规格如下: VH6501采样点测试原理是:干扰一帧报文中某一位的采样点附近的总线电…...
QT6 源(113)篇二:阅读与注释工具栏 QToolBar,给出源码
(9)本源码来自于头文件 qtoolbar . h : #ifndef QDYNAMICTOOLBAR_H #define QDYNAMICTOOLBAR_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtGui/qaction.h> #include <QtWidgets/qwidget.h>QT_REQUIRE_CONFIG(to…...
编程日志5.13
邻接表的基础代码 #include<iostream> using namespace std; //邻接表的类声明 class Graph {private: //结构体EdgeNode表示图中的边结点,包含顶点vertex、权重weight和指向下一个边结点的指针next struct EdgeNode { int vertex; int weight; …...
Java 08集合
集合 Collection 接口,不可以创建对象add clear remove contains(Object obj);判断是否存在 isEmpty 空返回为true sizeArrayList Collection<String> cnew ArraryList<>(); 以多态的方法创建集合对象,调用单列集合中的共有方法 编译看…...
CSS 背景全解析:从基础属性到视觉魔法
CSS 背景属性用于定义HTML元素的背景。 CSS 属性定义背景效果: background-color background-image background-repeat background-attachment background-position 一、background-color:背景颜色 作用:设置元素的背景色,支持所有合法…...
2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++/C/GO六种语言最佳实现
华为OD全流程解析,备考攻略 快捷目录 华为OD全流程解析,备考攻略一、什么是华为OD?二、什么是华为OD机试?三、华为OD面试流程四、华为OD薪资待遇及职级体系五、ABCDE卷类型及特点六、题型与考点七、机试备考策略八、薪资与转正九、…...
中小型制造业信息化战略规划指南
1 引言 在当今技术飞速发展和全球竞争日趋激烈的时代,信息化建设对于中小型制造企业(SME)而言,已不再是可有可无的选项,而是关乎生存、发展和保持持续竞争力的核心要素。在数字化浪潮席卷全球的背景下,制造…...
PowerBI 矩阵实现动态行内容(如前后销售数据)统计数据,以及过滤同时为0的数据
我们有一张活动表 和 一张销售表 我们想实现如下的效果,当选择某个活动时,显示活动前后3天的销售对比图,如下: 实现方法: 1.新建一个表,用于显示列: 2.新建一个度量值,用SELECTEDVA…...
在QT中栅格布局里套非栅格布局的布局会出现父布局缩放子布局不跟随的问题
这个是 Qt Designer 设计界面中的一个“常见陷阱”。 🧠 结论先说: 在 Qt Designer 中使用栅格布局(Grid Layout)嵌套其他栅格布局,一般不会出问题,但如果嵌套的是水平布局(HBox)或垂…...
Pydantic数据验证实战指南:让Python应用更健壮与智能
导读:在日益复杂的数据驱动开发环境中,如何高效、安全地处理和验证数据成为每位Python开发者面临的关键挑战。本文全面解析了Pydantic这一革命性数据验证库,展示了它如何通过声明式API和类型提示系统,彻底改变Python数据处理模式。…...
深度解析 HDFS与Hive的关系
1. HDFS 和 Hive 如何协同 我们将从 HDFS(Hadoop Distributed File System) 的架构入手,深入剖析其核心组成、工作机制、内部流程与高可用机制。然后详细阐述 Hive 与 HDFS 的关系,从执行流程、元数据管理、文件读写、计算耦合等…...
ArrayList源码分析
1. ArrayList默认初始化容量 首先编写一个简单的初始化ArrayList的代码 List<String> li new ArrayList<>();然后进入ArrayList中,在无参数构造方法中可以查看到上面的绿色注释中写了构造一个空的集合并且初始化容量为10。接下来继续查看源码&#x…...
文件操作和IO-2 使用Java操作文件
Java操作文件的API 1、针对文件系统的操作。包括但不限于:创建文件、删除文件、重命名文件、列出目录内容…… 2、针对文件内容的操作。读文件/写文件 Java中针对文件的操作,使用File类来进行操作,这个类被存储在java.io这个包里面。 i&a…...
day 31
文件的拆分 1. 项目核心代码组织 src/(source的缩写):存放项目的核心源代码。 2. 配置文件管理 config/ 目录:集中存放项目的配置文件,方便管理和切换不同环境(开发、测试、生产)的配置。 …...
基于Python批量删除文件和批量增加文件
一、为什么写这么一个程序 其实原因也是很简单的,我去网上下载了一个文件夹,里面太多别人的文件了,我不喜欢,所以我就写了这么一个代码。 二、安装Python和vscode 先安装Python在安装vscode Python安装 vscode的安装 三、源码…...
【信息系统项目管理师】第12章:项目质量管理 - 26个经典题目及详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...
ShenNiusModularity项目源码学习(27:ShenNius.Admin.Mvc项目分析-12)
订单列表页面用于浏览、检索、维护商城模块的订单信息。订单列表页面的后台控制器类OrderController位于ShenNius.Admin.Mvc项目的Areas\Shop\Controllers内,页面文件位于同项目的Areas\Shop\Views\Order内,其中Index.cshtml页面为主页面,Det…...
(T_T),不小心删掉RabbitMQ配置文件数据库及如何恢复
一、不小心删除 今天是2025年5月15日,非常沉重的一天,就在今早8点左右的时候我打算继续做我的毕业设计,由于开机的过程十分缓慢(之前没有),加上刚开机电脑有卡死的迹象,再加上昨天晚上关电脑前…...
【Python装饰器深度解析】从语法糖到元编程实战
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现案例1:基础计时装饰器案…...
操作系统学习笔记第5章 (竟成)
目录 第 5 章 输入 / 输出 (I/O) 管理 5.1 I/O 管理基础 5.1.1 I/O 设备 1.I/O 设备的基本概念 2.I/O 设备的分类 3.I/O 接口 4.I/O 端口 (1) I/O 端口的概念 (2) I/O 端口的编址 ① 独立编址方式 ② 统一编址方式 5.1.2 I/O 控制方式 1. 程序查询方式 2. 程序中断方式 3. DMA …...
【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)
目录 一、DCGMI 概述与应用场景 二、Ubuntu 22.04 系统准备 2.1 系统要求 2.2 环境清理(可选) 三、DCGMI 安装步骤(详细图解) 3.1 安装流程总览 3.2 分步操作指南 3.2.1 系统更新与依赖安装 3.2.2 添加 NVIDIA 官方仓库 3.2.3 安装数据中心驱动与 DCGM 3.2.4 服务…...
C# 使用 OpenCV 基础
一、C#安装OpenCV 安装上面两个模块 二、使用 导入 using OpenCvSharp;加载图片 // 导入图片 Mat image Cv2.ImRead("C:\x5.bmp"); // 拷贝 Mat image2 image.Clone();// 打开窗口 Cv2.NamedWindow("image", WindowFlags.AutoSize); // 显示图片 Cv2…...
如何解决全局或静态变量被修改的bug
问题卡死 程序原来设置Firware name 时N32G475,在程序运行时,程序崩溃,发现输出的固件名称没有了,这里说明固件名称被程序修改了 程序在开机时都是对的 打开map文件查找fw_name的内存地址,他的值被更改,就…...
[Java实战]Spring Boot整合Sentinel:流量控制与熔断降级实战(二十九)
[Java实战]Spring Boot整合Sentinel:流量控制与熔断降级实战(二十九) 一、Sentinel简介 Sentinel是阿里开源的分布式系统流量防卫组件,核心功能包括: 流量控制:根据QPS、线程数等指标限制资源访问熔断降…...
Linux系统中,Ctrl+C的运行过程是什么?
文章目录 前言1.终端驱动捕获键盘输入2.信号发送到前台进程组3. 进程处理信号4. 信号传递的详细流程5. Shell 的后续处理关键机制说明扩展:其他相关信号总结 前言 今天看到有个小伙伴面试问到这个问题,感觉挺有意思,我们后端开发者相信都用过…...
101个α因子#9
((0 < ts_min(delta(close, 1), 5)) ? delta(close, 1) : ((ts_max(delta(close, 1), 5) < 0) ? delta(close, 1) : (-1 * delta(close, 1))))worldquant brain平台上调整后的语法: ((0 < min(close-ts_delay(close, 1), ts_delay(close, 1)-ts_delay(c…...
DAY28 超大力王爱学Python
知识点回顾: 类的定义pass占位语句类的初始化方法类的普通方法类的继承:属性的继承、方法的继承 作业 题目1:定义圆(Circle)类 import mathclass Circle:def __init__(self, radius1):self.radius radius # 半径属性…...
【C++算法】70.队列+宽搜_N 叉树的层序遍历
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 429. N 叉树的层序遍历 题目描述: 解法 使用队列层序遍历就可以了。 先入根节点1。queue:1 然后出根节点1,入孩子节点2,3&a…...
常用UI自动化测试框架
🔍 常用UI自动化测试框架全览(Web / 移动 / 桌面 / AI驱动) UI(用户界面)测试框架是一类用于自动化测试应用图形界面的工具,帮助开发者和测试人员验证界面元素的功能性、交互性和视觉一致性。本文系统梳理了…...
C语言指针深入详解(五):回调函数、qsort函数
目录 一、回调函数 1、使用回调函数改造前 2、使用回到函数改造后 二、qsort使用举例 1、使用qsort函数排序整型数据 2、使用qsort排序结构数据 三、qsort函数模拟实现 结语 🔥个人主页:艾莉丝努力练剑 🍓专栏传送门:《…...
# YOLOv5:目标检测的新里程碑
YOLOv5:目标检测的新里程碑 在计算机视觉领域,目标检测一直是研究的热点和难点之一。近年来,随着深度学习技术的飞速发展,目标检测算法也取得了显著的进步。YOLO(You Only Look Once)系列算法以其高效的实…...
beanstalk一直被重新保留(reserved 状态)消息删除
说明:wallet是我的tube 完整流程示例 暂停 tube(防止任务被重新保留)pause-tube wallet 300踢回并删除任务kick 100000 # 踢回所有 reserved 任务 delete 183723 # 删除目标任务恢复 tube(取消暂停)pause-tu…...
NLP学习路线图(二): 概率论与统计学(贝叶斯定理、概率分布等)
引言 自然语言处理(NLP)作为人工智能的重要分支,致力于让机器理解、生成和操作人类语言。无论是机器翻译、情感分析还是聊天机器人,其底层逻辑都离不开数学工具的支持。概率论与统计学是NLP的核心数学基础之一,它们为…...
塔能智能照明方案——贵州某地区市政照明改造实践
在城市市政建设中,照明系统作为城市基础设施的重要组成部分,其能耗问题日益凸显。传统市政照明设备能耗高、运维效率低,成为城市绿色发展的阻碍。塔能科技针对这一痛点,为贵州某地区量身打造智能照明改造方案,通过技术…...
Mybatis的逆向工程Generator
Mybatis的逆向工程 什么是逆向工程 generator 简单点说,就是通过数据库中的单表,自动生成java代码。 Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类) 企业开发中&#…...
Runtime Suspend 专项训练
Q1. 什么是 Runtime PM?与 System Suspend 有什么区别? 答: Runtime PM(运行时电源管理)是 Linux 内核为单个设备提供的自动挂起机制。其核心思想是在设备空闲期间,关闭其时钟、电源、总线连接等资源&…...
香港科技大学(广州)智能制造理学硕士招生宣讲会——深圳大学专场
深圳大学专场宣讲会 时间:5月22日(星期四)19:00-20:00 地点:深圳大学沧海校区致原楼1101 🎓主讲嘉宾: 汤凯 教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-personal-page/TANG-Kai/mektang …...
使用MacPro 安装flutter开发环境 详细教程
Mac 有 英特尔芯片 和 苹果芯片,故安装路径可能略有不同,但是思路 大致一样,以下内容仅供小伙伴们参考: 首先下载环境安装的软件,并推荐使用稳定版本。 gralde 8.5 点击下载 android studio 点击下载 jdk 点击下载…...
常见的 API 及相关知识总结
常见的 API 及相关知识总结 一、Math 类 Math 类提供了许多用于数学计算的静态方法和常量。 常见方法总结 方法描述Math.abs()返回一个数的绝对值Math.ceil()返回大于或等于给定数字的最小整数Math.floor()返回小于或等于给定数字的最大整数Math.round()对一个数进行四舍五…...
7-Zip软件下载与使用攻略:如何使用7z格式解压缩更高效?
在数字化文件管理中,压缩与解压缩工具的选择至关重要。7-Zip是一款广受欢迎的开源软件,以其高效的压缩率和多种格式支持而备受推崇。然而,解压专家作为另一款优秀的解压缩软件,同样值得关注。本文将为您推荐7-Zip的下载渠道&#…...
第 84 场周赛:翻转图像、字符串中的查找与替换、图像重叠、树中距离之和
Q1、[简单] 翻转图像 1、题目描述 给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。 例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转…...
SkyReels-V2:开启无限时长电影生成新时代
AI 在视频生成领域的突破尤为引人注目,为内容创作带来了全新的可能性。而 SkyReels-V2 的问世,更是如同一场革命,彻底颠覆了人们对视频生成技术的认知,开启了无限时长电影生成的新时代。 一、背景与挑战 回顾视频生成技术的发展…...
教师可用的申报书——基于GAI的小学数学课堂跨学科支架设计与实践
课题申报书:基于GAI的小学数学课堂跨学科支架设计与实践 (一)立项依据与研究内容 1. 项目的立项依据 1.1 研究意义 2025年《教育强国建设规划纲要》明确提出“推动学科融合发展”,《信息化标准建设行动计划(2024-2027年)》强调技术赋能教育创新。小学数学作为基础学科,…...
79、modelsim单独仿真altera带IP核的文件
1.编译 quartus 仿真库(如果有就不用编译了) 编译完成后 sim 文件夹中产生一个 verilog_libs 文件夹,打开文件夹 以上便是编译产生的库,将库添加到 modelsim 中也就是观察此文件中的 modelsim.ini 与 modelsim 安装目录下此…...
将 Workbook 输出流直接上传到云盘
如果不想将 Excel 文件保存到本地,而是希望直接将输出流上传到云存储(如阿里云OSS、腾讯云COS、七牛云等),可以采用以下方法: 文章目录 1. 创建内存中的 Excel 输出流2. 上传到云存储的通用方法3. 具体云服务实现示例…...
【LINUX操作系统】日志系统——自己实现一个简易的日志系统
经过一段时间的操作系统的学习,现在是时候让读者朋友们利用学过的技术知识自己完成一个简单的日志系统。认识、了解日志系统既是对已有多线程知识的运用,也是进一步提升项目技术能力的必须步骤。 1. 什么是日志 ⽇志认识 计算机中的⽇志是记录系统和软件…...
HTML页面渲染过程
前言 文章很长,凡是我觉得好的东西统统都塞进来了。看了很多的文章,有些说法甚至都不统一,所以还动用了AI搜索。总之希望这篇文章能有点用,如有错误,欢迎指正。 浏览器介绍 浏览器的主要组件包括: 界面…...
【八股战神篇】Java虚拟机(JVM)高频面试题
目录 专栏简介 一 请解释Java虚拟机(JVM)及其主要功能 延伸 1. JVM的基本概念 2. JVM的主要功能 二 对象创建的过程了解吗 延伸 1.Java 创建对象的四种常见方式 三 什么是双亲委派模型 延伸 1.双亲委派机制的作用: 2.双亲委派模型…...
微店商品详情接口开发指南
接口概述 微店商品详情接口(/api/v1/product/detail)用于获取商品的完整信息,包括标题、价格、库存、SKU、主图等数据,支持OAuth2.0鉴权。 点击获取key和secret 请求方式 GET https://open.weidian.com/api/v1/product/detail …...