SpringMVC1~~~

快速入门

spring容器文件

        在src下就是applicationContext-mvc.xml,需要在web.xml指定<init-param>,给DispatcherServlet指定要去操作的spring容器文件


        在WEB-INF下就是xxx-servlet.xml,不需要在web.xml指定<init-param>,如果我们没有配置 contextConfigLocation,默认按照这样的位置去定位spring配置文件
/WEB-INF/springDispatcherServlet-servlet.xml

    <!--配置自动扫描包--><context:component-scan base-package="com.web"/><!--配置视图解析器[默认视图解析器]--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性suffix 和 prefix--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/><!--调整优先级--><property name="order" value="10"/></bean>

web.xml

<!--配置前端控制器/中央控制器/分发控制器用户的请求都会经过它的处理
--><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置属性 contextConfigLocation, 指定DispatcherServlet 去操作的spring配置文件--><!--<init-param>--><!--    <param-name>contextConfigLocation</param-name>--><!--    <param-value>classpath:applicationContext-mvc.xml</param-value>--><!--</init-param>--><!--在web项目启动时,就自动的加载DispatcherServlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><!--配置的url-pattern是 / ,表示用户的请求都经过 DispatcherServlet--><url-pattern>/</url-pattern></servlet-mapping>

UserServlet

@Controller
public class UserServlet {//编写方法,响应用户的请求/*** 1. login() 方法是用于响应用户的登录请求* 2. @RequestMapping(value = "/login") 类似我们以前在原生的Servlet*   配置 url-pattern, 就是给方法配置一个url映射* 3. 即当用户在浏览器输入 http://localhost:8080/web工程路径/login 就能够访问到login()* 4. return "login_ok"; 表示返回结果给视图解析器(InternalResourceViewResolver)*   , 视图解析器会根据配置,来决定跳转到哪个页面**     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">**         <property name="prefix" value="/WEB-INF/pages/"/>*         <property name="suffix" value=".jsp"/>*     </bean>**     根据上面的配置 return "login_ok"; 就是转发到 /WEB-INF/pages/login_ok.jsp*/@RequestMapping(value = "/login")public String login() {System.out.println("login ok.......");return "login_ok";}
}

细节

执行流程

@RequestMapping

可以指定控制器/处理器的某个方法的请求的url

修饰方法、类和指定请求方式

当同时修饰类和方法时, 请求的url就是组合:/类请求值/方法请求值
buy()方法请求的url: http://ip:port/工程路径/user/buy

@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到容器
public class UserHandler {@PostMapping(value = "/buy")public String buy() {System.out.println("购买商品~");return "success";}
}

RequestMethod 四个常用选项 POST, GET, PUT, DELETE
SpringMVC 控制器默认支持GET和POST两种方式,如果指定,必须按照指定方式请求
@PostMapping(value = "/buy")等价@RequestMapping(value = "/buy",method = RequestMethod.POST)

<form action="user/buy" method="post">购买人:<input type="text" name="username"><br>够买量:<input type="text" name="nums"><br><input type="submit" value="购买">
</form>

 指定params和headers支持简单表达式

    @RequestMapping(value = "/find", params = "bookId=100", method = RequestMethod.GET)public String search(String bookId) {System.out.println("查询书籍 bookId= " + bookId);return "success";}

params="bookId" 表示请求该目标方法时,必须给一个bookId参数, 值没有限定
search(String bookId): 表示请求目标方法时, 携带的bookId=100, 就会将请求携带的bookId对应的值 100, 赋给 String bookId
params = "bookId=100" 表示必须给一个bookId参数, 而且值必须是100

<hr><h1>演示params的使用</h1>
<a href="user/find?bookId=100">查询书籍</a>

 支持Ant风格资源地址

    //要求: 可以配置  /user/message/aa, /user/message/aa/bb/cc@RequestMapping(value = "/message/**")public String im() {System.out.println("发送消息");return "success";}
<hr><h1>演示Ant风格的请求资源方式 </h1>
<a href="user/message/aa">发送消息1</a><br>
<a href="user/message/aa/bb/cc">发送消息2</a><br>

配合@PathVariable映射URL绑定的占位符

不需要在url地址上带参数名,更加简洁明了

    //要求: 获取到 username 和 userid//前端页面: <a href="user/reg/kristina/300">占位符的演示</a>//(value = "/reg/{username}/{userid}"):,表示kristina->{username} 300=>{userid}// value{}大括号的名字随便写,PathVariable里的名字必须跟value{}里保持一致@RequestMapping(value = "/reg/{username}/{userid}")public String register(@PathVariable("username") String name,@PathVariable("userid") String id) {System.out.println("接收到参数--" + "username= " + name + "--" + "usreid= " + id);return "success";}
<hr><h1>占位符的演示</h1>
<a href="user/reg/kristina/300">占位符的演示</a>

细节

映射的URL不能重复

@RequestMapping(value = "/hi")public String hi() {}
@RequestMapping(value = "/hi")public String hi() {}

请求简写
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping

//@RequestMapping(value = "/buy",method = RequestMethod.POST)
@PostMapping(value = "/buy")public String buy() {System.out.println("购买商品~");return "success";}

如果确定表单或者超链接会提交某个字段数据(比如email),要求提交的参数名和目标方法的参数名保持一致

    @GetMapping(value = "/hello3")public String hello3(String email) {System.out.println("hello3 " + email);return "success";}

localhost:8080/user/hello3?email=tom@sohu.com
如果请求参数有 email=xx, 就会将传递的值,赋给String emai,否则输出null

 Rest

web.xml

    <!--配置HiddenHttpMethodFilter1. 作用是 把 以pos t方式提交的delete和put请求进行转换2. 配置url-pattern 是 /* 表示请求都经过 hiddenHttpMethodFilter过滤--><filter><filter-name>hiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter>

spring容器文件

    <!--加入两个常规配置--><!--支持SpringMVC的高级功能,比如JSR303校验, 映射动态请求--><mvc:annotation-driven></mvc:annotation-driven><!--将springmvc不能处理的请求,交给tomcat处理,比如css, js--><mvc:default-servlet-handler/>

HiddenHttpMethodFilter源码

将POST请求转换成PUT、DELETE、PATCH
按照_method参数名来读取

public static final String DEFAULT_METHOD_PARAM = "_method";---------------------------------------------------private static final List<String> ALLOWED_METHODS =Collections.unmodifiableList(Arrays.asList(HttpMethod.PUT.name(),HttpMethod.DELETE.name(), HttpMethod.PATCH.name()));---------------------------------------------------if ("POST".equals(request.getMethod()) && request.getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) == null) {String paramValue = request.getParameter(this.methodParam);if (StringUtils.hasLength(paramValue)) {String method = paramValue.toUpperCase(Locale.ENGLISH);if (ALLOWED_METHODS.contains(method)) {requestToUse = new HttpMethodRequestWrapper(request, method);}}}

Delete、Put

默认情况下 <a href="user/book/600">删除指定id的书</a> 是get
需要将 get <a href="user/book/600">删除指定id的书</a> 以post方式提交给后端handler, 这样过滤器才会生效

    //删除[DELETE]@RequestMapping(value = "/book/{id}", method = RequestMethod.DELETE)public String delBook(@PathVariable("id") String id) {System.out.println("删除书籍 id= " + id);//return "success"; //[如果这样返回会报错 JSPs only permit GET POST or HEAD]//1. redirect:/user/success重定向//2. 会被解析成 /springmvc/user/successreturn "redirect:/user/success";}//如果请求是 /user/success , 就转发到 success.jsp//successGenecal对应的url http://ip:port/springmvc/user/success@RequestMapping(value = "/success")public String successGenecal() {return "success";  //由该方法 转发到success.jsp页面}//修改[PUT]@PutMapping(value = "/book/{id}")public String updateBook(@PathVariable("id") String id) {System.out.println("修改书籍 id=" + id);return "redirect:/user/success";}
<html>
<head><title>rest </title>
<%--    引入jquery--%><script type="text/javascript" src="script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//给删除超链接绑定一个点击事件$("#deleteBook").click(function (){$("#hiddenForm").attr("action", this.href);$(":hidden").val("DELETE");$("#hiddenForm").submit();return false; //改变点击超链接的行为, 不再提交})})</script>
</head>
<body><h3>rest风格的url, 删除一本书</h3>
<a href="user/book/600" id="deleteBook">删除指定id的书</a>
<form action="" method="post" id="hiddenForm"><input type="hidden" name="_method"/>
</form><br><hr>
<h3>rest风格的url 修改书籍[put]~</h3>
<form action="user/book/666" method="post"><input type="hidden" name="_method" value="PUT"><input type="submit" value="修改书籍~">
</form></body>
</html>

细节

SpringMVC映射请求数据 

RequestParam获取参数值

 @RequestParam(value="name", required=false)
 1. 获取到超链接传递的数据 请求 http://localhost:8080/springmvc/vote/vote01?name=xx
 2. @RequestParam 表示会接收提交的参数
 3. value="name" 表示提交的参数名是name
 4. required=false 表示该参数可以没有, 默认是true,表示必须有这个参数
 5. 当我们使用了@RequestParam(value="name", required=false)后就请求的参数名和方法的形参名可以不一致

    @RequestMapping(value = "/vote01")public String test01(@RequestParam(value = "name", required = false) String username) {System.out.println("得到的username= " + username);//返回到一个结果return "success";}
<h2>获取到超链接参数值</h2>
<a href="vote/vote01?name=hsp">获取超链接的参数</a>

获取http请求消息头

    /*** 需求: 获取http请求头信息, 获取到Accept-Encoding 和 Host* @RequestHeader("Http请求头字段")*/@RequestMapping(value = "/vote02")public String test02(@RequestHeader("Accept-Encoding") String ae,@RequestHeader("Host") String host) {System.out.println("Accept-Encoding= " + ae);System.out.println("Host= " + host);//返回到一个结果return "success";}
<h1>获取到消息头</h1>
<a href="vote/vote02">获取http消息头信息</a>

获取javabean形式的数据

1. 方法的形参用对应的类型来指定即可, SpringMVC会自动的进行封装
2. 如果自动的完成封装, 要求提交的数据,参数名和对象的字段名保持一致
3. 如果属性是对象,这里就是仍然是通过 字段名.字段名
        比如Master [pet], 即提交的数据 参数名是 pet.id pet.name, 这就是级联操作
4.表单控件的name与javabean属性名对应

@RequestMapping(value = "/vote03")public String test03(Master master) {System.out.println("master=" + master);return "success";}
<form action="vote/vote03" method="post">主人号:<input type="text" name="id"><br>主人名:<input type="text" name="name"><br>宠物号:<input type="text" name="pet.id"><br>宠物名:<input type="text" name="pet.name"><br><input type="submit" value="添加主人和宠物">
</form>

获取servlet api

引入tomcat/lib下的servlet-api.jar

    @RequestMapping(value = "/vote04")public String test04(HttpServletRequest request,HttpServletResponse response,HttpSession hs) {//获取到session//servlet原生的方式HttpSession session = request.getSession();System.out.println("session=" + session);//注意:通过参数传入的 hs 和 通request.getSession() 得到的对象是//同一个System.out.println("hs= " + hs);String username = request.getParameter("username");String pwd = request.getParameter("pwd");System.out.println("username= " + username);System.out.println("pwd= " + pwd);return "success";}
<h1>演示 servlet api的使用 </h1>
<form action="vote/vote04" method="post">用户名:<input type="text" name="username"><br>密 码:<input type="password" name="pwd"><br><input type="submit" value="添加用户">
</form>

模型数据

数据放入request

默认机制

    /*** 将提交的数据->springmvc封装到java对象->springmvc 会自动的将其放入到request域* 就可以在跳转到的页面取出数据.*/@RequestMapping(value = "/vote05")public String test05(Master master) {return "vote_ok";}
<h1>添加主人信息</h1>
<form action="vote/vote05" method="post">主人号:<input type="text" name="id"><br>主人名:<input type="text" name="name"><br>宠物号:<input type="text" name="pet.id"><br>宠物名:<input type="text" name="pet.name"><br><input type="submit" value="添加主人和宠物">
</form>
<h1>获取的的数据显示页面</h1>
<hr>
取出 request域的数据-通过前面讲解的el表达式来获取即可
<br>
address: ${requestScope.address}<br>
主人名字= ${requestScope.master.name}
主人id= ${requestScope.master.id}
宠物名字= ${requestScope.master.pet.name}
<a href="<%=request.getContextPath()%>/homework/login.jsp">返回重新登录</a>

 通过HttpServletRequest

springmvc默认存放对象到request域中,属性名是 类名/类型名 首字母小写
request域 ("master", master100) 
所以在jsp中按照类名首字母小写来取出

    @RequestMapping(value = "/vote05")public String test05(Master master100, HttpServletRequest request) {//设置某一字段的属性值request.setAttribute("address", "beijing");//修改name的属性值master100.setName("nono");return "vote_ok";}

通过请求的方法参数Map<String,Object>

    @RequestMapping(value = "/vote06")public String test06(Master master, Map<String, Object> map) {System.out.println("------test06-----");//原理分析:springmvc会遍历map,然后将map的k-v, 存放到request域map.put("address", "beijing...");//map.put("master", null);return "vote_ok";}

通过返回ModelAndView对象

    @RequestMapping(value = "/vote07")public ModelAndView test07(Master master) {System.out.println("----test07----");ModelAndView modelAndView = new ModelAndView();//放入属性到modelAndView对象modelAndView.addObject("address", "shanghai");//modelAndView.addObject("master", null);//可以把从数据库得到的数据->对象-》放入modelAndView[Service-dao-db]//这里指定跳转的视图名称modelAndView.setViewName("vote_ok");//返回结果return modelAndView;}

细节

数据放入session

    @RequestMapping(value = "/vote08")public String test08(Master master, HttpSession httpSession) {System.out.println("----test08----");//master对象是默认放在request域//我们将master对象放入到session域httpSession.setAttribute("master", master);httpSession.setAttribute("address", "guangzhou");return "vote_ok";//请求转发}
<h1>添加主人信息[测试session]</h1>
<form action="vote/vote08" method="post">主人号:<input type="text" name="id"><br>主人名:<input type="text" name="name"><br>宠物号:<input type="text" name="pet.id"><br>宠物名:<input type="text" name="pet.name"><br><input type="submit" value="添加主人和宠物">
</form>
取出 session域的数据 <br>
address: ${sessionScope.address}<br>
主人名字= ${sessionScope.master.name}
主人信息= ${sessionScope.master}

@ModelAttribute实现prepare方法

    /*** 1. 当Handler的方法被标识 @ModelAttribute,就视为一个前置方法* 2. 当调用该Handler的其它的方法时,都会先执行该前置方法* 3. 类似我们前面讲解Spring时,AOP的前置通知[底层是AOP机制]* 4. prepareModel前置方法,会切入到其它方法前执行..*/@ModelAttributepublic void prepareModel(){System.out.println("prepareModel()-----完成准备工作-----");}

视图和视图解析器

自定义视图

多个视图解析器,会根据优先级放在arraylist中进行遍历
默认视图解析器一旦执行,就不会执行自定义视图解析器
 

    @RequestMapping(value = "/buy")public String buy() {System.out.println("------buy()-----");return "hspView";}
/*** 1. MyView继承了AbstractView, 就可以作为一个视图使用* 2. @Component(value = "myView"),该视图会注入到容器中, 名字/id是 hspView*/
@Component(value = "hspView")
public class MyView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest request,HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面 [请求转发] /WEB-INF/pages/my_view.jspSystem.out.println("进入到自己的视图..");//1. 下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp//2. /WEB-INF/pages/my_view.jsp 会被springmvc解析//   /springmvc/WEB-INF/pages/my_view.jsprequest.getRequestDispatcher("/WEB-INF/pages/my_view.jsp").forward(request, response);}
}
    <!--1. 配置自定义视图解析器BeanNameViewResolver2. BeanNameViewResolver可以去解析我们自定义的视图3. 配置 属性 order, 表示视图解析器执行的顺序, 值越小, 优先级越高4. 属性 order 的默认值是最低优先级 ,值为 Integer.MAX_VALUEint LOWEST_PRECEDENCE = 2147483647--><bean class="org.springframework.web.servlet.view.BeanNameViewResolver"><property name="order" value="99"/></bean>
<a href="goods/buy">点击到自定义视图-</a><br/>

目标方法直接指定转发或重定向

访问WEB-INF下面的资源必须请求转发,不能直接浏览器访问

    //直接指定要请求转发的或者是重定向的页面@RequestMapping(value = "/order")public String order() {System.out.println("=======order()=====");//请求转发到 /WEB-INF/pages/my_view.jsp//下面的 /WEB-INF/pages/my_view.jsp 被解析成 /springmvc/WEB-INF/pages/my_view.jsp//return "forward:/WEB-INF/pages/my_view.jsp";//return "forward:/aaa/bbb/ok.jsp";//直接指定要重定向的页面//1. 对于重定向来说,不能重定向到 /WEB-INF/ 目录下//2. redirect 关键字,表示进行重定向//3. /login.jsp 在服务器解析 /springmvc/login.jspreturn "redirect:/login.jsp";// /WEB-INF/pages/my_view.jsp 被解析 /springmvc/WEB-INF/pages/my_view.jsp//return "redirect:/WEB-INF/pages/my_view.jsp";}

forward对应InternalResourceView视图
redirect对应RedirectView视图

 

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

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

相关文章

Qt:智能指针QScopedPointer 的使用(以及如何写一个QScopedPointer )

前言 本文讲述QScopedPointer 的使用&#xff0c;以及自己如何写一个QScopedPointer . 正文 QScopedPointer 的常用方法 以下是 QScopedPointer 的一些常用方法及其详细说明&#xff1a; 构造函数&#xff1a; QScopedPointer<T> ptr(new T);用于创建一个 QScopedPoi…

使用 Elasticsearch Reindex API 迁移数据

使用 Elasticsearch Reindex API 迁移数据 在 Elasticsearch 中&#xff0c;随着需求的变化&#xff0c;可能需要对索引进行重建或更新。这通常涉及创建新索引、迁移数据等步骤。本文介绍如何使用 Reindex API 将旧索引中的数据迁移到新索引中 一、步骤概述 创建新索引&#…

R18 NES 之SSB-less SCell operation for inter-band CA

在TR 21.918 Summary of Rel-18 Work Items 中可以看到SSB-less SCell operation for inter-band CA 是Network energy savings for NR 的一部分,其中还包括cell DTX/DRX 等等其他内容。 网络节能是 5G/NR 成功的关键,可以减少对环境的影响(温室气体排放)并节省运营成本。R…

『功能项目』伤害数字UI显示【53】

我们打开上一篇52眩晕图标显示的项目&#xff0c; 本章要做的事情是在Boss受到伤害时显示伤害数字 首先打开Boss01预制体空间在Canvas下创建一个Text文本 设置Text文本 重命名为DamageUI 设置为隐藏 编写脚本&#xff1a;PlayerCtrl.cs 运行项目 本章做了怪物受伤血量的显示UI…

详细分析Java中的ObjectMapper基本知识(附Demo)

目录 1. 基本知识2. 基本操作2.1 转换Java对象为JSON2.2 转换JSON为Java对象 3. 拓展 1. 基本知识 ObjectMapper 是 Jackson 数据处理库中的核心类之一&#xff0c;主要用于将 Java 对象转换为 JSON 和将 JSON 转换为 Java 对象 Jackson 是当前最流行的 JSON 处理库之一&…

DOCKER 数据库管理软件自己开发--———未来之窗行业应用跨平台架构

- 数据异地容灾服务--未来之窗智慧数据服务 DATA REMOTE DISASTER RECOVERY SERVICE -CyberWin Future Docker-数据查看 CyberWin DATA Viewer 1.docker 样式 mysqli://root:密码172.17.0.2:端口/数据库 阿雪技术观 拥抱开源与共享&#xff0c;见证科技进步奇迹&#xff0c;…

mat (Eclipse Memory Analyzer Tool)使用以及详解

前言 在Java开发中&#xff0c;内存问题往往不易被发现&#xff0c;但它们可能导致应用性能下降甚至崩溃。Eclipse Memory Analyzer Tool&#xff08;MAT&#xff09;是一个强大的开源工具&#xff0c;专门用于分析Java堆转储&#xff08;heap dumps&#xff09;文件&#xff…

2024华为杯研赛E题保姆级教程思路分析

E题题目&#xff1a;高速公路应急车道紧急启用模型 今年的E题设计到图像/视频处理&#xff0c;实际上&#xff0c;E题的难度相对来说较低&#xff0c;大家不用畏惧视频的处理&#xff0c;被这个吓到。实际上&#xff0c;这个不难&#xff0c;解决了视频的处理问题&#xff0c;…

L3 逻辑回归

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 在周将使用 LogisticRegression 函数对经典的鸢尾花 (Iris) 数据集进行分类。将详细介绍逻辑回归的数学原理。 1. 逻辑回归的数学原理 逻辑回归是一种线性分…

如何短期提高品牌声量?说几个有效策略

在如今竞争激烈的市场环境中&#xff0c;品牌声量成为了衡量一个品牌市场影响力的关键指标。一个强大的品牌声量不仅可以增加品牌的可见度&#xff0c;还能有效提升品牌的市场竞争力。但是&#xff0c;如何有效提升品牌声量&#xff0c;成为很多企业面临的挑战。首先我们要明确…

R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)

文章目录 介绍原理应用方向下载数据加载R包导入数据数据预处理数据描述数据切割标准化数据设置参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 支持向量机(Support Vector Machine,简称SVM)是一种…

Django_Vue3_ElementUI_Release_004_使用nginx部署

1. nginx安装配置 1.1 下载nginx Download nginx 1.2 测试一下 1.3 进入nginx用命令操作 2. 部署 2.1 前端部署 2.1.1 修改nginx监听配置 …conf/nginx.conf http {... # 这里不进行修改server {listen 8010; # 监听 80 端口server_name 192.168.10.24; # 输入服务器 ip…

Matlab simulink建模与仿真 第十八章(Stateflow状态机)

参考视频&#xff1a;Simulink/stateflow的入门培训_哔哩哔哩_bilibili 一、概述 Stateflow是集成于Simulink中的图形化设计与开发工具&#xff0c;主要用于针对控制系统中的复杂控制逻辑进行建模与仿真&#xff0c;或者说&#xff0c;Stateflow适用于针对事件响应系统进行建模…

深度学习:(五)初识神经网络

&#xff08;一&#xff09;神经网络的层数 除去输入层&#xff0c;但包括输出层&#xff0c;每一层都有自己的参数。 输入层称为第零层。 &#xff08;二&#xff09;最简单的神经网络&#xff08;逻辑回归&#xff09; 下图中的小圆圈&#xff0c;代表了一种运算。且一个小…

基于深度学习的花卉智能分类识别系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 传统的花卉分类方法通常依赖于专家的知识和经验&#xff0c;这种方法不仅耗时耗力&#xff0c;而且容易受到主观因素的影响。本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络&#…

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章&#xff1a;Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章&#xff1a;Sentosa_DSML社…

环境搭建2(游戏逆向)

#include<iostream> #include<windows.h> #include<tchar.h> #include<stdio.h> #pragma warning(disable:4996) //exe应用程序 VOID PrintUI(CONST CHAR* ExeName, CONST CHAR* UIName, CONST CHAR* color, SHORT X坐标, SHORT y坐标, WORD UIwide, W…

硬件工程师笔试面试——开关

目录 11、开关 11.1 基础 开关原理图 开关实物图 11.1.1 概念 11.1.2 常见的开关类型及其应用 11.2 相关问题 11.2.1 开关的工作原理是什么? 11.2.2 在设计一个电子系统时,如何选择最适合的开关类型? 11.2.3 不同类型的开关在实际应用中有哪些优势和局限性? 11.…

AI+教育|拥抱AI智能科技,让课堂更生动高效

AI在教育领域的应用正逐渐成为现实&#xff0c;提供互动性强的学习体验&#xff0c;正在改变传统教育模式。AI不仅改变了传统的教学模式&#xff0c;还为教育提供了更多的可能性和解决方案。从个性化学习体验到自动化管理任务&#xff0c;AI正在全方位提升教育质量和效率。随着…

使用Renesas R7FA8D1BH (Cortex®-M85)实现多功能UI

目录 概述 1 系统框架介绍 1.1 模块功能介绍 1.2 UI页面功能 2 软件框架结构实现 2.1 软件框架图 2.1.1 应用层API 2.1.2 硬件驱动层 2.1.3 MCU底层驱动 2.2 软件流程图 4 软件功能实现 4.1 状态机功能核心代码 4.2 页面功能函数 4.3 源代码文件 5 功能测试 5.1…