SpringMVC--概述 / 入门

目录

1. SpringMVC简介

2. 配置&入门

2.1. 开发环境

2.2. 创建maven工程

2.3. 手动创建 web.xml

2.4. 配置web.xml

2.4.1. 默认配置方式

2.4.2. 扩展配置方式

2.5. 创建请求控制器

2.6. 创建springMVC的配置文件

2.7. 测试 HelloWorld

2.7.1. 实现对首页的访问

2.7.2. 通过超链接跳转到指定页面

2.8. 总结


1. SpringMVC简介

1、什么是MVC

MVC是一种软件设计模式,它将应用程序划分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种划分有助于实现职责分离,提高代码的可维护性和复用性。

  • 模型(Model):负责处理数据和业务逻辑。在Java工程中,模型通常由JavaBean实现,包括两类:
    • 实体类Bean:如StudentUser等,主要用来封装和存储业务数据。
    • 业务处理Bean:如Service或Dao对象,负责执行具体的业务操作(如计算、验证)和数据访问(与数据库交互)。
  • 视图(View):负责与用户进行交互并呈现数据。在Web应用中,视图通常表现为HTML、JSP等网页文件,它们根据模型提供的数据动态生成用户界面。
  • 控制器(Controller):负责接收用户请求,协调模型和视图工作。当接收到请求时,控制器调用相应的模型进行数据处理,然后选择合适的视图来渲染结果,并最终将响应返回给用户(浏览器)。在Java Web应用中,控制器通常由Servlet实现。

MVC工作流程概括如下:

  1. 用户通过浏览器向服务器发送请求。
  2. 请求到达控制器(Servlet),控制器解析请求并确定应调用哪个模型进行处理。
  3. 控制器调用相应的模型进行业务逻辑处理和数据操作。
  4. 处理完毕后,模型将结果返回给控制器。
  5. 控制器根据处理结果选择合适的视图,并将数据传递给视图进行渲染。
  6. 渲染后的视图(HTML页面)作为响应发送回浏览器,用户看到最终的界面。

2、什么是SpringMVC

SpringMVC是Spring框架的一部分,专为Web应用程序的表述层(即前端界面和后台控制器)设计,提供了一种高效、灵活且易于扩展的MVC实现。随着技术发展,SpringMVC已逐渐成为Java EE项目表述层开发的首选框架。


3、SpringMVC的特点

  • Spring家族原生产品:作为Spring的一员,SpringMVC能够与Spring的其他组件(如IoC容器、AOP等)无缝集成,共享Spring生态系统的便利。
  • 基于原生Servlet:SpringMVC基于标准的Servlet API构建,通过一个强大的前端控制器——DispatcherServlet,对所有请求和响应进行集中处理和调度。DispatcherServlet简化了开发工作,使得开发者只需关注具体业务逻辑的实现。
  • 全方位覆盖表述层需求:SpringMVC提供了丰富的功能支持,包括数据绑定、国际化、异常处理、拦截器、RESTful API等,几乎涵盖了表述层开发的所有常见需求,为开发者提供了一站式的解决方案。
  • 代码清晰简洁:SpringMVC倡导约定优于配置的原则,其简洁的API和清晰的编程模型有助于开发者快速理解和编写代码,从而提高开发效率。
  • 高度可插拔的组件化设计:SpringMVC内部各组件设计为可插拔式,开发者可以根据项目需求灵活添加或替换组件。例如,只需配置相应的拦截器即可实现特定的请求过滤或预处理功能。
  • 卓越的性能:SpringMVC经过精心设计和优化,具备优秀的性能表现,特别适合构建大型、高并发的互联网应用。其高效的请求处理机制、资源管理和缓存策略等,确保了在高负载下仍能保持良好的响应速度和服务质量。

2. 配置&入门

2.1. 开发环境

IDE:idea 2023.3

构建工具:maven3.9.6

服务器:tomcat9

Spring版本:5.3.14


2.2. 创建maven工程

这里 SpringMVC 是总父工程,其余的它的子模块

打包方式:war

添加依赖

由于 Maven 的传递性,我们不必将所有需要的包全部配置依赖,而是配置最顶端的依赖,也就是父工程添加所有的依赖,其他靠传递性导入。

 <dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.14</version></dependency><!-- 日志 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.14</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!--Spring5和Thymeleaf整合包--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency>
</dependencies>

2.3. 手动创建 web.xml

在子模块中 springmvc-demo01 中的配置文件

设置打包方式

创建 webapp 文件夹

创建 web.xml 文件


注意路径别错

是你这个子模块下面的 src/main/webapp 下


2.4. 配置web.xml

在web.xml文件中,我们配置SpringMVC的前端控制器DispatcherServlet,它是整个SpringMVC框架的核心组件,负责接收和分发浏览器发送的请求。以下是两种常见的配置方式

2.4.1. 默认配置方式

默认情况下,当我们注册DispatcherServlet时,SpringMVC会自动查找与其关联的配置文件。配置如下:

<!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
<servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>springMVC</servlet-name><!-- 设置SpringMVC处理的请求路径 --><url-pattern>/</url-pattern>
</servlet-mapping>

在此配置下,SpringMVC会寻找名为springMVC-servlet.xml的配置文件,该文件应位于WEB-INF目录下。<url-pattern>/</url-pattern>表示DispatcherServlet将处理以'/'开头的所有非.jsp请求,如/login, /index.html, /style.css等。注意,由于'/'不匹配以.jsp结尾的请求,因此访问.jsp页面时,这些请求不会被DispatcherServlet处理,而是直接由服务器找到对应的JSP文件并返回给浏览器。


2.4.2. 扩展配置方式

如果我们希望自定义SpringMVC配置文件的位置和名称,或者控制DispatcherServlet的初始化时机,可以使用如下扩展配置:

<!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
<servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定SpringMVC配置文件的位置和名称 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMVC.xml</param-value></init-param><!-- 设置DispatcherServlet在服务器启动时初始化 --><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>springMVC</servlet-name><!-- 设置SpringMVC处理的请求路径 --><url-pattern>/</url-pattern>
</servlet-mapping>

这里,我们通过<init-param>标签设置了SpringMVC配置文件的位置为类路径下的springMVC.xml。同时,<load-on-startup>1</load-on-startup>表明DispatcherServlet应在服务器启动时立即初始化,而不是等到接收到第一个请求时才加载,这样可以提高系统响应速度。

关于 <url-pattern> 标签中使用 //* 的区别

  • /: 表示匹配以'/'开头的所有非.jsp请求。例如,/login, /about.html, /assets/css/style.css等。注意,这不会匹配以.jsp结尾的请求,因此访问.jsp页面时,这些请求将绕过DispatcherServlet,直接由服务器处理。
  • /*: 表示匹配所有请求,包括以'/'开头的非.jsp请求以及以.jsp结尾的请求。如果在SpringMVC中使用/*,那么所有请求(包括.jsp页面请求)都将先经过DispatcherServlet。在某些场景下(如全局过滤器应用)可能需要这种配置,但通常不建议对.jsp页面使用/*,因为这可能导致SpringMVC尝试处理JSP页面请求,而实际上应该由服务器直接找到并返回对应的JSP文件。

总结:在一般情况下,使用/作为<url-pattern>可以确保SpringMVC仅处理非.jsp请求,避免与服务器对.jsp页面的处理产生冲突。如果您有特殊需求(如全局过滤所有请求),可以考虑使用/*,但需要注意处理好JSP页面的访问。


2.5. 创建请求控制器

  1. 创建请求控制器

在Web应用程序中,当用户通过浏览器发起一个请求时,需要有专门的程序来接收并处理这个请求。这个接收和处理请求的角色就是“请求控制器”。

  1. 请求控制器的作用

请求控制器负责对接收到的具体请求进行有针对性的处理。不同的请求可能需要执行的操作、访问的数据或者返回的结果各不相同,因此每个请求对应一个特定的处理逻辑。在代码层面,这些处理逻辑被封装在请求控制器的不同方法中,我们把这些方法称为“控制器方法”。

  1. Spring MVC与控制器

Spring MVC是一个流行的Web应用开发框架,它采用一种模型-视图-控制器(MVC)的设计模式。在这个模式中,“控制器”(Controller)负责接收用户请求,调用业务逻辑(Model),并最终选择合适的视图(View)呈现给用户。

  1. 使用@Controller注解

在Spring MVC中,请求控制器其实就是一个普通的Java类(POJO:Plain Old Java Object)。为了让Spring MVC框架能够识别并管理这个类,我们需要在类定义处添加@Controller注解。这个注解告诉Spring:“这是一个控制器类,请你把它作为控制层组件纳入你的IoC(Inversion of Control,控制反转)容器进行管理。”

所以,编写以下代码

package com.sakurapaid.mvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** HelloController类用于处理前端请求,提供相应的控制逻辑。* 该类使用@Controller注解标识为一个Spring MVC的控制器组件。*/
@Controller
public class HelloController {}

该函数是一个Java类HelloController,被@Controller注解标记,表示它是一个控制器类,用于处理HTTP请求

总结一下:

  1. 请求控制器是处理用户请求的程序组件。
  2. 在Spring MVC中,请求控制器是一个带有@Controller注解的普通Java类。
  3. 控制器类中的每个处理特定请求的方法被称为控制器方法。
  4. 使用@Controller注解,让Spring MVC框架识别并管理这个控制器类,以便在接收到相应请求时调用其控制器方法进行处理。

2.6. 创建springMVC的配置文件

在上面的扩展配置中,有这么一行代码

<!-- 指定SpringMVC配置文件的位置和名称 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMVC.xml</param-value></init-param>

所以要创建一个springMVC.xml 的配置文件,也就是在 Spring 框架中的配置文件是一个道理

开启组件扫描和配置Thymeleaf视图解析器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!-- 开启组件扫描,自动发现并注册标注了@Component等注解的Bean到Spring容器中 --><context:component-scan base-package="com.sakurapaid.mvc.controller"/><!-- 配置Thymeleaf视图解析器,用于将控制器返回的逻辑视图名解析为实际的HTML页面 --><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/> <!-- 解析器的优先级 --><property name="characterEncoding" value="UTF-8"/> <!-- 解析结果的字符编码 --><property name="templateEngine"><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 设置视图的前缀,例如:如果逻辑视图名为home,则实际查找的路径为/WEB-INF/templates/home.html --><property name="prefix" value="/WEB-INF/templates/"/><!-- 设置视图的后缀,即视图文件的扩展名 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/> <!-- 指定模板解析模式为HTML5 --><property name="characterEncoding" value="UTF-8"/> <!-- 模板的字符编码 --></bean></property></bean></property></bean></beans>

Thymeleaf视图解析器:

在Spring框架中,Thymeleaf视图解析器是一个用于将控制器处理结果(逻辑视图)转换为实际用户可见页面(通常是HTML页面)的组件。它是Spring MVC框架与Thymeleaf模板引擎的集成点,使得开发者可以利用Thymeleaf的强大功能来构建动态网页。

  1. ThymeleafViewResolver:这是Thymeleaf提供的用于Spring MVC的视图解析器。它的主要作用是将控制器返回的逻辑视图名称解析为实际的HTML页面。例如,如果控制器返回一个名为“home”的逻辑视图,ThymeleafViewResolver会查找对应的HTML模板文件并渲染它。
  2. SpringTemplateEngine:这是Thymeleaf的核心类,负责处理模板的渲染。它将模板文件和模型数据结合起来,生成最终的HTML页面。SpringTemplateEngine需要一个模板解析器来找到正确的模板文件。
  3. SpringResourceTemplateResolver:这是一个模板解析器,它负责查找和加载模板文件。在配置中,我们通过设置它的属性来告诉SpringTemplateEngine在哪里以及如何找到模板文件。
    • prefix:这是模板文件的前缀,定义了模板文件在项目中的存放路径。在这个例子中,模板文件位于/WEB-INF/templates/目录下。
    • suffix:这是模板文件的后缀,定义了模板文件的扩展名。在这个例子中,模板文件的扩展名为.html
    • templateMode:这是模板解析模式,指定了模板的类型。在这个例子中,我们使用HTML5模式,意味着模板将按照HTML5标准进行解析。
    • characterEncoding:这是模板文件的字符编码,确保文件正确读取和解析。在这个例子中,我们使用UTF-8编码。

通过这样的配置,Spring MVC和Thymeleaf协同工作,控制器处理请求后返回的逻辑视图名称会被ThymeleafViewResolver解析,并使用SpringTemplateEngine和SpringResourceTemplateResolver来渲染出最终的HTML页面,然后发送给客户端浏览器显示。这样,开发者就可以利用Thymeleaf的模板语法来编写动态和可维护的前端页面了。


2.7. 测试 HelloWorld

2.7.1. 实现对首页的访问

在请求控制器中创建处理请求的方法 -- HelloController.java

package com.sakurapaid.mvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 一个负责处理前端请求的控制器类。*/
@Controller
public class HelloController {/*** 处理根路径("/")的请求,重定向到主页。* * @return 返回视图名称 "index",代表需要渲染的主页视图。*/@RequestMapping("/")public String index() {// 返回主页的视图名称return "index";}
}

因为配置Thymeleaf视图解析器的原因,已经配置好了视图的位置前缀,及其后缀拓展名,所以在 controller 控制器返回方法只需要返回页面文件的名字即可

<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 设置视图的前缀,例如:如果逻辑视图名为home,则实际查找的路径为/WEB-INF/templates/home.html --><property name="prefix" value="/WEB-INF/templates/"/><!-- 设置视图的后缀,即视图文件的扩展名 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/> <!-- 指定模板解析模式为HTML5 --><property name="characterEncoding" value="UTF-8"/> <!-- 模板的字符编码 -->
</bean>

所以在 src/main/webapp/WEB-INF/templates 文件夹下创建一个 index.html 文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>我是首页</h1>
</body>
</html>

配置本地 Tomcat 服务器

测试运行


2.7.2. 通过超链接跳转到指定页面

在主页index.html中设置超链接

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body><h1>首页</h1><a th:href="@{/hello}">点击进入target界面</a><br/></body>
</html>

Thymeleaf 特性

th:href 是 Thymeleaf 提供的一个属性处理器(Attribute Processor),它扩展了标准 HTML 的 href 属性。在 Thymeleaf 模板中,使用 th: 前缀的属性都是 Thymeleaf 特有的,它们会在页面渲染时处理这些属性,生成最终的动态 HTML。

th:href="@{/hello}" 具体含义如下:

  • @{...} 是 Thymeleaf 中用来构建 URL 的语法。在这个上下文中,@{/hello} 表示一个相对于当前上下文路径(context path)的 URL。
  • @{/hello} 会被解析为一个指向服务器上 /hello 资源的链接。当用户点击这个链接时,浏览器将发送请求到类似 http://yourdomain.com/context-path/hello 的地址(其中 context-path 是您的应用程序部署时的上下文路径,如果省略则直接访问 http://yourdomain.com/hello)。

<a th:href="@{/hello}">HelloWorld</a><br/> 

这一行 HTML 代码借助 Thymeleaf 创建了一个指向服务器上 /hello 路径的超链接,链接文字为 "HelloWorld",并在其后添加了一个换行符。当用户访问此页面并点击 "HelloWorld" 链接时,浏览器将跳转到相应服务器端处理的 /hello 资源。

在请求控制器中创建处理请求的方法

package com.sakurapaid.mvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 一个负责处理前端请求的控制器类。*/
@Controller
public class HelloController {/*** 处理根路径("/")的请求,重定向到主页。** @return 返回视图名称 "index",代表需要渲染的主页视图。*/@RequestMapping("/")public String index() {// 返回主页的视图名称return "index";}/*** 处理/hello路径的请求,展示一个目标页面。** @return 返回视图名称"target",代表需要渲染的目标页面视图。*/@RequestMapping("/hello")public String HelloWorld() {return "target";}
}

创建 target.html 页面文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>我是target页面</h1>
</body>
</html>

测试输出


2.8. 总结

在使用SpringMVC框架进行Web开发时,整个请求处理的流程可以简单概括如下:

  1. 浏览器发送请求:用户在浏览器中输入URL并发送请求到服务器。
  2. 前端控制器处理请求:服务器上的前端控制器(DispatcherServlet)负责接收这个请求。它根据配置的URL模式(url-pattern)来判断是否由自己处理这个请求。
  3. 查找控制器:如果请求的URL符合模式,前端控制器会查找对应的控制器。控制器是实现了特定业务逻辑的类,它们通过@Controller注解进行标识。
  4. 请求映射:在控制器中,会定义一些方法来处理特定的请求,这些方法通过@RequestMapping注解与URL的某个部分进行映射。当请求的URL与注解中的value属性值匹配时,该方法就会被选中作为处理请求的方法。
  5. 处理请求:选中的方法会执行业务逻辑,并返回一个视图名称。这个视图名称是一个字符串,它代表了将要展示给用户的页面。
  6. 视图解析:视图名称会被视图解析器处理。视图解析器会根据配置的前缀和后缀,生成完整的视图路径。
  7. 视图渲染:接下来,Thymeleaf这样的模板引擎会根据视图路径找到相应的模板文件,并结合模型数据进行渲染,生成最终的HTML页面。
  8. 转发到页面:最后,渲染好的页面会被转发到用户的浏览器,用户就可以看到结果了。

这个过程简化了Web开发的复杂性,使得开发者可以更专注于业务逻辑的实现,而不必过多关注请求的处理细节。通过SpringMVC框架,可以高效地开发出结构清晰、易于维护的Web应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java+springboot+vue实现的教学辅助系统(文末源码+Lw)23-225

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#…

健康元 穿越周期看底色

中国创新药正在迈进2.0时代。 进入2024年之后&#xff0c;越来越多的国内创新药企开始主动调整研发管线&#xff0c;缩减研发开支&#xff0c;甚至是直接被“溢出”了市场。 在“风向标”的融资端&#xff0c;过去的2023年也是中国创新药融资市场连续第二年出现一二级市场融资…

逆向入门:为CTF国赛而战day03

今天来做几道题目。 环境准备&#xff1a;ida ,Exeinfo,万能脱壳器&#xff08;后面有写资源&#xff09; 强推&#xff0c;亲测有效CTF小工具下载整理_ctf工具御剑下载-CSDN博客 [网站BUUCTF] 目录 题目一 题目二三 题目4&#xff1a;新年快乐 题目一 easyre题解_easyr…

电脑硬件 - 硬盘

硬盘是一台电脑的数据中心&#xff0c;存放着我们用户的所有文件和数据 对于一块硬盘&#xff0c;其重要指标&#xff1a;顺序读写能力&#xff0c;随机读写能力 顺序读写影响大文件的拷贝&#xff0c;随机读写影响大量小文件的拷贝&#xff08;打开软件的快慢&#xff09; 因…

【算法详解】双指针

双指针 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff0c;一种是左右指针。 1. 双指针简介 双指针&#xff08;Two Pointers&#xff09;&#xff1a;指的是在遍历元素的过程中&#xff0c;不是使用单个指针进行访问&#xff0c;而是使用两个指针进行访问&#…

chrome google浏览器添加插件扩展失败怎么办,无法从该网站添加应用、扩展程序和用户脚本确定,

无法从该网站添加应用、扩展程序和用户脚本确定 chrome google浏览器添加插件扩展失败怎么办&#xff0c;无法从该网站添加应用、扩展程序和用户脚本确定&#xff0c; 需要打开调试模式 chrome://extensions/

第32篇:实时时钟

Q&#xff1a;本期我们使用BCD计数器设计实现分--秒--厘秒实时时钟。 A&#xff1a;实时时钟设计&#xff1a;在2个七段数码管上显示分钟&#xff08;从0到59&#xff09;&#xff0c;在2个七段数码管显示秒&#xff08;从0到59&#xff09;&#xff0c;在2个七段数码管上显示…

信息工程大学第五届超越杯程序设计竞赛(同步赛)vp

目录 A.遗失的旋律 C.财政大臣 D.实验室有多少人 E.在雾中寻宁静 F.不规则的轮回 G.完美数字 M.Monikas game A.遗失的旋律 思路&#xff1a;模拟即可 代码如下&#xff1a; #include<bits/stdc.h>using namespace std; #define fs first #define sc second #de…

目标检测——RCNN系列学习(一)

前置知识 包括&#xff1a;非极大值抑制&#xff08;NMS&#xff09;、selective search等 RCNN [1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation (arxiv.org)https://arxiv.org/abs/1311.2524 1.网络训练 2.推理流程 3.总…

Vant使用自定义图标(阿里图标)

前言 阿里图标官网 备用地址&#xff1a; https://www.iconfont.cn/ 添加图标 1、进入官网添加图标&#xff0c;如箭头所示 2、复制如图选中的文件&#xff0c;粘贴项目中的src/assets/icon_font/目录下 3、在main.js引入图标css //引入自定义图标 import /assets/icon_fon…

基于springboot教师人事档案管理系统,2024年最新基于web的毕业设计题目代码

管理员 教师端 目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 研究现状 2 1.3 研究意义 3 第2章 相关技术 4 2.1 系统开发平台 5 2.2 平台开发相关技术 6 第3章 系统分析 7 3.1 系统目标 8 3.2系统流程和逻辑 9 第4章系统概要设计 10 4…

Linux虚拟主机中如何进行扫描检查恶意软件

看到论坛中有网友留言想要知道Linux虚拟主机上是否有扫描检测工具可以检测病毒文件或者恶意软件的。因为想要知道是否有此功能&#xff0c;以便他后去购买产品是可以更清晰的去咨询以及了解。正如这边是有使用Hostease提供商的Linux 虚拟主机&#xff0c;而cPanel中如何进行扫描…

012——LED模块驱动开发(基于I.MX6uLL)

目录 一、 硬件原理图 二、 驱动程序 三、 应用程序 四、 Makefile 五、操作 一、 硬件原理图 又是非常经典的点灯环节 &#xff0c;每次学新语言第一步都是hello world&#xff0c;拿到新板子或者学习新的操作系统&#xff0c;第一步就是点灯。 LED 的驱动方式&#xff0…

2024年阿里云优惠券(代金券)在哪里领取?

阿里云作为国内领先的云计算服务提供商&#xff0c;不仅提供了稳定、高效的云服务&#xff0c;还时常推出各种优惠活动&#xff0c;以此来吸引用户上云。其中&#xff0c;阿里云优惠券就是一种常见的优惠方式。那么&#xff0c;在2024年&#xff0c;我们该如何领取阿里云优惠券…

[开源] 基于GRU的时间序列预测模型python代码

基于GRU的时间序列预测模型python代码分享给大家&#xff0c;记得点赞哦 #!/usr/bin/env python # coding: utf-8import time time_start time.time() import numpy as np import matplotlib.pyplot as plt import pandas as pd import math from keras.models import Sequent…

Python第四次作业

周六&#xff1a; 1. 找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数&#xff08;函数&#xff09; def find_number():for number in range(0,10000):if number % 5 0 or number % 6 0:if number % 5 ! number % 6:ls.append(number)print(ls)ls [] fin…

面板数据回归模型(二)房价的影响因素分析

1.数据来源 本文选择我国出一线城市房价均值、新一线城市房价均值、二线城市房价均值、货币供应量和利率。选取2002-2018年的数据,共17组数据,由于数据的自然对数变换不改变原有的协整关系,并能使其趋势线性化,消除时间序列中存在的异方差现象,所以对所有数据取其自然对数…

Java多线程+分治求和,太牛了

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen 最近的一个面试&#xff0c;shigen简直被吊打&#xff0c;简历上写了熟悉高并发…

大模型实践:如何选择适合自己场景的Prompt框架?

1. 选择适合自己场景的Prompt框架需要考虑哪些因素&#xff1f; 以下是一些关键的步骤和考虑点&#xff1a; 理解任务需求&#xff1a;首先&#xff0c;明确你的任务类型&#xff08;如文本生成、问答、文本分类、机器翻译等&#xff09;和具体需求。不同的任务可能需要不同类…

蓝桥杯DFS-最大数字

解题思路 我们从最高位开始要利用自己的1号操作和2号操作保证当前这个数位的数一定要尽可能最大。 然后分别考虑两种操作&#xff0c;首先两种操作不可能混用&#xff0c;因为它们是抵消的效果&#xff0c;所以要么对这个数全使用1操作&#xff0c;要么2操作。假设某个数位的…