[Pro Git#2] 分支管理 | branch fix_bug , feature | 处理合并冲突
目录
一、Issue模板文件
二、Pull Requests模板文件
分支管理
1. 理解分支
2. 创建与管理分支
1. 切换分支与提交历史
2. 合并分支
3. 删除分支
4. 解决合并冲突
6. 查看分支合并情况
快速创建并切换分支
分支管理策略
分支合并模式
分支管理原则
日常开发环境
线上环境
测试流程
Bug 分支管理
1. 遇到Bug时的处理方法
2. 使用 git stash 暂存工作区内容
3. 创建并切换到Bug修复分支
4. 恢复之前的工作
5. 注意事项
6. 合并策略与冲突预防
临时分支的删除
分支的重要性
删除未完成的feature分支
分支的实际应用价值
关于 gitee :
一、Issue模板文件
- 当用户点击“新建Issue”时,会看到对应的模板消息。这个功能是为了让遇到问题的用户或开发者能够与当前仓库的维护人员进行有效的交流。
二、Pull Requests模板文件
- 开发分支的选择:
-
- 对于我们开发者来说,通常不会直接在
master
分支上进行开发,而是在自己创建的分支(如dev
)下进行开发工作。这样做可以避免直接对主代码库造成影响,确保master
分支的稳定性。
- 对于我们开发者来说,通常不会直接在
- 合并操作的风险:
-
- 开发完成后,当想要将
dev
分支的更改合并到master
时,这个merge操作实际上是存在一定风险的。因为无法保证新开发的代码中没有bug,或者不会对现有的master
代码产生不良影响。
- 开发完成后,当想要将
- 提交Pull Requests:
-
- 因此,实际操作中,我们不会让开发者直接进行
dev
分支的合并。相反,开发者需要提交一个Pull Requests(合并申请单)。在这个申请单里,开发者需要详细说明为什么要进行合并、做了哪些改动以及这些改动带来的好处等信息。
- 因此,实际操作中,我们不会让开发者直接进行
- 审核过程:
-
- Pull Requests是给仓库管理员看的。管理员会对申请单中的内容进行审查,一旦同意了该请求,管理员就会在平台上(例如Gitee)执行合并操作,而不是由开发者自己来完成这一操作。这一步骤确保了所有合并到
master
分支的代码都经过了适当的审核,减少了引入错误的可能性。
- Pull Requests是给仓库管理员看的。管理员会对申请单中的内容进行审查,一旦同意了该请求,管理员就会在平台上(例如Gitee)执行合并操作,而不是由开发者自己来完成这一操作。这一步骤确保了所有合并到
sum
- Issue用于问题报告和讨论
- Pull Requests则作为代码合并前的重要审核步骤,保障了
master
分支的稳定性和安全性。
分支管理
1. 理解分支
Git 的杀手级功能之一是分支。通过分支,Git 允许用户在不影响主代码库的情况下探索新的想法或修复错误。这就好比在一个武侠故事中,你能够使用分身术来同时学习不同的武艺,最后将所有技能合为一体以获得竞争优势。
- 主线(master主分支):当你初始化一个Git仓库时,默认会创建一个名为
master
的主分支。这个分支可以被视为项目的主要发展线,所有最新的稳定版本都存于此。 - HEAD指针:它是一个指向当前分支的指针,默认情况下指向
master
分支。HEAD的作用在于标识当前工作的分支,并且可以灵活地指向任何分支。
2. 创建与管理分支
为了更有效地开发和测试新功能,我们可以从主分支创建新的分支,进行独立的工作,然后在适当的时候合并回主分支。
- 查看本地分支:
-
- 使用命令
git branch
可以列出所有的本地分支。带有星号(*)标记的分支表示当前正在工作的分支。
- 使用命令
- 创建新分支:
-
- 使用命令
git branch [分支名]
来创建一个新的分支。需要注意的是,创建新分支并不会自动切换到该分支下工作,新分支的起始点为当前分支的最新提交。
- 使用命令
- 切换分支:
-
- 若要开始在新创建的分支上工作,需要将HEAD指针移动到目标分支,可以通过命令
git checkout [分支名]
实现。此操作后,你在该分支上的所有改动都将被追踪并记录在此分支的历史中。
- 若要开始在新创建的分支上工作,需要将HEAD指针移动到目标分支,可以通过命令
1. 切换分支与提交历史
- 切换回dev分支:当我们切回到
dev
分支时,发现之前在该分支上添加的一行代码仍然存在。这是因为我们在dev
分支进行了新的提交,而这些改动尚未合并到master
分支。
- 查看提交历史:通过检查
dev
分支的最新提交ID,并打印其前一个提交ID,我们发现它正好是创建dev
分支时master
分支的最新提交ID。这表明我们在dev
分支上进行了额外的提交,因此dev
指向了更新的提交记录,而master
保持不变。
2. 合并分支
- 合并准备:如果想要在
master
分支看到dev
分支上的新增代码,我们需要将两个分支进行合并。为此,必须先切换到master
分支,然后执行合并命令。 - 合并命令:
-
git merge [分支名]
:用于合并指定分支到当前分支。
- Fast-forward模式:当执行合并时,Git可能采用快进(Fast-forward)模式直接将
master
分支指针移动到dev
分支的最新提交位置,因为从master
到dev
的路径上没有分叉。这使得合并过程非常快速且简单。 - 结果验证:合并完成后,可以在
master
分支上查看 test 文件,确认新增的一行代码已经成功加入。
合并后master分支和dev分支一样指向最新提交的commit id
3. 删除分支
- 删除条件:一旦完成任务并且合并了分支,原分支(如
dev
)就不再需要,可以安全地删除。 - 删除命令:
-
git branch -d [分支名]
:用于删除本地分支。需要注意的是,你不能删除当前所在的分支,也不能删除未完全合并的分支,除非使用-D
强制删除。
- 最佳实践:由于创建、合并和删除分支的操作非常快捷,Git鼓励为每个任务创建独立的分支,完成后立即合并 并删除,以保持工作流的安全性和整洁性。
4. 解决合并冲突
- 冲突情景:在实际开发中,不同分支可能对同一文件进行了不同的修改,导致合并时出现冲突。例如,
dev1
和master
分支都修改了 test 文件中的同一行。
实验:
先在 dev 下,尝试操作
切换到master分支,也去修改,然后提交
下面是此时的仓库状态
然后我们让master merge dev分支,两个分支 两次 commit 的内容就会发生冲突。
合并 test 文件冲突,我们需要手动解决冲突然后将结果在进行提交。
- 解决冲突:Git会标记出冲突区域,用特殊符号(如
<<<<<<<
,=======
,>>>>>>>
)来区分不同分支的修改内容。开发人员需要手动决定保留哪一部分或如何整合这两部分代码。
- 合并后提交:解决冲突后,需要再次提交更改,以完成合并过程。这是非常重要的一步,确保所有更改都被正确记录下来。
操作 思路:
6. 查看分支合并情况
- 带参数的git log命令:
-
git log --graph --pretty=oneline --abbrev-commit
:这个命令可以图形化地显示提交历史,包括分支的合并情况,帮助更好地理解项目的历史发展。
快速创建并切换分支
- 组合命令:
-
git checkout -b [分支]
:这条命令能够一次性完成创建新分支和切换到该分支的操作,简化了流程。
分支管理策略
分支合并模式
- Fast forward 模式
-
- 在通常情况下,当Git进行分支合并时,如果不存在冲突并且线性历史允许,它会采用 Fast forward(快进)模式。这种模式下,Git不会创建新的合并提交,而是简单地将当前分支的指针移动到被合并分支的最新提交位置。
- 使用Fast forward模式的优点是简洁的历史记录,但它有一个缺点:一旦删除了分支,从历史中就无法看出分支的存在和合并的过程。
- 普通合并模式
-
- 当存在冲突或使用
--no-ff
参数强制禁用 Fast forward 模式时,Git会在合并时生成一个新的提交,明确记录此次合并操作。 - 这种模式的好处是在分支历史上可以清晰地看出分支信息以及合并点,即使在分支被删除之后也能追溯到曾经的合并活动。
- 命令示例:
- 当存在冲突或使用
git merge --no-ff -m "描述信息" [分支名]
- 推荐做法:为了保持项目历史的清晰和可追踪性,合并我们建议不要使用Fast-forward,而使用no-ff。这样做可以确保每次合并都被明确记录下来,有助于团队协作和后续的问题排查。
ff:
图示:
分支管理原则
- master分支稳定性
-
master
分支应当保持非常稳定,主要用于发布新版本。日常开发工作不应该直接在这个分支上进行,以确保其始终处于可部署状态。
- dev分支作为开发主线
-
- 日常开发工作应在
dev
分支上进行。这个分支可以包含不稳定的变化和实验性的功能。 - 当准备发布一个新版本时,将
dev
分支合并到master
分支,并在master
上打标签标识版本号。
- 日常开发工作应在
- 个人分支与团队合作
-
- 团队成员应基于
dev
分支创建自己的特性分支来完成特定任务或实现新功能。每个成员都可以自由地在各自的分支上工作,然后定期将更改合并回dev
分支。 - 这样一来,团队合作的分支结构就会形成一个主干(
dev
),周围环绕着多个临时分支,代表不同的开发活动或特性实现。
- 团队成员应基于
sum:
日常开发环境
- 开发人员提交的代码,还未经过测试验证
- 不稳定,存在bug
- dev分支
线上环境
- APP、网站
- 稳定
- master主分支
测试流程
- 经过一系列测试,最终将稳定的代码合并到master上
Bug 分支管理
1. 遇到Bug时的处理方法
- 场景描述:假设你正在
dev2
分支上进行开发,但突然发现master
分支存在一个需要立即修复的bug。根据最佳实践,不应该直接在master
分支上修复问题,而是应该创建一个专门用于修复bug的临时分支。
2. 使用 git stash
暂存工作区内容
- 暂存当前工作:当你在
dev2
分支的工作尚未完成且无法提交时,可以使用git stash
命令将当前工作区的信息储藏起来。这允许你在不提交的情况下切换分支,并确保稍后可以恢复这些更改。
-
git stash
:执行此命令后,Git会保存所有已经被追踪文件的修改,例如对 README 文件所做的编辑。
- 检查stash内容:
-
git stash list
:查看当前存储的所有stash记录,确认哪些改动被保存。
3. 创建并切换到Bug修复分支
- 创建bug分支:从
master
分支创建一个新的分支来专门解决发现的问题。比如修复 README 文件中缺失的“222”导致的bug。
-
- 完成修复后,记得提交更改并合并回
master
分支。
- 完成修复后,记得提交更改并合并回
4. 恢复之前的工作
- 恢复工作区状态:修复完bug之后,你需要回到
dev2
分支继续未完成的工作。由于之前使用了git stash
,你现在可以通过git stash pop
来恢复之前的工作区状态。这不仅恢复了你的改动,同时也清除了stash记录。
-
git stash pop
:恢复最新的stash记录并将其从stash列表中删除。
5. 注意事项
- 分支间的差异:需要注意的是,即使你在
dev2
分支上恢复了之前的工作,它仍然基于修复bug之前的master
状态,因此dev2
分支不会包含修复后的代码。但这不影响你在master
上所做的修复。
6. 合并策略与冲突预防
- 我们的最终目的是要让 master 合并 dev2 分支的,那么正常情况下我们切回 master 分支直接合并即可,但这样其实是有一定风险的。
- 是因为在合并分支时可能会有冲突,而代码冲突需要我们手动解决(在 master 上解决)。我们无法保证对于冲突问题可以正确地一次性解决掉,因为在实际的项目中,代码冲突不只一两行那么简单,有可能几十上百行,甚至更多,解决的过程中难免手误出错,导致错误的代码被合并到 master 上。此时的状态为:
- 解决这个问题的一个好的建议就是:最好在自己的分支上合并下 master ,再让 master 去合并dev ,这样做的目的是 有冲突可以在本地分支解决并进行测试,而不影响 master 。此时的状态为:
- 这样做可以在本地安全地解决任何可能出现的冲突,并确保最终合并到
master
的代码是稳定可靠的。
临时分支的删除
分支的重要性
- 在软件开发过程中,新功能的添加是一个持续不断的需求。为了确保主分支(通常是
main
或master
)的稳定性,不会因为实验性质的代码而受到影响,每开发一个新的功能时 - 建议创建一个独立的分支,通常称之为 feature 分支。
- 这个分支用于隔离新功能的开发工作,直到该功能完成并经过测试后,再将其合并回主分支。之后,可以安全地删除 feature 分支,以保持仓库的整洁。
删除未完成的feature分支
- 然而,有时候项目需求会发生变化。例如,如果你正在某个 feature 分支上开发新功能,但中途被要求停止开发——这可能是由于优先级的变化或其他原因——那么即使这部分工作尚未完成或合并,也需要删除这个 feature 分支。
- 在这种情况下,使用常规的
git branch -d
命令是不够的,因为它只允许删除已经被合并过的分支。对于未合并的分支,你需要使用强制删除命令:
git branch -D [分支名]
此命令会立即删除指定的分支,无论它是否已经合并。
分支的实际应用价值
- 分支机制为开发者提供了极大的灵活性和安全性。假设你着手开发一个预计需要两周才能完成的新功能,在开发的第一周内你可能只完成了50%的工作。
- 此时,如果你直接在主分支上提交不完整的代码,可能会干扰团队中其他成员的工作;相反,如果你等到全部完成后再一次性提交,又面临着丢失每日进度的风险。
- 通过创建个人专属的分支,你可以自由地进行开发,不受他人工作的干扰,同时也不会影响到别人。你可以随时提交更改,保护每天的工作进度。一旦开发完成并通过了必要的审查和测试,就可以将你的分支合并回主分支。
这种方式不仅保证了代码库的安全性,也提高了团队协作效率。
此外,Git 的分支操作非常高效,无论是创建、切换还是删除分支,都能在一秒钟内完成,不论版本库包含多少文件。
利用 Git 的分支功能来管理不同阶段和类型的开发工作流,是一种既便捷又高效的方法~
相关文章:
[Pro Git#2] 分支管理 | branch fix_bug , feature | 处理合并冲突
目录 一、Issue模板文件 二、Pull Requests模板文件 分支管理 1. 理解分支 2. 创建与管理分支 1. 切换分支与提交历史 2. 合并分支 3. 删除分支 4. 解决合并冲突 6. 查看分支合并情况 快速创建并切换分支 分支管理策略 分支合并模式 分支管理原则 日常开发环境 …...
Java——集合框架
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1 集合框架概述1.1 内存层面需要针对多个数据进行存储。此时,可以考虑的容器有:1.2 数组存储多个数据方面的特点和弊端1.3 Java集合框架体系…...
Mac 环境 VVenC 编译与编码命令行工具使用教程
VVenC VVenC 是一个开源的高效视频编码器,专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准,主要目的是提供比 HEVC 更高的压缩效率,同时保持或提高视频质量。H.266/VVC…...
WebRTC:实现浏览器与移动应用的实时通信
1.技术简介 (Web Real-Time)是一种开放式实时通信技术,旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输,而无需安装插件或额外软件。它支持网络应用中的点对点通信,例如视频聊天、语音通话…...
curl+openssl 踩坑笔记
curl编译:点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …...
【NebulaGraph】变化的多跳查询
【NebulaGraph】变化的多跳查询 1. 需求2. 解决方案2.1 确定查询结构2.2 构建查询语句 3. 追加需求:如果增加每一跳都要指定查询某SPACE下的Tag,或者不查询某个Tag怎么办 1. 需求 存在多跳请求,其中每一跳是从上一跳查询结果为基础的。但是 …...
【C++】九九乘法表编程题详解与多角度对比分析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目概述题目描述 💯老师的实现方法代码解析优点不足 💯我的实现方法代码解析优点不足 💯实现方法对比💯优化与扩展代码优化…...
node.js卸载并重新安装(超详细图文步骤)
卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样,总之是找到自己的nodejs安装路径,下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…...
redis的集群模式与ELK基础
一、redis的集群模式 1.主从复制 (1)概述 主从模式:这是redis高可用的基础,哨兵和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的,主负责写入,然后把写入的数据同步到从服务器ÿ…...
一份关于 Ubuntu 系统下代理配置的故障排查笔记
Ubuntu 网络代理配置与故障排查指南 在使用 Ubuntu 系统时,配置网络代理可以帮助提升网络访问速度或突破网络限制。然而,代理配置过程中可能会遇到各种问题。本文将详细介绍如何在 Ubuntu 下配置网络代理,并提供故障排查的步骤和解决方案。 …...
如何用jmeter工具进行性能测试
前言 今天我们来说说jmeter如何进行性能测试,我们都知道jmeter工具除了可以进行接口功能测试外,还可以进行性能测试。当项目趋于稳定,根据性能需求就可以着手准备性能测试了,今天就说一说jmeter如何进行性能测试,jmet…...
五、Vue 循环语句
文章目录 简介一、基础数组迭代二、对象属性迭代三、整数循环 简介 在 Vue.js 的世界里,当我们需要处理重复性的结构并依据数据动态渲染时,v-for 指令就成了不可或缺的工具,它赋予开发者简洁且强大的能力,轻松应对各种列表渲染场景…...
HMSC联合物种分布模型
联合物种分布模型(Joint Species Distribution Modelling,JSDM)在生态学领域,特别是群落生态学中发展最为迅速,Hmsc是物种群落分层模型的缩写(Hierarchical Modelling of Species Communities),它是一种基于…...
【CPU】risc-v指令集和其他指令集的差别(个人草稿)
第三,在 RISC-V 中对于所有指令,要读写的寄存器的标识符总是在同一位置,意味着在解码指令之前,就可以先开始访问寄存器。在许多其他的 ISA 中,某些指令字段在部分指令中被重用作为源目的地,在其他指令中又被…...
处理元素卡在视野边界,滚动到视野内
效果图如下: 本示例处理场景:点击底部的折叠面板,展开后移动端滚动条位置不变,导致展开内容在视图外。造成面板展开无内容的错觉。 处理核心API: IntersectionObserver 此API可绑定元素并监听元素是否在视野内。若在视野外…...
环,域,体,整区,理想,极大理想,
环: 定义: 加法交换群 乘法半群 分配律 域的定义: 加法交换群 乘法群(去掉0元是交换群) 分配律 Eg:比如整数集合不是域,因为对于乘法来说,去掉0后没有单位元了,但是是环 Eg…...
音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...
大模型—Ollama 结构化输出
Ollama 结构化输出 Ollama现在支持结构化输出,使得可以按照由JSON模式定义的特定格式来约束模型的输出。Ollama的Python和JavaScript库已经更新,以支持结构化输出。 结构化输出的用例包括: 从文档中解析数据从图像中提取数据结构化所有语言模型响应比JSON模式更可靠和一致开…...
基于Pytorch和yolov8n手搓安全帽目标检测的全过程
一.背景 还是之前的主题,使用开源软件为公司搭建安全管理平台,从视觉模型识别安全帽开始。主要参考学习了开源项目 https://github.com/jomarkow/Safety-Helmet-Detection,我是从运行、训练、标注倒过来学习的。由于工作原因,抽空…...
数据结构与算法基础(C语言版)
参考资料:https://www.bilibili.com/video/BV1GW421A7qY/ 所有代码均已在Ubuntu 20.04.6 LTS中测试通过 逻辑结构与存储结构 逻辑结构 逻辑结构指的是数据对象中数据元素间的相互关系,分为以下四种: 集合结构 集合结构中的数据元素除了同属于…...
Qt监控系统放大招/历经十几年迭代完善/多屏幕辅屏预览/多层级设备树/网络登录和回放
一、前言说明 近期对视频监控系统做了比较大的更新升级,主要就是三点,第一点就是增加了辅屏预览,这个也是好多个客户需要的功能,海康的iVMS-4200客户端就有这个功能,方便在多个屏幕打开不同的视频进行查看,…...
使用Locust对MySQL进行负载测试
1.安装环境 pip install locust mysql-connector-python 2.设置测试环境 打开MySQL服务 打开Navicat新建查询,输入SQL语句 3.编写locust脚本 load_mysql.py # codingutf-8 from locust import User, TaskSet, task, between import mysql.connector import ran…...
layui多图上传,tp8后端接收处理
环境:layui2.9.21\thinkphp8.1 前端代码: layui.use([upload, layer], function() {const upload layui.upload;const layer layui.layer;const $ layui.$;// 上传图片const uploadInstImage upload.render({elem: #uploadImage,url: /admin/demo/…...
【Rust自学】8.3. String类型 Pt.1:字符串的创建、更新与拼接
8.3.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…...
Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1)
本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 为了在ESP32-S3中使用ESP-IDF,需要根据操作系统安装一些软件包。可以参考以下安…...
Android性能优化—— 内存优化
Android 系统中,垃圾回收是自动的,比较隐蔽,这就导致一些内存问题表现的并不明显,出现问题后难以定位。常见的内存问题有内存泄漏、内存溢出(Out of Memory)、内存抖动等。 我们做内存优化的主要原因有以下…...
【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算
【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算 一、简介 在MATLAB中计算Sobol二阶效应指数通常涉及到全局敏感性分析(Global Sensitivity Analysis, GSA),其中Sobol方法是一种流行的技术,用于评估模型输入…...
【Scala】图书项目系统代码演练3.1/BookService
package org.app package serviceimport models.{BookModel, BorrowRecordModel}import org.app.dao.{BookDAO, BorrowRecordDAO}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookService {private val bookDAO new B…...
Gateway
目录 使用 工作机制 Predicate断言 Filter过滤器(鉴权) GatewayFilter GlobalFilter 使用 Gateway底层是使用Ribbon来实现负载均衡的 新建模块,端口5001 1、引入依赖 spring-boot-starter-web里存在tomcat,spring-cloud-st…...
SpringSecurity中的过滤器链与自定义过滤器
关于 Spring Security 框架中的过滤器的使用方法,系列文章: 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity使用过滤器实现图形验证码》 1、Spring Security 中的过滤器链 Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过…...
【OTA】论文学习笔记--《基于RTOS的车载ECU双分区OTA升级技术分析报告》
引言 研究背景 - 汽车智能化、网联化发展趋势下,OTA升级已成为智能网联汽车的必备功能 - 传统RTOS控制器在OTA升级失败后无法进行软件回滚,导致控制器功能失效 - 现有技术主要针对Linux、QNX等智能操作系统,缺乏针对RTOS的解决方案 研究目的 提出一种适用于RTOS控制器的双分…...
MLA:多头潜在注意力
MLA:多头潜在注意力 多头潜在注意力(MLA)机制是一种在深度学习模型中用于处理序列数据的注意力机制的改进形式,以下是对其原理和示例的详细介绍: 原理 低秩键值联合压缩:MLA机制利用低秩键值联合压缩来消除注意力模块中的某些计算,从而提高模型的运行速度和性能。在传…...
【python】matplotlib(moon cake)
文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…...
C++ hashtable
文章目录 1. 基本概念2. 哈希函数3. 哈希冲突及解决方法开放定址法链地址法再哈希法建立公共溢出区4. 哈希表的操作实现5. 内存管理及优化 时间复杂度理想情况(无哈希冲突或冲突极少)一般情况(考虑哈希冲突及解决方法)综合来看 以…...
ip怎么查域名?IP和域名分别是什么?
为什么我们可以通过简单的域名访问网站,而不是记住一串复杂的数字?IP地址和域名之间到底是什么关系?在互联网的世界里,IP地址和域名是两种重要的概念,它们共同构成了我们日常上网的基础。 IP地址是互联网协议地址的缩…...
大模型提示词初探
大模型提示词初探 在与大模型交互的过程中,提示词起着至关重要的作用,它犹如给模型下达的精准任务指令,直接影响着模型生成内容的准确性、高效性与合理性。合理运用提示词,能够有效减少模型出现错误和幻觉的情况,从而…...
Linux的进程替换以及基础IO
进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系,那么我们接下来了解一下程序的替换。 首先,在进程部分我们提过了,其实文件可以在运行时变成进程,而我们使用的Linux软件其实也是一个进程,所以进一步…...
《Vue进阶教程》第三十一课:ref的初步实现
往期内容: 《Vue进阶教程》第二十课:lazy懒执行 《Vue进阶教程》第二十一课:支持缓存 《Vue进阶教程》第二十二课:自定义更新(调度器) 《Vue进阶教程》第二十三课:渲染计算属性的结果 《Vue进阶教程》第二十四课&…...
Wend看源码-Java-集合学习(Queue)
概述 Wend看源码-Java-集合学习(List)-CSDN博客 Wend看源码-Java-集合学习(Set)-CSDN博客 在前两篇文章中,我们分别探讨了Java集合框架的父类以及List集合和Set集合的实现。接下来,本文将重点阐述Java中的Queue集合,包括其内部的数据结…...
大数据面试笔试宝典之HBase面试
1.HBase 数据存储位置 HBase 中的数据存储在哪里? 以什么格式存储?和 Zookeeper 什么关系? 参考答案: 1.HBase 中的所有数据文件都存储在 Hadoop HDFS 文件系统上。 2.包含两种文件类型: HFile : HBase 中 KeyValue 数据的存储格式。HFile 是 Hadoop 的二进制格式文件…...
React基础知识学习
学习React前端框架是一个系统而深入的过程,以下是一份详细的学习指南: 一、React基础知识 React简介 React是一个用于构建用户界面的JavaScript库,由Facebook开发和维护。它强调组件化和声明式编程,使得构建复杂的用户界面变得更…...
实战指南:Shiro、CAS打造完美单点登录体验
引言 想象一下,在日常工作中,我们经常需要进行系统认证和授权。当用户尝试登录一个网站时,他们需要提供用户名和密码,网站会检查这些信息,确认用户是谁。这就是认证的过程。 一旦用户被认证,他们可能会尝…...
光储充一体化解决方案详解。
一、光储充介绍 1、什么是光储充 “光储充”一体化,顾名思义,是由光伏发电、储能、充电集成一体、互相协调支撑的绿色充电模式。其工作原理是利用光伏发电,余电由储能设备存储,共同承担供电充电任务。在用电高峰,光储…...
TDengine 新功能 VARBINARY 数据类型
1. 背景 VARBINARY 数据类型用于存储二进制数据,与 MySQL 中的 VARBINARY 数据类型功能相同,VARBINARY 数据类型长度可变,在创建表时指定最大字节长度,使用进按需分配存储,但不能超过建表时指定的最大值。 2. 功能说明…...
2024年秋词法分析作业(满分25分)
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格…...
AF3 checkpoint_blocks函数解读
checkpoint_blocks 函数实现了一种分块梯度检查点机制 (checkpoint_blocks),目的是通过分块(chunking)执行神经网络模块,减少内存使用。在深度学习训练中,梯度检查点(activation checkpointing)是一种显存优化技术。该代码可以: 对神经网络的块(blocks)按需分块,并对…...
VITUREMEIG | AR眼镜 算力增程
根据IDC发布的《2024年第三季度美国AR/VR市场报告》显示,美国市场AR/VR总出货量增长10.3%。其中,成立于2021年的VITURE增长速度令人惊艳,同比暴涨452.6%,成为历史上增长最快的AR/VR品牌。并在美国AR领域占据了超过50%的市场份额&a…...
详解MySQL在Windows上的安装
目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网,找到DOWNLOADS 然后往下翻,找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载,选择No thanks,just start my download. 然后双击进行…...
细说STM32F407单片机CAN基础知识及其HAL驱动程序
目录 一、CAN总线结构和传输协议 1、 CAN总线结构 (1)闭环结构的CAN总线网络 (2)开环结构的CAN总线网络 (3)隐性电平和显性电平 2、CAN总线传输协议 (1)CAN总线传输特点 &am…...
Ubuntu 22.04 升级 24.04 问题记录
一台闲置笔记本使用的 ubuntu 还是 18.04,最近重新使用,发现版本过低,决定升级,于是完成了 18.04 -> 20.04 -> 22. 04 -> 24.04 的三连跳。 一、升级过程中黑屏 主要问题是在 22.04 升级到 24.04 过程中出现了黑屏仅剩…...