学习JAVA中的Spring MVC常用注解及三层架构,这一篇就够了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Spring Web MVC

  • 一:什么是 Spring Web MVC?
    • 什么是Servlet呢?
    • 什么是Servlet API
    • 1.1 MVC 定义
    • 1.2 什么是Spring MVC ?
    • 1.3SpringBoot和SpringMVC的区别
  • 二:Spring MVC中常用注解的使用
    • 2.1 @RequestMapping:地址映射
    • 2.2 @RequestBody:请求正文
    • 2.3 @PathVariable:路径变量
    • 2.4 @RequestPart:上传文件
    • 2.5 @RequestParam:重命名
    • 2.6 @RestController:数据控制器
    • 2.7 @ResponseBody:数据格式,返回数据
    • 2.8 @CookieValue:获取Cookie
    • 2.9 @SessionAttribute:获取Session
    • 2.10 @Data:类注解
  • 三: 应用分层-三层架构
  • 四:总结

一:什么是 Spring Web MVC?

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为SpringMVC.

什么是Servlet呢?

(Servlet 是⼀种实现动态⻚⾯的技术. 准确来讲Servlet是⼀套 Java Web 开发的规范,或者说是⼀套
Java Web 开发的技术标准. 只有规范并不能做任何事情,必须要有⼈去实现它. 所谓实现 Servlet 规
范,就是真正编写代码去实现 Servlet 规范提到的各种功能,包括类、⽅法、属性等.
Servlet 规范是开放的,除了 Sun 公司,其它公司也可以实现 Servlet 规范,⽬前常⻅的实现了
Servlet 规范的产品包括 Tomcat、Weblogic、Jetty、Jboss、WebSphere 等,它们都被称
为Servlet 容器". Servlet 容器⽤来管理程序员编写的 Servlet 类.

详细解释:
Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个Servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。

Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装中Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能:

(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。
(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。
(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。
(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。
(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连
接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP)进行通信。
(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。
(7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。

什么是Servlet API

讲述完什么是Servlet了,那什么是Servlet API呢?
Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.Servlet 和 javax.Servlet.http。可从sun公司的Web站点下载 Java Servlet 开发工具。

从上述定义我们可以得出⼀个信息: Spring Web MVC 是⼀个 Web 框架.
下⾯咱们简称之为: Spring MVC
然⽽要真正的理解什么是 Spring MVC?我们⾸先要搞清楚什么MVC?

1.1 MVC 定义

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分

在这里插入图片描述
View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
Model(模型)
是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

举个例子:⽐如去饭店吃饭
客⼾进店之后, 服务员来接待客⼾点餐, 客⼾点完餐之后, 把客⼾菜单交给前厅, 前厅根据客⼾菜单给后厨下达命令. 后厨负责做饭, 做完之后, 再根据菜单告诉服务员, 这是X号餐桌客⼈的饭.
在这个过程中
服务员就是View(视图), 负责接待客⼾, 帮助客⼾点餐, 以及给顾客端饭
前厅就是Controller(控制器), 根据⽤⼾的点餐情况, 来选择给哪个后厨下达命令.
后厨就是Model(模型), 根据前厅的要求来完成客⼾的⽤餐需求

1.2 什么是Spring MVC ?

MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现. 除此之外, SpringMVC还是⼀个Web框架.
总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架.
所以, Spring MVC主要关注有两个点:

  1. MVC
  2. Web框架
    Spring MVC 全称是 Spring Web MVC
    其实, Spring MVC 我们在前⾯已经⽤过了, 在创建 Spring Boot 项⽬时,我们勾选的 Spring Web 框架
    其实就是 Spring MVC 框架:
    在这里插入图片描述
    可以看到,Spring Web的介绍是:
    Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.

1.3SpringBoot和SpringMVC的区别

目的和侧重点:

  1. Spring Boot 旨在简化 Spring 应用的开发和部署,提供了大量的自动配置和起步依赖,使开发者能够快速搭建和启动一个完整的应用,而无需过多关注繁琐的配置细节。
  2. Spring MVC 则主要侧重于处理 Web 请求和响应,是 Spring 框架中用于构建 Web
    应用的模块,专注于实现控制器、视图解析、数据绑定等 Web 层的功能。

配置方式:

  1. Spring Boot 采用基于约定优于配置的原则,通过自动配置和少量的显式配置就能让应用运行起来。
  2. Spring MVC 通常需要开发者手动配置各种组件,如控制器、视图解析器、拦截器等。

应用启动:

  1. Spring Boot 提供了一个可执行的 JAR 或 WAR 文件,通过简单的命令即可启动应用。
  2. 传统的 Spring MVC 应用部署和启动相对较为复杂。

集成其他技术:

  1. Spring Boot 能够方便地集成各种第三方库和技术,并且提供了默认的配置。
  2. Spring MVC 集成其他技术时需要开发者自己进行更多的配置和整合工作

总结
Spring Boot 是一个快速开发和部署 Spring 应用的框架,而 Spring MVC 是 Spring 框架中处理 Web 层的一个模块。Spring Boot 可以包含 Spring MVC ,并且为其提供了更便捷的开发和部署方式

Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring Web MVC框架, 来实现web功能.

二:Spring MVC中常用注解的使用

2.1 @RequestMapping:地址映射

@RequestMapping既可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类路径+⽅
法路径.
@RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息
@RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息

@RequestMapping("/user")
@RestController
public class UserController {
	@RequestMapping("/sayHi")
	public String sayHi(){
	return "hello,Spring MVC";
	}
}

2.2 @RequestBody:请求正文

RequestBody: 请求正⽂,意思是这个注解作⽤在请求正⽂的数据绑定,请求参数必须在写在请求正
⽂中
接收JSON对象, 需要使⽤ @RequestBody 注解

@RequestMapping(value = "/m7")
public Object method7(@RequestBody Person person) {
	return person.toString();
}

2.3 @PathVariable:路径变量

pathvariable:路径变量
和字⾯表达的意思⼀样,这个注解主要作⽤在请求URL路径上的数据绑定
默认传递参数写在URL上,SpringMVC就可以获取到
后端实现代码:

@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") StringuserName){
		return "解析参数id:"+id+",name:"+userName;
}

如果⽅法参数名称和需要绑定的URL中的变量名称⼀致时,可以简写,不⽤给@PathVariable的属性赋
值,如上述例⼦中的id变量
如果⽅法参数名称和需要绑定的URL中的变量名称不⼀致时,需要@PathVariable的属性value赋值,
如上述例⼦中的userName变量

2.4 @RequestPart:上传文件

RequestPart主要是用于客户端上传文件交给服务器进行处理
后端代码实现:

@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throwsIOException {
	//获取⽂件名称
		String fileName = file.getOriginalFilename();
	//⽂件上传到指定路径
		file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
		return "接收到⽂件名称为: "+fileName;
}

2.5 @RequestParam:重命名

某些特殊的情况下,前端传递的参数key和我们后端接收的key可以不⼀致,⽐如前端传递了⼀个time给后端,⽽后端是使⽤createtime字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使⽤ @RequestParam 来重命名前后端的参数值
后端实现代码:

@RequestMapping("/m4")
public Object method_4(@RequestParam("time") String createtime) {
		return "接收到参数createtime:" + createtime;
}

可以得出结论:

  1. 使⽤ @RequestParam 进⾏参数重命名时,请求参数只能和 @RequestParam 声明的名称⼀
    致,才能进⾏参数绑定和赋值.
  2. 使⽤ @RequestParam 进⾏参数重命名时,参数就变成了必传参数

⾮必传参数设置
如果我们的实际业务前端的参数是⼀个⾮必传的参数, 针对上述问题, 如何解决呢?
先来了解下参数必传的原因, 我们查看 @RequestParam 注解的实现细节就可以发现端倪,注解
实现如下:

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
 @AliasFor("name")
 String value() default "";
 @AliasFor("value")
 String name() default "";
 boolean required() default true;
 String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n"
}

可以看到 required 的默认值为true, 表⽰含义就是: 该注解修饰的参数默认为必传
既然如此, 我们可以通过设置 @RequestParam 中的 required=false 来避免不传递时报错,
具体实现如下:

@RequestMapping("/m4")
public Object method4(@RequestParam(value = "time", required = false) String cre
 return "接收到参数createtime:" + createtime;
}

可以看到, 添加required=false之后, time前⾯也加了key, 变成了 value = “time”
注解属性赋值时, 没有指明key的话, 默认为value属性.
如果需要有多个属性进⾏赋值时, 需要写上key

2.6 @RestController:数据控制器

是Contronller和ResponseBody的封装,用于返回数据同时能够将注解内容交给Spring进行管理
@RestController = @Controller + @ResponseBody
@Controller :定义⼀个控制器,Spring框架启动时加载,把这个对象交给Spring管理.
@ResponseBody :定义返回的数据格式为⾮视图,返回⼀个text/html信息,既可以修饰类,又可以修饰方法,修饰类时表示当前类的所有方法,全部返回数据,修饰方法时,表示当前方法返回数据。**

2.7 @ResponseBody:数据格式,返回数据

@ResponseBody :定义返回的数据格式为⾮视图,返回⼀个text/html信息

@ResponseBody
public class IndexController {
	@RequestMapping("/index")
		public Object index(){
		return "/index.html";
	}
}


@ResponseBody 既是类注解,⼜是⽅法注解
如果作⽤在类上,表⽰该类的所有⽅法,返回的都是数据,如果作⽤在⽅法上,表⽰该⽅法返回的是数据.
也就是说:在类上添加 @ResponseBody 就相当于在所有的⽅法上添加了 @ResponseBody 注解.

同样,如果类上有 @RestController 注解时:表⽰所有的⽅法上添加了 @ResponseBody 注
解,也就是当前类下所有的⽅法返回值做为响应数据

@Controller
public class IndexController {
 @RequestMapping("/index")
 public Object index(){
 return "/index.html";
 }
 @RequestMapping("/returnData")
 @ResponseBody
 public String returnData(){
 return "该⽅法返回数据";
 }
}
**设置状态码**
SpringMVC会根据我们⽅法的返回结果⾃动设置响应状态码,程序员也可以⼿动指定状态码

通过SpringMVC的内置对象HttpServletResponse提供的⽅法来进⾏设置

	@ResponseBody
	public String setStatus(HttpServletResponse response) {
		response.setStatus(401);
		return "设置状态码成功";
	}

如果去掉 @ResponseBody 注解, 程序会报404错误.

@Controller
public class IndexController {
 @RequestMapping("/index")
 public Object index(){
 return "/index.html";
 }
 @RequestMapping("/returnData")
 public String returnData(){
 return "该⽅法返回数据";
 }
}

在这里插入图片描述

2.8 @CookieValue:获取Cookie

Cook是用户客户端用于保存用户的基本信息,以便于用户在下一次登录时可以直接进入
在这里插入图片描述

@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
	return "bite:" + bite;
}

2.9 @SessionAttribute:获取Session

Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的对象
在这里插入图片描述

Session的本质就是⼀个"哈希表",存储了⼀些键值对结构.Key就是SessionID,Value就是⽤⼾信息(⽤
⼾信息可以根据需求灵活设计).
SessionId是由服务器⽣成的⼀个"唯⼀性字符串",从Session机制的⻆度来看,这个唯⼀性字符串称
为)SessionId).但是站在整个登录流程中看待,也可以把这个唯⼀性字符串称为“token”.
在这里插入图片描述

  1. 当⽤⼾登陆的时候,服务器在Session中新增⼀个新记录,并把sessionId返回给客⼾端.(通过
    HTTP响应中的Set-Cookie字段返回).
  2. 客⼾端后续再给服务器发送请求的时候,需要在请求中带上sessionId.(通过HTTP请求中的 Cookie字段带上).
  3. 服务器收到请求之后,根据请求中的sessionId在Session信息中获取到对应的⽤⼾信息,再进⾏后
    续操作.找不到则重新创建Session,并把SessionID返回

简洁获取 Session(1)

@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)String username) {
		return "username:"+username;
}

简洁获取 Session(2)
通过Spring MVC内置对象HttpSession 来获取

@RequestMapping("/getSess3")
public String sess3(HttpSession session) {
 String username = (String)session.getAttribute("username");
 return "username:"+username;
 }

**Cookie和Session的区别
• Cookie是客⼾端保存⽤⼾信息的⼀种机制.Session是服务器端保存⽤⼾信息的⼀种机制.
• Cookie和Session之间主要是通过SessionId关联起来的,SessionId是Cookie和Session之间的
桥梁
• Cookie和Session经常会在⼀起配合使⽤.但是不是必须配合.
◦ 完全可以⽤Cookie来保存⼀些数据在客⼾端.这些数据不⼀定是⽤⼾⾝份信息,也不⼀定是
SessionId
◦ Session中的sessionId也不需要⾮得通过Cookie/Set-Cookie传递,⽐如通过URL传递.

2.10 @Data:类注解

Lombok是⼀个Java⼯具库,通过添加注解的⽅式,简化Java的开发其中@Data 注解会帮助我们⾃动⼀些⽅法,包含getter/setter,equals,toString等
Lombok的作⽤如下图所⽰:
在这里插入图片描述
如果觉得@Data⽐较粗暴(⽣成⽅法太多),lombok也提供了⼀些更精细粒度的注解
在这里插入图片描述
@Data=@Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor
因此可以说明在创建类对象时可以通过引入lambok工具包中的@Data注解,可以自动为我们添加其很多常用的赋值方法

三: 应用分层-三层架构

⽬前现在更主流的开发⽅式是"前后端分离"的⽅式,后端开发⼯程师不再需要关注前端的实现,所以对
于Java后端开发者,⼜有了⼀种新的分层架构:把整体架构分为表现层、业务逻辑层和数据层.这种分层
⽅式也称之为"三层架构".

  1. 表现层:就是展⽰数据结果和接受⽤⼾指令的,是最靠近⽤⼾的⼀层;
  2. 业务逻辑层:负责处理业务逻辑,⾥⾯有复杂业务的具体实现;
  3. 数据层:负责存储和管理与应⽤程序相关的数据

可以看到,咱们前⾯的代码,并不符合这种设计思想,⽽是所有的代码堆砌在⼀起

按照上⾯的层次划分,SpringMVC站在后端开发⼈员的⻆度上,也进⾏了⽀持,
• 请求处理、响应数据:负责,接收⻚⾯的请求,给⻚⾯响应数据.
• 逻辑处理:负责业务逻辑处理的代码.
• 数据访问:负责业务数据的维护操作,包括增、删、改、查等操作
在这里插入图片描述
• Controller:控制层。接收前端发送的请求,对请求进⾏处理,并响应数据。
• Service:业务逻辑层。处理具体的业务逻辑。
• Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查
MVC和三层架构的区别和联系
关于⼆者的关系,⼀直存在不同的观点.有⼈认为三层架构是MVC模式的⼀种实现,也有⼈认为MVC是
三层架构的替代⽅案,等等各种说法都有.根本原因是⼤家站在不同的⻆度来看待这个问题的.
JavaEE部分的学习重在"实践",⼤家根据⾃⼰的理解,能够⾃圆其说,说出⾃⼰的观点即可,也不建议
⼤家去背书.

从概念上来讲,⼆者都是软件⼯程领域中的架构模式.
MVC架构模式由三部分组成,分别是:模型(Model),视图(View)和控制器(Controller).
三层架构将业务应⽤划分为:表现层,业务逻辑层,数据访问层.

在这里插入图片描述
MVC中,视图和控制器合起来对应三层架构中的表现层.模型对应三层架构中的业务逻辑层,数据层,
以及实体类
⼆者其实是从不同⻆度对软件⼯程进⾏了抽象.
MVC模式强调数据和视图分离,将数据展⽰和数据处理分开,通过控制器对两者进⾏组合.
三层架构强调不同维度数据处理的⾼内聚和低耦合,将交互界⾯,业务处理和数据库操作的逻辑分开.
⻆度不同也就谈不上互相替代了,在⽇常的开发中可以经常看到两种共存的情况,⽐如我们设计模型
层的时候往往也会拆分出业务逻辑层(Service层)和数据访问层(Dao层)

四:总结

1. 学习Spring MVC, 其实就是学习各种Web开发需要⽤的到注解
a. @RequestMapping: 路由映射
b. @RequestParam: 后端参数重命名
c. @RequestBody: 接收JSON类型的参数
d. @PathVariable: 接收路径参数
e. @RequestPart: 上传⽂件
f. @ResponseBody: 返回数据
g. @CookieValue: 从Cookie中获取值
h. @SessionAttribute: 从Session中获取值
i. @RequestHeader: 从Header中获取值
j. @Controller: 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理. 默认返回
视图.
k. @RestController: @ResponseBody + @Controller 返回数据
2. Cookie 和Session都是会话机制, Cookie是客⼾端机制, Session是服务端机制. ⼆者通过SessionId
来关联. Spring MVC内置HttpServletRequest, HttpServletResponse两个对象. 需要使⽤时, 直接在
⽅法中添加对应参数即可, Cookie和Session可以从HttpServletRequest中来获取, 也可以直接使⽤
HttpServletResponse设置Http响应状态码
3. Java EE学习阶段会涉及较多⼯具, 插件的学习, 来帮助我们提⾼开发效率. ⽐如Postman, lombok,
EditStarter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893584.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第476题数字的补数

题目&#xff1a; 题解&#xff1a; func findComplement(num int) int {highBit : 0for i : 1; i < 30; i {if num < 1<<i {break}highBit i}mask : 1<<(highBit1) - 1return num ^ mask }

大模型缺的脑子,终于在智能体上长好了

智能体是一种通用问题解决器&#xff0c;从软件工程的角度看来&#xff0c;智能体是一种基于大语言模型的&#xff0c;具备规划思考能力、记忆能力、使用工具函数的能力&#xff0c;能自主完成给定任务的计算机程序。 大模型拥有接受输入&#xff0c;分析推理&#xff0c;继而…

k8s备份恢复(velero)

velero简介 velero官网&#xff1a; https://velero.io/ velero-github&#xff1a; https://github.com/vmware-tanzu/velero velero的特性 备份可以按集群资源的子集&#xff0c;按命名空间、资源类型标签选择器进行过滤&#xff0c;从而为备份和恢复的内容提供高度的灵活…

【Linux】【Jenkins】后端maven项目打包教程-Linux版

本次安装版本&#xff1a;2.4 jenkins详细安装教程1、安装git环境2、安装mavne环境2.1 下载依赖2.2、解压、赋权2.2、配置环境变量2.3、验证安装 3、jenkins-插件下载3.1、进入jenkins-->系统管理3.2、进入系统管理-->插件管理3.3、下载两个插件&#xff08;如果之前下载…

创建GitHub仓库和Git更换远程仓库

文章为个人笔记&#xff0c;详情请看reference 创建 GitHub 创建好账号点击自己头像&#xff0c;出现下拉菜单&#xff0c;点击Your profile 创建成功如下 下载Git 绑定用户 设置ssh-key ssh-keygen -t rsa -C “xxxxxx163.com 之后一直en回车 C:\Users\Y\ .ssh id_rsa…

数据不裸奔:如何确保AI分析顾客数据时的隐私保护

在这个信息爆炸的时代&#xff0c;数据已成为最宝贵的资源之一。人工智能&#xff08;AI&#xff09;技术的发展&#xff0c;使得我们能够从海量数据中提取有价值的信息&#xff0c;为商业决策提供支持。然而&#xff0c;随着AI在数据分析领域的广泛应用&#xff0c;顾客隐私保…

Leetcode 1857. 有向图中最大颜色值

1.题目基本信息 1.1.题目描述 给你一个 有向图 &#xff0c;它含有 n 个节点和 m 条边。节点编号从 0 到 n – 1 。 给你一个字符串 colors &#xff0c;其中 colors[i] 是小写英文字母&#xff0c;表示图中第 i 个节点的 颜色 &#xff08;下标从 0 开始&#xff09;。同时…

免费版视频压缩软件:让视频处理更便捷

现在不少人已经习惯通过视频来记录生活、传播信息和进行娱乐的重要方式。但是由于设备大家现在录制的文件都会比较大&#xff0c;这时候就比较需要一些缩小视频的工具了。今天我们一起来探讨视频压缩软件免费版来为我们带来的生动世界。 1.Foxit视频压缩大师 链接直达&#x…

《深度学习》【项目】自然语言处理——情感分析 <上>

目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1&#xff09;目标 2&#xff09;输入字词格式 3&#xff09;每一次传入的词/字的个数是否就是评论的长度 4&#xff09;一条评论如果超过32个词/字怎么处理&#xff1f; 5&#xff09;一条评论如果…

[每周一更]-(第119期):“BP”大揭秘:生物学与金融学中的微小单位竟有如此大不同!

最近&#xff08;2024.09.29&#xff09;央行要把存量房贷在LPR&#xff08;贷款市场报价利率&#xff09;基础上&#xff0c;降低30BP&#xff0c;刚好基因行业内&#xff0c;也有bp的概念&#xff0c;通过发音无法区分&#xff0c;以下就讲解下生物学的bp和金融学的BP的概念的…

【汇编语言】寄存器(内存访问)(三)—— 字的传送

文章目录 前言1. 字的传送2. 问题一3. 问题一的分析与解答4. 问题二5. 问题二的分析与解答结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言…

Linuxtop命令查看CPU、内存使用率、解释

1. top 命令 top 是最常用的实时监控工具之一&#xff0c;可以显示 CPU 的总利用率以及各个进程的 CPU 使用情况。在Linux命令行直接输入top即可查看动态原始数据 top 在 top 命令的输出中&#xff0c;最上面的一行会显示 CPU 的使用情况&#xff1a; us&#xff08;User&a…

day01-Qt5入门

day01-Qt5入门 1.下载Qtcreate 官网地址&#xff1a;http://qt-project.org/downloads 2.配置环境变量 将类似于 D:\Qt\Qt5.1.1\5.1.1\mingw48_32\bin 的目录添加到环境变量中 3.创建一个新项目 输入自己的项目名称&#xff0c;后面默认下一部 4.运行第一个项目 在窗口…

CentOS 7 yum失效的解决办法

文章目录 一、CentOS 7停止维护导致yum失效的解决办法解决方案 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、CentOS 7停止维护导致yum失效的解决办法 020 年&#xff0c;CentOS 项目与红帽联合宣布将全部投资转向 CentOS Stream&#xff0c;这是…

Windows环境apache控制台命令行启动、停止、重启httpd服务

Windows环境apache控制台命令行启动、停止、重启httpd服务 启动&#xff1a;httpd -k start 重启&#xff1a;httpd -k restart 停止&#xff1a;httpd -k stop 需指定服务的名称&#xff1a;后面各自加上 -n 服务名 例如&#xff1a;启动指定服务的名称 httpd -k start -n 服务…

LDR6500协议芯片:诱骗取电协议,OTG数据同时实现功能芯片

在当前的电子设备市场中&#xff0c;随着USB Type-C接口的广泛应用&#xff0c;用户对充电和数据传输的需求日益提升。为了满足这一需求&#xff0c;乐得瑞科技凭借其深厚的技术积累和创新能力&#xff0c;推出了LDR6500——一款专为USB Type-C Bridge设备设计的USB PD&#xf…

CVE-2024-30269 DataEase配置信息泄露

文章目录 免责声明漏洞描述fofa影响版本漏洞复现nuclei修复建议 免责声明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 DataEase是一个开源的数据可视化分析工具&#xff0c;可以连接…

IPv6 DNS简介

IPv6网络中的每台主机都是由IPv6地址来标识的&#xff0c;用户只有获得待访问主机的IPv6地址&#xff0c;才能够成功实现访问操作。对于用户来讲&#xff0c;记住主机的IPv6地址是相当困难的&#xff0c;因此设计了一种字符串形式的主机命名机制&#xff0c;这就是域名系统。用…

Java面试题———SpringBoot篇

目录 1、项目中为什么选择SpringBoot 2、SpringBoot的自动装配原理 3、SpringBoot的核心注解是哪个 4、SpringBoot中的starter是干什么的 5、SpringBoot可以有哪些方式加载配置 6、bootstrap.yml和application.yml有何区别 7、SpringBoot读取配置的方式有几种 8、Spring…

[Vue3核心语法] ref、reactive响应式数据

定义: ref用来定义&#xff1a;基本类型数据、对象类型数据&#xff1b; reactive用来定义&#xff1a;对象类型数据。 使用原则: 若需要一个基本类型的响应式数据&#xff0c;必须使用ref。 若需要一个响应式对象&#xff0c;层级不深&#xff0c;ref、reactive都可以。 …