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

Mybatis执行流程知多少

思维导图:

 

 

一、MyBatis 执行流程概述

  MyBatis 的执行流程可以大致分为以下几个关键步骤:配置加载、会话创建、SQL 执行和结果处理。下面我们将逐步详细介绍每个步骤。

二、配置加载


1. 配置文件的重要性

  MyBatis 的配置文件是整个框架的基础,它包含了数据库连接信息、映射器配置、插件配置等重要内容。常见的配置文件有 mybatis-config.xml 和映射器 XML 文件(如 UserMapper.xml)。

如图所示:

2. 加载配置文件

  在 Java 代码中,我们通常使用 SqlSessionFactoryBuilder 来加载配置文件并构建 SqlSessionFactory。示例代码如下:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;public class MyBatisConfigLoader {public static SqlSessionFactory getSqlSessionFactory() throws Exception {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);return new SqlSessionFactoryBuilder().build(inputStream);}
}

  在上述代码中,Resources.getResourceAsStream(resource) 方法用于读取配置文件SqlSessionFactoryBuilder().build(inputStream) 方法根据配置文件构建 SqlSessionFactory

3. 配置文件解析

SqlSessionFactoryBuilder 在构建 SqlSessionFactory 时,会对配置文件进行详细的解析。它会读取配置文件中的数据库连接信息、映射器配置等,并将这些信息存储在 Configuration 对象中。Configuration 对象是 MyBatis 配置信息的核心载体,后续的操作都会依赖于它。

具体来说,SqlSessionFactoryBuilder 会使用 XML 解析器对配置文件进行解析,将其中的 XML 标签转换为 Java 对象。例如,<dataSource> 标签会被解析为 DataSource 对象,<mapper> 标签会被解析为映射器对象。在解析过程中,SqlSessionFactoryBuilder 会对配置信息进行验证和处理,确保配置信息的正确性和完整性。

三、会话创建

1. SqlSessionFactory 的作用

  SqlSessionFactory 是 MyBatis 的核心对象之一,它负责创建 SqlSession 对象。SqlSession 是 MyBatis 与数据库交互的会话对象,类似于 JDBC 中的 Connection。SqlSessionFactory 是一个线程安全的对象,通常在应用程序启动时创建一次,并在整个应用程序的生命周期中使用。

2. 创建 SqlSession

  通过 SqlSessionFactory 的 openSession() 方法可以创建一个 SqlSession 对象。openSession() 方法有多个重载形式,可以根据需要指定是否自动提交事务、隔离级别等参数。代码示例:

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;public class MyBatisSessionCreator {public static SqlSession getSqlSession() throws Exception {SqlSessionFactory sqlSessionFactory = MyBatisConfigLoader.getSqlSessionFactory();return sqlSessionFactory.openSession();}
}

3. 会话管理

  SqlSession 对象在使用完毕后需要关闭,以释放资源。可以使用 try-with-resources 语句来确保 SqlSession 正确关闭。try-with-resources 语句是 Java 7 引入的一种自动资源管理机制,它会在代码块执行完毕后自动调用资源的 close() 方法。以下是一个示例:

try (SqlSession session = MyBatisSessionCreator.getSqlSession()) {// 执行数据库操作
}

四、SQL 执行

1. 获取映射器

在 SqlSession 中,可以通过 getMapper() 方法获取映射器接口的实例。映射器接口定义了数据库操作的方法,MyBatis 会根据接口方法的定义自动生成对应的 SQL 语句。示例代码如下:

import org.apache.ibatis.session.SqlSession;public class MyBatisMapperExecutor {public static void executeMapperMethod() throws Exception {try (SqlSession session = MyBatisSessionCreator.getSqlSession()) {UserMapper userMapper = session.getMapper(UserMapper.class);// 调用映射器方法}}
}

2. 执行 SQL 语句

  当调用映射器接口的方法时,MyBatis 会根据方法的定义和映射器配置文件(或注解)生成对应的 SQL 语句,并通过 Executor 执行该 SQL 语句Executor 是 MyBatis 执行 SQL 语句的核心组件,它负责与数据库建立连接、执行 SQL 语句、处理事务等操作。

  MyBatis 提供了两种类型的 Executor:SimpleExecutor 和 ReuseExecutor。SimpleExecutor 每次执行 SQL 语句时都会创建一个新的 PreparedStatement 对象,而 ReuseExecutor 会重用已经创建的 PreparedStatement 对象,以提高性能。


3. SQL 语句的生成

MyBatis 支持 XML 配置和注解两种方式来定义 SQL 语句。


XML 配置方式

在 XML 配置中,可以在映射器 XML 文件中使用 <select>、<insert>、<update>、<delete> 等标签来定义 SQL 语句。以下是一个示例:

<mapper namespace="com.example.mapper.UserMapper"><select id="getUserById" parameterType="int" resultType="com.example.entity.User">SELECT * FROM users WHERE id = #{id}</select>
</mapper>

 注解方式

在注解方式中,可以在映射器接口的方法上使用 @Select、@Insert、@Update、@Delete 等注解来定义 SQL 语句。以下是一个示例:

import org.apache.ibatis.annotations.Select;public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User getUserById(int id);
}

五、结果处理

1. 结果集映射

当 SQL 语句执行完毕后,MyBatis 会将数据库返回的结果集映射到 Java 对象中。可以通过映射器配置文件或注解来定义结果集映射规则。

XML 配置方式

在 XML 配置中,可以使用 <resultMap> 标签来定义结果集映射。以下是一个示例:

<mapper namespace="com.example.mapper.UserMapper"><resultMap id="userResultMap" type="com.example.entity.User"><id property="id" column="id" /><result property="name" column="name" /><result property="age" column="age" /></resultMap><select id="getUserById" parameterType="int" resultMap="userResultMap">SELECT * FROM users WHERE id = #{id}</select>
</mapper>

注解方式

  在注解方式中,可以使用 @Results 和 @Result 注解来定义结果集映射。以下是一个示例:

import org.apache.ibatis.annotations.*;public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")@Results({@Result(property = "id", column = "id"),@Result(property = "name", column = "name"),@Result(property = "age", column = "age")})User getUserById(int id);
}

2. 返回结果

  经过结果集映射后,MyBatis 会将映射后的 Java 对象作为方法的返回值返回给调用者。调用者可以直接使用这些 Java 对象进行业务逻辑处理。

六.执行流程总结

MyBatis 的执行流程包含以下关键环节:

  • 读取 MyBatis 配置文件 mybatis - config.xml,加载运行环境及映射文件,为后续数据库操作做好基础配置准备。
  • 依据加载的配置构造会话工厂 SqlSessionFactory,它是创建数据库会话的核心工厂。
  • 通过会话工厂创建 SqlSession 对象,该对象包含执行 SQL 语句的所有方法,是与数据库交互的直接会话实例。
  •  实际操作数据库时,使用 Executor 执行器,它不仅负责 SQL 语句的执行,还承担着查询缓存的维护工作。
  • 在 Executor 接口的执行方法中,存在一个 MappedStatement 类型的参数,该参数封装了映射信息(如 SQL 语句、结果映射规则等),是 SQL 执行的关键数据载体。
  • 执行 SQL 前,进行输入参数映射,将传入的参数按规则正确应用到 SQL 语句中。
  • SQL 执行完成后,进行输出结果映射,把数据库返回的结果按配置规则映射到相应的对象中,至此完成整个数据操作流程。

相关文章:

Mybatis执行流程知多少

思维导图&#xff1a; 一、MyBatis 执行流程概述 MyBatis 的执行流程可以大致分为以下几个关键步骤&#xff1a;配置加载、会话创建、SQL 执行和结果处理。下面我们将逐步详细介绍每个步骤。 二、配置加载 1. 配置文件的重要性 MyBatis 的配置文件是整个框架的基础&#xff0c;…...

码蹄集——偶数位、四边形坐标

目录 MT1039 偶数位 MT1051 四边形坐标 MT1039 偶数位 思路&#xff1a;直接使用按位操作符 一个整型数字是32位,十六进制表示为0x后跟8个字符,每个字符为0-e,代表0-15; 把偶数位改为0,就是用0去&偶数位,用1去&奇数位,即0xAAAAAAAA,A代表10,1010(从右往 左依次为0位,…...

Java 中使用 Callable 创建线程的方法

一、Callable 接口概述​ Callable接口位于java.util.concurrent包中&#xff0c;与Runnable接口类似&#xff0c;同样用于定义线程执行的任务&#xff0c;但它具有以下独特特性&#xff1a;​ 支持返回值&#xff1a;Callable接口声明了一个call()方法&#xff0c;该方法会在…...

代码随想录算法训练营Day44

力扣1045.不相交的线【medium】 力扣53.最大子数组和【medium】 力扣392.判断子序列【easy】 一、力扣1045.不相交的线【medium】 题目链接&#xff1a;力扣1045.不相交的线 视频链接&#xff1a;代码随想录 题解链接&#xff1a;灵茶山艾府 1、思路 和1143.最长公共子序列一…...

Java大师成长计划之第12天:性能调优与GC原理

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在 Java 编程中&#xff0c;性能调优…...

【MySQL】索引(重要)

目录 一、索引本质&#xff1a; 索引的核心作用 索引的优缺点 二、预备知识&#xff1a; 硬件理解&#xff1a; 软件理解&#xff1a; MySQL与磁盘交互基本单位&#xff1a; 三、索引的理解&#xff1a; 理解page&#xff1a; 单个page&#xff1a; 多个page&#x…...

C++多态(上)

目录 一、多态的概念 二、多态的定义及实现 1. 多态的构成条件 2. 虚函数 3. 虚函数的重写 4. C11 override 和 final 4.1 final 关键字 4.2 override 关键字 5. 重载、覆盖&#xff08;重写&#xff09;、隐藏&#xff08;重定义&#xff09;的对比 三、抽象类 1. 概…...

【AI提示词】 复利效应教育专家

提示说明 一位拥有金融学和教育学背景的知识型内容创作者&#xff0c;擅长用简单易懂的语言向读者解释复杂概念 提示词 # Role: 复利效应教育专家## Profile - language: 中文 - description: 一位拥有金融学和教育学背景的知识型内容创作者&#xff0c;擅长用简单易懂的语言…...

嵌入式系统基础知识

目录 一、冯诺依曼结构与哈佛结构 &#xff08;一&#xff09;冯诺依曼结构 &#xff08;二&#xff09;哈佛架构 二、ARM存储模式 &#xff08;一&#xff09;大端模式 &#xff08;二&#xff09;小端模式 &#xff08;三&#xff09;混合模式 三、CISC 与 RISC &am…...

如何克服情绪拖延症?

引言 你是否也曾有过这样的经历&#xff1f; 明明手头有重要的工作&#xff0c;却总是忍不住刷手机、看视频&#xff0c;直到最后一刻才匆忙赶工&#xff1f; 你是否在心里暗暗发誓“明天一定好好干”&#xff0c;但第二天依旧重复着同样的拖延&#xff1f; 其实&#xff0…...

【操作系统】哲学家进餐问题

问题描述 哲学家进餐问题是并发编程中的一个经典问题&#xff0c;描述了五位哲学家围坐在一张圆桌旁&#xff0c;他们的生活由思考和进餐组成。在圆桌上有五个盘子&#xff0c;每位哲学家面前一个盘子&#xff0c;盘子之间有一支叉子。哲学家进餐需要同时使用左右两支叉子。问题…...

Kotlin协程解析

目录 一、协程的使用 二、协程的执行原理 2.1、挂起函数的反编译代码及执行分析 2.2、协程执行流程分析 2.2.1、createCoroutineUnintercepted方法 2.2.2、intercepted方法 2.2.3、resumeCancellableWith方法 2.3、Dispatcher----分发器的实现 2.3.1、Main 分发器的实…...

Nginx核心功能 02

目录 Nginx代理技术核心概念 &#xff08;一&#xff09;正向代理&#xff08;Forward Proxy&#xff09; 1. 基本定义 2. 技术原理 3. 应用场景 &#xff08;二&#xff09;反向代理&#xff08;Reverse Proxy&#xff09; 1. 基本定义 2. 技术原理 3. 应用场景 一、…...

聊聊对Mysql的理解

目录 1、Sql介绍 1.1、SQL的分类 1.2、数据库的三大范式 1.3、数据表的约束 1.4、约束的添加与删除 2、核心特性 3、主要组件 4、数据结构原理 5、索引失效 6、常用问题 7、优势与局限 前言 MySQL是一个开源的关系型数据库管理系统(RDBMS)&#xff0c;由瑞典MySQL A…...

「Mac畅玩AIGC与多模态17」开发篇13 - 条件判断与分支跳转工作流示例

一、概述 本篇在多节点串联的基础上,进一步引入条件判断与分支跳转机制,实现根据用户输入内容动态走不同执行路径。开发人员将学习如何配置判断节点、定义分支规则,以及如何在工作流中引导执行方向,完成基础的逻辑控制。 二、环境准备 macOS 系统Dify 平台已部署并可访问…...

pycharm terminal 窗口打不开了

参考添加链接描述powershell.exe改为cmd.exe发现有一个小正方形&#xff0c;最大化可以看见了。...

JAVA:使用 MapStruct 实现高效对象映射的技术指南

1、简述 在 Java 开发中,对象之间的转换是一个常见的需求,尤其是在 DTO(数据传输对象)和实体类之间的转换过程中。手动编写转换代码既耗时又容易出错,而 MapStruct 是一个优秀的对象映射框架,可以通过注解生成高效的对象转换代码,从而大大提升开发效率。 本文将介绍 M…...

Linux线程深度解析:从基础到实践

Linux线程深度解析&#xff1a;从基础到实践 一、线程基础概念 1. 进程与线程定义 进程&#xff1a;一个正在运行的程序&#xff0c;是操作系统资源分配的最小单位&#xff08;拥有独立的地址空间、文件描述符等资源&#xff09;&#xff0c;状态包括就绪、运行、阻塞。线程…...

【ROS2】launch启动文件如何集成到ROS2(Python版本)

一、简单实操 1.创建/打开一个功能包 mkdir -p my_ws/src cd my_ws/src ros2 pkg create my_pkg_example --build-type ament_python 2.创建Launch文件的存放目录 将所有启动文件都存储在launch包内的目录中。 目录结构如下所示&#xff1a; src/my_pkg_example/launch/…...

用 PyTorch 轻松实现 MNIST 手写数字识别

用 PyTorch 轻松实现 MNIST 手写数字识别 引言 在深度学习领域&#xff0c;MNIST 数据集就像是 “Hello World” 级别的经典入门项目。它包含大量手写数字图像及对应标签&#xff0c;非常适合新手学习如何搭建和训练神经网络模型。本文将基于 PyTorch 框架&#xff0c;详细拆…...

碰撞检测学习笔记

目录 SUMO 模拟碰撞 LimSim pygame模拟碰撞检测 SUMO 模拟碰撞 LimSim 多模态大语言模型&#xff08;M&#xff09;LLM的出现为人工智能开辟了新的途径&#xff0c;特别是提供增强的理解和推理能力&#xff0c;为自动驾驶开辟了新途径。本文介绍LimSim&#xff0c;LimSim的…...

Sway初体验

Sway&#xff08;缩写自 SirCmpwn’s Wayland compositor[1]&#xff09;是一款专为 Wayland 设计的合成器&#xff0c;旨在与 i3 完全兼容。根据官网所述&#xff1a; Sway 是 Wayland 的合成器&#xff0c;也是 x11 的 i3 窗口管理器的替代品。它可以根据您现有的 i3 配置工作…...

《工业社会的诞生》章节

工业革命的技术前奏 早期工业技术双引擎&#xff1a; 【火药武器】&#xff1a;重塑战争形态与经济地理 新式青铜炮助力殖民扩张&#xff0c;开辟全球贸易网络 高桅帆船&#xff08;西班牙大帆船&#xff09;实现洲际航行 战争规模化倒逼中央集权&#xff0c;催生国家-商人…...

消息队列MQ

参考资料&#xff1a;https://cloud.tencent.com/developer/article/2335397 https://www.cnblogs.com/hahaha111122222/p/18457859 消息队列是大型分布式系统不可缺少的中间件&#xff0c;也是高并发系统的基石中间件 消息队列 消息队列 Message Queue 消息队列是利用高效可…...

LangChain4J-XiaozhiAI 项目分析报告

LangChain4J-XiaozhiAI 项目分析报告 GitHub 链接 1. 项目概述 本项目名为 “硅谷小智&#xff08;医疗版&#xff09;”&#xff0c;是一个基于 Java 技术栈和 LangChain4J 框架构建的 AI 聊天助手应用。其核心目标是利用大型语言模型&#xff08;LLM&#xff09;的能力&am…...

学习spring boot-拦截器Interceptor,过滤器Filter

目录 拦截器Interceptor 过滤器Filter 关于过滤器的前置知识可以参考&#xff1a; 过滤器在springboot项目的应用 一&#xff0c;使用WebfilterServletComponentScan 注解 1 创建过滤器类实现Filter接口 2 在启动类中添加 ServletComponentScan 注解 二&#xff0c;创建…...

【程序+论文】大规模新能源并网下的火电机组深度调峰经济调度

目录 1 主要内容 讲解重点 2 讲解视频及代码 1 主要内容 该视频为《大规模新能源并网下的火电机组深度调峰经济调度》代码讲解内容&#xff0c;该程序有完全对照的论文&#xff0c;以改进IEEE30节点作为研究对象&#xff0c;系统包括5个火电机组和2个新能源机组&#xff0c;…...

【win11 】win11 键盘测试

我的键盘是支持mac和win的&#xff0c;fn tab 就能切换&#xff0c;有可能是用错了模式&#xff0c;导致 我alt a 就会弹出 win11的 wifi 等菜单控制 键盘测试网站 https://keyboard.bmcx.com/ 识别到我按下的是alt...

再识动静态库

动静态库 1 手动制作静态库2 手动调用静态库方式一&#xff1a;&#xff08;安装到系统&#xff09;方式二&#xff1a;&#xff08;和源文件一起&#xff09;方式三&#xff1a;&#xff08;使用带路径的库&#xff09; 3 动态库制作与使用方式一&#xff1a;拷贝到系统方式二…...

前端 uni-app 初步使用指南

在数字化浪潮下&#xff0c;实现应用多端适配成为开发者的刚需。uni-app 凭借 “一次编写&#xff0c;多端运行” 的特性&#xff0c;极大提升了开发效率&#xff0c;成为前端开发的热门选择。如果你是首次接触 uni-app&#xff0c;这篇文章将带你开启 uni-app 的使用之旅&…...

尼卡音乐 1.1.1 | 免费畅听全网音乐,支持无损下载,无广告无需注册登录

尼卡音乐是一款可以免费畅听全网音乐的应用程序&#xff0c;支持免费下载无损高品质音源&#xff0c;并且没有任何广告&#xff0c;无需注册登录。用户可以轻松搜索全网无损音质音源&#xff0c;并可将其他音乐APP的歌单导入&#xff0c;让音乐陪你开心一整天。该应用彻底拒绝臃…...

33.降速提高EMC能力

降速提高EMC能力 1. 电磁兼容问题的错误累积效应2. 降速减少累积效应的机理分析 1. 电磁兼容问题的错误累积效应 2. 降速减少累积效应的机理分析 降速之后&#xff0c;信号的波形更完整&#xff0c;容错空间更大&#xff1b;另外边沿变缓&#xff0c;对外干扰也会减小。...

【赵渝强老师】TiDB的MVCC机制

TiDB是一款开源的国产分布式关系型数据库。TiKV是TiDB的行存引擎&#xff0c;它支持多版本并发控制(Multi-Version Concurrency Control,MVCC)。假设有这样一种场景&#xff1a;某客户端A在写一个Key&#xff0c;另一个客户端B同时在对这个Key进行读操作。如果没有数据的多版本…...

数电填空题整理(适用期末考试)

在下列门电路中&#xff0c;OC门能实现“线与”逻辑功能&#xff1b; 三态门能用于总线结构的数 据传输&#xff1b;传输门 能实现模拟信号的双向传输。 并联比较型A/D转换器的转换速度最快&#xff0c; 双积分型A/D转换器的稳定性和抗干扰能力最好 TTL与非门多余的输入端应该…...

node核心学习

目录 1-1node概述 1-2全局对象 1-3Node的模块化细节 1-4Node中的ES模块化 1-5基本内置模块 OS模块&#xff1a; path模块&#xff1a; url模块&#xff1a; util模块&#xff1a; 1-6文件IO I/O&#xff1a;input output fs模块的方法 代码示例&#xff1a; 练习…...

基于 PyQt 的YOLO目标检测可视化界面+ nuitka 打包

在人工智能和计算机视觉领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;是一种广泛使用的实时目标检测算法。为了直观地展示YOLO算法的检测效果&#xff0c;我们使用Pyqt框架进行检测结果的可视化&#xff0c;同时为了使其能够脱离Python环境&#xff0c;我们…...

234树和红黑树

首先&#xff0c;把目光聚集在234树中 以下是234的三种节点&#xff08;可以有更多这里使用以下的三个&#xff09;&#xff1a; 右侧是节点转换成红黑树节点的样子。 接下来会用以下序列进行1234树的搭建和红黑树的搭建&#xff1a; 首先是234树 2-3-4树&#xff08;234树&…...

GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果

摘要&#xff1a;作为机器学习中的一个基础任务&#xff0c;文本分类在许多领域都发挥着至关重要的作用。随着大型语言模型&#xff08;LLMs&#xff09;的快速扩展&#xff0c;特别是通过强化学习&#xff08;RL&#xff09;的推动&#xff0c;对于更强大的分类器的需求也在不…...

maven坐标导入jar包时剔除不需要的内容

maven坐标导入jar包时剔除不需要的内容 问题描述解决方案 问题描述 maven坐标导入jar包时剔除不需要的内容 解决方案 Spring Boot 默认使用 Logback&#xff0c;需在 pom.xml 中排除其依赖&#xff1a; <dependency><groupId>org.springframework.boot</gro…...

Oracle OCP认证考试考点详解083系列06

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 26. 第26题&#xff1a; 题目 解析及答案&#xff1a; 关于块介质恢复&#xff0c;以下哪三项是正确的&#xff1f; A) 需恢复一个或多个…...

llfc项目分布式服务笔记

一、系统整体架构流程图(简明版) 复制代码 +---------------+ +------------------+ +----------------+ | 客户端 (Client) |--------->| GateServer |----------| StatusServer |<--+ +---------------+ +--------------…...

“链式前向星”等三种存图方式分别输出“无向无权图”的“DFS序列”

【DFS序列】 DFS序列&#xff08;深度优先搜索序列&#xff09;&#xff0c;是树或图结构在深度优先遍历过程中生成的节点访问顺序记录。 下面三段代码&#xff0c;分别采用链式前向星、邻接表、邻接矩阵存图&#xff0c;输出图的“DFS序列”。 【DFS&#xff1a;链式前向星】…...

Lesson 16 A polite request

Lesson 16 A polite request 词汇 park n. 公园&#xff0c;停车场&#xff0c;庄园 v. 停车&#xff0c;泊车 例句&#xff1a;让我来停车。    Let me park. 相关&#xff1a;spot n. 车位 区别&#xff1a;garden n. 花园 [小&#xff0c;私家的] 例句&#xff1a;我们…...

【IP101】边缘检测技术全解析:从Sobel到Canny的进阶之路

&#x1f31f; 边缘检测的艺术 &#x1f3a8; 在图像处理的世界里&#xff0c;边缘检测就像是给图像画眉毛 —— 没有它&#xff0c;你的图像就像一只没有轮廓的熊猫&#x1f43c;。让我们一起来探索这个神奇的"美妆"技术&#xff01; &#x1f4da; 目录 基础概念 …...

Nx 智能分发机制(Nx Agents + Nx Cloud)

Nx 智能分发机制&#xff08;Nx Agents  Nx Cloud&#xff09; 阶段关键做的事作用1. 收集信息- Project Graph&#xff1a;解析整个 workspace 依赖关系&#xff08;谁依赖谁&#xff09;- 历史统计&#xff1a;每次 CI 结束后将每个任务的实际用时与缓存命中情况上传…...

《“昊龙一号”:开启中国航天货运新时代》

中国航天新力量:昊龙一号登场 在 2024 年 10 月 29 日上午,神舟十九号载人飞行任务新闻发布会如一颗重磅炸弹,在航天领域激起千层浪。发布会上,一系列关乎中国载人航天工程未来走向的重要信息被披露,其中,“昊龙一号” 货运航天飞机入围空间站低成本货物运输系统总体方案…...

C++ 多态:原理、实现与应用

目录 引言 一、多态的概念 二、多态的定义及实现 &#xff08;一&#xff09;构成条件 &#xff08;二&#xff09;虚函数的深入理解 &#xff08;三&#xff09;虚函数的重写&#xff08;覆盖&#xff09; 三、抽象类 &#xff08;一&#xff09;概念 &#xff08;二&…...

多模态大语言模型arxiv论文略读(五十八)

How Does the Textual Information Affect the Retrieval of Multimodal In-Context Learning? ➡️ 论文标题&#xff1a;How Does the Textual Information Affect the Retrieval of Multimodal In-Context Learning? ➡️ 论文作者&#xff1a;Yang Luo, Zangwei Zheng, …...

TS 枚举类型

枚举 参数为枚举成员中的一个 数字枚举 字符串枚举 枚举特点 、 缺点&#xff1a;转为JS代码时会编译成JS代码&#xff0c;增大开销...

Python容器与循环:数据处理的双剑合璧

Python作为一门简洁强大的编程语言&#xff0c;其容器类型和循环结构的完美结合为数据处理提供了极大的便利。本文将带领初学者深入理解Python中的四大容器&#xff08;列表、元组、字典、集合&#xff09;以及它们与循环结构的配合使用&#xff0c;助你掌握数据处理的核心技能…...