Spring MVC参数绑定终极手册:单多参对象集合JSON文件上传精讲
我们通过浏览器访问不同的路径,就是在发送不同的请求,在发送请求时,可能会带一些参数,本文将介绍了Spring MVC中处理不同请求参数的多种方式
一、传递单个参数
接收单个参数,在Spring MVC中直接用方法中的参数就可以,如以下代码:
@RequestMapping("Param")
@RestController
public class ParamController {@RequestMapping("a1")public String tex1(String string){return "接收到参数:"+string;}
}
我们使用Postman传参后,浏览器访问127.0.0.1:8080/Param/a1?string=Spring
Spring MVC会根据方法,找到对应的参数,赋值给方法,参数不一致,是获取不到参数,即为null(包装类型)
注意:
使用基本类型来接收参数时,参数必须传(除boolean类型),否则报500错误;类型不匹配,会报400错误(此处400/500等都是状态码,其他篇章会涉及讲解)
1.1、正常传递参数
@RequestMapping("a2")public Object text2(int a){return "接收到参数a:"+a;}
通过Fiddler观察请求和响应, HTTP响应状态码为200(正常)
1.2、不传a参数
通过Fiddler观察请求和响应, HTTP响应状态码为500(服务器异常)
尝试观察程序的错误日志,并解决:
可选的整型参数“a”存在,但由于被声明为基本类型,所以无法转换为 null 值。建议将其声明为对应基本类型的对象包装器。
1.3、传递参数类型不匹配
对于包装类型, 如果不传对应参数,Spring 接收到的数据则为null。所以开发中,对于参数可能为空的数据,建议使用包装类型
二、传递多个参数
和传输一个参数一样,直接使用方法的参数接收即可
@RestController
public class ParamController {@RequestMapping("Param")public String Demo1(String name,String age){return "接收到参数name: "+name+" ,age: "+age;}
}
使用浏览器发送请求并传参:127.0.0.1:8080/Param?name=小奥奇&age=8
可以发现,后端程序是正确拿到name和age参数的值
当有多个参数时,前后端是以参数的名称进行参数匹配的,但是参数的位置是不影响后端获取参数的结果
三、传递对象
如果需要传递的参数较多时,使用方法传参就要有很多形参,并且后续每增加一个参数,也要修改方法的声明,比较麻烦~,在此情况下我们便可以把这些参数封装成一个对象
Spring MVC 也可以自动实现对象参数的赋值,我们先创建一个Cat对象
public class Cat {private String name;private int age;private String hobby;public String getName() {return name;}public int getAge() {return age;}public String getHobby() {return hobby;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public void setHobby(String hobby) {this.hobby = hobby;}@Overridepublic String toString() {return "Cat{" +"name='" + name + ''' +", age=" + age +", hobby='" + hobby + ''' +'}';}
}
实现传递对象的方法
@RequestMapping("Cat")public Object Cat(Cat cat){return cat.toString();}
使用浏览器发送请求并传参:127.0.0.1:8080/Cat?name=咪咪&age=1&hobby=喜欢吃小鱼干
正好对应我们Cat类中的三个成员变量,此过程中 Spring 会根据参数名称自动绑定到对象的各个属性上,如果属性未传递,则会赋值位null(基本类型会被赋值为默认初始值,比如 int 赋值 0)
四、后端参数重命名(后端参数映射)
在一些情况下,前端传递的参数 key 和我们后端接受的 key 可以不一致,比如前端想加密URL中的信息,会使用 p 传递给后端,后端是使用 password 字段来接收的(保证可读性,不然后续维护时,不知道 p 到底是什么),如果出现这种情况,我们可以使用 @RequestParam 来重命名前后端的参数值
@RequestMapping("A1")public String A1(@RequestParam("p") String password){return "接收参数: password:"+password;}
该注解表示从前端接收到 p 赋值给 password
那如果我们直接传递给后端的参数 password 呢?
2025-05-30T22:37:36.378+08:00 WARN 27268 — [SpringDemo1] [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter ‘p’ for method parameter type String is not present]
控制台打印日志显示:请求参数 p 不存在
那既然是 String 引用类型,我们尝试不传参数试试,会不会得到 null ~~
我们发现,当不传参数时,直接报客户端错误了,因为当我们使用该注解时,这个参数就变成必传参数了,我们点进该注解的源码中:
表示:若请求缺失此参数,会抛出**MissingServletRequestParameterException
**,返回 HTTP 400(Bad Request) 错误,我们可以通过设置该 required 使该参数为非必传参数
@RequestMapping("A1")public String A1(@RequestParam(value = "p",required = false) String password){return "接收参数: password:"+password;}
将required 设置为 false ,再次空传参数得到:
结论:
使用 @RequestParam 进行参数重命名时,请求参数只能和 @RequestParam 声明的名称一致,才能进行参数绑定和赋值
使用 @RequestParam 进行参数重命名时, 参数就变成了必传参数
五、传递数组
@RequestMapping("A2")public String A2(String[] arr){return "接收参数:arr:"+ Arrays.toString(arr);}
和传递引用类型一样,直接把数组当成参数,那数组包含多个元素,我们该如何传递呢?
此外,我们还可以直接使用方式二在一行中传递多个元素:
可以看到,方式二每个元素是以逗号分隔的,但是如果我们本来就要传递一个逗号呢?
那么逗号就会转义为%2c
六、传递集合
集合参数:和数组类似,同一个请求中出现多个同名参数,需要使用@RequestParam绑定参数关系,Spring自动将其值收集到一个集合中
@RequestMapping("A1")public String A1(@RequestParam List<Integer> list){return "接收参数:"+list;}
七、传递JSON数据
7.1、概念
JSON概念:JSON 全称为 JavaScript Object Notation(JavaScript 对象表示法),是一种轻量级的数据交互格式。
简单来说:JSON就是客户端和服务端进行交互的一种数据格式,有自己的格式和语法,使用文本表示对一个对象或数组的信息,因此本质上是字符串,主要负责在不同的语言中数据传递和交换
7.2、JSON语法
还可以压缩为:
{“name”:“Json.CN”,“url”:“http://www.json.cn”,“page”:88,“isNonProfit”:true,“address”:{“street”:“科技园路.”,“city”:“江苏苏州”,“country”:“中国”},“links”:[{“name”:“Google”,“url”:“http://www.google.com”},{“name”:“Baidu”,“url”:“http://www.baidu.com”},{“name”:“SoSo”,“url”:“http://www.SoSo.com”}]}
我们可以使用在线JSON格式化工具来进行校验和书写:https://www.bejson.com/
7.3、JSON的优点:
- 简单易用:语法简单,易于理解和编写,可以快速进行数据交换。
- 跨平台支持:JSON可以被多种编程语言解析和生成,可以在不同的平台和语言之间进行数据交换和传输。
- 轻量级:相较于XML格式,JSON数据格式更加轻量级,传输数据时占用带宽较小,可以提高数据传输速度。
- 易于扩展:JSON的数据结构灵活,支持嵌套对象和数组等复杂的数据结构,便于扩展和使用。
- 安全性:JSON数据格式是一种纯文本格式,不包含可执行代码,不会执行恶意代码,因此具有较高的安全性。
7.4、JSON字符串和Java对象互转
Spring MVC框架集成了JSON的转换工具,我们可以直接使用来完成两者的互转
本质上是 jackson-databind 提供的功能,SpringMVC框架中已经把该工具包引入了进来,咱们直接使用即可,如果脱离SpringMVC使用,需要引入相关依赖
使用 ObjectMapper 对象提供的两个方法,可以完成对象和JSON字符串的互转 writeValueAsString: 把对象转为JSON字符串 readValue: 把字符串转为对象
public class JSONText {@Testpublic void JsontoJava() throws JsonProcessingException {ObjectMapper mapper = new ObjectMapper();//定义一个JSON字符串String s="{"name":"咪咪","age":1,"color":"blue"}";//转对象Animals cat=mapper.readValue(s,Animals.class);System.out.println(cat.toString());}@Testpublic void JavatoJson() throws JsonProcessingException {ObjectMapper mapper = new ObjectMapper();//创建Java对象Animals cat = new Animals();cat.setName("cat");cat.setAge(1);cat.setColor("blue");//转换为JSONString str = mapper.writeValueAsString(cat);System.out.println(str);}
}
7.5、传递JSON对象
接收JSON对象,需要使用@RequestBody注解
RequestBody:请求正文,意思是这个注解作用在请求正文的数据绑定,请求参数必须写在请求正文中。
@RequestMapping("A3")public String A3(@RequestBody Animals animals){return animals.toString();}
我们再postman中传入的是JSON格式的字符串,但在后端代码中,Spring会把我们传入的JSON字符串转化成一个对象,我们就不用自己转化为Java对象了,还可以对此对象进行操作:
@RequestMapping("A3")public String A3(@RequestBody Animals animals){System.out.println(animals.getColor());animals.color="彩虹色";return animals.toString();}
八、获取URL中参数@PathVariable
这个注解主要作用在请求URL路径上的数据绑定(默认传递参数写在URL上,Spring MVC 就可以获取到)
@RequestMapping("A4/{id}")public String A4(@PathVariable Integer id){return "获取id: "+id;}
我们还可以传递两个参数:
@RequestMapping("A4/{id}/{age}")public String A4(@PathVariable Integer id,@PathVariable Integer age) {return "获取id: "+id+",age: "+age;}
这两个也默认为必传参数,如果我们只传递一个参数,会发生客户端错误,那么我们是否可以设置为非必传参数
答案是:理论上可以,但是我们若对改路径传一个参数,那么这个参数是id还是age****Spring也不知道,所以参数是必传的,另外我们可以重命名(此处不再演示)
九、上传文件@RequestPart
@RequestMapping("A5")public String A5(MultipartFile file) {System.out.println(file.getOriginalFilename());return "文件获取成功";}
相关文章:
Spring MVC参数绑定终极手册:单多参对象集合JSON文件上传精讲
我们通过浏览器访问不同的路径,就是在发送不同的请求,在发送请求时,可能会带一些参数,本文将介绍了Spring MVC中处理不同请求参数的多种方式 一、传递单个参数 接收单个参数,在Spring MVC中直接用方法中的参数就可以…...
宽度优先遍历(bfs)(2)——fllodfill算法
欢迎来到博主的专栏:算法解析 博主ID:代码小豪 文章目录 floodfiil算法leetcode733——图像渲染题目解析算法原理题解代码 leetcode130——被围绕的区域题目解析算法原理题解代码 floodfiil算法 floodfill算法,在博主这里看来则是一个区域填…...
嵌入式编译工具链熟悉与游戏移植
一、Linux 系统编译工具链使用与 mininim 源码编译 在 Ubuntu 系统上编译 mininim 开源游戏需要正确配置编译工具链和依赖库。以下是详细的操作步骤和故障解决方法: 1. 环境准备与源码获取 首先需要安装必要的编译工具和依赖库: # 更新系统软件包索引…...
STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议
STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议,主要用于帮助位于网络地址转换 (NAT) 设备(如路由器)后面的客户端发现自己的公共 IP 地址和端口号。这对于建立点对点 (P2P) 通信至关重要,尤其是在 VoIP&#…...
Transformer结构介绍
[编码器 Encoder] ←→ [解码器 Decoder] 编码器: 输入:源语言序列输出:每个词的上下文表示(embedding) 解码器:输入:目标语言序列编码器输出输出:下一个词的概率分布(目标句子生成)…...
SpringBoot扩展——应用Web Service!
应用Web Service Web Service是一个SOA(面向服务的编程)架构,这种架构不依赖于语言,不依赖于平台,可以在不同的语言之间相互调用,通过Internet实现基于HTTP的网络应用间的交互调用。Web Service是一个可以…...
5G核心网周期性注册更新机制:信令流程与字段解析
一、周期性注册更新的技术背景与流程概述 1.1 注册更新的核心目的 在5G网络中,UE通过周期性注册更新维持与核心网的连接状态,主要作用包括: 状态保活:避免AMF因超时而释放UE上下文(T3512定时器超时前需完成更新);位置更新:通知网络UE的当前位置,确保寻呼可达;能力同…...
【LLM学习笔记3】搭建基于chatgpt的问答系统(下)
目录 一、检查结果检查有害内容检查是否符合产品信息 二、搭建一个简单的问答系统三、评估输出1.当存在一个简单的正确答案2.当不存在一个简单的正确答案 一、检查结果 本章将引领你了解如何评估系统生成的输出。在任何场景中,无论是自动化流程还是其他环境&#x…...
算法导论第十九章 并行算法:解锁计算新维度
第十九章 并行算法:解锁计算新维度 “并行计算不是未来,而是现在。” —— David Patterson 在单核性能增长放缓的时代,并行算法成为突破计算极限的关键。本章将带你探索多核处理器、分布式系统和GPU加速的奇妙世界,揭示如何通过协…...
Python 数据分析与可视化 Day 1 - Pandas 数据分析基础入门
🎯 今日目标 理解 Pandas 的作用和核心概念学会创建 Series 和 DataFrame掌握基本数据读取(CSV)与常用查看方法 🧰 1. 什么是 Pandas? Pandas 是基于 NumPy 的强大数据分析库,提供了灵活的表格数据结构 Da…...
【数字人开发】Unity+百度智能云平台实现长短文本个性化语音生成功能
一、创建自己的应用 百度智能云控制台网址:https://console.bce.baidu.com/ 1、创建应用 2、获取APIKey和SecretKey 3、Api调试 调试网址:https://console.bce.baidu.com/support/?timestamp1750317430400#/api?productAI&project%E8%AF%AD%E9%…...
(哈希)128. 最长连续序列
题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出ÿ…...
MFC中使用CRichEditCtrl控件让文本框中的内容部分加粗
MFC中文本框控件的内容,设置好字体格式后,只能单一的显示,如果相对文本框的内容部分加粗,或者部分加颜色、链接等都无法实现,但MFC中提供了CRichEditCtrl控件,就很方便的实现文本框中部分内容需要特殊处理的…...
Redis 的优势有哪些,它是CP 还是 AP?CAP 理论又是什么?
Redis的核心优势 Redis作为当今最流行的内存数据库之一,具有以下显著优势: 1. 卓越的性能表现 内存存储:数据主要存储在内存中,读写速度极快(10万 QPS)单线程架构:避免多线程竞争,…...
flink的多种部署模式
## 部署模式和运行模式 ### 部署模式 - 本地local - 单机无需分布式资源管理 - 集群 - 独立集群standalone - 需要flink自身的任务管理工具 - jobmanager接收和调度任务 - taskmanager执行 - on其他资源管理工具yarn/k8s …...
SQL分片工具类
SQL分片工具类(SqlShardingUtil)提供数据库查询的智能分片功能,支持数字和字符串两种字段类型的分片策略。对于数字字段,可以指定分片数量均匀划分数值区间;对于字符串字段,则按照ASCII字符范围自动划分。工具类确保分片后的SQL语…...
死锁相关知识
死锁是什么 死锁(Deadlock)是指两个或多个进程(或线程)在执行过程中,因为互相等待对方释放资源,导致永远无法继续执行的状态。 ✅ 死锁的形成条件(必须同时满足以下四个)࿱…...
oscp靶机练习PG Reconstruction
枚举阶段 nmap -A -T4 -p- -Pn -n 192.168.217.103 发现ftp,进行连接枚举 都下载到本地 这里提示我们两点,可以看看pcap文件,还有就是可能有密码遗留还没有删除。 使用下面命令进行过滤筛选流量包,查看与密码相关 http.reque…...
写题。贪心题组
一、 解题思路:主要还是写出val / m,按这个排序,就行了 #include<bits/stdc.h> #define endl "\n" #define ll long long #define pii pair<int,int> using namespace std;struct doro {int m, val;double cmp; } arr…...
UE官方文档学习 TAarry 查询
这个很简单经常用。 二.GetData() . GetData(),像C里拿到数组首地址一样。它不具有越界保护机制,StrArr拥有越界保护机制。这个地址在数组不做改变,如扩容等有用。 void AWXArrayActor::WXFindArray() {TArray<FString> StrArr { &q…...
使用Haproxy搭建Web群集
LVS负载均衡群集 Haproxy介绍http请求负载均衡常用调度算法常见的web群集调度器 示例操作安装httpd(两台网站服务器操作一致)编译安装haproxyhaproxy服务器配置(1)建立haproxy的配置文件(2)修改haproxy.cfg配置文件 测试haproxy的日志(1)修改 haproxy 配…...
Linux 基础命令:`ls`、`cd`、`du` 快速入门
在 Linux 系统中,ls、cd 和 du 是日常操作中最常用的三个命令。掌握它们能大幅提升文件管理效率。 1. ls:查看目录内容 用途:列出当前或指定目录下的文件和子目录。 常用命令: ls -l # 详细列表(权限、大…...
[论文阅读] 人工智能 + 软件工程 | USEagent:迈向统一的AI软件工程师
论文信息 article{applis2025unified,title{Unified Software Engineering agent as AI Software Engineer},author{Applis, Leonhard and Jiang, Nan and Zhang, Yuntong and Tan, Lin and Liang, Shanchao and Roychoudhury, Abhik},journal{arXiv preprint arXiv:2506.1468…...
微信小程序传参过来了,但是数据没有获取到
使用本方法前,已经采用encodeURIComponent把拼接的参数编码之后,拼接在链接上,在接受的页面的onLoad生命周期,接收到参数之后,采用decodeURIComponent进行解码的操作,如果这个也不行,不是说不行…...
微信小程序form表单手机号正则检验pattern失效
好奇怪啊,h5页面校验没问题,在微信小程序模拟器以及真机运行都失效,排查半天,记录一下 PS:身份证号校验也没问题,就手机号校验有问题,奇奇怪怪的 之前的写法(在小程序上不生效&…...
repo 工具
repo 是 Google 为管理多个 Git 仓库而开发的工具,主要用于 Android 开源项目(AOSP)等大型项目。它通过清单文件(manifest.xml)统一管理多个 Git 仓库的依赖关系。以下是核心用法和常见命令: 一、安装 repo…...
Python实例题:基于 TensorFlow 的图像识别与分类系统
目录 Python实例题 题目 问题描述 解题思路 关键代码框架 难点分析 扩展方向 Python实例题 题目 基于 TensorFlow 的图像识别与分类系统 问题描述 开发一个基于 TensorFlow 的图像识别与分类系统,包含以下功能: 图像分类模型:基于…...
Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原
今天阿灿给大家安利个好东西 Start10这软件能让Win10的开始菜单变回Win7那种经典样式,用起来特别顺手。不仅能改开始菜单外观,还能调整任务栏布局,想怎么设置都行。 我用它主要就图两点: 1. 找回Win7那种简洁好用的开始菜单 2.…...
Kafka性能压测报告撰写
在大数据生态体系中,Kafka以其卓越的高吞吐、低延迟特性,成为消息队列领域的中流砥柱。然而,随着业务规模不断扩张,数据流量日益激增,Kafka的性能表现直接关乎业务系统的稳定运行与效率提升。通过科学严谨的性能压测&a…...
IP 地理库的使用指南:从基础应用到深度实践
P 地理库的使用指南:从基础应用到深度实践 在数字化时代,IP 地址如同网络世界里的 “门牌号码”,而 IP 地理库则是解读这些号码背后秘密的 “解码器”。它不仅能定位 IP 对应的地理位置,还能挖掘出丰富的网络属性信息。接下来…...
C#的泛型和匿名类型
一、C#的泛型简介 泛型是一种允许你延迟编写类或方法中的数据类型规范,直到你在实际使用时才替换为具体的数据类型【简单的说:泛型就是允许我们编写能够适用于任何数据类型的代码,而无需为每种特定类型重写相同的代码】(T是类型参数ÿ…...
ABP VNext + MongoDB 数据存储:多模型支持与 NoSQL 扩展
🚀 ABP VNext MongoDB 数据存储:多模型支持与 NoSQL 扩展(生产级实践) 目录 🚀 ABP VNext MongoDB 数据存储:多模型支持与 NoSQL 扩展(生产级实践)🎯 引言🧰…...
JETBRAINS IDE 开发环境自定义设置快捷键
Date: 2025-06-18 20:39:52 author: lijianzhan JetBrains简介 让它发生。 用代码。 在JetBrains,代码是我们的激情所在。自成立以来,我们一直致力于打造世界上最强大、最有效的开发工具。 1.JETBRAINS官网,可以在官网下载代码编辑器 2.进入…...
JAVA——泛型
泛型(Generics)是Java语言在JDK 5.0版本中引入的一种强大特性,用于在编译时提供更强的类型检查和类型安全。它允许程序员在定义类、接口和方法时使用类型参数(Type Parameters),从而实现类型参数化。通过泛…...
攻防演练:1.木马后门文件演练
为了防止 Linux 服务器上传木马后门文件,可以编写一个脚本,定期检查系统中的可疑文件、进程和权限。以下是一个示例脚本,用于检查常见的后门文件、异常进程和权限问题。 脚本功能 检查常见后门文件路径。检查异常 SUID/SGID 文件。检查异常进…...
c++ STL---vector使用
本文对STL---中的vector的使用是参考网站 vector - C Reference 的内容,该网站是外文的哦,大家可以尝试打开看看更深刻的理解。本文是抽取其中常使用,然后加上自己的是理解哦。 前言 vector其实是顺序表类模板的封装啊! 数据结构…...
windows标题栏显示奇怪的蓝色,怎么解决
背景 如下,非常奇怪,如果窗口是active状态就是蓝色的,为什么? 如果你遇到上述问题,可以这么解决: 右键点击桌面,选择 “个性化”, 滚动到下面,看到 “标题栏和窗口边…...
Kafka存储设计深度剖析:日志、索引与文件管理的底层奥秘
引言 在分布式消息系统领域,Kafka凭借卓越的性能与高可靠性占据重要地位,而这一切都离不开其精妙的存储设计。从消息的持久化存储到高效检索,从日志分段管理到数据清理策略,Kafka的存储架构设计巧妙,能够支撑海量消息…...
将多个Excel合并到一个Excel中的方法
今天遇到这么一个问题,需要将多个Excel表格中的数据汇总表,合并在一个Excel中,并且显示一致。 因此编写了以下代码来解决这个问题, 1.在Excel中按AltF11,快速调出命令控制台 2.工具栏选择插入——模块——将以下脚本…...
Debian配置Redis主从、哨兵
前言 Redis的下载安装可参考Centos安装配置Redis6.x,Centos和Debian的步骤基本类似,或自行在网上搜索相关资料 注意:远程连接需放开相应端口 主从 搭建一个一主二从的主从模式 处理conf文件 #进入redis所在目录 cd /tools/redis/redis6 …...
OpenSSL引擎 + PKCS11 + SoftHSM2认证
OpenSSL引擎 PKCS11 SoftHSM2 前言:金融级安全的基石 在金融、军工等高安全领域,硬件安全模块(HSM) 是保护加密密钥的黄金标准。本文将深度剖析HSM核心组件libpkcs11.so的工作原理,并手把手教你搭建基于SoftHSM2的…...
flex布局 项目属性
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>flex布局 项目属性</title> <link href"css/k.css" rel"stylesheet" /> </head> <bod…...
流水表延迟处理方案设计
**### 流水表延迟处理方案设计 针对你的场景(流水表插入记录,当type4时需要1秒后处理),结合现有技术栈(JDK8、MySQL、定时任务、Redis、RabbitMQ),我推荐以下几种可行方案: 一、方…...
密室出逃消消乐小游戏微信流量主小程序开源
这个密室出逃消消乐小游戏采用了微信小程序的标准目录结构,包含以下核心功能: 游戏界面:6x6 的网格布局,随机生成不同类型的物品 游戏逻辑:交换相邻物品,消除三个或以上相同类型的物品 计分系统:…...
Docker 日志
Docker 日志是排查容器故障、监控运行状态的重要工具。下面从 日志查看命令、详解字段、日志驱动、最佳实践 四个方面给你详细解析。 一、最常用日志命令 1. 查看容器日志(默认 stdout、stderr) docker logs <container_name|container_id>2. 实…...
嵌入Linux快速入门第3篇
01_嵌入式Linux开发环境介绍 在Windows环境下的操作: 02_配置VMware使用双网卡之NAT网卡 虚拟机内部有两个网卡,一个是NAT网卡,另外一个是桥接网卡。NAT网卡用来保证Ubuntu可以上网,桥接网卡用来保证Ubuntu可以和开发板进行数据…...
详解鸿蒙Next仓颉开发语言中的全屏模式
大家好,今天跟大家分享一下仓颉开发语言中的全屏模式。 和ArkTS一样,仓颉的新建项目默认是非全屏模式的,如果你的应用颜色比较丰富,就会发现屏幕上方和底部的留白,这是应用自动避让了屏幕上方摄像头区域和底部的导航条…...
Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明
1 引言 近期工作聚焦于跨数据库系统的数据类型兼容性研究,旨在解决多源异构数据迁移、系统集成及版本升级中的类型映射难题。具体任务包括:1)建立主流数据库(如MySQL、Oracle、PostgreSQL、SQL Server等)的数据类型映射…...
新生活的开启:从 Trae AI 离开后的三个月
很久没有写文章了,想借着入职新公司一个月的机会,和大家唠唠嗑。 离职 今年2月份我从字节离职了,结束了四年的经历,当时离开的核心原因是觉得加班时间太长了,平均每天都要工作15,16个小时,周末…...
背包问题概论(01背包,完全背包,多重背包)DP
背包问题概论(01背包,完全背包,多重背包)DP 背包问题一种经典的组合优化问题,主要用于在有限的容量下选择物品以最大化总价值。它分为几种类型: ①:0/1背包问题:每种物品只能选择…...