Spring MVC__@RequestMapping注解、获取请求参数、域对象共享数据、视图、Restful

目录

  • 一、@RequestMapping注解
    • 1、@RequestMapping注解的功能
    • 2、@RequestMapping注解的位置
    • 3、@RequestMapping注解的value属性
    • 4、@RequestMapping注解的method属性
    • 5、@RequestMapping注解的params属性(了解)
    • 6、@RequestMapping注解的headers属性(了解)
    • 7、SpringMVC支持ant风格的路径
    • 8、SpringMVC支持路径中的占位符(重点)
  • 二、SpringMVC获取请求参数
    • 1、通过ServletAPI获取
    • 2、通过控制器方法的形参获取请求参数
    • 3、@RequestParam
    • 4、@RequestHeader
    • 5、@CookieValue
    • 6、通过POJO获取请求参数
    • 7、解决获取请求参数的乱码问题
  • 三、域对象共享数据
    • 1、使用ServletAPI向request域对象共享数据
    • 2、使用ModelAndView向request域对象共享数据
    • 3、使用Model向request域对象共享数据
    • 4、使用map向request域对象共享数据
    • 5、使用ModelMap向request域对象共享数据
    • 6、Model、ModelMap、Map的关系
    • 7、向session域共享数据
    • 8、向application域共享数据
  • 四、SpringMVC的视图
    • 1、ThymeleafView
    • 2、转发视图
    • 3、重定向视图
    • 4、视图控制器view-controller
  • 七、RESTful
    • 1、RESTful简介
    • 2、RESTful的实现
    • 3、HiddenHttpMethodFilter

一、@RequestMapping注解

1、@RequestMapping注解的功能

从注解名称上我们可以看到, @RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系
SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求

2、@RequestMapping注解的位置

@RequestMapping 标识一个类:设置映射请求的请求路径的初始信息
@RequestMapping 标识一个方法:设置映射请求请求路径的具体信息

@Controller 
@RequestMapping("/test") 
public class RequestMappingController { //此时请求映射所映射的请求的请求路径为:/test/testRequestMapping@RequestMapping("/testRequestMapping")                          public String testRequestMapping(){ return "success"; } }

3、@RequestMapping注解的value属性

@RequestMapping 注解的 value 属性通过请求的请求地址匹配请求映射
@RequestMapping 注解的 value 属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
@RequestMapping 注解的 value 属性必须设置,至少通过请求地址匹配请求映射

<a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-- >/testRequestMapping
</a>
<br> 
<a th:href="@{/test}">测试@RequestMapping的value属性-->/test
</a>
<br>
@RequestMapping( value = {"/testRequestMapping", "/test"} )
public String testRequestMapping(){ return "success"; 
}

4、@RequestMapping注解的method属性

@RequestMapping 注解的 method 属性通过请求的请求方式( get 或 post )匹配请求映射
@RequestMapping 注解的 method 属性是一个 RequestMethod 类型的数组,表示该请求映射能够匹配多种请求方式的请求
若当前请求的请求地址满足请求映射的 value 属性,但是请求方式不满足 method 属性,则浏览器报错405: Request method ‘POST’ not supported

<a th:href="@{/test}">测试@RequestMapping的value属性-->/test
</a>
<br> 
<form th:action="@{/test}" method="post"> <input type="submit"> 
</form>
@RequestMapping( value = {"/testRequestMapping", "/test"}, method = {RequestMethod.GET, RequestMethod.POST} 
)
public String testRequestMapping(){ return "success"; 
}

注:
1 、对于处理指定请求方式的控制器方法, SpringMVC 中提供了 @RequestMapping 的派生注解
处理 get 请求的映射 -->@GetMapping
处理 post 请求的映射 -->@PostMapping
处理 put 请求的映射 -->@PutMapping
处理 delete 请求的映射 -->@DeleteMapping
2 、常用的请求方式有 get , post , put , delete
但是目前浏览器只支持 get 和 post ,若在 form 表单提交时,为 method 设置了其他请求方式的字符 串(put 或 delete ),则按照默认的请求方式 get 处理
若要发送 put 和 delete 请求,则需要通过 spring 提供的过滤器 HiddenHttpMethodFilter ,在
RESTful 部分会讲到

5、@RequestMapping注解的params属性(了解)

@RequestMapping 注解的 params 属性通过请求的请求参数匹配请求映射
@RequestMapping 注解的 params 属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系

  • “param” :要求请求映射所匹配的请求必须携带 param 请求参数
  • “!param” :要求请求映射所匹配的请求必须不能携带 param 请求参数
  • “param=value” :要求请求映射所匹配的请求必须携带 param 请求参数且 param=value
  • “param!=value” :要求请求映射所匹配的请求必须携带 param 请求参数但是 param!=value
<a th:href="@{/test(username='admin',password=123456)">测试@RequestMapping的 params属性-->/test
</a>
<br>
@RequestMapping( value = {"/testRequestMapping", "/test"} ,method = {RequestMethod.GET, RequestMethod.POST} ,params = {"username","password!=123456"} 
)
public String testRequestMapping(){ return "success"; 
}

注:
若当前请求满足 @RequestMapping 注解的 value 和 method 属性,但是不满足 params 属性,此时页面回报错400 : Parameter conditions “username, password!=123456” not met for actual request parameters: username={admin}, password={123456}

6、@RequestMapping注解的headers属性(了解)

@RequestMapping 注解的 headers 属性通过请求的请求头信息匹配请求映射
@RequestMapping 注解的 headers 属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系

  • “header” :要求请求映射所匹配的请求必须携带 header 请求头信息
  • “!header” :要求请求映射所匹配的请求必须不能携带 header 请求头信息
  • “header=value” :要求请求映射所匹配的请求必须携带 header 请求头信息且 header=value
  • “header!=value” :要求请求映射所匹配的请求必须携带 header 请求头信息且 header!=value

若当前请求满足 @RequestMapping 注解的 value 和 method 属性,但是不满足 headers 属性,此时页面显示404 错误,即资源未找到

7、SpringMVC支持ant风格的路径

  • ?:表示任意的单个字符
  • *:表示任意的 0 个或多个字符
  • ** :表示任意的一层或多层目录
    注意:在使用 ** 时,只能使用 /**/xxx 的方式

8、SpringMVC支持路径中的占位符(重点)

  • 原始方式: /deleteUser?id=1
  • rest 方式: /deleteUser/1

SpringMVC 路径中的占位符常用于 RESTful 风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping 注解的 value 属性中通过占位符 {xxx} 表示传输的数据,在通过@PathVariable 注解将占位符所表示的数据赋值给控制器方法的形参

<a th:href="@{/testRest/1/admin}">测试路径中的占位符-->/testRest
</a>
<br>
@RequestMapping("/testRest/{id}/{username}") 
public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){ System.out.println("id:"+id+",username:"+username); return "success"; 
}
//最终输出的内容为-->id:1,username:admin

二、SpringMVC获取请求参数

1、通过ServletAPI获取

将 HttpServletRequest 作为控制器方法的形参,此时 HttpServletRequest 类型的参数表示封装了当前请求的请求报文的对象

@RequestMapping("/testParam") 
//形参表示当前请求
public String testParam(HttpServletRequest request){ String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username:"+username+",password:"+password);             return "success"; 
}

2、通过控制器方法的形参获取请求参数

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参

<a th:href="@{/testParam(username='admin',password=123456)}">测试获取请求参数-- >/testParam
</a>
<br>
@RequestMapping("/testParam") 
public String testParam(String username, String password){System.out.println("username:"+username+",password:"+password);          return "success"; 
}

注:

  • 若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数
    • 若使用字符串数组类型的形参,此参数的数组中包含了每一个数据
    • 若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

3、@RequestParam

@RequestParam 是将请求参数和控制器方法的形参创建映射关系
@RequestParam 注解一共有三个属性:

  • value :指定为形参赋值的请求参数的参数名
  • required :设置是否必须传输此请求参数,默认值为 true
    • 若设置为 true 时,则当前请求必须传输 value 所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错 400 : Required String parameter ‘xxx’ is not present ;
    • 若设置为false ,则当前请求不是必须传输 value 所指定的请求参数,若没有传输,则注解所标识的形参的值为null
  • defaultValue :不管 required 属性值为 true 或 false ,当 value 所指定的请求参数没有传输或传输的值为 “” 时,则使用默认值为形参赋值’

在这里插入图片描述

4、@RequestHeader

@RequestHeader 是将请求头信息和控制器方法的形参创建映射关系
@RequestHeader 注解一共有三个属性: value 、 required 、 defaultValue ,用法同 @RequestParam

5、@CookieValue

@CookieValue 是将 cookie 数据和控制器方法的形参创建映射关系
@CookieValue 注解一共有三个属性: value 、 required 、 defaultValue ,用法同 @RequestParam

6、通过POJO获取请求参数

可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

<form th:action="@{/testpojo}" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 性别:<input type="radio" name="sex" value=""><input type="radio" name="sex" value=""><br> 年龄:<input type="text" name="age"><br> 邮箱:<input type="text" name="email"><br> <input type="submit"> 
</form>
@RequestMapping("/testpojo") 
public String testPOJO(User user){ System.out.println(user); return "success"; 
}
//最终结果-->User{id=null, username='张三', password='123', age=23, sex='男', email='123@qq.com'}

7、解决获取请求参数的乱码问题

解决获取请求参数的乱码问题,可以使用 SpringMVC 提供的编码过滤器 CharacterEncodingFilter ,但是必须在web.xml 中进行注册

<!--配置编码过滤器-->
<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><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

注:
SpringMVC 中处理编码的过滤器一定要配置到其他过滤器之前,否则无效

三、域对象共享数据

1、使用ServletAPI向request域对象共享数据

@RequestMapping("/testServletAPI") 
public String testServletAPI(HttpServletRequest request){ request.setAttribute("testScope", "hello,servletAPI"); return "success"; 
}

2、使用ModelAndView向request域对象共享数据

@RequestMapping("/testModelAndView") 
public ModelAndView testModelAndView(){ /*** ModelAndView有Model和View的功能 * Model主要用于向请求域共享数据 * View主要用于设置视图,实现页面跳转 */ ModelAndView mav = new ModelAndView(); //向请求域共享数据 mav.addObject("testScope", "hello,ModelAndView"); //设置视图,实现页面跳转 mav.setViewName("success"); return mav; 
}

3、使用Model向request域对象共享数据

@RequestMapping("/testModel") 
public String testModel(Model model){ model.addAttribute("testScope", "hello,Model");return "success"; 
}

4、使用map向request域对象共享数据

@RequestMapping("/testMap") 
public String testMap(Map<String, Object> map){ map.put("testScope", "hello,Map"); return "success"; 
}

5、使用ModelMap向request域对象共享数据

@RequestMapping("/testModelMap") 
public String testModelMap(ModelMap modelMap){ modelMap.addAttribute("testScope", "hello,ModelMap"); return "success"; 
}

6、Model、ModelMap、Map的关系

Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的

public interface Model{}
public class ModelMap extends LinkedHashMap<String, Object> {}
public class ExtendedModelMap extends ModelMap implements Model {}
public class BindingAwareModelMap extends ExtendedModelMap {}

7、向session域共享数据

@RequestMapping("/testSession") 
public String testSession(HttpSession session){ session.setAttribute("testSessionScope", "hello,session"); return "success"; 
}

8、向application域共享数据

@RequestMapping("/testApplication") 
public String testApplication(HttpSession session){ ServletContext application = session.getServletContext();application.setAttribute("testApplicationScope", "hello,application");          return "success"; 

四、SpringMVC的视图

SpringMVC 中的视图是 View 接口,视图的作用渲染数据,将模型 Model 中的数据展示给用户
SpringMVC 视图的种类很多,默认有转发视图和重定向视图
当工程引入 jstl 的依赖,转发视图会自动转换为 JstlView
若使用的视图技术为 Thymeleaf ,在 SpringMVC 的配置文件中配置了 Thymeleaf 的视图解析器,由此视图解析器解析之后所得到的是ThymeleafView

1、ThymeleafView

当控制器方法中所设置的视图名称没有任何前缀时,此时的视图名称会被 SpringMVC 配置文件中所配置的视图解析器解析,视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转

@RequestMapping("/testHello") 
public String testHello(){ return "hello"; 
}

在这里插入图片描述

2、转发视图

SpringMVC 中默认的转发视图是 InternalResourceView
SpringMVC 中创建转发视图的情况:

  • 当控制器方法中所设置的视图名称以 “forward:” 为前缀时,创建 InternalResourceView 视图,此时的视图名称不会被SpringMVC 配置文件中所配置的视图解析器解析,而是会将前缀 “forward:” 去掉,剩余部分作为最终路径通过转发的方式实现跳转
  • 例如 “forward:/” , “forward:/employee”
@RequestMapping("/testForward") 
public String testForward(){ return "forward:/testHello"; 
}

在这里插入图片描述

注:在SpringMVC中,如果你用的是jsp的话,因为我们不设置任何的前缀,它也是一个转发的效果。所以SpringMVC中有一个默认的转发视图InternalResourceView

在SpringMVC.xml中的配置:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/templates/"></property><property name="suffix" value=".jsp"></property>
</bean>

3、重定向视图

SpringMVC 中默认的重定向视图是 RedirectView

  • 当控制器方法中所设置的视图名称以==“redirect:” 为前缀时,创建 RedirectView 视图,此时的视图名称不会被SpringMVC 配置文件中所配置的视图解析器解析,而是会将前缀 “redirect:” 去掉,剩余部分作为最终路径通过重定向的方式实现跳转==
  • 例如 “redirect:/” , “redirect:/employee”
@RequestMapping("/testRedirect") 
public String testRedirect(){ return "redirect:/testHello"; 
}

在这里插入图片描述

注:
重定向视图在解析时,会先将 redirect: 前缀去掉,然后会判断剩余部分是否以 / 开头,若是则会自动拼接上下文路径

4、视图控制器view-controller

当控制器方法中,仅仅用来实现页面跳转,即只需要设置视图名称时,可以将处理器方法使用 view-controller标签进行表示(在springmvc.xml中)

<!--path:设置处理的请求地址 view-name:设置请求地址所对应的视图名称 
--> 
<mvc:view-controller path="/testView" view-name="success"></mvc:view-controller>
<mvc:annotation-driven />

注:
当 SpringMVC 中设置任何一个 view-controller 时,其他控制器中的请求映射将全部失效,此时需要在SpringMVC 的核心配置文件中设置开启 mvc 注解驱动的标签:<mvc:annotation-driven />

七、RESTful

1、RESTful简介

REST:Representational State Transfer,表现层资源状态转移

  • 资源
    资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词。一个资源可以由一个或多个URI 来标识。 URI 既是资源的名称,也是资源在 Web 上的地址。对某个资源感兴趣的客户端应用,可以通过资源的URI 与其进行交互
  • 资源的表述
    资源的表述是一段对于资源在某个特定时刻的状态的描述。可以在客户端 服务器端之间转移(交换)。资源的表述可以有多种格式,例如 HTML/XML/JSON/ 纯文本 / 图片 / 视频 / 音频等等。资源的表述格式可以通过协商机制来确定。请求- 响应方向的表述通常使用不同的格式
  • 状态转移
    状态转移说的是:在客户端和服务器端之间转移( transfer )代表资源状态的表述。通过转移和操作资源的表述,来间接实现操作资源的目的

2、RESTful的实现

具体说,就是 HTTP 协议里面,四个表示操作方式的动词: GET 、 POST 、 PUT 、 DELETE 。
它们分别对应四种基本操作: GET 用来获取资源, POST 用来新建资源, PUT 用来更新资源, DELETE用来删除资源。
REST 风格提倡 URL 地址使用统一的风格设计,从前到后各个单词使用斜杠分开,不使用问号键值对方式携带请求参数,而是将要发送给服务器的数据作为 URL 地址的一部分,以保证整体风格的一致性
在这里插入图片描述

3、HiddenHttpMethodFilter

由于浏览器只支持发送 get 和 post 方式的请求,那么该如何发送 put 和 delete 请求呢?
SpringMVC 提供了HiddenHttpMethodFilter 帮助我们将 POST 请求转换为 DELETE 或 PUT 请求
HiddenHttpMethodFilter 处理 put 和 delete 请求的条件:

  • 当前请求的请求方式必须为 post
  • 当前请求必须传输请求参数 _method

满足以上条件, HiddenHttpMethodFilter 过滤器就会将当前请求的请求方式转换为请求参数_method 的值,因此请求参数 _method 的值才是最终的请求方式
web.xml 中注册 HiddenHttpMethodFilter:

<!--配置处理请求方式put和delet1e的HiddenHttpMethodFilter-->
<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>

在这里插入图片描述

注:

  • 目前为止, SpringMVC 中提供了两个过滤器: CharacterEncodingFilter 和HiddenHttpMethodFilter
  • 在 web.xml 中注册时,必须先注册 CharacterEncodingFilter ,再注册 HiddenHttpMethodFilter
    原因:
    • 在 CharacterEncodingFilter 中通过request.setCharacterEncoding(encoding) 方法设置字符集的
    • request.setCharacterEncoding(encoding)方法要求前面不能有任何获取请求参数的操作
    • 而HiddenHttpMethodFilter恰恰有一个获取请求方式的操作:String paramValue = request.getParameter(this.methodParam);

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

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

相关文章

动手学大模型应用开发之大模型简介

动手学大模型应用开发之大模型简介 主要学习目标什么是大语言模型大模型的能力和特点涌现能力作为基座模型支持多元应用的能力支持对话作为统一入口的能力大模型特点 常见大模型ChatGpt通义千问 LangChainLangChain的核心模块 总结相关学习链接 主要学习目标 学习如何进行大模…

【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

大家好&#xff0c;我是冰河~~ 自己搭建的网站刚上线&#xff0c;短信接口就被一直攻击&#xff0c;并且攻击者不停变换IP&#xff0c;导致阿里云短信平台上的短信被恶意刷取了几千条&#xff0c;加上最近工作比较忙&#xff0c;就直接在OpenResty上对短信接口做了一些限制&am…

GeoCue与Xer Technologies合作推动无人机测绘技术革新

GeoCue与Xer Technologies合作推动无人机测绘技术革新 近期,LiDAR测绘硬件和软件开发商GeoCue与瑞士长航时混合动力无人机制造商Xer Technologies AG携手合作,成功将GeoCue的TrueView 720 LiDAR和图像传感器集成至Xer X8无人机平台。这一里程碑式的合作不仅标志着无人机测绘技…

Excel下拉菜单制作及选项修改

Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框&#xff08;选项菜单&#xff09;是十分常见的功能。Excel支持下拉框制作&#xff0c;通过预设选项进行菜单选择&#xff0c;可以避免手动输入错误和重复工作&#xff0c;提升数据输入的准确性和效率 1、下拉菜单制作 步…

【简码短链】使用Selenium实现UI自动化测试

1.环境准备 Chrome浏览器 版本为版本 129.0.6668.90&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; 129版本的Chrome浏览器的驱动,将webdriver放到jdk所在的bin目录下 在命令行中输入:chromedriver验证是否成功 打开IDEA,创建Maven项目,在pom.xml导入所需…

idea 同一个项目不同模块如何设置不同的jdk版本

在IntelliJ IDEA中&#xff0c;可以为同一个项目中的不同模块设置不同的JDK版本。这样做可以让你在同一个项目中同时使用多个Java版本&#xff0c;这对于需要兼容多个Java版本的开发非常有用。以下是设置步骤&#xff1a; 打开项目设置&#xff1a; 在IDEA中&#xff0c;打开你…

自建RustDesk服务器:详细步骤与操作指南

在远程办公和协作日益普及的今天&#xff0c;远程桌面软件成为了不可或缺的工具。然而&#xff0c;许多知名的远程桌面软件&#xff0c;在免费使用一段时间后&#xff0c;会通过限制连接数量、时长或在特定网络环境下的可用性来促使用户付费升级&#xff0c;而且其会员非常昂贵…

【stm32】ADC的介绍与使用

ADC的介绍与使用 1、ADC介绍2、逐次逼近型ADC3、ADC电路4、ADC基本结构程序代码编写&#xff1a;ADC 通道和引脚复用的关系 5、转换模式&#xff08;1&#xff09;单次转换&#xff0c;非扫描模式转换流程&#xff1a;程序编写&#xff1a; &#xff08;2&#xff09;连续转换&…

详细分析Spring Security OAuth2中的JwtAccessTokenConverter基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 JwtAccessTokenConverter 是 Spring Security OAuth2 中的一…

一、Python(介绍、环境搭建)

一、介绍 Python 是一种高级编程语言&#xff0c;具有简洁易读的语法、丰富的库和强大的功能。Python是解释型语言&#xff0c;运行代码必须依赖安装好的解释器。Python目前存在两个版本&#xff1a;Python2、Python3&#xff08;主流使用&#xff09; 二、环境搭建 1.安装P…

<<迷雾>> 第8章 学生时代的走马灯(3)--走马灯 示例电路

几个首尾相连的触发器使用同一个控制端&#xff0c;能同时触发 info::操作说明 鼠标单击开关切换开合状态 注: 其中 CP 为按钮开关, 每点击一次, Q 的输出前进一级 注: 第一个触发器的输出端 Q 需要先置入高电平. 如果重置了电路, 可外接电源先使第一个 Q 置入高电平. 另: 因为…

深度学习:5种经典神经网络模型介绍

目录 1. LeNet&#xff1a;CNN的鼻祖 2. AlexNet&#xff1a;深度学习的开山之作 3. VGGNet&#xff1a;深度与简洁的结合 4. GoogLeNet&#xff1a;Inception模块的创新 5. ResNet&#xff1a;残差学习的革命 卷积神经网络&#xff08;CNN&#xff09;已经发展为图像识别…

棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程

一、前言 【试用版软件下载&#xff0c;可以点击本文章最下方官网卡片】 棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程 棋牌计时计费软件的应用也提升了顾客的服务体验&#xff0c;顾客可以清晰的看到自己的消费时间和费用。增加了消费的透明…

梯度下降学习

前言&#xff1a;初步学习梯度下降&#xff0c; 不断根据梯度修改我们的参数&#xff0c;经过多次轮次得到使得我们损失函数最小的时候参数&#xff0c;后续我们可以通过类似的道理&#xff0c;更新我们的参数 假设我们的损失函数是 y x 1 2 x 2 2 y x1^2 x2^2 yx12x22,我…

用Python实现运筹学——Day 14: 线性规划总结与案例复习

一、学习内容 在本节中&#xff0c;我们将复习之前所学的线性规划模型与求解方法&#xff0c;并通过一个综合案例将这些知识应用于求解一个多阶段的生产计划问题。 主要复习内容包括&#xff1a; 线性规划的基础概念&#xff1a;目标函数、约束条件、决策变量。求解方法&…

什么是 HTTP 请求中的 preflight 类型请求

在浏览器的 HTTP 请求中&#xff0c;当我们使用 fetch API 或者 XMLHttpRequest 来进行跨域请求时&#xff0c;浏览器有时会发送一种称为 Preflight 的请求。这种请求是浏览器在实际发送跨域请求前&#xff0c;先与目标服务器进行的一次 “探测” 请求&#xff0c;以确认服务器…

组合式API

1.入口&#xff1a;setup setup中的数据和方法必须return出去&#xff0c;模板才能使用 <script> export default {setup () {console.log(setup);const message this is a messageconst logMessage () > {console.log(message);}return {message,logMessage}},be…

Visual Studio 2017编译libexpat源码过程

一、编译环境 操作系统&#xff1a;Windows 10 企业版 64位 编译工具&#xff1a;Visual Studio 2017 构建工具&#xff1a;CMake3.22 源码版本&#xff1a;libexpat-R_2_4_0 二、CMake生成解决方案 解压libexpat源码&#xff0c;然后启动CMake选择libexpat源码目录&#xff1…

数据结构 ——— 单链表oj题:链表的回文结构

目录 题目要求 手搓简易单链表 代码实现 题目要求 对于一个单链表&#xff0c;设计一个时间复杂度为O(N)&#xff0c;空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构&#xff0c;给定一个链表的头指针 head&#xff0c;返回一个 bool 值&#xff0c;代表其是否为…

从认识String类,到走进String类的世界

作为一个常用的数据类型&#xff0c;跟随小编一同进入String的学习吧&#xff0c;领略String的一些用法。 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 一&#xff1a;…