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

Spring Web MVC————入门(1)

今天开始正式带大家学习Spring部分的内容了,大家尝试去弄个专业版嗷,学习起来爽一点

在idea中下载这个插件就行了

我们之后开始创建Spring项目,

蓝色 部分自己起名,type选Maven,其他的默认就好了,之后next,

勾选完点击next,就创建好了;

看下项目结构,蓝色java包中的就是我们写代码的地方,之间javaSE怎么写现在就怎么写,

resources是写前端代码的地方,或者可以存放静态资源,test中可以测试代码;

这个东东是启动类,跟以往的main函数不同,这个类一但运行就不会停止的,我们是服务器开发,服务器哪有停下来的道理;准备工作完毕,开始无聊的理论;

1,什么是Spring Web MVC

Spring Web MVC是基于servlet API构建的原始框架,servlet是一种实现动态界面技术,反正Spring Web MVC就是一套Web开发框架,我们可以简称为Spring MVC;

1)什么是MVC

model view controller的缩写,是一种软件架构设计模式,分别为模型,视图,控制器,

模型:就是我们的程序,怎么来处理业务逻辑,怎么处理数据

视图:指应用程序专门用来与浏览器交互的部分

控制器:选择处理模型,选择视图

2)什么是Spring MVC

Spring MVC就是实现了MVC模式的Web框架,有同学可能会有疑问,我们创建的不是Spring Boot项目吗,为啥变成MVC项目了,可以这么理解,Spring Boot只是实现SpringMVC的一种方式,Spring Boot可以添加不同的依赖来实现不同的功能,添加MVC就能实现MVC的功能了;

2,学习MVC 

我们学习MVC主要学习通过浏览器和用户交互的程序,主要分三个方面

建立连接:讲用户(浏览器)和java程序连接起来,就是访问一个地址能调用我们的Spring程序

请求:用户访问会携带一些参数,在程序中我们要想办法获取到参数

响应:我们根据获取到的参数,执行业务逻辑,并返回程序运行的结果

1,建立连接

我们这里就要使用到注解了,

我们刚才看到的这个就是启动类的注解,

那么我们如何通过注解建立连接呢,创建一个类,

之后再类的上面写RequestMapping("/hello"),这样就能实现URL路由映射,达到浏览器连接程序的效果;

路由映射的意思就是用户访问URL之后,就会请求到应用程序某个类的某个方法中;

@RequestMapping("Hello")
@RestController
public class HelloController {@RequestMapping("m1")public static String m1(){return "Hello yaoyu";}
}

这个RestController,可以起到序列化数据的作用,把它变成json和xml格式,并且我们创建的这个类可能和Spring内置的重名,我们Spring项目中那么多的类,我们不可能每次启动程序来把所有东西扫描一变来获得我们要的类,所以加上这个控制器,就可以就扫描带有控制器的类,启动项目更快; 

第一个Hello是类路径,第二个m1是方式路径

类路径+方法路径合起来就是我们要的资源路径了;

我们去浏览器来访问程序:

我们输入http://127.0.0.1:8080/Hello/m1

就能看到你好yaoyu了;

我们这里的RequestMapping是啥请求呢,我们之前学过,get,post,put,delete,我们使用html,form表单来请求一下;前端代码我们放到

这个static下面,前端代码:

<form action="http://127.0.0.1:8080/Hello/m1" method="post"><input type="submit" value="yaoyu">

 后端代码:

@RequestMapping("Hello")
@RestController
public class HelloController {@RequestMapping("m1")public static String m1(){return "Hello yaoyu";}
}

启动程序,看效果:

我们点击它,

就跳转到我们的程序了;这里为啥用127.0.0.1:8080,因为是我们同一台电脑上写服务器并且测试,就先用127.0.0.1就行;我们这里使用的post请求,浏览器发送的请求是get,所以这个RequestMapping是支持很多请求的;

但是我们可以指定方法

    @RequestMapping(value = "/m2",method = RequestMethod.GET)public static String m2(){return "我是get请求";}

来用postman访问 

啥都不传的get请求,看看效果:

得到结果了,那么我们使用post请求访问会有问题吗?

不行的,405是客户端出错,我们设定成get,客户端使用post就会发生错误;

都是ok的,除此之外,我们还有专门的postMapping和getMapping来接收请求:
 

    @GetMapping("a1")public static String a1(){return "我是get请求";}@PostMapping("a2")public static String a2(){return "我是post请求";}

2,工具使用

那我们每次都要写前端代码好麻烦呀,我们后端程序员往后不就会更多的前端代码了吗,莫得事,我们有工具,我们可以使用postman,来构建请求;

下载好后打开,点击那个create Collection,之后点击蓝色的Add,自己给自己的请求起名字,

接下来就能使用我们的工具了,

3,传递参数

1,普通传参

就是查询字符串传参;

这个Params,下面以键值对的方式放到URL中

2,form-data

可以提交文件和图片等 

4,form表单

5,raw

这些都是我们之前说的请求正文的内容;对应content-type大家还记得不; 

4,请求传参

接下来我们重点来学习用postman传递参数并且用在后端中接收参数

1,传递单个参数

    @RequestMapping("/r1")public static String r1(String s){return "接收参数为" + s;}

来发请求, 

这里查询字符串中的key就是s一定要和我们资源路径里面方法参数的名字是一样的,不然的话就找不到的;

再来看两个代码:

    @RequestMapping("/r2")public static Integer r2(Integer s){return s;}@RequestMapping("/r3")public static int r3(int s){return s;}

这俩有啥区别呢,一个使用包装类型,一个是基本类型,我们使用基本类型的时候参数是必须传的,因为基本类型不能为null,

传递是成功的,现在我们不传参数:

 不可以因为int a不能为null,我们再试试Integer, 

 可以的,要是类型不匹配会发生400错误;

2,传递多个参数

    @RequestMapping("/r4")public static String r4(String s1,String s2){return "第一个参数" + s1 + ",第二个参数" + s2;}

3,传递对象

先创建一个对象:

public class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}public 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;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}
    @RequestMapping("/r5")public static String r5(User user) {return user.toString();}

传递对象的时候就对对象内部的元素挨个赋值就行了,对象中有name和age,我们来传递 

 

4,参数绑定

 参数绑定,又叫参数重命名,参数映射,就是前端可能对参数进行加密,可能名字起的非常奇怪啊,那我们还要记一个小纸上吗,显然是不应该的,这里我们就使用参数绑定,对于前段加密复杂的参数我们让他绑定一个易懂的参数名,我们使用RequestParam

    @RequestMapping("/r6")public static String r6(@RequestParam(value = "p",required = false) String s){return "接收的参数为"+ s;}

这里的required说明是不是必须传的,我们默认是必须传递的,我们加一个false就可以不传递;

我们改成true

 我们在改回来:

ok了; 

5,传递数组

    @RequestMapping("/r7")public static String r7(String[] s){return Arrays.toString(s);}

这里可以有两种方式来传递:

 可以用逗号分隔:

还可以

6,传递集合

传递集合的话我们得使用参数绑定,因为默认传的是数组,

    @RequestMapping("/r8")public static String r8(@RequestParam List<Integer> list){return list.toString();}

7,传递json

这里我们要使用RequestBody,可以把传递来的json转变为对象,

    @RequestMapping("/r9")public static String r9(@RequestBody User user){return user.toString();}

来个json的语法:

JSON的语法: 1. 数据在 键值对 (Key/Value) 中 2. 数据由逗号 , 分隔 3. 对象⽤ {} 表⽰ 4. 数组⽤ [] 表⽰ 5. 值可以为对象,也可以为数组,数组中可以包含多个对象 JSON的两种结构 1. 对象:⼤括号 {} 保存的对象是⼀个⽆序的 键值对集合.⼀个对象以左括号 { 开始,右括号 } 结束。每个"键"后跟⼀个冒号 : ,键值对使⽤逗号 , 分隔 2. 数组:中括号 [] 保存的数组是值(value)的有序集合.⼀个数组以左中括号 [ 开始,右中括 号 ] 结束,值之间使⽤逗号 , 分隔; 

8,从URL中获取参数

    @RequestMapping("/r10/{id}/{type}")public static String r10(@PathVariable Integer id,@PathVariable("type") Integer newType){return "获取文章id"+id+",获取文章类型"+newType;}

 PathVariable是路径变量,可能有网站会把参数设置到路径上,我们就要从路径上拿参数,第一个id对应路径上的id第二个我们把type这个参数名绑定为newtype

来看效果:

9,上传文件

使用RequestPart注解:

    @RequestMapping("/r11")public static String r12(@RequestPart("file1") MultipartFile file) throws IOException {System.out.println(file.getOriginalFilename());file.transferTo(new File("C:/cctalk/java代码容易犯错的知识点/"+file.getOriginalFilename()));return "文还上传成功";}

这个file1是我们前端传入的参数我们把它绑定为file,我们要使用MultipartFile file,我们使用transferTo来快速上传文件,这里跟我们之前学的文件操作是一样的,就是进行了封装,更好用了,

    @RequestMapping("/r11")public static String r12(@RequestPart("file1") MultipartFile file) throws IOException {System.out.println(file.getOriginalFilename());file.transferTo(new File("C:/cctalk/java代码容易犯错的知识点/"+file.getOriginalFilename()));return "文还上传成功";}

 

 

相关文章:

Spring Web MVC————入门(1)

今天开始正式带大家学习Spring部分的内容了&#xff0c;大家尝试去弄个专业版嗷&#xff0c;学习起来爽一点 在idea中下载这个插件就行了 我们之后开始创建Spring项目&#xff0c; 蓝色 部分自己起名&#xff0c;type选Maven&#xff0c;其他的默认就好了&#xff0c;之后nex…...

关于 js:1. 基础语法与核心概念

js 全称 JavaScript&#xff08;简称 JS&#xff09;&#xff0c;是 一种运行在浏览器和服务器端的脚本语言。 用途&#xff1a; 浏览器端交互&#xff08;如&#xff1a;点击按钮出现弹窗&#xff09; 网页动态内容渲染&#xff08;如&#xff1a;淘宝、京东页面更新&#xf…...

云境天合水陆安全漏电监测仪—迅速确定是否存在漏电现象

云境天合水陆安全漏电监测仪是一种专为水下及潮湿环境设计的电气安全检测设备&#xff0c;通过高灵敏度电磁传感器探测漏电电流产生的交变磁场&#xff0c;基于法拉第电磁感应定律&#xff0c;自动区分高灵敏度信号和低灵敏度信号&#xff0c;精准定位泄漏电源的具体位置。一旦…...

二、Hadoop狭义和广义的理解

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月6日&#x1fae0; 专栏&#xff1a;Hadoop教程 Hadoop 的双重身份&#xff1a;核心框架与生态系统 在大数据领域&#xff0c;Hadoop 是一个广为人知的概念&#xff0c;但它并非单指某一个软件&#xff0c;而是涵盖了两个层…...

DTU_DTU厂家_5G/4G DTU终端_DTU模块_厦门计讯物联科技有限公司

在物联网蓬勃发展的当下&#xff0c;数据的高效、稳定、可靠的传输成为关键。厦门计讯物联科技有限公司(以下简称“计讯物联”)作为国内工业物联网领域的核心厂商&#xff0c;专注于5G/4G DTU终端、DTU模块及无线数传设备的研发与生产&#xff0c;致力于为智慧城市、能源电力、…...

学习alpha,第2个alpha

alphas (-1 * ts_corr(rank(ts_delta(log(volume), 2)), rank(((close - open) / open)), 6)) 先分析操作符从左到右 ts_corr: Pearson 相关度量两个变量之间的线性关系。当变量呈正态分布且关系呈线性时&#xff0c;它最有效。 ts_corr(vwap, close, 20)是一个计算时间序列相…...

如何用爬虫获得按关键字搜索淘宝商品

在电商领域&#xff0c;获取淘宝商品的详细信息对于市场分析、选品上架、库存管理和价格策略制定等方面至关重要。淘宝作为国内知名的电商平台&#xff0c;提供了丰富的商品资源。通过 Python 爬虫技术&#xff0c;我们可以高效地获取淘宝商品的详细信息&#xff0c;包括商品名…...

Android SDK 开发中的 AAR 与 JAR 区别详解

在 Android SDK 开发中&#xff0c;构建项目时我们常常会看到生成两个不同的文件&#xff1a;一个是 build/outputs/aar/*.aar&#xff0c;另一个是 build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar。很多初学者会疑惑&#xff1a;它们之间有什么区别&am…...

Python cv2滤波与模糊处理:从原理到实战

在图像处理领域&#xff0c;滤波与模糊是预处理阶段的两大核心操作&#xff0c;既能消除噪声干扰&#xff0c;又能实现艺术化效果。本文将结合OpenCV的cv2库&#xff0c;系统讲解滤波与模糊的原理及Python实现&#xff0c;带你从理论到实战全面掌握这项技术。 一、滤波与模糊的…...

【SpringBoot3】idea找不到log符号

解决idea找不到log符号&#xff0c;Slf4j注解不起作用 如图 解决办法 pom.xml文件里要手动添加版本号 插件也要添加对应的版本号 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30&l…...

Android学习总结之Java和kotlin区别

一、空安全机制 真题 1&#xff1a;Kotlin 如何解决 Java 的 NullPointerException&#xff1f;对比两者在空安全上的设计差异 解析&#xff1a; 核心考点&#xff1a;Kotlin 可空类型系统&#xff08;?&#xff09;、安全操作符&#xff08;?./?:&#xff09;、非空断言&…...

C++笔记-二叉搜索树(包括key,key/value搜索场景等)

1.二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 1.若它的左子树不为空&#xff0c;则左子树上所有结点的值都小于等于根结点的值若它的右子树不为空&#xff0c;则2.右子树上所有结点的值都大于等于根结点…...

【从零开始学习RabbitMQ | 第二篇】生成交换机到MQ的可靠性保障

目录 ​编辑前言 交换机 Direct交换机与Fanout交换机的差异 Topic交换机 Topic交换机相比Direct交换机的差异 生成我们的交换机&#xff0c;队列&#xff0c;以及绑定关系 基于代码去生成交换机和队列 基于注解去声明队列和交换机 消息转换器 消息队列的高可靠性 发送…...

在 Sheel 中运行 Spark:开启高效数据处理之旅

在大数据处理领域&#xff0c;Apache Spark 凭借其强大的分布式计算能力&#xff0c;成为了众多开发者和企业处理海量数据的首选工具之一。而 Sheel 作为一种便捷的运行环境&#xff0c;在其中运行 Spark 可以充分发挥两者优势&#xff0c;实现高效的数据处理与分析。本文将详细…...

前端、XSS(跨站脚本攻击,Cross-Site Scripting)

XSS 攻击的三种主要类型 存储型 XSS&#xff08;持久型&#xff09; 原理&#xff1a;恶意脚本被永久存储在服务器&#xff08;如数据库、评论内容&#xff09;&#xff0c;用户访问包含恶意脚本的页面时触发示例&#xff1a;攻击者在论坛的评论区提交 &#xff0c;其他用户查…...

第六节:图像基本操作-像素级操作

一、数字图像处理基础 1.1 图像数字化原理 数字图像本质上是二维离散信号&#xff0c;由按矩阵排列的像素点构成。每个像素点的数值代表特定位置的亮度或色彩信息... 1.2 OpenCV核心数据结构 import cv2 import numpy as np# 读取图像文件 img cv2.imread(image.jpg)# 获取…...

【东枫科技】代理销售 NVIDIA DGX Spark 您的桌上有一台 Grace Blackwell AI 超级计算机。

NVIDIA GB10 Grace Blackwell超级芯片 FP4 AI 性能达到 1,000 AI TOPS 128GB 一致、统一的系统内存 ConnectX-7 智能网卡 高达 4TB 存储空间 150毫米长 x 150毫米宽 x 50.5毫米高 NVIDIA DGX™ Spark 搭载 NVIDIA GB10 Grace Blackwell 超级芯片&#xff0c;以节能紧凑的外形提…...

即插即用!长安汽车复旦提出LMPOcc:长期记忆先验实现占用预测任务新SOTA

导读 在基于视觉的自动驾驶感知算法当中&#xff0c;3D语义占用预测任务可以出色的对静态场景和动态目标同时进行建模&#xff0c;实现细粒度的场景理解&#xff0c;目前受到了来自学术界和工业界的广泛关注。 ©️【深蓝AI】编译 论文题目&#xff1a;ConRFT: A Reinfo…...

Kubernetes弹性伸缩:让应用自动应对流量洪峰与低谷

&#x1f680; Kubernetes弹性伸缩&#xff1a;让应用自动应对流量洪峰与低谷 &#x1f30d; 什么是弹性伸缩&#xff1f; 弹性伸缩&#xff08;Auto Scaling&#xff09;是指系统能够根据实时负载自动调整计算资源&#xff0c;以优化性能并降低成本。在 Kubernetes&#xff0…...

深入解析 Linux/Unix 通信机制:从原理到观测实践

深入解析 Linux/Unix 通信机制&#xff1a;从原理到观测实践 配图建议&#xff1a;Linux系统架构与通信机制全景示意图 一、开篇&#xff1a;理解“一切皆文件”的哲学 Unix/Linux 操作系统的核心灵魂在于其独特的设计哲学。当 Dennis Ritchie 和 Ken Thompson 在贝尔实验室开…...

Vue 2.0 详解全教程(含 Axios 封装 + 路由守卫 + 实战进阶)

目录 一、Vue 2.0 简介1.1 什么是 Vue&#xff1f;1.2 Vue 2.x 的主要特性 二、快速上手2.1 引入 Vue2.2 创建第一个 Vue 实例 三、核心概念详解3.1 模板语法3.2 数据绑定3.3 事件绑定3.4 计算属性 & 侦听器 四、组件系统4.1 定义全局组件4.2 单文件组件&#xff08;*.vue …...

《Python星球日记》 第36天:线性代数基础

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏&#xff1a;《Python星球日记》&#xff0c;限时特价订阅中ing 目录 一、标量、…...

使用 Spring Boot 构建 REST API

使用 Spring Boot 构建 REST API 使用 Spring Boot 构建 REST API1. Spring Initializr构建springboot2. API 合同 & JSONAPI 协定什么是 JSON&#xff1f; 3.先测试什么是测试驱动开发&#xff1f;测试金字塔Red&#xff0c; Green&#xff0c; Refactor 循环 4. 实施 GET…...

PHP分页显示数据,在phpMyadmin中添加数据

<?php $conmysqli_connect(localhost,root,,stu); mysqli_query($con,"set names utf8"); //设置字符集为utf8 $sql"select * from teacher"; $resultmysqli_query($con,$sql); $countmysqli_num_rows($result); //记录总条数$count。 $pagesize10;//每…...

Spring Boot操作MongoDB的完整示例大全

以下是基于Spring Boot操作MongoDB的完整示例大全&#xff0c;涵盖增删改查、聚合查询、索引、事务等核心功能&#xff1a; 一、基础CRUD操作 1. 环境配置 依赖配置&#xff08;pom.xml&#xff09; <dependency><groupId>org.springframework.boot</groupId…...

SpringCloud入门教程合集(1)-SpringCloud简介与Eureka+Feign实现服务注册中心、服务提供与服务消费

场景 SpringCloud 总体架构与核心子项目 SpringCloud 总体架构 1. 基础设施层 服务注册与发现&#xff1a;Eureka/Nacos 配置中心&#xff1a;Spring Cloud Config/Nacos 消息总线&#xff1a;Spring Cloud Bus 2. 服务通信层 负载均衡&#xff1a;Ribbon/LoadBalancer…...

【Linuc】深入理解 Linux 文件权限

文章目录 一、权限基础解析1. 权限三元组2. 权限类型与数字映射二、查看文件权限三、修改权限实战1. chmod 命令符号模式数字模式(推荐)2. chown 修改归属四、特殊权限机制1. SetUID (Set User ID)2. SetGID (Set Group ID)3. Sticky Bit五、高级权限管理1. 默认权限控制2. A…...

ExtraMAME:复古游戏的快乐“时光机”

嘿&#xff0c;小伙伴们&#xff01;今天电脑天空要给大家安利一款超有趣的软件——ExtraMAME&#xff01;如果你对复古街机游戏念念不忘&#xff0c;那它绝对能成为你的快乐源泉&#xff0c;带你瞬间穿越回那个充满游戏机的黄金时代。 ExtraMAME是一款基于MAME&#xff08;Mu…...

没有 Mac,如何把 iOS App 成功上架?

开发者的 iOS 上架折腾记&#xff1a;没有 Mac&#xff0c;也能搞定&#xff1f; 最近在帮朋友把一个跨平台 Flutter 项目上架到 App Store&#xff0c;结果被 iOS 上架的那套流程卡得头都大了。其实这也不是第一次碰壁了——每次到“申请证书 打包 上传”的时候&#xff0c…...

使用VMware Workstation pro 17.5.1在Windows上安装Ubuntu 24.04.2的 详细步骤

一、准备工作 1. 下载Ubuntu 24.04.2 ISO镜像 官方下载地址&#xff1a;Ubuntu 24.04.2 (Noble Numbat) 选择 ubuntu-24.04.2-desktop-amd64.iso&#xff08;桌面版&#xff09;或 ubuntu-24.04.2-live-server-amd64.iso&#xff08;服务器版&#xff09;。 2. 确认系统要求…...

栈与队列详解及模拟实现

目录 ​​一、栈&#xff08;Stack&#xff09;&#xff1a;后进先出​ ​​1.1 什么是栈​ ​​1.2 栈的使用​​ ​​1.3 栈的模拟实现​ ​​1.4 栈的经典应用​​ ​​二、队列&#xff08;Queue&#xff09;&#xff1a;先进先出​ ​​2.1 什么是队列 2.2 队列的使…...

Cursor无法SSH远程连接服务器免密登录问题

在本地机器和Ubuntu服务器之间实现SSH远程免密连接&#xff0c;可按如下步骤操作&#xff1a; 1. 生成SSH密钥对 在本地机器上开启终端&#xff0c;使用以下命令生成SSH密钥对&#xff1a; ssh-keygen -t rsa按提示操作&#xff0c;一般直接回车&#xff0c;这样密钥会生成在…...

【Vue】全局事件总线 TodoList 事件总线

目录 一、 实现所有组件看到x事件 二、 实现$on $off 以及 $emit 总结不易~ 本章节对我有很大的收获&#xff0c; 希望对你也是&#xff01;&#xff01;&#xff01; 本节素材已上传至Gitee&#xff1a;yihaohhh/我爱Vue - Gitee.com 全局事件总线图&#xff1a; 本节素材…...

动态规划背包问题

一、0-1背包问题 0-1背包问题就是给定n个物品和一个容量为C的背包&#xff0c;物品i的重量是Wi,其价值是Vi。问&#xff1a;应该如何选择装入背包的物品&#xff0c;使总价值最大且总重量不超过C&#xff1f; 1.确定状态表示 dp[i][j] 表示在背包容量为j时&#xff0c;从下标…...

ctfshow web入门 web49

信息收集 此%非彼%&#xff0c;%0a中的%不会被识别&#xff0c;因为识别之前就已经自动转化为了换行符 所以和之前一样的解法&#xff0c;没什么好说的 if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|…...

AI+浏览器自动化:Nanobrowser Chrome 扩展的使用「详细教程」

AI+浏览器自动化:Nanobrowser Chrome 扩展的使用「详细教程」 一、前言二、Nanobrowser简介2.1 项目背景2.2 核心特性三、安装与配置3.1 安装方式3.1.1 Chrome Web Store安装3.1.2 手动安装最新版3.2 基本配置3.2.1 添加API Key3.2.2 选择模型3.2.3 其他设置四、核心功能详解4…...

【表设计】外键的取舍-分布式中逐渐消失的外键

在分布式大行其道的今天&#xff0c;为什么外键约束越来越少&#xff1f; 外键-数据链接带来强制完整性 在关系型数据库中&#xff0c;外键&#xff08;Foreign Key&#xff09;可以用于建立和强制两个表之间的数据链接。 在层次数据结构一篇的闭包表简单设计中&#xff0c;…...

HarmonyOS 5.0 分布式数据协同与跨设备同步​​

大家好&#xff0c;我是 V 哥。 使用 Mate 70有一段时间了&#xff0c;系统的丝滑使用起来那是爽得不要不要的&#xff0c;随着越来越多的应用适配&#xff0c;目前使用起来已经和4.3的兼容版本功能差异无碍了&#xff0c;还有些纯血鸿蒙独特的能力很是好用&#xff0c;比如&am…...

多行文本省略

方式1 兼容性不好 height: 100px; line-height: 25px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;方式2 利用浮动环绕、空白元素站位margin-top调整位置 <div class"wrap"><div class"more"…...

Adobe卸载清理工具Creative Cloud Cleaner Tool下载

Adobe Creative Cloud Cleaner Tool 是 Adobe 公司官方推出的一款卸载清理工具&#xff0c;主要用于清理 Creative Cloud 应用程序在安装、更新或卸载过程中可能遗留下来的错误配置文件、缓存、注册表项或其他系统级残留内容。相比一般的卸载程序&#xff0c;它更深入地处理系统…...

分布式、高并发-Day03

以下是 Day 3 详细学习内容&#xff08;线程池拒绝策略实战&#xff1a;DiscardOldestPolicy与CallerRunsPolicy&#xff0c;30 分钟完整计划&#xff09;&#xff0c;包含策略原理、分步代码实战和场景解析&#xff1a; &#x1f4d6; 今日学习目标 掌握DiscardOldestPolicy…...

高等数学第四章---不定积分(4.4有理函数的不定积分2)

&4.4有理函数的不定积分2 篇幅有限制&#xff0c;例题的解答会占大量字符&#xff0c;html限制字符为22000个左右。这里继续探讨上文的有理函数的不定积分。 一、三角函数有理式的不定积分 由 sin ⁡ x \sin x sinx, cos ⁡ x \cos x cosx 以及常数经过有限次加、减、…...

C++中指针使用详解(4)指针的高级应用汇总

C 中指针的高级应用非常丰富&#xff0c;掌握这些内容能让你写出更高性能、更底层控制力强的代码。下面是应用模块梳理和例子讲解。 目录预览 函数指针与回调机制指针数组 vs 数组指针指针与类成员函数&#xff08;成员函数指针&#xff09;智能指针&#xff08;unique_ptr, s…...

Java 8 非对称加密代码示例

以下是使用Java 8实现RSA非对称加密的完整代码示例&#xff0c;包括密钥生成、加密和解密过程。 1. 生成RSA密钥对 import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.Base64; impor…...

Linux环境基础与开发工具使用

1. Linux编译器vim 1.1 vim的基本概念讲解 vim有很多种模式&#xff0c;我们初学者常用的就是命令模式&#xff08;command mode&#xff09;、插入模式&#xff08;Insert mode&#xff09;和底行模式&#xff08;last line mode&#xff09;。 命令/正常模式(Normal mode) …...

【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘

问题&#xff1a; 使用mmdetection框架使用COCO格式训练自定义数据集时&#xff0c;其中模型使用HTC模型时出现如下问题&#xff1a; AttributeError: ‘DetDataSample’ object has no attribute ‘_gt_sem_seg’. Did you mean: ‘gt_sem_seg’? results self(**data, mode…...

C# Winforms 本地化 多语言支持 字符串资源

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

ts bug 找不到模块或相应类型的声明,@符有红色波浪线

解决方法&#xff1a;在env.d.ts文件中添加以下代码&#xff0c;这段代码是一个 TypeScript 的声明文件&#xff0c;用于让 TypeScript 知道如何处理 Vue 单文件组件&#xff08;.vue 文件&#xff09;的导入。 /// <reference types"vite/client" /> // 声明…...

赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG

XCZU11EG-2FFVC1760I 是 Zynq UltraScale MPSoC EG 系列中性能最强的器件之一&#xff0c;集成了四核 ARM Cortex-A53 应用处理器、双核 Cortex-R5 实时处理器与 Mali-400 MP2 GPU&#xff0c;并结合了 653,100 个逻辑单元与丰富的片上存储资源&#xff0c;可满足高性能计算、A…...

VSCode|IDEA|PyCharm无缝接入DeepSeek R1实现AI编程

文章目录 前言一、流程简介1. 获取DeepSeek R1的API密钥2. 在编程软件中下载安装 Continue 插件**IDEA**PyCharm 3. 配置Continue文件 二、使用体验利用 DeepSeek R1进行 AI 编程 前言 本文将介绍如何在 VSCode|IDEA|PyCharm 软件中接入 DeepSeek R1 实现 AI 编程&#xff0c;…...