SpringMVC进阶(自定义拦截器以及异常处理)

文章目录

    • 1.自定义拦截器
        • 1.基本介绍
          • 1.说明
          • 2.自定义拦截器的三个方法
          • 3.流程图
        • 2.快速入门
          • 1.Myinterceptor01.java
          • 2.FurnHandler.java
          • 3.springDispatcherServlet-servlet.xml配置拦截器
          • 4.单元测试
        • 3.拦截特定路径
          • 1.拦截指定路径
          • 2.通配符配置路径
        • 4.细节说明
        • 5.多个拦截器
          • 1.执行流程图
          • 2.应用实例
            • 1.FurnHandler.java目标方法
            • 2.拦截器
            • 3.结果展示
    • 2.异常处理
        • 1.基本介绍
        • 2.局部异常处理器
          • 1.需求分析
          • 2.抛出问题
            • 1.MyExceptionHandler.java
            • 2.不处理异常则交给tomcat处理
          • 3.局部异常实例
            • 1.MyExceptionHandler.java
            • 2.exception_mes.jsp
            • 3.结果展示
        • 3.全局异常处理器
        • 1.基本介绍
        • 2.全局异常实例
            • 1.MyGlobalException.java
            • 2.global_exception.jsp
            • 3.结果展示
        • 3.细节说明
          • 1.局部异常优先级高于全局异常
          • 2.处理异常机制
        • 4.自定义异常
          • 1.基本介绍
          • 2.自定义异常应用实例
            • 1.SelfException.java
            • 2.selfex.java
            • 3.结果展示
          • 3.可以使用有参构造,抛出异常交给异常处理器接管
            • 1.SelfException.java
            • 2.selfex.java抛出自定义异常并制定message
            • 3.MyGlobalException.java捕获自定义异常
            • 4.结果展示
        • 5.统一异常处理器
          • 1.基本介绍
          • 2.需求分析
          • 3.具体实现
            • 1.MyExceptionHandler.java抛出数组越界异常
            • 2.springDispatcherServlet-servlet.xml配置统一异常处理器
            • 3.arrEx.jsp异常处理页面
            • 4.结果展示
        • 6.对未知异常进行统一处理
          • 1.具体实现
            • 1.MyExceptionHandler.java抛出异常
            • 2.springDispatcherServlet-servlet.xml修改统一异常处理器
            • 3.allEx.jsp所有未知异常的处理
            • 4.结果展示
        • 7.异常处理的优先级
          • 1.局部异常处理器
          • 2.全局异常处理器
          • 3.统一异常处理器
          • 4.Tomcat默认机制
    • 3.springMVC阶段的配置文件
        • 1.springDispatcherServlet-servlet.xml
        • 2.web.xml

1.自定义拦截器

1.基本介绍
1.说明

image-20240229191836862

2.自定义拦截器的三个方法

image-20240229191851734

3.流程图

image-20240229192327787

image-20240229192339458

2.快速入门
1.Myinterceptor01.java
package com.sun.web.interceptor;import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author 孙显圣* @version 1.0*/
@Component //注入容器
public class Myinterceptor01 implements HandlerInterceptor {/*** 在目标方法执行前被调用,如果返回false,目标方法不会被执行** @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle");return true;}/*** 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理** @param request* @param response* @param handler* @param modelAndView* @throws Exception*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle");}/*** 在渲染之后会被调用,可以进行资源清理工作** @param request* @param response* @param handler* @param ex* @throws Exception*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion");}
}
2.FurnHandler.java
package com.sun.web.interceptor;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
@Controller
public class FurnHandler {@RequestMapping("/hi")public String hi() {System.out.println("hi方法被调用");return "success";}@RequestMapping("/hello")public String hello() {System.out.println("hello方法被调用");return "success";}
}
3.springDispatcherServlet-servlet.xml配置拦截器
    <!--配置拦截器--><mvc:interceptors><!--直接引用配置好的拦截器,这种配置方式会对所有的目标方法生效--><ref bean="myinterceptor01"/></mvc:interceptors>
4.单元测试

image-20240229195032847

3.拦截特定路径
1.拦截指定路径
    <!--配置拦截器--><mvc:interceptors><!--这样配置的拦截器可以指定路径--><mvc:interceptor><mvc:mapping path="/hi"/><ref bean="myinterceptor01"/></mvc:interceptor></mvc:interceptors>

image-20240229200251647

2.通配符配置路径
    <!--配置拦截器--><mvc:interceptors><!--拦截器可以使用通配符配置路径--><mvc:interceptor><!--匹配所有/h。。。的路径--><mvc:mapping path="/h*"/><!--排除掉/hi的路径--><mvc:exclude-mapping path="/hi"/><ref bean="myinterceptor01"/></mvc:interceptor></mvc:interceptors>

image-20240229200737823

4.细节说明

image-20240229201207944

5.多个拦截器
1.执行流程图

image-20240229205530687

2.应用实例

image-20240229212432036

1.FurnHandler.java目标方法
    @RequestMapping("/topic")public String topic() {System.out.println("topic执行!");return "success";}
2.拦截器
    @Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//只要参数中有topic是topic就直接响应String topic = request.getParameter("topic");if (topic.equals("topic")) {response.setContentType("text/html;charset=utf-8");response.getWriter().write("<h1>请不要乱说话!!</h1>");}//后面的不再执行return false;}
3.结果展示

image-20240229212753792

2.异常处理

1.基本介绍

image-20240229213057838

2.局部异常处理器
1.需求分析

image-20240301082909238

2.抛出问题
1.MyExceptionHandler.java
package com.sun.web.exception;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
@Controller
public class MyExceptionHandler {@RequestMapping("/getNum/{num}")public String getNUm(@PathVariable("num") Integer num) {//这里如果传进来的是0则会出现异常System.out.println(10 / num);return "success";}
}
2.不处理异常则交给tomcat处理

image-20240301083829770

3.局部异常实例
1.MyExceptionHandler.java
package com.sun.web.exception;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;/*** @author 孙显圣* @version 1.0*/
@Controller
public class MyExceptionHandler {@RequestMapping("/getNum/{num}")public String getNUm(@PathVariable("num") Integer num) {//这里如果传进来的是0则会出现异常System.out.println(10 / num);return "success";}//处理异常@ExceptionHandler({ArithmeticException.class, NullPointerException.class}) //参数是一个数组,可以接受多个异常类型public String exceptionHandler(Exception ex, HttpServletRequest request) { //当出现异常时,异常会自动封装到ex中(数据绑定)System.out.println("异常的信息=" + ex.getMessage());//可以将异常信息请求转发给下一个页面request.setAttribute("reason", ex.getMessage());return "exception_mes";}}
2.exception_mes.jsp
<%--Date: 2024/3/1Time: 8:47User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h3>出现异常</h3>
<h4>异常信息是${requestScope.reason}</h4>
</body>
</html>
3.结果展示

image-20240301085027684

3.全局异常处理器
1.基本介绍

image-20240301085551521

2.全局异常实例
1.MyGlobalException.java
package com.sun.web.exception;import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;import javax.servlet.http.HttpServletRequest;/*** @author 孙显圣* @version 1.0*/
@ControllerAdvice //表示这个是处理全局异常的类
public class MyGlobalException {@ExceptionHandler(ArithmeticException.class) //这个是处理算数异常的算数异常处理器public String globalException(Exception ex, HttpServletRequest request) {System.out.println("全局异常信息是=" + ex.getMessage());//将全局异常信息请求转发request.setAttribute("reason", ex.getMessage());return "global_exception";}}
2.global_exception.jsp
<%--Date: 2024/3/1Time: 9:02User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h3>出现异常</h3>
<h4>全局异常信息是${requestScope.reason}</h4>
</body>
</html>
3.结果展示

image-20240301090535405

3.细节说明
1.局部异常优先级高于全局异常
2.处理异常机制
  • 先从发生异常的方法所在的类中查找有@ExceptionHandler 注解的方法,如果异常不匹配则进行下一步
  • 从有@ControllerAdvice 注解的类查找有@ExceptionHandler 注解的方法,如果匹配异常则处理,无法匹配则交给tomcat处理
4.自定义异常
1.基本介绍

image-20240301091749206

2.自定义异常应用实例
1.SelfException.java
package com.sun.web.exception;import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;/*** @author 孙显圣* @version 1.0*/
//reason指的是返回的异常原因信息,value指的是返回的响应状态
@ResponseStatus(reason = "年龄需要在1-120之间", value = HttpStatus.BAD_REQUEST)
public class SelfException extends RuntimeException{}
2.selfex.java
package com.sun.web.exception;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
@Controller
public class selfex {@RequestMapping("/selfex")public void ex() {throw new SelfException();}
}
3.结果展示

image-20240301093453282

3.可以使用有参构造,抛出异常交给异常处理器接管
1.SelfException.java
package com.sun.web.exception;import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;/*** @author 孙显圣* @version 1.0*/
//reason指的是返回的异常原因信息,value指的是返回的响应状态
@ResponseStatus(reason = "年龄需要在1-120之间", value = HttpStatus.BAD_REQUEST) //注意这个是给tomcat看的
public class SelfException extends RuntimeException{public SelfException() {}//这样就可以从全局异常里获取message了public SelfException(String message) {super(message);}
}
2.selfex.java抛出自定义异常并制定message
package com.sun.web.exception;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
@Controller
public class selfex {@RequestMapping("/selfex")public void ex() {throw new SelfException("年龄需要在1-100"); //指定message}
}
3.MyGlobalException.java捕获自定义异常
package com.sun.web.exception;import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;import javax.servlet.http.HttpServletRequest;/*** @author 孙显圣* @version 1.0*/
@ControllerAdvice //表示这个是处理全局异常的类
public class MyGlobalException {//处理自定义异常@ExceptionHandler(SelfException.class)public String selfex(Exception ex, HttpServletRequest request) {//将全局异常信息请求转发request.setAttribute("reason", ex.getMessage());return "global_exception";}}
4.结果展示

image-20240301094532487

5.统一异常处理器
1.基本介绍

image-20240301095021696

2.需求分析

image-20240301095108246

3.具体实现
1.MyExceptionHandler.java抛出数组越界异常
package com.sun.web.exception;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
@Controller
public class MyExceptionHandler {//抛出数组越界异常,局部异常处理器和全局异常处理器都没有处理,则会交给统一异常处理器来处理@RequestMapping("/arr")public String array() {int[] ints = {1, 2, 3};System.out.println(ints[1222]); //交给统一异常处理器来处理return "success";}}
2.springDispatcherServlet-servlet.xml配置统一异常处理器
    <!--配置统一异常处理器--><bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" id="exceptionResolver"><property name="exceptionMappings"><props><!--这里的arrEx会返回给视图解析器,然后默认视图解析器进行前后缀拼接--><prop key="java.lang.ArrayIndexOutOfBoundsException">arrEx</prop></props></property></bean>
3.arrEx.jsp异常处理页面
<%--Date: 2024/3/1Time: 10:02User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>数组越界异常</h1>
</body>
</html>
4.结果展示

image-20240301100734501

6.对未知异常进行统一处理
1.具体实现
1.MyExceptionHandler.java抛出异常
package com.sun.web.exception;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
@Controller
public class MyExceptionHandler {//没有归类的异常@RequestMapping("/test")public String test() {String str = "hello";char c = str.charAt(10); //这里会抛出异常return "success";}
}
2.springDispatcherServlet-servlet.xml修改统一异常处理器
    <!--配置统一异常处理器--><bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" id="exceptionResolver"><property name="exceptionMappings"><props><!--这里的arrEx会返回给视图解析器,然后默认视图解析器进行前后缀拼接--><prop key="java.lang.ArrayIndexOutOfBoundsException">arrEx</prop><prop key="java.lang.Exception">allEx</prop></props></property></bean>
3.allEx.jsp所有未知异常的处理
<%--Date: 2024/3/1Time: 10:12User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>所有未知异常的处理界面</h1>
</body>
</html>
4.结果展示

image-20240301101531345

7.异常处理的优先级
1.局部异常处理器
  • 方法上加@ExceptionHandler({ArithmeticException.class, NullPointerException.class}) //参数是一个数组,可以接受多个异常类型
2.全局异常处理器
  • 类上加@ControllerAdvice //表示这个是处理全局异常的类
  • 方法上加@ExceptionHandler({ArithmeticException.class, NullPointerException.class}) //参数是一个数组,可以接受多个异常类型
3.统一异常处理器
  • 匹配方式是匹配尽可能具体的类型,跟配置的顺序无关
  • 在Spring配置文件中配置
    <!--配置统一异常处理器--><bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" id="exceptionResolver"><property name="exceptionMappings"><props><!--这里的arrEx会返回给视图解析器,然后默认视图解析器进行前后缀拼接--><prop key="java.lang.ArrayIndexOutOfBoundsException">arrEx</prop><prop key="java.lang.Exception">allEx</prop></props></property></bean>
4.Tomcat默认机制

3.springMVC阶段的配置文件

1.springDispatcherServlet-servlet.xml
<?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"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--容器扫描--><context:component-scan base-package="com.sun.web"/><!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"><!--配置前缀和后缀--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean><!--配置国际化错误信息的资源处理bean--><bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"><!--这里是默认到src下的properties文件中去读取的basename配置的就是文件名,所以他会读取src的i18n.properties文件--><property name="basename" value="i18n"></property></bean><!--配置文件上传解析器,注意这里的id必须是接口首字母小写--><bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver"></bean><!--加入两个常规配置--><!--支持SpringMVC的高级功能,比如JSR303校验,映射动态请求--><mvc:annotation-driven></mvc:annotation-driven><!--注意:这个annotation-driven要选择mvc的那个--><!--springMVC不能处理的请求,交给tomcat处理,比如css,js--><mvc:default-servlet-handler/><!--配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/topic"/><ref bean="myinterceptor01"/></mvc:interceptor></mvc:interceptors><!--配置统一异常处理器--><bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" id="exceptionResolver"><property name="exceptionMappings"><props><!--这里的arrEx会返回给视图解析器,然后默认视图解析器进行前后缀拼接--><prop key="java.lang.ArrayIndexOutOfBoundsException">arrEx</prop><prop key="java.lang.Exception">allEx</prop></props></property></bean><!--视图解析器按照order的大小来决定优先级,默认的视图解析器是最低的优先级MAX_VALUE = 0x7fffffff--><!--配置自定义视图解析器--><!--<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">--><!--    <property name="order" value="99"/>--><!--</bean>-->
</beans>
2.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--配置Spring自带的过滤器,解决乱码问题--><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!--这里指定字符编码--><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--&lt;!&ndash;配置过滤器——放到最前面,因为这个应该是最先处理的&ndash;&gt;--><!--<filter>--><!--    <filter-name>MyCharacterFilter</filter-name>--><!--    <filter-class>com.sun.web.filter.MyCharacterFilter</filter-class>--><!--</filter>--><!--&lt;!&ndash;过滤所有请求&ndash;&gt;--><!--<filter-mapping>--><!--    <filter-name>MyCharacterFilter</filter-name>--><!--    <url-pattern>/*</url-pattern>--><!--</filter-mapping>--><!--配置HiddenHttpMethodFilter--><!--把post方式提交的delete和put请求进行转换--><filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><!--所有请求都经过这个过滤器--><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--配置中央控制器--><!--只要服务器启动,这个servlet就调用init方法读取spring的配置文件,并且接收所有请求--><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--这里如果不配置init-param,则会按照springDispatcherServlet-servlet.xml在WEB-INF目录下找Spring的配置文件--><!--服务器启动就装载这个servlet,直接创建servlet实例,调用init方法--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><!--所有的请求都交给这servlet处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>

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

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

相关文章

LeetCode 150. 逆波兰表达式求值

LeetCode 150. 逆波兰表达式求值 1、题目 题目链接&#xff1a;150. 逆波兰表达式求值 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 ‘’、‘-’、…

如何基于Zookeeper实现注册中心模型?

在分布式系统中&#xff0c;通常会存在几十个甚至上百个服务&#xff0c;开发人员可能甚至都无法明确系统中到底有哪些服务正在运行。另一方面&#xff0c;我们很难同时确保所有服务都不出现问题&#xff0c;也很难保证当前的服务部署方式不做调整和优化。由于自动扩容、服务重…

tableau如何传参数到MySQL数据库

1、打开tableau连接本地MySQL-》新建自定义sql-》创建参数 2、新建一个简单的工作表-》把维度拖拽到行显示结果-》右键显示参数 3、参数传递到数据库sql写法 select * from yonghu where yonghu.姓名 like concat(%,<参数.姓名>,%)select * FROMabadata4WHERE abadata4…

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现 摘要&#xff1a; 随着汽车电子技术的快速发展&#xff0c;车辆状态实时监控系统的需求日益增长。本文设计并实现了一种基于STM32单片机的汽车胎压、速度及状态监测系统。该系统能够实时监测汽车的胎压、速度以及其他…

MCU自动测量单元:自动化数据采集的未来

随着科技的飞速发展&#xff0c;自动化技术在各个领域中的应用日益广泛。其中&#xff0c;MCU(微控制器)自动测量单元以其高效、精准的特性&#xff0c;成为自动化数据采集领域的佼佼者&#xff0c;引领着未来数据采集技术的革新。本文将深入探讨MCU自动测量单元的原理、优势以…

实习面试算法准备之图论

这里写目录标题 1 基础内容1.1 图的表示1.2图的遍历 2 例题2.1 所有可能的路径 1 基础内容 图没啥高深的&#xff0c;本质上就是个高级点的多叉树而已&#xff0c;适用于树的 DFS/BFS 遍历算法&#xff0c;全部适用于图。 1.1 图的表示 图的存储在算法题中常用邻接表和邻接矩…

84.柱形图中最大的矩阵

二刷终于能过了. 思路解析: 不愧是hard,第一步就很难想, 对于每一个矩阵,我们要想清楚怎么拿到最大矩阵, 对于每个height[i],我们需要找到left和right,left是i左边第一个小于height[i]的,right是右边第一个小于height[i]的,那么他的最大矩阵就是height[i] * (right-left-…

linux下安装deepspeed

安装步骤 一开始安装deepspeed不可以使用pip直接进行安装。 这时我们需要利用git进行clone下载到本地&#xff1a; git clone https://github.com/microsoft/DeepSpeed.git 进入到deepspeed的安装目录下 cd /home/bingxing2/ailab/group/ai4agr/wzf/Tools/DeepSpeed 激活…

LeetCode-旋转链表

每日一题&#xff0c;很久没做链表的题了&#xff0c;今天做l一道相对简单的力扣中等难度题。 题目要求 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&…

智慧浪潮下的产业园区:洞察智慧化转型如何打造高效、绿色、安全的新园区

目录 一、引言 二、智慧化转型的内涵与价值 三、打造高效园区的智慧化策略 1、建设智能化基础设施 2、推广智能化应用 3、构建智慧化服务平台 四、实现绿色园区的智慧化途径 1、推动绿色能源应用 2、实施绿色建筑设计 3、加强环境监测与治理 五、保障园区安全的智慧…

大白菜启动U盘想格式化但格式化不了

部分区域被修改分区表保护起来了。直接格式化的话&#xff0c;里面的文件夹都还在。根本格式化不了。特别是可用容量并未还原出来。 进入计算机管理》磁盘管理&#xff0c;看到U盘盘符。别搞错了。删除掉里面的已经分的区域和未分区区域&#xff0c;让它还原成一个整体。退出。…

Webpack-入门

定义 静态模块&#xff1a;指的是编写代码过程中的html&#xff0c;css&#xff0c;js&#xff0c;图片等固定内容的文件 打包&#xff1a;把静态模块内容压缩、整合、翻译等&#xff08;前端工程化&#xff09; 1&#xff09;把less/sass转成css代码 2&#xff09;把ES6降级…

webpack 入口和出口的最佳实践

入口和出口的最佳实践 {ignore} 具体情况具体分析 下面是一些经典场景 一个页面一个JS 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 源码结构 |—— src|—— pageA 页面A的代码目录|—— index.js 页面A的启动模块|—— ...|—— pageB 页面…

matlab学习007-已知离散时间系统的系统函数并使用matlab绘制该系统的零极点图;判断系统的稳定性;幅频和相频特性曲线

目录 题目 离散时间系统的系统函数&#xff1a;H(z)(3*z^3-5*z^210z)/(z^3-3*z^27*z-5) 1&#xff0c;绘制该系统的零极点图 1&#xff09;零极点图 2&#xff09;代码 2&#xff0c;判断系统的稳定性 1&#xff09;判断结果 2&#xff09;代码 3&#xff0c;试用MATL…

闲话 ASP.NET Core 数据校验(一):内置数据校验

前言 所谓输入的是垃圾&#xff0c;输出也必然是垃圾&#xff0c;有多少安全问题隐藏在请求的数据中&#xff0c;所以永远不能相信来自用户端的输入。 对请求数据的合法性进行校验&#xff0c;不仅有助于提升用户界面的友好性&#xff0c;而且有助于提高后台程序的安全性和稳…

【车载开发系列】UDS诊断时间参数说明

【车载开发系列】UDS诊断时间参数说明 一. 应用层诊断时间参数 1&#xff09;P2 CAN_Client 诊断仪成功发送诊断报文请求之后到收到 ECU回复诊断响应的超时时间间隔 2&#xff09;P2 CAN_Server ECU 接收到诊断请求之后到开始发送诊断报文的时间间隔&#xff0c;一般默认最…

二维码门楼牌管理应用平台建设:场所检查的新模式

文章目录 前言一、二维码门楼牌管理应用平台的优势二、场所检查记录的重要性三、二维码门楼牌管理应用平台在场所检查中的应用四、二维码门楼牌管理应用平台的未来展望 前言 随着信息技术的飞速发展&#xff0c;二维码作为一种高效、便捷的信息识别方式&#xff0c;正逐渐渗透…

服务器数据恢复—存储硬盘坏道,指示灯亮黄色的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台某品牌EqualLogic PS系列某型号存储&#xff0c;存储中有一组由16块SAS硬盘组建的RAID5磁盘阵列&#xff0c;RAID5上划分VMFS文件系统存放虚拟机文件。存储系统上层一共分了4个卷。 raid5阵列中磁盘出现故障&#xff0c;有2块硬盘…

二极管钳位型光伏逆变并网建模simulink仿真

整理了二极管钳位型光伏逆变并网建模simulink仿真&#xff0c;效果明显&#xff0c;附赠仿真报告。适合小白 二极管钳位型光伏逆变并网是将光伏发电系统中的直流电能转换为交流电能&#xff0c;并与电网连接。在此仿真中使用最大功率点追踪&#xff08;MPPT&#xff09;技术&a…

基于CANoe从零创建以太网诊断工程(2)—— TCP/IP Stack 配置的三种选项

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…