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

深入理解 Git 分支操作的底层原理

在软件开发的世界里,Git 已经成为了版本控制的标配工具。而 Git 分支功能,更是极大地提升了团队协作和项目开发的效率。我们在日常开发中频繁地创建、切换和合并分支,但是这些操作背后的底层原理是怎样的呢?在之前的博客探秘Git底层原理中介绍了git最基础命令的底层原理,接下来,我们继续深入学习Git 分支操作的底层原理

一、Git 分支的本质:轻量级指针

在 Git 中,分支实际上就是一个轻量级的指针,它指向一个特定的 Commit 对象。默认情况下,Git 仓库会有一个名为 master(现在很多仓库默认是 main)的分支,它指向项目的初始提交

1.1 分支的创建

当我们使用 git branch <branch-name> 命令创建一个新分支时,Git 只是简单地在 .git/refs/heads 目录下创建了一个新的文件,文件名为分支名,文件内容就是当前分支所指向的 Commit 对象的哈希值。由此看在git中新建分支的开销是十分小的,它只是创建了一个指向commit的指针,但是效果却是十分重要的,我们可以在不影响之前分支的前提下对现有代码做修改。(集中式版本控制系统svn每次创建分支会将之前的代码重新复制一遍,开销很大) 例如,执行 git branch feature 命令后,.git/refs/heads 目录下会出现一个名为 feature 的文件,其内容和 master 分支指向的 Commit 哈希值相同。这意味着 feature 分支和 master 分支在创建时指向同一个 Commit 对象。

1.2 分支的切换

使用 git checkout <branch-name>git switch <branch-name> 命令可以切换分支。当我们切换分支时,Git 会更新 HEAD 指针,使其指向新分支的引用文件。HEAD 指针是一个特殊的引用,它始终指向当前所在的分支。例如,当我们从 master 分支切换到 feature 分支时,HEAD 指针会从 .git/refs/heads/master 指向 .git/refs/heads/feature。此时,工作目录的内容会更新为新分支所指向的 Commit 对象对应的项目状态。

1.3 分支的移动

当我们在某个分支上进行新的提交时,该分支的指针会自动向前移动,指向新的 Commit 对象。例如,在 feature 分支上进行了一次提交,feature 分支对应的引用文件(.git/refs/heads/feature)中的哈希值会更新为新 Commit 对象的哈希值,而 master 分支的指针不会受到影响。这就是 Git 能够支持并行开发的关键,不同的分支可以独立发展,互不干扰。

二.分支引用

了解了分支的原理后我们可以打开git仓库找到分支的引用,相关目录在.git/refs/heads中。这部分我们通过实操了解git分支的机制

我们先初始化一个仓库,init之后.git/refs/heads文件夹中为空。

这里我们先在一个初始化过的仓库新建并编辑一个文件1.txt,然后进行第一次提交,这时查看文件夹中内容,此时有一个对应的master文件,用记事本打开文件内容
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

里面是如图的哈希值,对照git中的提交值,这正是第一次commit后的对象id,说明分支中保存的就是指向的commit的id

下面我们再重建一个分支,此时文件夹中也对应生成了该分支引用。
在这里插入图片描述
在这里插入图片描述

后面我们添加1.txt内容并保存,再切回master分支并进行合并,可以看到,合并后两个分支都指向最新的提交,内容也都存的最新提交的哈希值

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、分支的合并:快进模式和冲突处理

在开发过程中,我们经常需要将一个分支的修改合并到另一个分支中。Git 提供了两种主要的合并方式:快进合并和三方合并。

2.1 快进合并

当一个分支是另一个分支的直接下游,即没有分叉时,Git 会使用快进合并。例如,feature 分支是从 master 分支创建的,并且在 feature 分支上进行了一系列提交,而 master 分支没有任何新的提交。此时,当我们将 feature 分支合并到 master 分支时,Git 只需要将 master 分支的指针直接移动到 feature 分支所指向的 Commit 对象即可。这种合并方式非常简单和高效,不会产生新的 Commit 对象。

2.2 三方合并(冲突处理)

当两个分支有不同的提交历史,即发生了分叉时,Git 会使用三方合并。三方合并需要找到两个分支的共同祖先 Commit 对象(合并基础),以及两个分支各自的最新 Commit 对象。Git 会将这三个 Commit 对象对应的 Tree 对象进行比较和合并,生成一个新的 Commit 对象,该 Commit 对象有两个父 Commit 对象,分别指向合并前的两个分支的最新 Commit 对象。这个新的 Commit 对象代表了合并后的项目状态。

三、删除分支:清理不再需要的引用

当一个分支的开发任务完成并且已经合并到主分支后,我们可以使用 git branch -d <branch-name> 命令删除该分支。删除分支实际上就是删除 .git/refs/heads 目录下对应的引用文件。需要注意的是,如果分支上有未合并的提交,使用 -d 选项删除分支会失败,此时可以使用 -D 选项强制删除。

四、总结

Git 分支操作的底层原理基于其强大的对象存储和引用管理机制。通过轻量级的分支指针,Git 能够高效地支持并行开发,让团队成员可以在不同的分支上独立工作。而合并操作则允许我们将不同分支的修改整合到一起,确保项目的顺利推进。深入理解 Git 分支操作的底层原理,不仅可以帮助我们更好地使用 Git 进行版本控制,还能在遇到复杂的分支问题时,快速定位和解决问题。

相关文章:

深入理解 Git 分支操作的底层原理

在软件开发的世界里&#xff0c;Git 已经成为了版本控制的标配工具。而 Git 分支功能&#xff0c;更是极大地提升了团队协作和项目开发的效率。我们在日常开发中频繁地创建、切换和合并分支&#xff0c;但是这些操作背后的底层原理是怎样的呢&#xff1f;在之前的博客探秘Git底…...

泰迪杯特等奖案例深度解析:基于多模态融合与小样本学习的工业产品表面缺陷智能检测系统

(第九届泰迪杯数据挖掘挑战赛特等奖案例全流程拆解) 一、案例背景与核心挑战 1.1 工业质检痛点分析 在3C电子、汽车零部件等高端制造领域,产品表面缺陷(划痕、凹陷、氧化等)检测是质量控制的核心环节。传统人工目检存在效率低(平均检测速度3秒/件)、漏检率高(约15%)…...

Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程

爬虫实战&#xff1a;JS逆向实现CSDN文章导出教程 在这篇教程中&#xff0c;我将带领大家实现一个实用的爬虫项目&#xff1a;导出你在CSDN上发布的所有文章。通过分析CSDN的API请求签名机制&#xff0c;我们将绕过平台限制&#xff0c;获取自己的所有文章内容&#xff0c;并以…...

轨道炮--范围得遍历,map巧统计

1.思路很难想&#xff0c;但代码一看一下就明白了&#xff0c;就是模拟时间&#xff0c;map存起来遍历也不受10*6影响 2.每次先统计点对应的直线&#xff0c;再动这个点&#xff0c;map一遍历实时更新ma统计max&#xff0c;AC!!!! https://www.luogu.com.cn/problem/P8695 #i…...

python中集合的操作

Python中的集合&#xff08;Set&#xff09;是一种无序、可变且元素唯一的数据结构&#xff0c;主要用于去重和数学运算。以下是核心操作分类&#xff1a; ‌1. 集合创建‌ 大括号创建&#xff1a;s {1, 2, 3}&#xff08;空集合必须用set()&#xff09;构造函数&#xff1a…...

常见激活函数——作用、意义、特点及实现

文章目录 激活函数的意义常见激活函数及其特点1. Sigmoid&#xff08;Logistic 函数、S型函数&#xff09;2. Tanh&#xff08;双曲正切函数&#xff09;3. ReLU&#xff08;Rectified Linear Unit修正线性单元&#xff09;4. Softmax5. Swish&#xff08;Google 提出&#xff…...

FC7300 Trigger MCAL配置引导

FC7300包含4个触发器选择(TRGSELs)。详细的连接信息将在章节中描述。Trigger Select (TRGSEL)源。TRGSEL模块允许软件为外设选择触发器源。   TRGSEL提供了一种极其灵活的机制,用于将各种触发器源连接到多个引脚/外设。   在TRGSEL中,每个控制寄存器最多支持4个输出触…...

组件导航 (HMRouter)+flutter项目搭建-混合开发+分栏效果

组件导航 (Navigation)flutter项目搭建 接上一章flutter项目的环境变量配置并运行flutter 1.flutter创建项目并运行 flutter create fluter_hmrouter 进入ohos目录打开编辑器先自动签名 编译项目-生成签名包 flutter build hap --debug 运行项目 HMRouter搭建安装 1.安…...

WAS和Tomcat的对比

一、WAS和Tomcat的对比 WebSphere Application Server (WAS) 和 Apache Tomcat 是两款常用的 Java 应用服务器&#xff0c;但它们有许多显著的区别。在企业级应用中&#xff0c;它们扮演不同的角色&#xff0c;各自有其特点和适用场景。以下是它们在多个维度上的详细对比&…...

GPU Runtime Suspend 调试与验证:从 sysfs 到 perf 分析

选题背景&#xff1a;在基于 NXP i.MX8MP 平台调试 GPU 时&#xff0c;常常需要确认 Vivante GPU2D/ Vivante GPU2D/\uGPU3D 是否已经进入 runtime suspend &#xff0c;以降为一篇完整的验证和分析步骤&#xff0c;适合用于实战调试与面试表达。 一、什么是 Runtime Suspend&a…...

响应式布局

布局方式 固定宽度布局:主流的宽度有960px/980px/1190px/1210px等。移动端用户需要缩放查看页面内容 流式布局:百分比设置相对宽度。在不同设备上都能完整显示。兼容性一般,可能发生错位 响应式布局:一套代码自动适配不同终端。检测设备信息,根据设备调整布局。用户体验最…...

简单入门RabbitMQ

本章将带大家来写一个简单的程序&#xff0c;使用 Java 创建RabbitMQ 的生产者和消费者 依赖引入 在 Maven 仓库中输入 amqp-client&#xff1a; 找到第一个 RabbitMQ Java Client &#xff0c;点击进去找到一个合适的版本然后将依赖引入到我们项目中的 pom.xml 文件中。 …...

金属加工液展|切削液展|2025上海金属加工液展览会

2025上海金属加工液展览会 时间&#xff1a;2025年12月2-4日 地点&#xff1a;上海新国际博览中心 2025上海金属加工液展规划30000平方米展览规模&#xff0c;预设展位1200个&#xff0c;将为国内外加工液产业提供一个集“展示、合作、交易、发展”于一体的综合性平台&#…...

前端实现流式输出《后端返回Markdown格式文本,前端输出类似于打字的那种》

一、使用插件 插件名称&#xff1a;marked 版本&#xff1a;15.0.11 安装插件&#xff1a;npm install marked15.0.11 作用&#xff1a;marked 是一个用于将 Markdown 语法转换为 HTML 的 JavaScript 库 插件2名称&#xff1a;dompurify 版本&#xff1a;3.2.5 安装插件&…...

Python字符串常用方法详解

文章目录 Python字符串常用方法详解一、字符串大小写转换方法(常用)1. 基础大小写转换2. 案例&#xff1a;验证码检查&#xff08;不区分大小写&#xff09; 二、字符串查找与替换方法1. 查找相关方法2. 替换相关方法 三、字符串判断方法1. 内容判断方法 四、字符串分割与连接方…...

深度学习中的归一化:提升模型性能的关键因素

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型辅助完成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认…...

【C++】 —— 笔试刷题day_30

一、爱吃素 题目解析 这道题&#xff0c;简单来说就是给定两个数a和b&#xff0c;然后让我们判断a*b是否是素数。 算法思路 这道题还是比较简单的 首先&#xff0c;输入两个数a和b&#xff0c;这两个数的数据范围都是[1, 10^11]&#xff1b;10的11次方&#xff0c;那a*b不就是…...

WebMvcConfigurer介绍-笔记

1.WebMvcConfigurer功能简介 org.springframework.web.servlet.config.annotation.WebMvcConfigurer 是 Spring MVC 提供的一个接口&#xff0c;用于自定义 Web 应用的配置。通过实现该接口&#xff0c;开发者可以灵活地添加拦截器&#xff08;Interceptors&#xff09;、配置…...

简单图像自适应亮度对比度调整

一、背景介绍 继续在刷对比度调整相关算法&#xff0c;偶然间发现了这个简单的亮度/对比度自适应调整算法&#xff0c;做个简单笔记记录。也许后面用得到。 二、自适应亮度调整 1、基本原理 方法来自论文:Adaptive Local Tone Mapping Based on Retinex for High Dynamic Ran…...

[SpringBoot]Spring MVC(2.0)

紧接上文&#xff0c;这篇我们继续讲剩下的HTTp请求 传递JSON数据 简单来说&#xff1a;JSON就是⼀种数据格式,有⾃⼰的格式和语法,使⽤⽂本表⽰⼀个对象或数组的信息,因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换 JSON的语法 1. 数据在 键值对(Key/Value) …...

GDB 高级调试技术深度解析

1. 引言 GNU调试器(GDB)是软件开发和逆向工程领域中不可或缺的工具。它为开发者提供了一个强大的环境,用于检查正在运行的程序或程序崩溃后产生的核心转储文件的内部状态。虽然许多开发者熟悉GDB的基本命令,如设置断点和单步执行,但GDB的真正威力在于其丰富的高级功能集。…...

【Kuberbetes】详谈网络(第三篇)

目录 前言 一、K8S的三种网络 1.1 Pod 内容器与容器之间的通信 1.2 同一个 Node 内 Pod 之间的通信 1.3 不同 Node 上 Pod 之间的通信 1.4 汇总 二、K8S的三种接口 三、VLAN 和 VXLAN 的区别 3.1 使用场景不同 3.2 支持的数量不同 3.3 是否记录到MAC地址表中…...

【科普】具身智能

一、具身智能的基本概念与理论框架 具身智能&#xff08;Embodied Intelligence, EI&#xff09;是指智能体通过物理身体与环境的实时交互&#xff0c;实现感知、决策和行动的能力。其核心思想是“智能源于身体与环境的互动”&#xff0c;而非仅仅依赖于抽象的计算或符号处理。…...

java -jar命令运行 jar包时如何运行外部依赖jar包

java -jar命令运行 jar包时如何运行外部依赖jar包 场景&#xff1a; 打包发不完,运行时。发现一个问题&#xff0c; java java.lang.NoClassDefFoundError: org/apache/commons/lang3/ArrayUtils 显示此&#xff0c;基本表明&#xff0c;没有这个依赖&#xff0c;如果在开发…...

Linux进程信号(一)之信号的入门

文章目录 信号入门1. 生活角度的信号2. 技术应用角度的信号3. 注意4. 信号概念5.用kill -l命令可以察看系统定义的信号列表6. 信号处理常见方式 信号入门 1. 生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也…...

腾讯云MCP数据智能处理:简化数据探索与分析的全流程指南

引言 在当今数据驱动的商业环境中&#xff0c;企业面临着海量数据处理和分析的挑战。腾讯云MCP(Managed Cloud Platform)提供的数据智能处理解决方案&#xff0c;为数据科学家和分析师提供了强大的工具集&#xff0c;能够显著简化数据探索、分析流程&#xff0c;并增强数据科学…...

曝光融合(Exposure Fusion)

一、背景介绍 图像融合算法里面&#xff0c;hdr图像进行融合&#xff0c;拓宽动态范围的操作非常常见。 常用的hdr融合算法通常有两类&#xff1a; 1、不同曝光的ldr图像先进行hdr融合&#xff0c;得到高bit位的hdr图像&#xff0c;再通过tonemaping算法得到结果如图像。 2、不…...

无人机减震模块运行与技术要点分析!

一、减震模块的运行方式 1. 多级减震结构 两级减震设计&#xff1a;采用第一级减震组件&#xff08;如减震球、锥面减震垫&#xff09;吸收高频振动&#xff0c;第二级减震组件&#xff08;如减震环、负重物&#xff09;进一步过滤低频振动。例如&#xff0c;通过硅胶减震球…...

CVPR2025 | 首个多光谱无人机单目标跟踪大规模数据集与统一框架, 数据可直接下载

论文介绍 题目&#xff1a;MUST: The First Dataset and Unified Framework for Multispectral UAV Single Object Tracking 期刊&#xff1a;IEEE/CVF Computer Vision and Pattern Recognition Conference 论文&#xff1a;https://arxiv.org/abs/2503.17699 数据&#x…...

嵌入式故障码管理系统设计实现

文章目录 前言一、故障码管理系统概述二、核心数据结构设计2.1 故障严重等级定义2.2 模块 ID 定义2.3 故障代码结构2.4 故障记录结构 三、故障管理核心功能实现3.1 初始化功能3.2 故障记录功能3.3 记录查询与清除功能3.4 系统自检功能 四、故障存储实现4.1 Flash 存储实现4.2 R…...

若依框架Consul微服务版本

1、最近使用若依前后端分离框架改造为Consul微服务版本 在这里分享出来供大家参考 # Consul微服务配置参数已经放置/bin/Consul微服务配置目录 仓库地址&#xff1a; gitee&#xff1a;https://gitee.com/zlxls/Ruoyi-Consul-Cloud.git gitcode&#xff1a;https://gitcode.c…...

【风控】用户特征画像体系

一、体系架构概述 1.1 核心价值定位 风控特征画像体系是通过多维度数据融合分析&#xff0c;构建客户风险全景视图的智能化工具。其核心价值体现在&#xff1a; 全周期覆盖&#xff1a;贯穿客户生命周期的营销、贷前、贷中、贷后四大场景立体化刻画&#xff1a;整合基础数据…...

【Java微服务组件】分布式协调P1-数据共享中心简单设计与实现

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言设计一个共享数据中心选择数据模型键值对设计 数据可靠性设计持久化快照 &#xff08…...

数据库--向量化基础

本文包含内容有: 向量化、SIMD的概念及关系SSE,AVX-512八种基础的SIMD操作,并用具体例子解释,给出伪代码。一、快速了解向量化、SIMD 1.1 向量化 向量化是指将原本需要循环处理的多个数据元素,通过一条指令同时处理多个数据,从而减少循环次数,提高计算效率。 传统方式…...

handsome主题美化及优化:10.1.0最新版 - 2

文章目录 前言基础设置优化开启全站 HTTPS添加 GZIP 压缩美化永久链接自定义后台路径启用 Emoji 支持 功能增强每日新闻自动更新文章嵌入外部网页时光机栏目配置自定义音乐播放器音量 自定义CSS配置文章标题居中显示标题背景美化文章版式优化LOGO 扫光特效头像动画效果图片悬停…...

JWT令牌

1. JWT概述 JWT即JSON Web Token&#xff0c;是一个开放标准&#xff0c;用于在各方之间安全地传输信息。并且JWT经过数字签名&#xff0c;安全性高。通俗来说&#xff0c;也就是以JSON形式作为Web应用中的令牌&#xff0c;用于信息传输&#xff0c;在数据传输过程中可以完成数…...

Qwen3技术报告解读

https://github.com/QwenLM/Qwen3/blob/main/Qwen3_Technical_Report.pdf 节前放模型&#xff0c;大晚上的发技术报告。通义&#xff0c;真有你的~ 文章目录 预训练后训练Long-CoT Cold StartReasoning RLThinking Mode FusionGeneral RLStrong-to-Weak Distillation 模型结构…...

RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀

大语言模型&#xff08;LLM&#xff09;的浪潮正席卷全球&#xff0c;其强大的自然语言理解、生成和推理能力&#xff0c;为各行各业带来了前所未有的机遇。然而&#xff0c;正如我们在之前的探讨中多次提及&#xff0c;LLM并非万能。它们受限于训练数据的时效性和范围&#xf…...

Flask框架入门与实践

Flask框架入门与实践 Flask是一个轻量级的Python Web框架&#xff0c;以其简洁、灵活和易于上手的特点深受开发者喜爱。本文将带您深入了解Flask的核心概念、基本用法以及实际应用。 什么是Flask&#xff1f; Flask是由Armin Ronacher于2010年开发的微型Web框架。与Django等…...

PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践

为了适应 PD 分离式推理部署架构&#xff0c;百度智能云从物理网络层面的「4us 端到端低时延」HPN 集群建设&#xff0c;到网络流量层面的设备配置和管理&#xff0c;再到通信组件和算子层面的优化&#xff0c;显著提升了上层推理服务的整体性能。 百度智能云在大规模 PD 分离…...

罗杰斯高频板技术解析:低损耗基材如何定义 5G 通信未来

在 5G 通信与尖端电子技术加速融合的时代&#xff0c;高频 PCB 作为信号传输的核心载体&#xff0c;对材料性能与工艺精度提出了极致要求。猎板 PCB 深耕行业多年&#xff0c;始终以罗杰斯&#xff08;Rogers&#xff09;板材为核心介质&#xff0c;构建起从材料适配到精密制造…...

QML 动画控制、顺序动画与并行动画

目录 引言相关阅读基础属性说明工程结构示例代码解析示例1&#xff1a;手动控制动画&#xff08;ControlledAnimation.qml&#xff09;示例2&#xff1a;顺序动画&#xff08;SequentialAnimationDemo.qml&#xff09;示例3&#xff1a;并行动画&#xff08;ParallelAnimationD…...

【动态导通电阻】GaN HEMT动态导通电阻的精确测量

2023 年 7 月,瑞士洛桑联邦理工学院的 Hongkeng Zhu 和 Elison Matioli 在《IEEE Transactions on Power Electronics》期刊发表了题为《Accurate Measurement of Dynamic ON-Resistance in GaN Transistors at Steady-State》的文章,基于提出的稳态测量方法,研究了氮化镓(…...

2:OpenCV—加载显示图像

加载和显示图像 从文件和显示加载图像 在本节中&#xff0c;我将向您展示如何使用 OpenCV 库函数从文件加载图像并在窗口中显示图像。 首先&#xff0c;打开C IDE并创建一个新项目。然后&#xff0c;必须为 OpenCV 配置新项目。 #include <iostream> #include <ope…...

Qt控件:交互控件

交互控件 1. QAction核心功能API 1.2 实例应用情况应用场景 1. QAction ##1. 1简介与API QAction 是一个核心类&#xff0c;用于表示应用程序中的一个操作&#xff08;如菜单项、工具栏按钮或快捷键触发的功能&#xff09;。它将操作的逻辑与 UI 表现分离&#xff0c;使代码更…...

在vue3中使用Cesium的保姆教程

1. 软件下载与安装 1. node安装 Vue.js 的开发依赖于 Node.js 环境&#xff0c;因此我们首先需要安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许你在服务器端运行 JavaScript 代码&#xff0c;同时也为前端开发提供了强大的工具支…...

zst-2001 下午题-历年真题 试题一到三

试题一 问题一 1 问题一 2 注意每句话中的“给”… 问题一 3 问题二 1 问题二 2 问题二 3 问题三 1 步骤一.看父图的数据流在子图有没有缺失 步骤二.看加工有没有输入输出 步骤三.阅读理解 问题三 2 实体和存储不能划线 问题三 3 试题二 问题一 1 问题一 2 问题一 3 问题二…...

STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解

在STM32的ADC模块中&#xff0c;**采样时机&#xff08;Sampling Time&#xff09;和转换时机&#xff08;Conversion Time&#xff09;**是ADC工作流程中的两个关键阶段&#xff0c;直接影响采样精度和系统实时性。以下是详细解析&#xff1a; 1. 采样时机&#xff08;Samplin…...

iOS音视频解封装分析

首先是进行解封装的简单的配置 /// 解封装配置 class KFDemuxerConfig {// 媒体资源var asset: AVAsset?// 解封装类型&#xff0c;指定是音频、视频或两者都需要var demuxerType: KFMediaType .avinit() {} }然后是实现解封装控制器 import Foundation import CoreMedia i…...

探究电阻分压的带负载能力

我们经常使用两个电阻去分压来获得特定的电压,那么我是两个大阻值电阻分压获得的电压驱动能力强,还是小阻值电阻分压得到的电压驱动能力强呢? 一、电压相同时,电流的大小 下面是两个阻值分压得到的仿真图 电路分析: VCC都是5V,探针1和探针2测到的电压都是1.67V; 根据…...