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

SSM相关面试题01

目录

1.何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?

2.Spring IOC 如何理解?

3.Spring DI 如何理解?

4.Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制?

5.Spring 工厂底层构建Bean对象借助什么机制?当对象不使用了要释放资源,目的是什么?何为内存泄漏?

6.描述Spring MVC处理流程及应用优势?

7.Spring中的事务处理方式及优缺点?

8. MyBatis应用中#与$有什么异同点?

9. MyBatis应用动态SQL解决了什么问题?

10. Shiro框架权限管理时的认证和授权流程描述

11. BeanFactory和ApplicationContext有什么区别?

12. 请解释Spring Bean的生命周期?  

13. Spring Bean的作用域之间有什么区别?

14. 在Spring AOP 中,关注点和横切关注的区别是什么?

15. 使用Spring框架的好处是什么?

16. Spring 中用到了那些设计模式?

17. Spring 如何保证 Controller 并发的安全?

18. 在 Spring中如何注入一个java集合?

19. Spring支持的事务管理类型?

20. Spring框架的事务管理有哪些优点?

21. Spring MVC的主要组件?

22. Spring MVC 怎么和 AJAX 相互调用的?

23. MyBatis 的缓存机制,一级,二级介绍一下?

24. SpringMVC 与 Struts2 的区别?

25. MyBatis 的基本工作流程?


1.何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?

Spring Bean 容器 是 Spring 框架的核心,负责管理应用中所有的对象(Bean)。它通过配置文件(XML)或注解扫描的方式,读取 Bean 的定义并创建、初始化、配置和管理这些 Bean 的生命周期。Bean 容器还负责依赖注入(DI)和控制反转(IOC),确保 Bean 之间的依赖关系能够自动建立。

Spring IOC 容器是 Spring 框架的核心概念之一。它是一种控制反转的设计模式,意味着对象的创建和管理不由程序员控制,而是交给 Spring 框架来处理,用于降低计算机代码之间的耦合度。

区别:

  • Spring IOC 容器 是整个容器的功能层面,涉及控制反转的实现。
  • Spring Bean 容器 具体指实现了 IOC 容器功能的 Spring 容器,负责管理 Bean 的生命周期,创建、销毁 Bean。

2.Spring IOC 如何理解?

IOC是一种设计模式,其核心思想是将控制权从程序员手中转移到容器中,即让容器负责对象的创建、初始化和依赖注入。Spring 框架通过提供一个容器,负责管理应用中对象的生命周期,并通过配置文件或注解来声明对象的依赖关系。

IOC 容器 在启动时会创建并初始化应用中的所有 Bean,自动注入它们之间的依赖关系,程序员只需要关注业务逻辑,容器负责其他的细节。

3.Spring DI 如何理解?

DI(Dependency Injection,依赖注入) 是一种实现 IOC 的方式,是 Spring 框架的核心功能之一。它通过将类的依赖关系(如对象、服务)自动注入到类的实例中,而不是由类自己创建依赖对象。DI 可以通过构造器注入、Setter 方法注入和字段注入等方式进行。

依赖注入的好处:

  • 降低了类与类之间的耦合度,提高了系统的灵活性和可测试性。
  • 使得对象的创建和管理交给 Spring 容器,简化了代码。

4.Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制?

对象作用域(Scope):在 Spring 中,常见的作用域有单例(singleton)和原型(prototype)等。可以通过 @Scope 注解来配置对象的作用域。

  • @Scope("singleton"):表示一个 Bean 在 Spring 容器中只有一个实例(默认作用域)单例模式。
  • @Scope("prototype"):表示每次请求都会创建一个新的 Bean 实例。
  • @Scope("request"):表示每个 HTTP 请求一个 Bean 实例(适用于 web 环境)。
  • @Scope("session"):表示每个 HTTP 会话一个 Bean 实例(适用于 web 环境)。

延迟加载(Lazy Initialization):通过 @Lazy 注解可以将 Bean 的加载延迟到它首次使用时。

5.Spring 工厂底层构建Bean对象借助什么机制?当对象不使用了要释放资源,目的是什么?何为内存泄漏?

Spring 工厂底层构建 Bean 对象时,借助了 反射机制工厂设计模式。Spring 会通过反射创建 Bean 的实例,并根据 Bean 的定义(如构造器、Setter 方法等)来注入依赖。

当对象不使用时,Spring 会通过容器的 垃圾回收机制 来销毁 Bean,释放资源,目的是为了避免内存泄漏

内存泄漏 是指程序不再使用某个对象,但由于某种原因,该对象仍然保留在内存中,导致无法被垃圾回收,从而消耗内存资源。

6.描述Spring MVC处理流程及应用优势?

Spring MVC 是基于请求驱动的 Web 框架,它采用了前端控制器模式,主要包括以下步骤:

  1. 请求:用户发送 HTTP 请求到前端控制器(DispatcherServlet)。
  2. 请求映射:DispatcherServlet 将请求映射到对应的处理器 Controller(根据请求 URL 和映射规则)。
  3. 处理业务逻辑:Controller 处理业务逻辑并返回一个 ModelAndView 对象,包含了模型数据和视图信息。
  4. 视图解析:DispatcherServlet 通过视图解析器(ViewResolver)来解析视图。
  5. 响应:最终渲染视图并将响应返回给用户。

优势:

  • 解耦:前端控制器、业务逻辑和视图渲染的解耦,方便维护和扩展。
  • 灵活性:支持多种视图技术(JSP、FreeMarker、Thymeleaf 等)。
  • 可测试性:业务逻辑和控制层分离,便于单元测试。

7.Spring中的事务处理方式及优缺点?

Spring 提供了声明式和编程式事务管理方式:

声明式事务管理

        使用 AOP(面向切面编程)在方法上添加事务属性,通过注解(如 @Transactional)或 XML 配置来定义事务边界。

  • 优点:简单易用,灵活,分离了业务逻辑和事务控制。
  • 缺点:不支持复杂的事务操作,无法在运行时动态控制事务。

编程式事务管理

        通过 TransactionTemplate 或 PlatformTransactionManager 显式管理事务,手动编写事务的开始、提交和回滚。

  • 优点:可以灵活控制事务的具体行为。
  • 缺点:代码耦合度高,不够简洁。

8. MyBatis应用中#与$有什么异同点?

#{}:

  • 用于预处理语句(prepared statements),可以防止SQL注入攻击。
  • MyBatis会将传入的参数与SQL语句中的占位符替换时进行转义处理。

${}:

  • 直接将传入的参数拼接到SQL中,容易受到SQL注入攻击。
  • 通常用于那些无法使用预处理语句的场景,如动态表名、列名、排序字段等。

异同点:

  • 相同点:都是用来替换SQL语句中的参数。
  • 不同点:#{}是安全的参数替换方式,而${}则不安全;${}可以用于动态SQL,而#{}不行。

9. MyBatis应用动态SQL解决了什么问题?

  • 动态SQL解决了在不同情况下需要执行不同SQL语句的问题,它允许在运行时根据条件构建SQL语句。
  • 它使得SQL语句更加灵活,可以根据业务逻辑的变化快速调整SQL,而不需要修改数据库结构或重新编写大量的SQL代码。
  • 动态SQL通过 <if>、<choose>、<when>、<otherwise> 等标签实现了条件判断和分支选择,使得SQL语句可以根据复杂的业务逻辑动态生成。

10. Shiro框架权限管理时的认证和授权流程描述

认证(Authentication):

  1. 用户向 Shiro 提交身份信息(如用户名和密码)。
  2. Shiro 使用 Authenticator 检查用户身份,验证信息的正确性。
  3. 如果身份验证成功,Shiro 会将用户信息存储在 Subject 中。

授权(Authorization):

  1. 用户访问需要权限控制的资源时,Shiro 会通过 Authorizer 检查该用户是否有访问该资源的权限。
  2. Shiro 会检查用户是否属于某个角色或拥有特定的权限。
  3. 如果授权通过,用户可以访问资源;否则,Shiro 会拒绝访问或重定向到登录页面。

总结:

  • 认证 是确保用户身份的合法性。
  • 授权 是确保用户具有访问某个资源的权限

11. BeanFactory和ApplicationContext有什么区别?

  • BeanFactory

是 Spring 中最基本的容器,负责加载 Bean 和管理 Bean 的生命周期。它通过延迟加载(Lazy Initialization)加载 Bean,只有在 Bean 被请求时才创建实例。

  • ApplicationContext

是 BeanFactory 的子接口,继承了 BeanFactory 的功能,并扩展了更多功能,比如事件传播、AOP 支持、国际化消息处理等。相比于 BeanFactory,ApplicationContext 是更常用的容器,通常会立即加载所有的 Bean(除非显式指定延迟加载)。

区别:

  • 功能:ApplicationContext 提供了更多的功能,如事件处理、国际化支持、自动装配等,适用于更多的应用场景。
  • 加载方式:BeanFactory 采用懒加载,而 ApplicationContext 一般采用提前加载所有 Bean(即在容器初始化时)。

12. 请解释Spring Bean的生命周期?  

  1. 实例化:Spring 容器通过反射创建 Bean 实例。
  2. 设置属性:Spring 会通过依赖注入(DI)将所需的依赖注入到 Bean 中。
  3. Bean 名称回调:如果实现了 BeanNameAware 接口,Spring 会调用 setBeanName() 方法,将 Bean 名称传递给 Bean。
  4. BeanFactory 回调:如果实现了 BeanFactoryAware 接口,Spring 会调用 setBeanFactory() 方法,将 BeanFactory 传递给 Bean。
  5. 应用上下文回调:如果实现了 ApplicationContextAware 接口,Spring 会调用 setApplicationContext() 方法,将 ApplicationContext 传递给 Bean。
  6. 初始化:如果 Bean 定义了初始化方法(如 @PostConstruct 或 XML 配置中的 init-method),Spring 会调用该方法。
  7. Bean 使用:此时 Bean 可以被 Spring 容器管理并被应用程序使用。
  8. 销毁:如果 Bean 定义了销毁方法(如 @PreDestroy 或 XML 配置中的 destroy-method),当容器销毁时,Spring 会调用该方法。

13. Spring Bean的作用域之间有什么区别?

  1. singleton(单例):在整个 Spring 容器中,只有一个 Bean 实例。默认作用域。
  2. prototype(原型):每次请求都会创建一个新的 Bean 实例。
  3. request(请求):每个 HTTP 请求一个 Bean 实例,仅适用于 Web 环境。
  4. session(会话):每个 HTTP 会话一个 Bean 实例,仅适用于 Web 环境。
  5. application(应用):每个 Web 应用一个 Bean 实例,仅适用于 Web 环境。
  6. websocket(WebSocket):每个 WebSocket 会话一个 Bean 实例,仅适用于 Web 环境。

区别:

  • singleton 和 prototype 是最常见的,前者是单例的,后者是每次请求都会创建一个新的实例。
  • Web 相关作用域(request, session, application, websocket)主要用于 Web 应用中,它们与 HTTP 请求和会话生命周期关联。

14. 在Spring AOP 中,关注点和横切关注的区别是什么?

  • 关注点(Concern):是指应用程序中的特定功能或行为。例如,业务逻辑是一个关注点,日志记录、安全性检查等也是关注点。
  • 横切关注(Cross-cutting Concern):指跨越多个模块或业务逻辑的关注点。比如日志记录、事务管理、安全控制等。这些关注点横跨应用的多个层次,不局限于某一个特定功能模块。

在 AOP 中,横切关注被抽象为切面(Aspect),它可以在不修改业务逻辑的情况下,统一处理这些跨模块的需求。

15. 使用Spring框架的好处是什么?

  1. 简化开发:Spring 提供了许多开箱即用的功能,如依赖注入(DI)、面向切面编程(AOP)、事务管理等,简化了开发工作。
  2. 松耦合:通过 IOC 和 DI,Spring 使得不同模块之间的耦合度大大降低,方便维护和测试。
  3. 更好的可测试性:Spring 容器管理 Bean,使得可以轻松替换和注入依赖,促进单元测试的实施。
  4. 跨平台支持:Spring 提供了与不同数据源、消息队列、事务管理器等集成的支持,减少了对底层技术的依赖。
  5. 灵活性和可扩展性:Spring 提供了丰富的模块,用户可以根据实际需要选择和组合模块。

16. Spring 中用到了那些设计模式?

  1. 工厂模式:Spring 的 BeanFactory 和 ApplicationContext 实现了工厂模式,用于创建和管理 Bean 实例。
  2. 单例模式:Spring 默认使用单例模式管理 Bean,每个 Bean 只有一个实例。
  3. 代理模式:AOP 使用代理模式来创建代理对象,管理方法的拦截和增强。
  4. 模板方法模式:Spring 提供了多种模板类,如 JdbcTemplate、JmsTemplate,简化了资源管理。
  5. 观察者模式:Spring 的事件机制基于观察者模式,允许监听和响应事件。
  6. 策略模式:Spring 中的多种策略接口,如事务管理、视图解析器等,允许通过不同的策略实现不同的功能。

17. Spring 如何保证 Controller 并发的安全?

  • 无状态: 确保Controller是无状态的,这样多个请求可以在不同的线程中并发处理同一个Controller实例。
  • 线程安全: 使用线程安全的类和方法,或者避免在Controller中使用全局状态。
  • 局部变量: 使用局部变量来存储每个请求的状态。
  • 同步: 对于需要同步访问的资源,使用同步代码块或锁。
  • 并发注解: 使用@Synchronized注解(非Spring官方提供)来同步方法。

18. 在 Spring中如何注入一个java集合?

  • 可以通过XML配置或注解来注入集合类型的Bean。例如,使用@Autowired注解和List、Set等集合类型。
  • 在XML配置中,可以使用<list>、<set>或<map>标签来定义集合,并注入到Bean的属性中。
  • 也可以使用@PropertySource注解指定属性文件,并使用@Property注解将属性文件中的值注入到集合中。

19. Spring支持的事务管理类型?

  1. 声明式事务管理:通过 AOP(面向切面编程)和 @Transactional 注解或 XML 配置来声明事务的边界,简化了事务管理。
  2. 编程式事务管理:使用 TransactionTemplate 或 PlatformTransactionManager 通过编程的方式显式管理事务。

20. Spring框架的事务管理有哪些优点?

  • 简化事务管理:通过声明式事务管理,开发人员无需编写复杂的事务管理代码,避免了事务处理的繁琐。
  • 跨数据库支持:Spring 提供对多种数据库事务的支持,可以通过不同的事务管理器来处理各种数据库事务。
  • 灵活性:可以支持本地事务、分布式事务和异步事务等。
  • 隔离性和一致性:Spring 支持配置事务的隔离级别和传播行为,保证了事务的 ACID 特性。

21. Spring MVC的主要组件?

  1. DispatcherServlet:前端控制器,负责接收和分发请求。

  2. Controller:处理用户请求的核心组件。

  3. HandlerMapping:根据请求 URL 查找相应的 Controller。

  4. ViewResolver:根据模型和视图名称解析视图。

  5. ModelAndView:封装了模型数据和视图信息的对象。

22. Spring MVC 怎么和 AJAX 相互调用的?

  • 在Spring MVC中,可以通过在Controller中添加方法来处理AJAX请求。这些方法通常返回@ResponseBody注解的数据,这些数据可以直接被AJAX调用处理。

  • 在前端,使用JavaScript(或jQuery等库)发起AJAX请求,并将请求发送到Spring MVC的Controller。

  • Controller处理请求后,返回JSON或XML格式的响应数据,AJAX调用接收这些数据并进行相应的处理,如更新页面元素。

23. MyBatis 的缓存机制,一级,二级介绍一下?

  • 一级缓存(Local Cache): 也称为SqlSession级别的缓存,每个SqlSession都有自己的一级缓存,当查询相同的Namespace和SQL时,会直接从一级缓存中获取数据,而不是再次查询数据库。
  • 二级缓存(Global Cache): 可以跨SqlSession共享,需要手动开启。二级缓存可以减少对数据库的访问次数,提高性能。但是,它也增加了复杂性,并且需要处理缓存的一致性问题。

24. SpringMVC 与 Struts2 的区别?

  • 架构设计

    • SpringMVC:基于 DispatcherServlet 作为前端控制器,采用轻量级的控制器与视图分离。
    • Struts2:基于 Action 类进行控制,整体架构相对较重,且有很多内置功能。
  • 灵活性

    • SpringMVC:通过配置和注解提供了更灵活的映射机制。
    • Struts2:配置复杂,基于 XML 和注解,但扩展性相对较低。
  • 功能

    • SpringMVC:专注于 Web 层,并与 Spring 框架的其他组件(如事务、AOP)无缝集成。
    • Struts2:具有更多内建功能,如拦截器、表单标签等。
  • 依赖

    • SpringMVC:作为 Spring 的一部分,依赖 Spring 容器。
    • Struts2:独立框架,虽然可以集成 Spring,但不依赖于 Spring。

25. MyBatis 的基本工作流程?

  1. 配置文件:加载 MyBatis 配置文件 (SqlMapConfig.xml),包括数据库连接、事务管理等信息。

  2. SqlSessionFactory:通过 SqlSessionFactoryBuilder 创建 SqlSessionFactory,然后获取 SqlSession

  3. SqlSession:执行命令,查询数据库或插入、更新数据。

  4. 通过Executor执行SQL语句。

  5. 将结果集映射到Java对象。

  6. 提交事务或回滚。

  7. 关闭SqlSession。

相关文章:

SSM相关面试题01

目录 1.何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗? 2.Spring IOC 如何理解? 3.Spring DI 如何理解? 4.Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制? 5.Spring 工厂底层构建Bean对象借助什么机制?当对象不使用了要释放…...

Python websocket

router.websocket(/chat/{flow_id}) 接口代码&#xff0c;并了解其工作流程、涉及的组件以及如何基于此实现你的新 WebSocket 接口。以下内容将分为几个部分进行讲解&#xff1a; 接口整体概述代码逐行解析关键组件和依赖关系如何基于此实现新功能示例&#xff1a;创建一个新的…...

正则表达式

正则表达式&#xff1a; 正则表达式区别于通配符&#xff0c;正则表达式是用来匹配文本的内容&#xff0c;命令的输出结果也属于文本内容。也可以使用正则表达式。 通配符用来匹配文件名和目录名。 grep用来过滤文本内容&#xff0c;以匹配要查询的结果。 linux的文本三剑客…...

机器学习——生成对抗网络(GANs):原理、进展与应用前景分析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一. 生成对抗网络的基本原理二. 使用步骤2.1 对抗性训练2.2 损失函数 三. GAN的变种和进展四. 生成对抗网络的应用五. 持续挑战与未来发展方向六. 小结 前言 生…...

HTTPS 加密

HTTPS 加密技术 1. HTTPS 概述 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是 HTTP 协议的安全版本&#xff0c;利用 SSL/TLS 协议对通信进行加密&#xff0c;确保数据的机密性、完整性和身份认证。HTTPS 在保护敏感数据的传输&#xff08;如登录凭证、…...

Golang 构建学习

Golang 构建学习 如何搭建Golang开发环境 1. 下载GOlang包 https://golang.google.cn/dl/ 在地址上下载Golang 2. 配置包环境 修改全局环境变量&#xff0c;GOPROXY&#xff0c;GOPATH&#xff0c;GOROOT GOPROXYhttps://goproxy.cn,direct GOROOT"" // go二进…...

OpenCV相机标定与3D重建(7)鱼眼镜头立体校正的函数stereoRectify()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::fisheye::stereoRectify 是 OpenCV 中用于鱼眼镜头立体校正的函数。该函数计算两个相机之间的校正变换&#xff0c;使得从两个相机拍摄的图像…...

JVM_垃圾收集器详解

1、 前言 JVM就是Java虚拟机&#xff0c;说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机&#xff0c;让用户更加专注上层&#xff0c;而不用在乎下层的一个产品。这就是JVM的跨平台&#xff0c;一次编译&#xff0c;到处运行。 而JVM中的核心功能其实就是自动…...

数据结构4——栈和队列

目录 1.栈 1.1.栈的概念及结构 1.2栈的实现 2.队列 2.1队列的概念及结构 2.2队列的实现 1.栈 1.1.栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶&#xff0c;另一端称为…...

【AIGC】大模型面试高频考点-数据清洗篇

【AIGC】大模型面试高频考点-数据清洗篇 &#xff08;一&#xff09;常用文本清洗方法1.去除无用的符号2.去除表情符号3.文本只保留汉字4.中文繁体、简体转换5.删除 HTML 标签和特殊字符6.标记化7.小写8.停用词删除9.词干提取和词形还原10.处理缺失数据11.删除重复文本12.处理嘈…...

Java基于SSM框架的跑腿平台小程序【附源码、文档】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

数据库连接池

在Java的多线程中&#xff0c;有线程池负责线程管理&#xff0c;类似线程池&#xff0c;在数据库中也有数据库连接池&#xff0c;负责数据库连接的管理。数据库连接池是一个容器。负责分配、管理数据库连接&#xff08;Connection&#xff09;。它允许应用程序重复使用一个现有…...

本地部署 WireGuard 无需公网 IP 实现异地组网

WireGuard 是一个高性能、极简且易于配置的开源虚拟组网协议。使用路由侠内网穿透使其相互通讯。 第一步&#xff0c;服务端&#xff08;假设为公司电脑&#xff09;和客户端&#xff08;假设为公司外的电脑&#xff09;安装部署 WireGuard 1&#xff0c;点此下载&#xff08;…...

Educator头歌:离散数学 - 图论

第1关&#xff1a;图的概念 任务描述 本关任务&#xff1a;学习图的基本概念&#xff0c;完成相关练习。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;图的概念。 图的概念 1.一个图G是一个有序三元组G<V,R,ϕ>&#xff0c;其中V是非空顶点集合&am…...

axios的认识与基本使用

axios简介 Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 主要特点 从浏览器创建 XML…...

springboot358智慧社区居家养老健康管理系统(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 智慧社区居家养老健康管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&…...

java-a+b 开启java语法学习

代码 &#xff08;ab) import java.util.Scanner; //导入 java.util包中的Scanner 类&#xff0c;允许读取键盘输入数据public class Main { // 创建一个公共类 Mainpublic static void main(String[] args) {//程序入口点&#xff0c;main方法Scanner scanner new Scanner(…...

SpringAi整合免费大模型(NVIDIA)

接上回&#xff0c;发布了springAI整合本地大模型之后&#xff0c;我们来看看怎么去利用别人已经训练好的大模型。 如果对整合本地大模型感兴趣的&#xff0c;请阅读&#xff1a; SpringAI集成本地AI大模型ollama&#xff08;调用篇&#xff09;非常简单&#xff01;&#xf…...

Flutter中的Future和Stream

在 Flutter 中&#xff0c;Future 和 Stream 都是用于处理异步操作的类&#xff0c;它们都基于 Dart 的异步编程模型&#xff0c;但是它们的使用场景和工作方式有所不同。以下是它们的区别以及各自适用的场景。 目录 一、Future1、基本使用2、异常处理1. catchError2. onError…...

Python将Excel文件转换为JSON文件

工作过程中,需要从 Excel 文件中读取数据,然后交给 Python 程序处理数据,中间需要把 Excel 文件读取出来转为 json 格式,再进行下一步数据处理。 这里我们使用pandas库,这是一个强大的数据分析工具,能够方便地读取和处理各种数据格式。需要注意的是还需要引入openpyxl库,…...

MySQL中EXPLAIN的介绍、作用、字段含义

MySQL中EXPLAIN的介绍、作用、字段含义 在MySQL中&#xff0c;EXPLAIN 是一个非常有用的命令&#xff0c;它可以帮助开发者和DBA理解查询执行计划&#xff0c;从而优化查询性能。EXPLAIN 可以模拟优化器执行SQL查询语句&#xff0c;而不真正执行这条语句&#xff0c;从而帮助用…...

Socket编程:UDP网络编程项目

目录 一、回显服务器 二、翻译器 三、聊天室 一、回显服务器 项目介绍&#xff1a;使用UDPIPv4协议进行Linux网络编程&#xff0c;实现回显服务器和客户端 功能介绍&#xff1a;客户端发送数据&#xff0c;经过服务端再返回到客户端&#xff0c;输出数据 源代码&#xff1…...

uniapp echarts tooltip formation 不识别html

需求&#xff1a; echarts 的tooltip 的域名太长&#xff0c;导致超出屏幕 想要让他换行 思路一&#xff1a; 用formation自定义样式实现换行 但是&#xff1a; uniapp 生成微信小程序&#xff0c; echart种的tooltip 的formation 识别不了html &#xff0c;自定义样式没办…...

从0开始linux(39)——线程(2)线程控制

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 线程创建线程标识符线程参数多线程竞争资源 回收线程detach 线程退出pthread_cancel 线程创建 线程创建的函数为pthread_create。该函数是包含在posix线程库当中&#xff0c;posix线程是C语言…...

对载入的3dtiles进行旋转、平移和缩放变换。

使用 params: {tx: 129.75845, //模型中心X轴坐标&#xff08;经度&#xff0c;单位&#xff1a;十进制度&#xff09;//小左ty: 46.6839, //模型中心Y轴坐标&#xff08;纬度&#xff0c;单位&#xff1a;十进制度&#xff09;//小下tz: 28, //模型中心Z轴坐标&#xff08;高…...

YOLO模型训练后的best.pt和last.pt区别

在选择YOLO模型训练后的权重文件best.pt和last.pt时&#xff0c;主要取决于具体的应用场景‌&#xff1a;‌12 ‌best.pt‌&#xff1a;这个文件保存的是在训练过程中表现最好的模型权重。通常用于推理和部署阶段&#xff0c;因为它包含了在验证集上表现最好的模型权重&#x…...

Qt 项目中同时使用 CMAKE_AUTOUIC 和 UiTools 的注意事项

在 Qt 项目开发中&#xff0c;.ui 文件是界面设计的重要组成部分。开发者可以通过两种主要方式使用 .ui 文件&#xff1a; 编译期处理&#xff1a;通过 Qt 的 uic 工具将 .ui 文件转化为 C 代码&#xff08;ui_xxx.h&#xff09;&#xff0c;静态绑定到项目中。运行时动态加载…...

不玩PS抠图了,改玩Python抠图

网上找了两个苏轼的印章图片&#xff1a; 把这两个印章抠出来的话&#xff0c;对于不少PS高手来说是相当容易&#xff0c;但是要去掉其中的水印&#xff0c;可能要用仿制图章慢慢描绘&#xff0c;图章的边缘也要慢慢勾画或者用通道抠图之类来处理&#xff0c;而且印章的红色也不…...

ubuntu 22.04 mini 安装,在配置网络时重启后配置文件被重置原因与解决方法

在 /etc/netplan/50-cloud-init.yaml 配置文件中有一段注释中有说明 rootlocalhost:/etc/netplan# cat 50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disab…...

【Go底层】time包Ticker定时器原理

目录 1、背景2、go版本3、源码解释【1】Ticker结构【2】NewTicker函数解释 4、代码示例5、总结 1、背景 说到定时器我们一般想到的库是cron&#xff0c;但是对于一些简单的定时任务场景&#xff0c;标准库time包下提供的定时器就足够我们使用&#xff0c;本篇文章我们就来研究…...

mac下Gpt Chrome升级成GptBrowser书签和保存的密码恢复

cd /Users/自己的用户名/Library/Application\ Support/ 目录下有 GPT\ Chrome/ Google/ GptBrowser/ GPT\ Chrome 为原来的chrome浏览器的文件存储目录. GptBrowser 为升级后chrome浏览器存储目录 书签所在的文件 Bookmarks 登录账号Login 相关的文件 拷贝到GptBrow…...

[Redis#6] list | 命令 | 应用 | 消息队列 | 微博 Timeline

目录 List 列表 特点 2. 命令 头插和尾插 下标 range 查询 头删和尾删 LINSERT LLEN LREM LTRIM LSET 阻塞命令 BLPOP BRPOP 操作 总结 3. 内部编码 ziplist&#xff08;压缩列表&#xff09; linkedlist&#xff08;链表&#xff09; ✔️quicklist(快速链…...

服务器数据恢复—raid6阵列硬盘被误重组为raid5阵列的数据恢复案例

服务器存储数据恢复环境&#xff1a; 存储中有一组由12块硬盘组建的RAID6阵列&#xff0c;上层linux操作系统EXT3文件系统&#xff0c;该存储划分3个LUN。 服务器存储故障&分析&#xff1a; 存储中RAID6阵列不可用。为了抢救数据&#xff0c;运维人员使用原始RAID中的部分…...

Xcode15(iOS17.4)打包的项目在 iOS12 系统上启动崩溃

0x00 启动崩溃 崩溃日志&#xff0c;只有 2 行&#xff0c;看不出啥来。 0x01 默认配置 由于我开发时&#xff0c;使用的 Xcode 14.1&#xff0c;打包在另外一台电脑 Xcode 15.3 Xcode 14.1 Build Settings -> Asset Catalog Compliter - Options Xcode 15.3 Build S…...

Netty的心跳机制怎么实现的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的心跳机制怎么实现的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的心跳机制怎么实现的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的心跳机制用于维持客户端和服务器之间的…...

常用函数的使用错题汇总

目录 new/delete malloc/free1. 语言和类型2. 内存分配3. 内存释放4. 安全性和类型安全5. 其他特性总结 线程停止文件流 new/delete malloc/free malloc/free 和 new/delete 是 C/C 中用于动态内存管理的两种方式&#xff0c;它们有一些重要的区别。以下是这两种方式的比较&…...

使用 `aircrack-ng`扫描、获取握手包

使用 aircrack-ng 工具集来扫描 5GHz WiFi 网络的过程与扫描 2.4GHz 网络类似&#xff0c;但需要注意一些特定的配置和命令。以下是一个详细的步骤指南&#xff0c;帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**&#xff1a;通常在 Linux 系…...

css—轮播图实现

一、背景 最近和朋友在一起讨论的时候&#xff0c;我们提出了这样的一个提问&#xff0c;难道轮播图的效果只能通过js来实现吗&#xff1f;经过我们的一系列的争论&#xff0c;发现了这是可以通过纯css来实现这一效果的&#xff0c;CSS轮播图也是一种常见的网页展示方式&#x…...

Ardusub源码剖析(1)——AP_Arming_Sub

代码 AP_Arming_Sub.h #pragma once#include <AP_Arming/AP_Arming.h>class AP_Arming_Sub : public AP_Arming { public:AP_Arming_Sub() : AP_Arming() { }/* Do not allow copies */CLASS_NO_COPY(AP_Arming_Sub);bool rc_calibration_checks(bool display_failure)…...

ESP32-S3模组上跑通ES8388(10)

接前一篇文章&#xff1a;ESP32-S3模组上跑通ES8388&#xff08;9&#xff09; 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析了es8388_init函数中的第3段代码&#xff08;也是实际与ES8388寄存器打交道的第1段代码&#xff09;&#xff0c;本回继续往下解析。为了便于理…...

AI/ML 基础知识与常用术语全解析

目录 一.引言 二.AI/ML 基础知识 1.人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09; (1).定义 (2).发展历程 (3).应用领域 2.机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09; (1).定义 (2).学习方式 ①.监督学习 ②.无监督…...

【C#设计模式(15)——命令模式(Command Pattern)】

前言 命令模式的关键通过将请求封装成一个对象&#xff0c;使命令的发送者和接收者解耦。这种方式能更方便地添加新的命令&#xff0c;如执行命令的排队、延迟、撤销和重做等操作。 代码 #region 基础的命令模式 //命令&#xff08;抽象类&#xff09; public abstract class …...

Could not resolve com.android.tools.build:gradle:7.4.2.

Android Studio编译项目报错如下&#xff0c;始终无法下载解析7.4.2的gradle classpath A problem occurred configuring root project aistudyclient_questionlib. > Could not resolve all files for configuration :classpath.> Could not resolve com.android.tools…...

uniapp在App端定义全局弹窗,当打开关闭弹窗会触发onShow、onHide生命周期怎么解决?

在uniapp(App端)中实现自定义弹框&#xff0c;可以通过创建一个透明页面来实现。点击进入当前页面时&#xff0c;页面背景会变透明&#xff0c;用户可以根据自己的需求进行自定义&#xff0c;最终效果类似于弹框。 遇到问题&#xff1a;当打开弹窗(进入弹窗页面)就会触发当前页…...

2024 ccpc 辽宁省赛 E(构造 思维?)L(二分+一点点数论知识?)

E 题意&#xff1a; 可以注意到&#xff1a; 我的两种方格都四个方格的大小。 所以 如果存在一种摆放方式 那么 4|nm。 再考虑一种特殊的情况 22 &#xff0c;此时虽然我的积是4 但是无法摆放的。 1>对于 4 | n,或者 4 | m.我直接摆放第二种方格就可以了。 如果我n 是4 的…...

IIC 随机写+多次写 可以控制写几次

verilog module icc_tx#(parameter SIZE 2 , //用来控制写多少次 比如地址是0000 一个地址只能存放8bit数据 超出指针就会到下一个地址0001parameter CLK_DIV 50_000_000 ,parameter SPEED 100_000 ,parameter LED 50 )( input wire c…...

基于SpringBoot+Vue的汽车票网上预订系统-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 &#xff08;1&#xff09;公告信…...

net9 abp vnext 多语言通过数据库动态管理

通过数据库加载实现动态管理&#xff0c;用户可以自己修改界面显示的文本&#xff0c;满足国际化需求 如图所示,前端使用tdesign vnext 新建表TSYS_Localization与TSYS_LocalizationDetail 国旗图标下载网址flag-icons: Free Country Flags in SVG 在Shared下创建下图3个文件 …...

pip安装github上的开源软件包

1、若本机中安装的有git&#xff0c;可使用githttps方式安装 # 以安装pyfolio软件包为例,安装指令如下 pip install githttps://github.com/quantopian/pyfolio.git 2、若本机中没有安装git&#xff0c;可以直接使用软件包的zip地址进行安装 # 以安装pyfolio软件包为例,安装…...

【LeetCode刷题之路】120:三角形最小路径和的两种解法(动态规划优化)

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…...