当前位置: 首页 > news >正文

spring mvc后端实现过程

文章目录

  • 一、Spring mvc
    • 1、controller
      • 1.1、LoginController01
      • 1.2、LoginController
    • 2、service
      • 2.1、LoginService
      • 2.1、LoginInimplements
    • 3、dao
      • 3.1、LoginMapper
      • 3.1、LoginMapper.xml
    • 4、实体类

一、Spring mvc

1、controller

控制器层、处理用户的请求和响应,

1.1、LoginController01

@Controller
public class LoginController01 {@ResponseBody//配置请求@RequestMapping("/login.action")public String login(LoginVo loginVo) throws JsonProcessingException {//从字符串中读取JSON//ObjectMapper类是Jackson库的主要类。它称为ObjectMapper的原因是因为它将JSON映射到Java对象(反序列化),//或将Java对象映射到JSON(序列化)。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。ObjectMapper objectMapper=new ObjectMapper();String json=objectMapper.writeValueAsString(loginVo);System.out.println(loginVo);return json;}
}
  1. @Controller 注解
    @Controller 注解将 LoginController01 类标识为一个控制器,Spring MVC 会将该类中的方法映射为处理特定 HTTP 请求的处理器。

  2. @ResponseBody 注解
    @ResponseBody 注解表示该方法的返回值会被直接写入 HTTP 响应体中,而不是解析为视图名。结合这段代码,它表示返回的 String(JSON 格式)将作为 HTTP 响应体返回给客户端。

  3. @RequestMapping(“/login.action”) 注解
    @RequestMapping 注解用于将一个特定的 URL 映射到控制器中的方法。在这里,/login.action 表示当客户端发送这个 URL 请求时,会调用 login() 方法处理请求。

  4. LoginVo loginVo 参数
    LoginVo 可能是一个自定义的类,表示用户登录时提交的数据。Spring MVC 会根据请求中的参数,将请求参数映射到 LoginVo 对象中(如表单数据)。

  5. ObjectMapper 类
    代码中使用了 Jackson 库的 ObjectMapper 类,这是一个用于处理 JSON 的核心类。它负责在 Java 对象和 JSON 之间进行转换:
    writeValueAsString(loginVo):将 loginVo 对象序列化为 JSON 字符串。
    objectMapper.writeValueAsString(loginVo) 返回的 json 就是序列化后的 JSON 字符串。

  6. System.out.println(loginVo)
    输出登录数据对象的内容到控制台,便于调试。

  7. LoginController 继承 AbstractController
    AbstractController 是 Spring 提供的一个基类,通常用于处理 Web 请求。通过继承它,你可以自定义自己的控制器行为。
    该控制器通过实现 handleRequestInternal() 方法来处理 HTTP 请求。这个方法会处理来自客户端的请求并返回视图信息。

  8. 依赖注入 (@Autowired)
    @Autowired 注解用于自动注入依赖。这里将 LoginService 注入到控制器中,说明 LoginController 依赖于 LoginService,并且 LoginService 会在 ApplicationContext 中被自动注入。

1.2、LoginController

/继承controller成为一个servlet
public class LoginController extends AbstractController {//定义了一个LoginService类型的变量@Autowiredprivate LoginService loginService;@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {//获得参数String name=request.getParameter("number");String password=request.getParameter("password");//封装LoginVo loginVo=new LoginVo(name,password);//调用类方法赋值给iint i=loginService.login(loginVo);//        如果翻译过来就是”模型和视图“,可以理解成MVC架构中的”M“和”V“,其中包含”Model“和”view“两部分,主要功能是:
//        设置转向地址
//        将底层获取的数据进行存储(或者封装)
//        最后将数据传递给View//创建ModelAndView对象ModelAndView modelAndView=new ModelAndView();//向modelAndView对象中添加数据modelAndView.addObject("msg",i);//设置逻辑视图名modelAndView.setViewName("jsp/login");//返回modelAndView对象return modelAndView;}
}

这段代码展示了一个 Spring MVC 的控制器 LoginController,继承了 AbstractController,并且通过 ModelAndView 返回模型和视图,属于传统的 Spring MVC 编程风格。以下是对这段代码的详细分析:

  1. LoginController 继承 AbstractController
    AbstractController 是 Spring 提供的一个基类,通常用于处理 Web 请求。通过继承它,你可以自定义自己的控制器行为。
    该控制器通过实现 handleRequestInternal() 方法来处理 HTTP 请求。这个方法会处理来自客户端的请求并返回视图信息。
  2. 依赖注入 (@Autowired)
    @Autowired 注解用于自动注入依赖。这里将 LoginService 注入到控制器中,说明 LoginController 依赖于 LoginService,并且 LoginService 会在 ApplicationContext 中被自动注入。

@Autowired
private LoginService loginService;
LoginService 是服务层的一个类,负责处理业务逻辑,特别是在这里用于验证登录信息。

  1. handleRequestInternal() 方法
    handleRequestInternal() 是处理 HTTP 请求的核心方法。该方法被 Spring 框架自动调用,用于处理客户端请求。它接收两个参数:
    HttpServletRequest:表示客户端的 HTTP 请求对象,可以从中获取请求参数。
    HttpServletResponse:表示服务器对客户端的 HTTP 响应对象。
    在这个方法中:
    通过 request.getParameter(“number”) 和 request.getParameter(“password”) 获取用户通过表单提交的用户名和密码。
    将获取的用户名和密码封装到 LoginVo 对象中,类似于 DTO(数据传输对象)的设计。
    java
    复制代码
    String name = request.getParameter(“number”);
    String password = request.getParameter(“password”);
    LoginVo loginVo = new LoginVo(name, password);
  2. 调用 LoginService 进行业务处理
    LoginService 中应该有一个 login() 方法来处理登录逻辑。这里调用 loginService.login(loginVo),并将结果存储在 int i 变量中。

int i = loginService.login(loginVo);
根据业务逻辑,loginService.login(loginVo) 可能返回一个整数值 i,这个值可能代表不同的登录结果,比如:

0:登录失败(用户名或密码错误)
1:登录成功
5. ModelAndView 类
ModelAndView 是 Spring MVC 中的核心类,用于封装模型数据和视图信息。可以理解为它在 MVC 架构中承担了将模型数据传递给视图的责任。

该方法创建了一个 ModelAndView 对象,用来:

添加模型数据:通过 modelAndView.addObject(“msg”, i),将登录结果 i 作为消息存储到模型中,以便在视图(如 JSP)中使用。
设置视图名称:通过 modelAndView.setViewName(“jsp/login”),指定返回的视图为 jsp/login,即页面文件路径为 WEB-INF/jsp/login.jsp。

ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject(“msg”, i);
modelAndView.setViewName(“jsp/login”);
6. 返回 ModelAndView 对象
handleRequestInternal() 方法最终返回 ModelAndView 对象给 Spring 容器,Spring 会根据视图名称去查找相应的 JSP 文件,并将模型数据传递给视图层以进行渲染。

return modelAndView;
7. 业务流程概述
整体的业务流程如下:

用户发送一个包含 number 和 password 的登录请求。
LoginController 处理该请求,调用 loginService 验证用户信息。
loginService 返回验证结果(如成功或失败)。
LoginController 将结果存储在 ModelAndView 中,并设置要跳转的视图(JSP 页面)。
最后,Spring MVC 渲染 JSP 页面,将模型中的数据显示给用户。

2、service

业务逻辑层

2.1、LoginService

public interface LoginService {public int login(LoginVo loginVo);public LoginVo all(LoginVo loginVo);public int insert(LoginVo loginVo);public int update(String name,String oldpassword,String newpassword);public int delete(LoginVo loginVo);public LoginVo loginone(String name,String password);}

这个 LoginService 接口定义了一个服务层的接口,用于处理登录功能和其他用户信息相关的业务逻辑。通常,接口是用于定义业务逻辑的抽象层,实际的实现类会提供具体的业务实现。让我们分析一下每个方法的用途:

  1. public int login(LoginVo loginVo);
    功能:用于处理用户登录逻辑。
    参数:接收一个 LoginVo 对象,其中包含用户的登录信息(如用户名和密码)。
    返回值:返回一个 int 类型,通常用于表示登录结果:
    1 表示登录成功。
    0 表示登录失败(可能是用户名或密码错误)。
  2. public LoginVo all(LoginVo loginVo);
    功能:可能用于获取某个用户的所有信息。
    参数:接受一个 LoginVo 对象,可能根据 loginVo 中的信息(如用户名)去查询完整的用户信息。
    返回值:返回一个 LoginVo 对象,表示查询到的用户完整信息。
  3. public int insert(LoginVo loginVo);
    功能:用于插入一个新的用户记录,通常是用户注册时调用的操作。
    参数:接收一个 LoginVo 对象,其中包含需要插入的用户信息。
    返回值:返回一个 int,用于表示操作的结果:
    1 表示插入成功。
    0 表示插入失败。

这个 LoginService 接口定义了几个用于用户管理的核心方法,包括登录验证、用户信息查询、插入(注册)、更新(修改密码)、删除等功能。
具体的实现类需要实现这些方法,处理具体的业务逻辑,比如连接数据库、执行增删改查操作。
每个方法的返回值主要用于表示操作的成功或失败,尤其是增删改查操作中通常会用 int 表示操作结果,而在获取用户信息时返回 LoginVo 对象。

LoginImplements 类是 LoginService 接口的实现类,它通过数据库查询用户信息并提供登录验证的功能。让我们逐步分析代码并理解其作用:

2.1、LoginInimplements

@Service
public class LoginImplements implements LoginService{//有数据返回1否则0@AutowiredLoginMapper mapper;@Overridepublic int login(LoginVo loginVo) {LoginVo loginVo1=mapper.selectlogin(loginVo);if (loginVo1!=null){return 1;}else {return 0;}/**if(loginVo.getName().equals("admin")&&loginVo.getPassword().equals("123456")){return 1;}elsereturn 0;}**/}//通过账号密码查询整个登入信息@Overridepublic LoginVo all(LoginVo loginVo) {LoginVo loginVo1=mapper.selectlogin(loginVo);if (loginVo1!=null){return loginVo1;}else {return null;}}//插入@Overridepublic int insert(LoginVo loginVo) {return mapper.insertlogin(loginVo);}/**** @param name* @param oldpassword* @param newpassword* @return 1成功 2旧密码不对 0修改失败*///通过账号修改密码@Overridepublic int update(String name,String oldpassword,String newpassword) {//判断旧密码是否正确LoginVo loginVo=new LoginVo(name,oldpassword);LoginVo temp=mapper.selectlogin(loginVo);if(temp!=null){//密码正确LoginVo loginVo1=new LoginVo(name,newpassword);int count=mapper.updatelogin(loginVo1);return count;}else {return 2;}}//通过账号密码删除账户@Overridepublic int delete(LoginVo loginVo) {return mapper.deletelogin(loginVo);}//查询所有账户@Overridepublic LoginVo loginone(String name,String password) {LoginVo loginVo2=mapper.selectloginone(name,password);return  loginVo2;}
}
  1. @Service 注解
    @Service 是 Spring 中的一个注解,表示该类是一个服务层组件。Spring 会将它作为一个 bean 管理,方便在需要的地方进行注入。
    在这个例子中,LoginImplements 实现了 LoginService 接口,并且通过 @Autowired 自动注入了 LoginMapper,用于数据库操作。
  2. @Autowired 注解
    @Autowired 注解用于自动注入 Spring 管理的 bean。
    在这里,LoginMapper 是自动注入的,意味着 Spring 会将 LoginMapper 接口的实现类注入到 LoginImplements 类中。LoginMapper 应该是一个 MyBatis 的 Mapper,用于执行数据库查询操作。
  3. public int login(LoginVo loginVo) 方法
    功能:通过 loginVo 中的用户名和密码去数据库查询,如果查询到有对应的记录,则返回 1,表示登录成功;否则返回 0,表示登录失败。

逻辑:

调用 mapper.selectlogin(loginVo) 查询数据库,检查是否存在该用户。
如果 loginVo1 不为 null,表示查询到了匹配的用户,返回 1。
否则返回 0,表示登录失败。

3、dao

数据访问层用于对数据库的交互

3.1、LoginMapper

/dao层注解
@Repository
public interface LoginMapper {/***查询信息表数据* @param loginVo* @return*/public LoginVo selectlogin(LoginVo loginVo);/***添加登录信息表数据* @param loginVo 添加数据用户名密码* @return 影响数据操作的行数1 成功,0失败*/public int insertlogin(LoginVo loginVo);public int updatelogin(LoginVo loginVo);/*** 删除数据类型* @param loginVo 删除数据用户账号密码* @return 影响数据的操作行数,成功为1 失败为0*/public  int deletelogin(LoginVo loginVo);/***查询信息表数据* @param可以在mybaties中找到* @return*/public LoginVo selectloginone(@Param("name") String name,@Param("password")  String password);public List<LoginVo> selectloginall();}

LoginMapper 是一个 DAO(数据访问对象)接口,它通过 MyBatis 或其他 ORM 框架来执行数据库的 CRUD(增删改查)操作。在这个接口中,通过定义方法来与数据库进行交互。注解 @Repository 表示它是持久层组件,Spring 会将其作为一个 bean 管理。

让我们详细分析每个方法的作用及其注释。

  1. @Repository 注解
    @Repository 是 Spring 的一个注解,标识该类是 DAO 层(持久层)组件。Spring 会自动扫描并将其注册为一个 bean。
    它表明该接口的实现类是与数据库交互的层次。
  2. 方法分析
  3. public LoginVo selectlogin(LoginVo loginVo);
    功能:根据传入的 loginVo 对象中的信息(如用户名和密码)查询数据库,返回用户信息。
    参数:LoginVo 对象,包含了用户的登录信息(例如用户名、密码)。
    返回值:返回一个 LoginVo 对象,表示查询到的用户。如果查询不到对应的记录,可能会返回 null。
  4. public int insertlogin(LoginVo loginVo);
    功能:将一个新的用户记录插入到数据库中,通常用于用户注册。
    参数:LoginVo 对象,包含要插入的用户信息(如用户名、密码)。
    返回值:返回一个 int,表示影响的行数。通常:
    1 表示插入成功。
    0 表示插入失败。
  5. public int updatelogin(LoginVo loginVo);
    功能:更新数据库中的用户信息(如修改密码、修改用户资料等)。
    参数:LoginVo 对象,包含需要更新的信息。
    返回值:返回一个 int,表示影响的行数。通常:
    1 表示更新成功。
    0 表示更新失败。

3.1、LoginMapper.xml

<mapper namespace="com.example.text.dao.LoginMapper">
<!--    增删改查-->
<select id="selectlogin" parameterType="LoginVo" resultType="LoginVo">select *from login where name =#{name} and password=#{password};
</select><insert id="insertlogin" parameterType="LoginVo">insert into login (name,password) values (#{name},#{password});</insert><update id="updatelogin" parameterType="LoginVo">update login set password=#{password} where name=#{name};</update><delete id="deletelogin" parameterType="LoginVo">delete from login where password=#{password}</delete><select id="selectloginone" parameterType="String" resultType="LoginVo">select *from login where name =#{name} and password=#{password};</select><select id="selectloginall"  resultType="LoginVo">select *from login;</select>
</mapper>

4、实体类

@Component
public class LoginVo {private String name;private String password;public LoginVo() {}public LoginVo(String name, String password) {this.name = name;this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

相关文章:

spring mvc后端实现过程

文章目录 一、Spring mvc1、controller1.1、LoginController011.2、LoginController 2、service2.1、LoginService2.1、LoginInimplements 3、dao3.1、LoginMapper3.1、LoginMapper.xml 4、实体类 一、Spring mvc 1、controller 控制器层、处理用户的请求和响应&#xff0c; …...

102005

import os os.environ["CUDA_VISIBLE_DEVICES"] "0" # 设定使用的 GPUimport tensorflow as tf from dataset import generate_data import numpy as np from model import enhancednet# 检查 TensorFlow 是否可以识别 GPU gpus tf.config.list_physica…...

Cisco ACI环境给Leaf配置OOB带外管理IP方法

可以通过GUI 或CLI进行配置 通过CLI更简单&#xff0c;和配置传统交换机差不多&#xff0c; ACI中共有3大组件 APIC 控制器 SPINE 核心 LEAF 接入 下面我们将3种角色的带外IP配置方法都列出来 1 APIC配置带外IP This example shows how to configure out-of-band managemen…...

免费送源码:Java+B/S+MySQL springboot电影推荐系统 计算机毕业设计原创定制

摘 要 随着互联网与移动互联网迅速普及&#xff0c;网络上的电影娱乐信息数量相当庞大&#xff0c;人们对获取感兴趣的电影娱乐信息的需求越来越大,个性化的电影推荐系统成为一个热门。然而电影信息的表示相当复杂&#xff0c;己有的相似度计算方法与推荐算法都各有优势&#…...

数据清洗(脚本)

使用脚本清洗数据时&#xff0c;可以根据具体的数据问题选择编程语言&#xff0c;如Shell、Python、SQL等。这里我以 Python&#xff08;Pandas库&#xff09; 和 SQL 为例&#xff0c;演示如何通过脚本进行数据清洗。 1. 使用 Python&#xff08;Pandas库&#xff09; 进行数…...

jmeter中发送post请求遇到的问题

用jmeter发送post请求&#xff0c;把请求参数放在Body Data处&#xff0c;参数都写得正确&#xff0c;但没想到结果每次都报错&#xff0c;直接响应结果乱七八糟&#xff0c;改成用Parameters,反而不乱报错了。 上图 请求里如下 另外一些请求也是这样 这个响应结果也是错误的…...

Java中使用protobuf

一、简介 Protocal Buffers(简称protobuf)是谷歌的一项技术&#xff0c;用于结构化的数据序列化、反序列化。 Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法&#xff0c;它可用于&#xff08;数据&#xff09;通信协议、数据存储等。 Protocol B…...

2020款Macbook Pro A2251无法充电无法开机定位及修复

问题背景 up主有一台2020年的Macbook Pro&#xff0c;带Touch Bar&#xff0c;16G512G&#xff0c;四核I5&#xff0c;型号A2251 应该是一周没充电了&#xff0c;之前还用的好好的&#xff0c;后来有一天出差想带上 打开没电&#xff0c;手头上有个小米的66W快充头&#xff0c…...

Spring Cloud --- 引入Gateway网关

引入Gateway网关 介绍 Spring Cloud Gateway 组件的核心是一系列的过滤器&#xff0c;通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway 是加在整个微服务最前沿的防火墙和代理器&#xff0c;隐藏微服务结点 IP 端口信息&#xff0c;从…...

ESP32-C3实现定时器的启停(Arduino IDE)

1概述 ESP32-C3微控制器有多个定时器&#xff0c;这些定时器可用于各种用途&#xff0c;包括计时、生成PWM信号、测量输入信号的频率等。以下是ESP32-C3上可用的定时器资源&#xff1a; 两个硬件定时器&#xff1a; 定时器0&#xff1a;这是一个通用定时器&#xff0c;通常用于…...

centos升级g++使其支持c++17

centos升级g使其支持c17 升级g的原因现象原因 升级g方法更新镜像源yum升级g版本 总结 升级g的原因 现象 编译最新版本的jsoncpp报一下错误 jsontest.h:87:37: error: ‘hexfloat’ is not a member of ‘std’oss << std::setprecision(16) << std::hexfloat &l…...

Pytest日志收集器配置

前言 在pytest框架中&#xff0c;日志记录&#xff08;logging&#xff09;是一个强大的功能&#xff0c;它允许我们在测试期间记录信息、警告、错误等&#xff0c;从而帮助调试和监控测试进度。 pytest与Python标准库中的logging模块完美集成&#xff0c;因此你可以很容易地在…...

Morris算法(大数据作业)

我只能说&#xff0c;概率证明真的好难啊&#xff01;(&#xff1b;′⌒) 这也证明我的概率论真的学的很差劲&#xff0c;有时间一定要补补/(ㄒoㄒ)/~~ 算法不难证明难&#xff01; 当一个数足够大时&#xff0c;能不能用更少的空间来近似表示这个整数n&#xff0c;于是&…...

TCP/IP协议 【三次握手】过程简要描述

当建立TCP连接时&#xff0c;三次握手的作用简要描述如下&#xff1a; 第一次握手&#xff08;客户端向服务器发送SYN包&#xff09;&#xff1a;客户端发送SYN包给服务器&#xff0c;确认服务器是否在线并等待响应。 第二次握手&#xff08;服务器向客户端发送SYNACK包&…...

docker 数据管理,数据持久化详解 二 数据卷容器

数据卷和数据卷容器核心区别 持久性对比 数据卷&#xff1a;当您直接在启动容器时指定了一个数据卷&#xff08;例如&#xff0c;使用docker run -v /data&#xff09;&#xff0c;这个数据卷会自动创建&#xff0c;并且其内容会在容器停止或删除后继续存在。您可以随时通过Do…...

Logrotate:Linux系统日志轮转和管理的实用指南

Logrotate是Linux系统中用于自动化管理日志文件的强大工具&#xff0c;它能够高效、安全地轮转、压缩和清理日志文件&#xff0c;从而有效控制日志文件大小&#xff0c;节省磁盘空间&#xff0c;并显著提升系统可维护性和安全性。本文档将提供Logrotate的实用指南&#xff0c;涵…...

八股面试3(自用)

基本数据类型和引用数据类型区别 java中数据类型分为基本数据类型和引用数据类型 8大基本数据类型 1.整数&#xff1a;int&#xff0c;long&#xff0c;short&#xff0c;byte 2.浮点类型&#xff1a;float&#xff0c;double 3.字符类型&#xff1a;char 4.布尔类型&…...

【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录 一、前言 二、常用的数据同步解决方案 2.1 为什么需要数据同步 2.2 常用的数据同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介绍 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…...

【Android】浅析OkHttp(1)

【Android】浅析OkHttp&#xff08;1&#xff09; OkHttp 是一个高效、轻量级的 HTTP 客户端库&#xff0c;主要用于 Android 和 Java 应用开发。它不仅支持同步和异步的 HTTP 请求&#xff0c;还支持许多高级功能&#xff0c;如连接池、透明的 GZIP 压缩、响应缓存、WebSocke…...

Generate-on-Graph

目录 摘要1 引言2 相关工作4 不完整知识图谱问答&#xff08;IKGQA&#xff09;4.1 任务介绍4.2 数据集构建 5 Generate-on-Graph (GoG) 摘要 为了解决大型语言模型&#xff08;LLMs&#xff09;在知识不足和幻觉问题上的困扰&#xff0c;众多研究探索了将LLMs与知识图谱&…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...