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

Git版本管理系列:(一)使用Git管理单分支

目录

  • 基础概念介绍
  • 仓库的创建
  • 创建隐藏目录
  • 添加代码到暂存区
  • 提交代码到仓库
  • 提交记录查询
  • 比较差异
  • 标签
  • 文件删除
  • 版本回退
  • 总结

Git‌ 是一个分布式版本控制系统(DVCS),用于跟踪文件的变更并协调多人协作开发‌,由 Linus Torvalds 于 2005 年创建。为什么要学习使用Git?因为软件开发中必不可少的是版本迭代以及团队协作,并且现在很多开源软件的下载也依赖于Git方法。因此,只要是个程序员就应该要掌握使用Git进行版本管理的方法,是绕不开必须学会的技能。

基础概念介绍

 预计Git系列一共出三篇文章,分别是单分支的使用、多分支,以及连接远程仓库。本篇文章是开篇,介绍Git在单分支版本管理中的基础使用方法帮助新手快速入门Git,更全面的指令介绍请参考官方的手册。
 Git是一个用来进行程序版本迭代管理的软件,什么叫版本管理?写程序的过程一般都是先写个初版,然后再不断地进行改进,如果没有Git那么就需要人为地进行手动管理,比如手动对之前版本的文件进行复制保存,如果要进行版本回退的话再手动去查找之前的存档,如果版本很多的话这个过程会很繁琐,复杂。Git的出现就是帮我们进行这个版本迭代的管理,并且能很轻松地和其他人一起进行同一个项目的开发。
在这里插入图片描述
 Git进行版本迭代与管理的工作流程如上图所示。简单来说就是先将本地工作区的文件(修改过的)添加进暂存区,再将暂存区的文件提交到仓库内。仓库里装着最终确定存储的代码。
 那为什么要有暂存区?直接把更改后的代码提交到仓库内不行吗?我们可以看到暂存区位于工作目录和本地仓库之间,起到了缓冲和筛选变更‌的作用‌。例如有时候我们代码只需要提交对某个文件的修改,而项目中的其他文件不需要更改,就可以选择性地将工作目录中的变更添加到暂存区中,再由暂存区提交到仓库。并且,暂存区是提交前的“准备区”,开发者可以在这里检查和管理即将提交的变更‌,提高安全性。总之,暂存区是git的一个机制,遵守就好了
 Git的使用就是围绕上图这个工作流开展的。

仓库的创建

 要对项目进行版本管理首先需要创建一个仓库,Git中创建仓库最常用的两种方法如下:

  1. git init即在项目的文件夹下打开git bash,并在其中输入这条指令。git 将创建一个本地仓库,工程目录下将生成一个.git隐藏文件夹注意,千万不要乱动隐藏文件夹
  2. git clone xxxx 这是从远程仓库克隆的指令,比如从github等网站上克隆开源项目。使用这条指令能一键将远程仓库的项目完完整整地下载到本地。

创建隐藏目录

 有时候项目文件夹下的有些文件并不需要进行同步管理,比如一些日志以及编译产生的中间文件等,这时候就需要对这些文件进行隐藏了,让它们不同步到代码仓库内。
 git中主要通过.gitignore文件来决定文件是否同步到仓库。

.gitignore 文件的基本语法‌
‌1. 忽略单个文件‌:直接写入文件名,例如 secret.txt‌
2‌. 忽略目录‌:在目录名后加上斜杠 /,例如 node_modules/‌
3‌. 忽略特定类型的文件‌:使用通配符 *,例如 *.log 会忽略所有 .log 文件‌。
‌4. 忽略特定路径下的文件‌:在规则前加上路径,例如/temp/*会忽略根目录下 temp 目录中的所有文件‌。
‌5. 否定规则‌:在规则前加上 ! 表示不忽略匹配的文件或目录,例如 !important.log‌

如果想把已经提交到仓库中的某个文件忽略,具体做法如下:

  1. 确认该文件在仓库中git ls-files 如果输出的有文件的名字就说明已经提交到仓库里了。
  2. 将要忽略的文件名添加进.gitignore文件中,并添加进缓存区git add .gitignore
  3. 使用git rm -r --cached <文件/目录路径>将需要忽略的文件/目录从缓存区删除。
  4. 提交缓存区代码。

添加代码到暂存区

git add .add后面加需要添加的目录文件名等,这里的.代表把所有更新了的文件提交到暂存区,也可以自行指定。

提交代码到仓库

git commit -m "本次更新的内容",-m意思是添加版本更新的备注,理论上可以不写,但一般情况下都需要写,就跟贴了条形码的答题卡上依然要手写姓名班级一样。

提交记录查询

git log即可查询提交记录。但git log 不能查看回退过的记录,其展示的是目前有效的版本迭代。如果要查询所有的提交记录(包括回退,以及其他分支的提交记录),请使用git reflog
 并且可以使用git log --name-only筛选出具体提交的文件名。

比较差异

git diff指令用来比较三个区之间的文件差异,包括文件的数目(宏观)以及具体到文件的内容(微观)。

  1. git diff默认比较工作区与暂存区之间的文件数目差异
  2. git diff -- 文件1 文件2 文件n用来具体比较工作区与暂存区之间,这几个文件的内容差异
  3. git diff <版本哈希值>用来比较工作区与指定版本之间的差异。
  4. git diff <版本哈希值> -- 文件1 文件2用来比较工作区与指定版本之间这几个文件的内容差异。

标签

 代码每一次提交都意味着做出了新的修改,这是量变的过程。量变产生质变,标签就是用来标记程序开发质变的节点的版本别名。在git中常用标签来用附注标记程序的稳定版本。标签的命名遵循语义化版本(如 v<主版本>.<次版本>.<修订号>)‌。

  1. 添加标签
     标签分为轻量标签以及附注标签、并且也可以基于当前提交或者历史提交。
    • 轻量标签添加:git tag <tagname> ,这种添加方式是基于当前提交的,如果要基于某个版本需要在后面添加上提交记录,例如:
      git tag v0.9 abc1234 ,abc1234是提交记录,使用git log 或者git reflog查看。轻量标签仅作为提交的指针,不存储额外信息‌。

    • 附注标签添加:git tag-a <tagname> -m <message>,例如git tag -a v1.0.0 -m "Release version 1.0.0",附注标签包含作者、日期和描述信息,适合正式版本‌。

  2. 删除标签
    git tag -d <tagname>这是删除本地的标签,git push origin --delete <tag_name>用于删除远程库内的标签。
  3. 查看标签
    列出所有标签:git tag
    查看标签详情:git show <tagname>

常用的操作就是这些,详细内容推荐一篇博客。

文件删除

 删除文件最常用的是bash指令中的rm指令,一般有rm -rf 文件/目录 ,f表示直接删除,r表示删除目录(默认rm只能删文件,需要加-r递归删目录)。git也有删除命令git rm ,主要是可以删除缓存区以及仓库内的文件和目录,bash指令只能用在工作区。
git rm <filename>:删除工作区与暂存区的文件(相当于rm加add操作,版本库中删除就直接提交删过的暂存区就好了)。
git rm --cached <filename>删除暂存区的某个文件,常用于把已经提交到仓库中的某个文件忽略,即错误地将某个文件添加到了暂存区,希望将其从版本控制中移除,但仍然保留在本地工作区中。

版本回退

 版本回退主要使用git reset命令,回退的主要原理是修改HEAD指针的位置(HEAD指针默认指向当前工作的仓库版本)回退版本后的版本都会清除
 回退分三种:第一种hard,即强硬的回退,除了仓库版本会回退,工作区与暂存区的内容也会回退(即当前工作区的内容也会被还原到指定版本)。第二种soft,软回退,就把当前的仓库版本回退到指定版本,工作区与暂存区内容不变。第三种mixed(默认),即把仓库版本以及暂存区都进行回退,工作区内容保存。

  1. git reset --hard <指定版本哈希值>
  2. git reset --soft <指定版本哈希值>
  3. git reset --mixed <指定版本哈希值>

版本哈希值也可以使用HEAD^来指代上个版本,HEAD^^来指代上上个版本。另外还有撤销回退的操作:
git checkout -- <filename>该命令会将指定文件(filename)恢复到最近一次 git commit 或 git add 时的状态,丢弃工作区对该文件的所有未暂存修改。例如:
git checkout HEAD^ -- filename 恢复到上一次提交的版本‌
git checkout branchname -- filename 恢复为指定分支的版本‌

总结

 本章涉及单分支下版本管理的各类简单操作基本覆盖百分之八十以上的使用场景。不要把git学习当成理论学习,权当查字典学习就好了,必须要不断实践才可能掌握的。附涉及命令总结:

git init #初始化仓库
git clone <url> #从远程仓库初始化本地仓库
git add . #提交所有文件到暂存区
git commit -m "message" #把暂存区文件提交到仓库git tag #查看所有标签
git show <tagname> #查看某一标签详情
git tag <tagname> #为当前版本打上标签
git tag <tagname> <版本哈希> #为指定版本打上标签
git tag -a <tagname> -m "tag_message" <版本哈希> #为指定版本打上附注标签
git tag -d <tagname> #删除指定标签git log #查看提交记录
git log --name-only#筛选提交记录名称
git reflog #查看所有更改记录git diff #比较工作区和暂存区的文件数目差异
git diff -- filename1 filename2 #比较工作区和暂存区指定文件内容差异
git diff <版本哈希值> #比较工作区与指定版本文件数目差异
git diff <版本哈希值> -- filename1 filename2 #比较工作区与指定版本文件内容差异git rm -rf files/folders #从工作区和缓存区删除文件或者文件夹
git rm --cached #删除暂存区内容
git rm --cached <filename> #删除暂存区文件git reset --hard <版本哈希值> #硬回退到指定版本,工作区暂存区都回退
git reset --soft <版本哈希值> #软回退,只有仓库回退
git reset --mixed <版本哈希值> #默认回退,仓库和暂存区回退
git checkout --filename #将文件恢复到最近一次commit版本
git checkout HEAD^ -- filename #恢复到上一次提交的版本‌
git checkout branchname -- filename #恢复为指定分支的版本‌

相关文章:

Git版本管理系列:(一)使用Git管理单分支

目录 基础概念介绍仓库的创建创建隐藏目录添加代码到暂存区提交代码到仓库提交记录查询比较差异标签文件删除版本回退总结 Git‌ 是一个分布式版本控制系统&#xff08;DVCS&#xff09;&#xff0c;用于跟踪文件的变更并协调多人协作开发‌&#xff0c;由 Linus Torvalds 于 2…...

Vue框架的响应式系统

以下是关于 响应式系统 的系统梳理: 一、响应式系统的核心目标 数据驱动视图:自动追踪数据变化并触发视图更新高效依赖追踪:精确识别数据与视图的依赖关系批量异步更新:优化多次数据变更的更新性能组件级更新:最小化DOM操作范围二、核心架构演进 版本核心技术优势局限性Vu…...

【Shell】模拟爬虫下载天龙八部小说

Shell脚本&#xff1a; #curl https://tianlong.5000yan.com/ -o tianlong.html grep "href" tianlong.html | grep html | awk -F"\"" { print $6 } >> urls.txt grep "href" tianlong.html | grep html | awk -F">"…...

WHAT - JavaScript 中 Object.defineProperty() 和 Proxy 对比

目录 一、Object.defineProperty()作用基本语法示例&#xff1a;定义一个只读属性示例&#xff1a;定义 getter/setter 二、Proxy作用基本语法示例&#xff1a;拦截属性访问 对比&#xff1a;defineProperty vs Proxy场景选择建议 在 JavaScript 中&#xff0c;Object.definePr…...

Qt进阶开发:模型/视图原理详解

文章目录 一、模型/视图架构概述二、模型/视图架构的组成部分2.1 模型2.2 视图2.3 委托三、模型类的介绍3.1 模型索引3.2 行和列3.3 父项4.项角色四、视图类的介绍4.1 基本概念4.2 处理项目选择五、委托类的介绍5.1 基本概念5.2 自定义委托六、数据-窗口映射器一、模型/视图架构…...

d202547

目录 一、sql-每月交易 I 二、 sql-按日期分组销售产品 三、sql-列出指定时间段内所有的下单产品 四、 第k个大的数 一、sql-每月交易 I 题目意思就是把国家名称&#xff0c;和年月一样的分为一组&#xff0c;在这组数据中进行计数 题目给的日期格式是yyyy-mm-ss,可以使用l…...

pulsar使用指南

Apache Pulsar 是 Apache 软件基金会顶级项目&#xff0c;是下一代云原生分布式消息流平台&#xff0c;集消息、存储、轻量化函数式计算为一体&#xff0c;采用计算与存储分离架构设计&#xff0c;支持多租户、持久化存储、多机房跨区域数据复制&#xff0c;具有强一致性、高吞…...

底盘---麦克纳姆轮(Mecanum Wheel)

一、基本定义与起源 定义&#xff1a;麦克纳姆轮是一种实现全向移动的特殊轮式结构&#xff0c;通过在主轮周边安装多个倾斜的辊子&#xff08;小轮&#xff09;&#xff0c;使设备能够在平面上向任意方向移动&#xff08;包括横向、斜向、旋转等&#xff09;&#xff0c;无需…...

内网文件传输新体验,聊天、传输、自定义,一应俱全

Flix 是一款高效、便捷的跨平台局域网文件传输工具&#xff0c;支持 Windows、macOS、Android、iOS 和 Linux 等多种操作系统。它以简洁直观的聊天式界面为特色&#xff0c;让用户能够像发送消息一样轻松地传输文件&#xff0c;无需复杂的设置或登录。Flix 支持大文件和多种格式…...

深入解析嵌入式Linux系统架构:从Bootloader到用户空间

B站视频链接,请多多关注本人B站&#xff1a; &#x1f4cc; Yocto项目实战教程&#xff1a;第二章 视频讲解 目录 第2章 Linux系统架构 2.1 GNU/Linux2.2 Bootloader2.3 内核空间2.4 用户空间 总结 第2章 Linux系统架构 {#linux系统架构} 嵌入式Linux系统是Linux内核的精简版…...

一句话,十分钟,一部片!

大家好&#xff01;我是羊仔&#xff0c;专注AI工具、智能体、编程。 羊仔最近发现一个超有意思的AI工具&#xff0c;简直是为内容创作者量身打造的&#xff01;啥工具&#xff1f;Story-Flicks&#xff01; 这玩意儿能干啥呢&#xff1f;简单来说&#xff0c;一句话&#xf…...

【橘子大模型】使用streamlit来构建自己的聊天机器人(下)

一、简介 我们之前完成了一个简易的聊天机器人&#xff0c;但是还留下了一些问题没有解决&#xff0c;比如如何开启新的会话。如何切换session_id&#xff0c;如何把对话做成流式的输出。这些我们就会在今天来完成。 二、关于新的会话和session_id from dotenv import load_…...

【合新通信】光纤延迟线(ODL)的原理

光纤延迟线是一种利用光学原理实现信号传输的设备&#xff0c;主要用于雷达、通信和测量等领域。以下是光纤延迟线的基本原理和工作方式&#xff1a; 技术原理 光纤延迟线通过相位控制器和分束器来处理输入信号。具体来说&#xff0c;数据信号和参考信号同时输入分束器&#x…...

Altium Designer——规则设置

规则 间距规则&#xff1a; 线宽&#xff1a;6mil > x > 4mil 1.在菜单栏中选择 设计 ——》 规则 根据下图双击对应的Clearance规则&#xff0c;更改红圈中的数字为6mil&#xff0c;然后点击应用再点击确定。 这个间距是元素之间&#xff08;走线、铺铜、元器件&#x…...

智谛达科技:以创新为翼,翱翔AI人形机器人蓝海

在科技创新的浩瀚星空中,智谛达科技集团犹如一颗璀璨的明星,以其独特的创新光芒,照亮了AI人形机器人的广阔蓝海。这家在AI领域深耕多年的企业,始终秉持着创新为翼的发展理念,不断突破技术瓶颈,拓展应用场景,以卓越的实力和前瞻性的思维,引领着人形机器人行业的未来发展。 智谛达…...

前后端接口参数详解与 Mock 配置指南【大模型总结】

前后端接口参数详解与 Mock 配置指南 一、前端请求参数类型及 Mock 处理 1.1 URL 路径参数 (Path Parameters) 场景示例&#xff1a; GET /api/users/{userId}/orders/{orderId}Mock.js 处理&#xff1a; Mock.mock(/\/api\/users\/(\d)\/orders\/(\d)/, get, (options) &g…...

RPC与其他通信技术的区别,以及RPC的底层原理

1、什么是 RPC&#xff1f; 远程过程调用&#xff08;RPC&#xff09; 是一种协议&#xff0c;它允许程序在不同计算机之间进行通信&#xff0c;让开发者可以像调用本地函数一样发起远程请求。 通过 RPC&#xff0c;开发者无需关注底层网络细节&#xff0c;能够更专注于业务逻…...

汽车售后ODX 和 OTX 详细分析

在汽车售后诊断领域&#xff0c;ODX 和 OTX 都是重要的标准&#xff0c;但它们的应用场景和特点有所不同&#xff0c;难以简单地评判哪个是绝对的主流。以下是对它们的详细分析。 ODX&#xff08;Open Diagnostic data eXchange&#xff09; 概述&#xff1a;ODX 是由 ASAM 制…...

深度学习天崩开局

李沐大神的d2l包导入&#xff0c; 这玩意需要python311版本&#xff0c;我现在版本已经313了&#xff0c;作为一个天生要强的男人&#xff0c;我是坚决不向低版本低头的。 然后我就研究啊&#xff0c;各种翻资料啊&#xff0c;然后deepseek加豆包都翻烂了&#xff0c; 最终所…...

面试算法高频04-分治与回溯

分治与回溯 分治和回溯算法&#xff0c;包括其概念、特性、代码模板&#xff0c;并结合具体题目进行讲解&#xff0c;旨在帮助学员理解和掌握这两种算法的应用。 分治与回溯的概念 分治&#xff08;Divide & Conquer&#xff09;&#xff1a;本质上基于递归&#xff0c;先…...

整数编码 - 华为OD统一考试(A卷、C++)

题目描述 实现一种整数编码方法&#xff0c;使得待编码的数字越小&#xff0c;编码后所占用的字节数越小。 编码规则如下: 编码时7位一组&#xff0c;每个字节的低7位用于存储待编码数字的补码。字节的最高位表示后续是否还有字节&#xff0c;置1表示后面还有更多的字节&…...

对访问者模式的理解

对访问者模式的理解 一、场景二、不采用访问者模式1、代码2、特点 三、采用访问者模式1、代码2、特点 四、思考 一、场景 我们有一个图形系统&#xff0c;系统中有多种图形对象&#xff08;如圆形、方形等&#xff09;&#xff0c;每种图形对象都有不同的属性和行为。现在需要对…...

第三次PID状态机

以下是 apply_params 函数的实现步骤和代码示例&#xff1a; 1. 定义参数结构体 在头文件中定义 PID_Params 结构体&#xff0c;包含需要动态调整的 PID 参数&#xff1a; // ms_hal_photo_sensor.h typedef struct {float Kp; // 比例系数float Ki; // …...

如何在大型项目中有效使用TypeScript进行类型定义?

嗨&#xff0c;大家好&#xff0c;我是莫循&#xff0c;Typescript是JavaScript的超集&#xff0c;现在已经广泛用于前端开发&#xff0c;那么在项目中如何用好类型定义呢&#xff1f;以下是一些可以提供参考的案例实践。 一、类型组织策略 1. 模块化类型定义 按功能/模块划分…...

C4D XP 粒子动画云端渲染指南

在 C4D 动画制作领域&#xff0c;XP 粒子特效因其复杂的动力学计算常成为渲染瓶颈。传统本地渲染不仅耗时漫长&#xff0c;还需持续占用高配置硬件。而借助专业云渲染平台&#xff0c;创作者可突破物理限制&#xff0c;高效完成 XP 粒子动画的最终输出。 以渲染 101 平台为例&a…...

mysql知识总结 基础篇

Mysql知识总结 1. 执行一条sql语句 期间发生了什么&#xff1f;1. 如何查看mysql服务被多少个客户端链接了2. 空闲链接会一直闲置嘛&#xff1f;3. mysql的链接数量有限制嘛&#xff1f;4. 我们如何知道mysql要使用哪个索引5. 什么是覆盖索引 2. MySQL 一行记录是怎么存储的&am…...

基于条码数据生成校验密码的C++实现方案

前言 在医疗试剂、工业产品等需要严格追踪管理的领域&#xff0c;条码系统常被用于标识产品信息。本文将详细介绍4种用C实现的条码密码生成算法&#xff0c;这些算法可以根据条码前11位数据生成2位校验密码&#xff08;第9、10位&#xff09;&#xff0c;用于数据校验或简单防…...

前端工具方法整理

文章目录 1.在数组中找到匹配项&#xff0c;然后创建新对象2.对象转JSON字符串3.JSON字符串转JSON对象4.有个响应式对象&#xff0c;然后想清空所有属性5.判断参数不为空6.格式化字符串7.解析数组内容用逗号拼接 1.在数组中找到匹配项&#xff0c;然后创建新对象 const modifi…...

[数据结构]图krusakl算法实现

目录 Kruskal算法 Kruskal算法 我们要在连通图中去找生成树 连通图&#xff1a;在无向图中&#xff0c;若从顶点v1到顶点v2有路径&#xff0c;则称顶点v1与顶点v2是连通的。如果图中任意一对顶点都是连通的&#xff0c;则称此图为连通图。 生成树&#xff1a;一个连通图的最小…...

18-产品经理-跟踪进度

禅道是一个可以帮助产品经理跟踪研发进度的系统。通过禅道&#xff0c;产品经理可以从多个角度了解产品的研发状态。在仪表盘中&#xff0c;可以展示所有产品或单一产品的概况&#xff0c;包括需求、计划和发布数量&#xff0c;研发需求状态&#xff0c;Bug修复率和计划发布数。…...

华为机试—挑7

题目 你需要统计 1 到 n 之间与 7 有关的数字的个数。 与 7 有关的数字包括&#xff1a; 是 7 的倍数&#xff08;如 7,14,21 等&#xff09;&#xff1b;包含数字 7&#xff08;如 17,27,37,⋯ ,70,71,72,⋯等&#xff09;。 示例 输入&#xff1a;20 输出&#xff1a;3 说…...

【区块链安全 | 第三十四篇】合约审计之重入漏洞

文章目录 概念漏洞代码代码审计攻击代码攻击过程总结示例修复建议审计思路 概念 以太坊的智能合约可以互相调用&#xff0c;也就是说&#xff0c;一个合约可以调用另一个合约的函数。除了外部账户&#xff0c;合约本身也可以持有以太币并进行转账。当合约接收到以太币时&#…...

Java虚拟机——JVM(Java Virtual Machine)解析一

1.JVM是什么&#xff1f; 1.1 JVM概念 Java Virtual Machine (JVM) 是JDK的核心组件之一&#xff0c;它使得 Java 程序能够在任何支持 JVM 的设备或操作系统上运行&#xff0c;而无需修改源代码 JDK是什么&#xff0c;JDK和JVM是什么关系&#xff1f;1.Java IDE(Integrated …...

【JVM】question

问题 JVM线程是用户态还是内核态 java线程在jdk1.2之前&#xff0c;是基于名为“绿色线程”的用户线程实现的&#xff0c;这导致绿色线程只能同主线程共享CPU分片&#xff0c;从而无法利用多核CPU的优势。 由于绿色线程和原生线程比起来在使用时有一些限制&#xff0c; jdk1.2…...

页面编辑器CodeMirror初始化不显示行号或文本内容

延迟刷新 本来想延迟100毫秒的&#xff0c;但是会出现样式向左偏移的情况&#xff0c;于是试了试500毫秒&#xff0c;发现就没有问题了&#xff0c;可能是样式什么是需要一个加载过程吧。 useEffect(() > {editorRef.current?.setValue(value || );setTimeout(() > {edi…...

顺序表——C语言实现

目录 一、线性表 二、顺序表 1.实现动态顺序表 SeqList.h SeqList.c Test.c 问题 经验&#xff1a;free 出问题&#xff0c;2种可能性 解决问题 &#xff08;2&#xff09;尾删 &#xff08;3&#xff09;头插&#xff0c;头删 &#xff08;4&#xff09;在 pos 位…...

OpenCV 图形API(21)逐像素操作

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在OpenCV的G-API模块中&#xff0c;逐像素操作指的是对图像中的每个像素单独进行处理的操作。这些操作可以通过G-API的计算图&#xff08;Graph …...

车载联网终端4G汽车TBOX介绍定义与概述

汽车 TBOX&#xff08;Telematics Box&#xff09;是专为汽车设计的远程通信终端设备&#xff0c;属于车联网系统的关键组成部分。车联网系统一般包含主机、汽车 T - BOX、手机 APP 及后台系统。融合了车身网络和 4G 无线通信技术&#xff0c;为汽车提供丰富的 Telematics 服务…...

CentOS无法安装Vim文本编辑器问题以及解决方法

1.问题一&#xff1a;用户权限不够 解决方法一&#xff1a;切换到root用户 解决方法二&#xff1a;给本用户添加权限 2.问题二&#xff1a;镜像源问题&#xff1a;官方镜像源可能已经失效 解决方法&#xff1a; 1. 检查网络连接 2. 检查和配置 DNS 3. 更换镜像源&#…...

Kettle如何与应用集成

Kettle&#xff08;Pentaho Data Integration&#xff0c;PDI&#xff09;可以通过多种方式与应用程序集成&#xff0c;以下是7种主流方法及具体实现示例&#xff1a; 一、命令行调用&#xff08;最基础&#xff09; # 执行转换&#xff08;Transformation&#xff09; ./pan.…...

Pytorch torch.nn.utils.rnn.pad_sequence 介绍

torch.nn.utils.rnn.pad_sequence 是 PyTorch 中一个用于填充序列的实用函数&#xff0c;它主要用于处理长度不一的序列数据&#xff0c;将这些序列填充到相同的长度&#xff0c;以便能将它们组合成一个批量&#xff08;batch&#xff09;输入到神经网络中。以下是详细介绍&…...

4.7正则表达式

1.字符匹配 一般字符匹配自身. 匹配任意字符(换行符\n除外),一个点占一位\转义字符&#xff0c;使其后一个字符改变原来的意思(\.就是.)[......]字符集,对应的位置可以是字符集中的任意字符.字符集中的字符可以逐个列出,也可以给出范围如[abc]或[a-c] [^abc] 表示取反&#xf…...

CogPatInspectTool工具

CogPatInspectTool是康耐视中的一种模板比对的视觉检测工具&#xff0c;主要用于产品不良检测。其核心功能是通过将输入图像与预先训练好的模板进行对比&#xff0c;识别出两者之间的差异&#xff0c;并生成高亮差异图&#xff0c;从而判断产品是否存在缺陷。 效果图 CogPatIn…...

牛客周赛 + 洛谷刷题

秘藏 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 200010; ll a[N], b[N]; int n, k; ll dp[2][N];//dp[i][j]是在i界中取了j之前的最大值 int main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >&…...

【数据结构】图论存储革新:十字链表双链设计高效解决有向图入度查询难题

十字链表 导读一、邻接表的优缺点二、十字链表2.1 结点结构2.2 原理解释2.2.1 顶点表2.2.2 边结点2.2.3 十字链表 三、存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、优势与劣势5.1 优势5.2 劣势5.3 特点 结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff…...

【JavaScript】十五、事件对象与环境对象

文章目录 1、事件对象1.1 获取事件对象1.2 常用属性1.3 案例&#xff1a;回车发布评论 2、环境对象this3、回调函数4、案例&#xff1a;tab切换5、案例&#xff1a;全选文本框&#x1f4d6; 1、事件对象 事件对象&#xff1a; 也是个对象&#xff0c;object&#xff0c;里面存…...

OJ--第N个泰波那契数列

1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; 1 题干部分 2 拆解 1 状态表示&#xff1a;dp[i] 2 状态转移方程:dp[i]dp[i-1]dp[i-2]dp[i-3] 3 初始化:让dp[0]0,dp[1]dp[2]1 4 填表顺序:从dp[3]开始填从左往右填 5 返回值&#xff1a;dp[n]即为返回的…...

Python从入门到高手8.1节-元组类型详解

目录 8.1.1 理解元组类型 8.1.2 元组的类型名 8.1.3 元组的定义 8.1.4 元组的解包 8.1.5 元组是可迭代的 8.1.6 假期就这么结束了 8.1.1 理解元组类型 元组与列表有着相同的数据结构&#xff0c;区别在于&#xff0c;元组是不可变的数据类型&#xff0c;而列表是可变的数…...

使用 Qt 和 OBS 工具检测系统硬件编码器支持情况(NVENC、QSV、AMF)

在开发涉及视频处理的软件时,判断系统是否支持硬件加速编码器(如 NVIDIA NVENC、Intel QSV、AMD AMF)对于性能优化至关重要。本文将介绍如何结合 Qt 与 OBS Studio 附带的小工具程序,实现一个完整、异步且不会卡住 UI 的硬件加速检测模块。 一、背景与目标 硬件加速编码器…...

Python爬虫生成CSV文件的完整流程

引言 在当今数据驱动的时代&#xff0c;网络爬虫已成为获取互联网数据的重要工具。Python凭借其丰富的库生态系统和简洁的语法&#xff0c;成为了爬虫开发的首选语言。本文将详细介绍使用Python爬虫从网页抓取数据并生成CSV文件的完整流程&#xff0c;包括环境准备、网页请求、…...