DAY09_SpringBoot—整合SpringMVCSpringMVC参数取值用法

目录

  • 1 SpringMVC
    • 1.1 SpringMVC框架介绍
    • 1.2 SpringMVC入门案例
      • 1.2.1 创建项目
      • 1.2.2 添加依赖项
      • 1.2.3 检查pom.xml文件
      • 1.2.4 编辑YML配置文件
      • 1.2.5 在templates中添加index.html文件
      • 1.2.6 默认页面跳转机制
    • 1.3 @RequestMapping注解测试
      • 1.3.1 编辑HelloController
      • 1.3.2 页面请求效果
    • 1.4 实现数据传递
      • 1.4.1 导入头标前
      • 1.4.2 编辑UserController
      • 1.4.3 页面取值
      • 1.4.4 页面请求效果
    • 1.4 SpringMVC原理说明
    • 1.4.1 Servlet作用
      • 1.4.2 重要组件
      • 1.4.3 SpringMVC调用流程图
      • 1.4.4 SpringMVC调用步骤
    • 1.5 简单参数传递
      • 1.5.1 服务器向页面传值
      • 1.5.2 页面取值
      • 1.5.3 页面请求效果
    • 1.6 页面向服务器传递数据
      • 1.6.1 编辑提交数据的页面
      • 1.6.2 编辑提交成功的页面
      • 1.6.3 Request 对象接收参数
      • 1.6.4 利用SpringMVC为属性赋值
  • 2 SpringMVC 高级用法
    • 2.1 @RequestParam
      • 2.1.1 需求说明
      • 2.1.2 编辑UserController
    • 2.2 同名提交问题
      • 2.2.1 业务描述
      • 2.2.2 数据接收
    • 2.3 对象的方式接收参数
      • 2.3.1 需求说明
      • 2.3.2 封装User对象
      • 2.3.3 编辑UserController
    • 2.4 为对象的引用赋值
      • 2.4.1 业务需求
      • 2.4.2 封装Dog对象
      • 2.4.3 对象引用
      • 2.4.4 编辑页面
      • 2.4.5 编辑Controller

1 SpringMVC

1.1 SpringMVC框架介绍

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

总结来说就是Spring内部整合SpringMVC(web的包)

1.2 SpringMVC入门案例

1.2.1 创建项目

在这里插入图片描述

1.2.2 添加依赖项

  • 添加Lombok/DevTools/Thymeleaf/SpringWeb

在这里插入图片描述

1.2.3 检查pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.1.8</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.jt</groupId>
	<artifactId>springboot_demo_3</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot_demo_3</name>
	<description>springboot_demo_3</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!--热部署工具-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<!--lombok插件-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<!--测试包-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!--SpringMVCjar包文件-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--thymeleaf导入模版工具类-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
	</dependencies>
	<!--负责项目打包部署-->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<builder>paketobuildpacks/builder-jammy-base:latest</builder>
					</image>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

1.2.4 编辑YML配置文件

#配置服务端口
server:
  port: 8090
#配置模版工具类
spring:
  thymeleaf:
    #设置页面前缀
    prefix: classpath:/templates/
    #设置页面后缀
    suffix: .html
    #是否使用缓存
    cache: false

1.2.5 在templates中添加index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SpringMVC入门案例</title>
</head>
<body>
    <h1>Hello SpringMVC</h1>
</body>
</html>

1.2.6 默认页面跳转机制

说明: SpringMVC项目启动时默认设置一个欢迎页面 并且名称必须为index

在这里插入图片描述

页面效果 如图所示

在这里插入图片描述

1.3 @RequestMapping注解测试

说明: 使用@RequestMapping注解拦截用户请求 实现业务调用

1.3.1 编辑HelloController

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller //1.将该类交给Spring容器管理 2.同时开启Spring mvc机制
public class HelloController {
    /**
     * 需求: http://localhost:8090/hello 访问hello.html
     * 实现步骤:
     * 		1.拦截用户请求 @RequestMapping("/hello")
     * 		2.String 类型的返回值 表示返回页面名称
     * 		3.根据YML配置文件中的内容 动态的拼接前缀和后缀 形成页面唯一路径
     */

    //该方法以后使用的主流的方法
    @RequestMapping("/hello")
    public String hello() {
        //动态的拼接前缀+后缀
        //classpath:/templates/hello.html
        return "hello";
    }
}

1.3.2 页面请求效果

http://localhost:8090/hello

在这里插入图片描述

1.4 实现数据传递

1.4.1 导入头标前

<!DOCTYPE html>
<!--导入模板标签!-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">

1.4.2 编辑UserController

package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UserController {
    /**
     *  mvc底层数据传输原则
     *  url: http://localhost:8090/user
     *  ModelAndView:
     *      1.model 封装数据的
     *      2.View  封装视图页面的
     * handler处理器真正的执行时 才会调用方法
     */
    @RequestMapping("/user")
    public ModelAndView toUser(){
        ModelAndView modelAndView = new ModelAndView();
        //封装数据
        modelAndView.addObject("id", 1001);
        modelAndView.addObject("name", "安琪拉");
        //封装页面数据
        modelAndView.setViewName("user");
        return modelAndView;
    }
}

1.4.3 页面取值

<!DOCTYPE html>
<!--导入模板标签!!!!!-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringMVC测试案例</title>
</head>
<body>
    <h1>用户测试代码</h1>
    <!--从服务器中获取数据 表达式  ${从服务器中的key}-->
    <h3 th:text="${id}"></h3>
    <h3 th:text="${name}"></h3>
</body>
</html>

1.4.4 页面请求效果

在这里插入图片描述

1.4 SpringMVC原理说明

1.4.1 Servlet作用

servlet是浏览器与服务器(tomcat) 进行交互的一种机制

  • 核心对象:
    • Request 包含了用户的所有的请求相关信息(参数…协议…地址…)
    • Response 包含了服务器相关的信息(服务器地址,返回的数据)

1.4.2 重要组件

  • 前端控制器
    • DispatcherServlet(内部核心机制) 接收用户所有请求
  • 处理器映射器
    • HandlerMapping 查找用户的请求与业务处理的映射
  • 处理器适配器
    • HandlerAdapter 在众多处理器中挑选合适的处理器去执行业务
  • 视图解析器
    • ViewResolver 实现页面的路径的拼接

1.4.3 SpringMVC调用流程图

在这里插入图片描述

1.4.4 SpringMVC调用步骤

  • 当用户发起请求时,被SpringMVC框架中的前端控制器拦截.
  • 由于前端控制器,并不清楚哪个方法与请求对应,所以查询处理器映射器.
  • 当tomcat服务器启动,则处理器映射器会加载所有的@RequestMapping注解,将其中的路径与方法进行绑定, Map</请求路径,包名.类名.方法名(参数)>,将查找到的方法信息回传给前端控制器 进行后续调用.
  • 秉承着松耦合的思想,前端控制器将查询得到的方法, 请求处理器适配器(mvc针对不同的配置文件有专门的处理器(运行程序的机制))挑选合适的处理器去执行(程序内置的规则 无需人为干预)
  • 当挑选合适的处理器之后,程序开始真正的执行业务方法. Controller-Service-Mapper(Dao),执行业务. 当业务执行成功之后.返回统一的ModelAndView对象.
    • 其中包含2部分数据
      • Model(服务器数据)
      • View(页面逻辑名称)
  • 当前端控制器获取ModelAndView对象之后,交给视图解析器 解析View对象的逻辑名称. 动态的拼接前缀 + 页面逻辑名称 + 后缀. 最终形成了用户展现页面的全路径.
  • 将Model数据填充到页面中的过程,叫做视图渲染. 渲染之后,将数据交给前端控制器处理.
  • 将得到的完整页面 响应给用户进行展现.

1.5 简单参数传递

1.5.1 服务器向页面传值

//简化数据传递
@RequestMapping("/user")
public String toUser2(Model model) {
    //将数据通过model进行传递
    model.addAttribute("id", 1003);
    model.addAttribute("name", "SpringMVC");
    return "user";
}

1.5.2 页面取值

<!DOCTYPE html>
<!--导入模板标签!!!!!-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringMVC测试案例</title>
</head>
<body>
    <h1>用户测试代码</h1>
    <!--从服务器中获取数据 表达式  ${从服务器中的key}-->
    <h3 th:text="${id}"></h3>
    <h3 th:text="${name}"></h3>
</body>
</html>

1.5.3 页面请求效果

在这里插入图片描述

1.6 页面向服务器传递数据

1.6.1 编辑提交数据的页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringMVC测试案例</title>
</head>
<body>
<form action="/addUser" method="POST">
    <table border="1px" cellspacing="0" align="center" width="350px" style="margin-top: 50px">
        <tr align="center">
            <td colspan="2"><h1>表格数据提交</h1></td>
        </tr>
        <tr>
            <td>ID:</td>
            <!--
                 id:标签的唯一标识 不能重复
                 name: 数据传递的必备要素 不能省略
              -->
            <td><input id="id" name="id" type="text"/></td>
        </tr>
        <tr>
            <td>姓名:</td>
            <td><input id="name" name="name" type="text"/></td>
        </tr>
    </table>
</form>
</body>
</html>
  • 页面预览

在这里插入图片描述

1.6.2 编辑提交成功的页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>提交成功!!!!</h1>
</body>
</html>

1.6.3 Request 对象接收参数

当用户点击提交按钮时,将数据进行传递. 所以必须编辑Controller的方法进行接收.利用request对象进行参数的接收.

/**
    * 请求路径: http://localhost:8090/addUser
    * 请求参数: id: 100  name: 张三
    * request/response对象说明  只要用户调用就会自动的赋值
    * servlet缺点:  接收的参数都是String类型
*/
@RequestMapping("/addUser")
public String addUser(HttpServletRequest request){
    //利用工具API进行类型转化
    Integer id = Integer.parseInt(request.getParameter("id"));
    String name = request.getParameter("name");
    System.out.println("参数:"+id+":"+name);
    return "success";
}
  • 运行结果

在这里插入图片描述

在这里插入图片描述

1.6.4 利用SpringMVC为属性赋值

/**
    * SpringMVC赋值:
    * 内部根据request.getParameter("id") 方式获取数据.
*/
@RequestMapping("/addUser")
public String addUser2(Integer id, String name) {
    System.out.println("参数获取:" + id + ":" + name);
    return "success";
}
  • 运行结果

在这里插入图片描述

2 SpringMVC 高级用法

2.1 @RequestParam

2.1.1 需求说明

有时用户的数据可能为null,如果后端服务器数据有特殊的要求

  • 要求:
    • 数据为必填项
    • 如果没有填写数据,可以为其设定默认值.
      • 通过@RequestParam注解实现.

2.1.2 编辑UserController

说明: 图中演示了@RequestParam的注解用法

/**
    * 请求参数: id: 100  name: 张三
    *
    * @RequestParam 参数说明:
    *      1.name/value   接收参数的名称
    *      2.required     默认值true  该数据项为必填项
    *      3.defaultValue 设定数据默认值  如果参数为null则设定默认值
    * required与defaultValue 是互斥的
*/
@RequestMapping("/addUser")
public String addUserParam(
    @RequestParam(value = "id", required = true, defaultValue = "1001") Integer id,
    @RequestParam(value = "name", required = true, defaultValue = "张三") String name) {
    System.out.println("参数获取:" + id + ":" + name);
    return "success";
}
  • 运行结果

在这里插入图片描述

2.2 同名提交问题

2.2.1 业务描述

SpringMVC中对于页面要求应该保证name属性尽可能唯一

但是如果遇到复选框操作时 重名问题将不能避免,使用如下操作优化

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringMVC测试案例</title>
</head>
<body>
<form action="/addUser" method="POST">
    <table border="1px" cellspacing="0" align="center" width="350px" style="margin-top: 50px">
        <tr align="center">
            <td colspan="2"><h1>表格数据提交</h1></td>
        </tr>
        <tr>
            <td>ID:</td>
            <!--
                 id:标签的唯一标识 不能重复
                 name: 数据传递的必备要素.  不能省略
              -->
            <td><input id="id" name="id" type="text"/></td>
        </tr>
        <tr>
            <td>姓名:</td>
            <td><input id="name" name="name" type="text"/></td>
        </tr>
        <tr>
            <td>爱好:</td>
            <td>
                <input name="hobbys" type="checkbox" value="敲代码"/>敲代码
                <input name="hobbys" type="checkbox" value="敲键盘"/>敲键盘
                <input name="hobbys" type="checkbox" value="敲主机"/>敲主机
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <button type="submit">提交</button>
            </td>
        </tr>
    </table>
</form>
</body>
</html>
  • 页面预览

在这里插入图片描述

2.2.2 数据接收

/**
    * 同名提交测试
    * url参数: id: name:  hobbys: 敲代码  hobbys: 敲键盘 hobbys: 敲主机
    * 参数提交的形式:springMVC自动的将参数进行了","号拼接  敲键盘,敲主机
    * SpringMVC优化:
    *      1.可以根据,号 自动的将字符串进行拆分
    *      2.如果数据类型不是String类型,则可以自动的转化
    * 总结: 如果以后遇到了同名提交问题.则使用数组或者可变参数类型接收
    * String... hobbys 可变参数类型 实质就是数组
*/
@RequestMapping("/addUser")
public String addHobbys(Integer id, String name, String hobbys) {
    System.out.println("参数获取:" + id + ":" + name + ":" + hobbys);
    return "success";
}

@RequestMapping("/addUser")
public String addHobbys(Integer id, String name, String[] hobbys) {
    System.out.println("参数获取:" + id + ":" + name + ":" + Arrays.toString(hobbys));
    return "success";
}
  • 运行结果

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

2.3 对象的方式接收参数

2.3.1 需求说明

如果有大量的页面的提交数据,如果采用单独的参数接收,必然导致Controller方法结构混乱,不便于理解.所以采用对象的方式进行封装

2.3.2 封装User对象

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * POJO实体对象中"必须"使用包装类型
 * 规则说明:
 *      1.基本类型有默认值  包装类型默认值为null
 *      2.基本类型中没有多余的方法 对后续代码取值有问题
 */
@Data//get/set/toString....
@Accessors(chain = true)//几乎不用构造方法赋值
public class User {
    //页面name属性 id/name/hobbys
    private Integer id;
    private String name;
    private String[] hobbys;
}

2.3.3 编辑UserController

实现以对象的方式接收参数

/**
    * 使用对象的方式接收数据
    * URL地址: /addUser
    * url参数: id: name:  hobbys: 敲代码 hobbys: 敲键盘 hobbys: 敲主机
    * 对象赋值的原理:
    * 		要求: POJO对象中必须有get/set方法
    * 			  当用户提交数据之后,利用对象的set方法为属性赋值.
*/
@RequestMapping("/addUser")
public String addUser(User user) {
    System.out.println(user);
    return "success";
}
  • 运行结果

在这里插入图片描述

2.4 为对象的引用赋值

2.4.1 业务需求

有时可能会遇到 name属性重复的问题. 由于业务需要不得不写一个重复的名称.那么这时采用对象的引入赋值.

2.4.2 封装Dog对象

import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
public class Dog {
    private Integer id;
    private String name;
}

2.4.3 对象引用

说明: 为了实现数据封装,必须将对象进行嵌套(引用)

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * POJO实体对象中"必须"使用包装类型
 * 规则说明:
 *      1.基本类型有默认值  包装类型默认值为null
 *      2.基本类型中没有多余的方法 对后续代码取值有问题
 */
@Data//get/set/toString....
@Accessors(chain = true)//几乎不用构造方法赋值
public class User {
    //页面name属性 id/name/hobbys
    private Integer id;
    private String name;
    private String[] hobbys;
    private Dog dog;//通过对象的引入赋值.
}

2.4.4 编辑页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringMVC测试案例</title>
</head>
<body>
<form action="/addUser" method="POST">
    <table border="1px" cellspacing="0" align="center" width="350px" style="margin-top: 50px">
        <tr align="center">
            <td colspan="2"><h1>表格数据提交</h1></td>
        </tr>
        <tr>
            <td>ID:</td>
            <!--
                 id:标签的唯一标识 不能重复
                 name: 数据传递的必备要素.  不能省略
              -->
            <td><input id="id" name="id" type="text"/></td>
        </tr>
        <tr>
            <td>姓名:</td>
            <td><input id="name" name="name" type="text"/></td>
        </tr>
        <tr>
            <td>宠物ID</td>
            <td><input name="dog.id" type="text"/></td>
        </tr>
        <tr>
            <td>宠物名称</td>
            <td><input name="dog.name" type="text"/></td>
        </tr>
        <tr>
            <td>爱好:</td>
            <td>
                <input name="hobbys" type="checkbox" value="敲代码"/>敲代码
                <input name="hobbys" type="checkbox" value="敲键盘"/>敲键盘
                <input name="hobbys" type="checkbox" value="敲主机"/>敲主机
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <button type="submit">提交</button>
            </td>
        </tr>
    </table>
</form>
</body>
</html>
  • 页面预览

在这里插入图片描述

  • 通过对象.的方式封装所属关系

在这里插入图片描述

2.4.5 编辑Controller

/**
    * 在内部封装引用对象. 使用User接收全部数据.
*/
@RequestMapping("/addUser")
public String addUserDog(User user) {
    System.out.println(user);
    return "success";
}
  • 运行结果

在这里插入图片描述

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

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

相关文章

【计算机网络】深入掌握计算机网络的核心要点(面试专用)

写在前面 前言四层模型网络地址管理Linux下设置ipARP请求包总结 前言 计算机网络是指将分散的计算机设备通过通信线路连接起来&#xff0c;形成一个统一的网络。为了使得各个计算机之间能够相互通信&#xff0c;需要遵循一定的协议和规范。OSI参考模型和TCP/IP参考模型是计算机…

32GPIO输入&按键控制LED&光敏控制蜂鸣器

一.硬件 光线越强&#xff0c;光敏电阻的阻值越小 温度越高&#xff0c;热敏电阻的阻值就越小 红外光线越强&#xff0c;红外接收管的阻值就越小 类比&#xff1a;电阻阻值越小&#xff0c;上拉或下拉就越强 &#xff08;弹簧的拉力就越强&#xff09; 在上下的电阻分压下&a…

FPGA HDMI IP之DDC(本质I2C协议)通道学习

目的&#xff1a; 使用KingstVIS逻辑分析仪软件分析HDMI的DDC通道传输的SCDC数据&#xff08;遵循I2C协议&#xff09;&#xff0c;同时学习了解SCDC的寄存器与I2C通信协议。 部分英文缩写&#xff1a; HDMIHigh Definition Multi-media Interface高清多媒体接口DDCDisplay Dat…

CSS基础细节学习

目录 一.CSS--网页的美容师 二.语法规范及选择器的介绍 一.CSS--网页的美容师 CSS是层叠样式表( Cascading Style Sheets )的简称&#xff0c;有时我们也会称之为CSS样式表或级联样式表。 CSS是也是一种标记语言&#xff0c;CSS主要用于设置HTML页面中的文本内容(字体、大小…

自定义实现 View.DragShadowBuilder 设置拖拽视图的大小

直接上刺刀 /*** Desc : 自定义拖拽视图的大小*/ public class CustomDragShadowBuilder extends View.DragShadowBuilder {private double mShadowSize;private Point mScaleFactor;/*** param view 需要拖拽的view* param shadowSize 拖拽视图的放大倍数*/public Cus…

CUDA下载安装教程,新手详细

目录 一、下载二、安装三、 设置环境变量四、补丁安装 由于项目需要安装特定版本的CUDA&#xff0c;现记录安装过程。 一、下载 进入官方下载地址&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive 选择自己需要的版本。如果没有明确要求版本号&#xff0c;那么…

智能AI系统开发,专业软件硬件物联网开发公司,探索未来科技新纪元

在信息时代&#xff0c;人工智能&#xff08;AI&#xff09;、物联网等前沿技术日益受到人们的关注。智能AI系统、专业软件硬件物联网开发公司应运而生。今天&#xff0c;我们将向大家介绍一家位于XX城的专业公司&#xff0c;致力于智能AI系统开发和软件硬件物联网领域的创新研…

macOS系统鼠标变彩虹的解决办法(详细)

目录 第一步 打开活动监视器 第二步 找出【简体中文输入方式】这个进程 第三步 点击最上方的"X"按钮&#xff0c;选择"退出" 按钮 第一步 打开活动监视器 如果下方的任务栏没有显示&#xff0c;可以在左下角【启动台】-其他里打开 -- 第二步 找出【…

仰暮计划|“老师说我其实很聪明,就是家里太穷了没条件,不然我现在也是……”

吴桂荣老人回忆录 在我外婆家的时候&#xff0c;我跟几位老奶奶坐在门口一起聊天&#xff0c;我询问她们是否能帮助我完成一份作业&#xff0c;她们笑着答应了&#xff0c;最后我选择了其中的一位老奶奶作为了解对象&#xff0c;她邀请我去家中交谈。通过了解&#xff0c;我得知…

PyTorch深度学习实战(33)——条件生成对抗网络(Conditional Generative Adversarial Network, CGAN)

PyTorch深度学习实战&#xff08;33&#xff09;——条件生成对抗网络 0. 前言1. 条件生成对抗网络1.1 模型介绍1.2 模型与数据集分析 2. 实现条件生成对抗网络小结系列链接 0. 前言 条件生成对抗网络 (Conditional Generative Adversarial Network, CGAN) 是一种生成对抗网络…

Hadoop集群部署流程

前置要求 需要3台虚拟机&#xff0c;系统为Centos7&#xff0c;分别host命名为node1&#xff0c;node2&#xff0c;node3&#xff0c;密码均为root请确保这三台虚拟机已经完成了JDK、SSH免密、关闭防火墙、配置主机名映射等前置操作 在3台虚拟机的/etc/hosts文件中&#xff0…

verilog编程之乘法器的实现

知识储备 首先来回顾一下乘法是如何在计算机中实现的。 假设现在有两个32位带符号定点整数x和y&#xff0c;我们现在要让x和y相乘&#xff0c;然后把乘积存放在z中&#xff0c;大家知道&#xff0c;两个32位数相乘&#xff0c;结果不会超过64位&#xff0c;因此z的长度应该为64…

【word】论文、报告:①插入图表题注,交叉引用②快速插入图表目录③删改后一键更新

【word】①插入图表题注&#xff0c;②删改后一键更新 写在最前面插入题注交叉引用修改插入题注的文字格式快速插入图表目录 插入题注后有删改&#xff0c;实现编号一键更新 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你…

LCweekly-game

ExScorecomplete situation1220717/719(解答错误)30523/537(超时)40 有用的是Ex2和Ex4 Ex2 my solution class Solution { public://calculate xs l-time 幂乘int jiecheng(int x,int l){int zx;for(int i0;i<l;i){if(z>pow(10,4.5))return 0;zz*z;}return z;}bool se…

C# 将HTML网页、HTML字符串转换为PDF

将HTML转换为PDF可实现格式保留、可靠打印、文档归档等多种用途&#xff0c;满足不同领域和情境下的需求。本文将通过以下两个示例&#xff0c;演示如何使用第三方库Spire.PDF for .NET和QT插件在C# 中将Html 网页&#xff08;URL&#xff09;或HTML字符串转为PDF文件。 HTML转…

深度强化学习(王树森)笔记04

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

R语言-检验正态性

1.为什么要检验正态性 首先需要明确正态性与正态分布是有区别的&#xff0c;正态分布&#xff08;标准分布&#xff09;是统计数据的分布方式&#xff0c;是个钟形曲线&#xff0c;已平均值为对称轴&#xff0c;数据在对称轴两侧对称分布。正态性是检验实际数据与标准正态分布…

QT 范例阅读:Vector Deformation

效果图&#xff1a; 主要代码&#xff1a; 实现放大镜效果QPainter painter;//两种方式if (1) {m_lens_image QImage(bounds.size(), QImage::Format_ARGB32_Premultiplied);m_lens_image.fill(0);painter.begin(&m_lens_image);} else {m_lens_pixmap QPixmap(bounds.si…

基于多种CNN模型在清华新闻语料分类效果上的对比

该实验项目目录如图&#xff1a; 1、 模型 1.1. TextCNN # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as npclass Config(object):"""配置参数"""def __init__(self, dataset, embedd…

OpenCV 0 - VS2019配置OpenCV

1 配置好环境变量 根据自己的opencv的安装目录配置 2 新建一个空项目 3 打开 视图->工具栏->属性管理器 4 添加新项目属性表 右键项目名(我这是opencvdemo)添加新项目属性表,如果有配置好了的属性表选添加现有属性表 5 双击选中Debug|x64的刚添加的属性表 6 (重点)添…