当前位置: 首页 > 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与知识图谱&…...

学习笔记——交换——STP(生成树)简介

一、技术背景 1、生成树技术背景 交换机单线路组网&#xff0c;存在单点故障(上左图)&#xff0c;上行线路及设备都不具备冗余性&#xff0c;一旦链路或上行设备发生故障&#xff0c;业务将会中断。 为了使得网络更加健壮、更具有冗余性&#xff0c;将拓扑修改为(上右图)接入…...

【Linux从入门到精通一】操作系统概述与Linux初识

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…...

Git 深度解析 —— 从基础到进阶

目录 1. Git 基础概念 1.1 版本控制 (Version Control) 1.2 分布式版本控制 (Distributed Version Control) 1.3 核心概念 1.4 Git 工作流程 2. Git 常用命令 2.1 初始化仓库 2.2 添加文件 2.3 提交修改 2.4 查看状态 2.5 查看历史记录 2.6 切换分支 2.7 创建分支…...

PCIE-变量总结

1.changed_speed_recovery&#xff1a; 表示链路双方已经将链路速率协商为更高的速率。 在configuration.complete状态下此变量会reset成0&#xff1b; 当前状态在recovery.rcvrlock状态&#xff1a; 在经过24ms的timeout之后&#xff0c;任何一个已经configured的lane&…...

【iOS】AFNetworing初步学习

文章目录 前言OC的网络请求步骤单例封装网络请求使用AFNetworking进行网络请求 前言 在暑假&#xff0c;学习了一些简单的网络请求的内容&#xff0c;本周学习了AFNetworking的基本使用&#xff0c;通过本篇博客进行一个简单的介绍。 OC的网络请求步骤 简单的网络请求主要有…...

【数据结构】堆的创建

Heap.h #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h>//创建堆结构体 typedef int HPDateType; typedef struct Heap {HPDateType* a;int size;int capacity; }HP;//堆的初始化 void HPInit(HP* php);//堆的销毁 voi…...

Linux下Git操作

一、基本命令 1、创建 git 目录&#xff08;工作区&#xff09; mkdir gitcode 2、创建本地仓库&#xff0c;生成 .git 隐藏目录 git init 3、设置配置项 git config user.name "xxx" git config user.email "....." 4、查看配置项 git config -l …...

缺失d3dx9_42.dll如何修复,d3dx9_42.dll故障的6种修复方法分享

在电脑使用过程中&#xff0c;许多游戏玩家和软件用户可能都遇到过d3dx9_42.dll丢失的问题。这个问题会导致游戏或软件无法正常运行&#xff0c;给用户带来诸多不便。本文将详细解读d3dx9_42.dll丢失的原因、影响及解决方案&#xff0c;帮助大家顺利解决这个问题。 一、d3dx9_4…...

深入理解Android WebView的加载流程与事件回调

文章目录 一、WebView 加载流程时序图二、WebView 加载流程回调函数说明三、AwContents3.1 主要功能和职责3.2 架构和实现3.3 使用场景 四、利用WebView回调函数检测白屏4.1 使用onPageStarted和onPageFinished检测加载时间4.2 利用onReceivedError和onReceivedHttpError检测加…...

机器视觉相机自动对焦算法

第一&#xff0c;Brenner梯度法、 第二&#xff0c;Tenegrad梯度法、 第三&#xff0c;laplace梯度法、 第四&#xff0c;方差法、 第五&#xff0c;能量梯度法。 此实例通过使用Halcon实现5种清晰度算法函数&#xff1a; 1. 方差算法函数&#xff1b; 2. 拉普拉斯能量函数…...