git详细命令

news2024/9/21 18:38:15

git常用命令,待

  • 1. 前言
  • 2. Git安装
  • 3. 公钥
    • 3.1 生成公钥
    • 3.2 配置SSH 密钥
  • 4. 配置用户名和邮箱
  • 5. git常用命令
    • 5.1 创建仓库命令
      • 5.1.1 git init命令
      • 5.1.2 git clone[url] 命令
    • 5.2 add 增加 / 删除文件 (跟踪文件)
    • 5.3 代码提交
    • 5.4 分支
    • 5.5 标签tag
    • 5.6 远程同步

1. 前言

Git是一种版本控制系统,它常用于以下方面:

  1. 代码管理:Git可以跟踪代码的每一次更改,帮助开发者查看历史记录、比较不同版本之间的差异。

  2. 多人协作:Git支持多个开发者同时在同一个项目上工作,通过分支管理功能,开发者可以独立工作,然后合并他们的更改。

  3. 错误追踪:当代码出现问题时,Git可以帮助开发者快速定位问题发生的时间和原因。

  4. 自动化测试:Git可以与持续集成/持续部署(CI/CD)工具集成,自动化测试代码更改。

  5. 远程仓库管理:Git可以与GitHub、GitLab、Bitbucket等远程仓库服务集成,方便代码的共享和备份。

  6. 版本控制:Git可以创建不同的版本,方便在不同时间点对代码进行快照。

  7. 分支管理:Git的分支操作非常快速和简单,支持创建、合并、删除和比较分支。

  8. 文档管理:除了代码之外,Git也可以用于管理文档和其他类型的文件。

  9. 实验和原型开发:开发者可以在分支上尝试新想法,而不影响主分支的稳定性。

  10. 代码审查:Git支持代码审查流程,帮助团队成员审查和讨论代码更改。

11 .备份和恢复:Git提供了强大的备份和恢复功能,确保代码安全。

  1. 跨平台支持:Git可以在多种操作系统上运行,包括Linux、macOS和Windows。

Git的使用不仅限于软件开发,它也可以用于其他需要版本控制的领域,如文档编写、配置文件管理等。

2. Git安装

在使用Git前我们需要先安装 Git,Git 目前支持 Linux/Unix,Mac和 Windows 平台上运行,下载地址:http://git-scm.com/downloads
本文windows下安装,教程参考博主:https://blog.csdn.net/mukes/article/details/115693833

3. 公钥

3.1 生成公钥

要配置命令行 Git 使用 SSH 密钥,首先需要生成一对 SSH 密钥。

  1. 打开命令行终端,并输入以下命令
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

其中,your_email@example.com 应替换为你的邮箱地址。

  1. 随后系统会提示你输入密钥文件的保存路径,默认情况下会生成在用户目录的 .ssh 子目录下,文件名为 id_rsa 和 id_rsa.pub,可以按回车键使用默认路径和文件名。
  2. 接下来,系统会要求你输入一个密码,这个密码用于保护私钥文件,在每次使用私钥时都需要输入。如果你希望方便地进行远程操作,可以选择不设置密码,直接按回车键跳过。
  3. 完成以上步骤后,系统会生成一对 SSH 密钥,其中 id_rsa 是私钥文件,而 id_rsa.pub 则是公钥文件。

3.2 配置SSH 密钥

在这里插入图片描述

  1. 打开命令行终端在公钥位置查看公钥(生成时有默认位置):cat XXX 或者直接打开文件查看。
  2. 再到 github 添加公钥的地方 点击 “Add SSH Key” 或类似的按钮,并将刚才复制的公钥粘贴到相应的输入框中。
  3. 接下来,打开命令行终端,并使用以下命令来配置 Git 使用 SSH 密钥:
git config --global user.email "your_email@example.com"
git config --global user.name "Your Name"
git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa"
  1. 现在,你就可以使用命令行 Git 来进行远程操作了,而无需每次都输入密码。

4. 配置用户名和邮箱

在 Git 中配置用户名和邮箱信息非常重要,主要原因如下:

  1. 身份识别:Git 使用配置的用户名和邮箱作为提交(commit)时的作者信息,这有助于识别是谁进行了代码的更改。

  2. 责任归属:当多人协作开发同一个项目时,正确的用户名和邮箱可以帮助团队成员了解每次提交的来源,明确责任归属。

  3. 记录历史:Git 的提交历史记录中包含了用户名和邮箱信息,这有助于在回顾项目历史时,快速找到相关责任人。

  4. 沟通协调:如果项目中出现问题,或者需要讨论某个特定的提交,拥有正确的联系信息可以方便团队成员之间的沟通和协调。

  5. 贡献记录:对于开源项目,贡献者的用户名和邮箱信息会被记录在项目的贡献者列表中,这是对贡献者的认可。

  6. 安全性:配置用户名和邮箱可以作为 Git 操作的基本验证,虽然不是严格的安全措施,但有助于维护操作的透明性。

  7. 工具集成:许多集成开发环境(IDE)和持续集成/持续部署(CI/CD)工具会使用 Git 配置的用户名和邮箱信息来显示提交者信息。

  8. 邮件通知:一些 Git 服务和工具会根据提交中的作者信息发送邮件通知,正确的邮箱地址确保了通知的准确性。

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

这里的 “Your Name” 是你希望在提交历史中显示的名字,“your_email@example.com” 是你希望与提交关联的电子邮件地址。使用 --global 选项配置的用户名和邮箱会应用于你计算机上所有的 Git 仓库,你也可以在特定仓库中使用不带 --global 选项的命令来为该仓库单独配置用户名和邮箱。

查看当前 Git 配置:git config --list
编辑Git配置文件:git config -e [–global]
检查关联的远程仓库:git remote -v

5. git常用命令

5.1 创建仓库命令

5.1.1 git init命令

git init 是 Git 命令行工具中的一个命令,它的作用是初始化一个新的 Git 仓库。当你在一个项目目录中运行 git init 命令时,Git 会在该目录中创建一个名为 .git 的隐藏文件夹,这个文件夹包含了所有 Git 仓库所需的元数据和对象数据库。
具体来说,git init 命令执行后,会完成以下几个步骤:

  1. 创建 .git 目录:在当前目录下创建一个名为 .git 的隐藏文件夹,这是 Git 仓库的配置和元数据存储的地方。
  2. 配置文件:在 .git 目录中创建配置文件,如 config 文件,用于存储仓库的配置信息,例如仓库的名称、作者信息等。
  3. 对象数据库:初始化 Git 的对象数据库,用于存储所有提交的快照和相关数据。
  4. 引用日志:创建引用日志,记录当前分支的指向以及其他重要的引用信息。
  5. 钩子脚本:虽然 git init 不会自动创建钩子脚本,但 .git 目录中会包含钩子脚本的模板,开发者可以根据需要创建和使用这些脚本。
  6. 准备跟踪文件:此时,仓库中还没有任何文件被跟踪。你可以使用 git add 命令将文件添加到仓库中,然后使用 git commit 命令进行提交。

使用 git init 初始化仓库是开始使用 Git 进行版本控制的第一步(你希望仓库在哪个目录下就在哪个目录下 git init)。一旦仓库初始化完成,你就可以开始添加文件、提交更改,并享受 Git 提供的所有版本控制功能。

5.1.2 git clone[url] 命令

git clone 命令用于从现有的 Git 仓库(可以是本地的也可以是远程的)复制一个完整的副本到一个新的目录。这个副本包含了所有分支、标签和提交历史记录。以下是 git clone 命令的一些关键作用:

  1. 创建本地副本:从远程仓库克隆一个完整的本地副本,包括所有的分支、标签和提交记录。
  2. 保留历史信息:克隆的仓库包含了原始仓库的所有历史信息,可以查看任何时间点的代码状态。
  3. 开始新的开发:开发者可以通过克隆仓库来开始新的项目开发,或者为现有项目贡献代码。
  4. 备份和迁移:可以用来备份远程仓库,或者将仓库从一个位置迁移到另一个位置。
  5. 分支管理:克隆的仓库中包含了所有分支,可以方便地切换到不同的分支进行工作。
  6. 离线工作:克隆的仓库是完全独立的,可以在没有网络连接的情况下进行工作。
  7. 与远程仓库同步:克隆后,可以使用 git fetch、git pull 或 git push 等命令与远程仓库同步更改。
  8. 创建多个工作环境:可以克隆同一个仓库到不同的目录,用于不同的开发环境或目的。

例如,克隆一个名为 example 的远程仓库到当前目录:
git clone https://github.com/user/example.git

具体使用:
1. 克隆到特定目录:你可以使用 --name 选项为克隆的目录指定一个不同的名称:
git clone https://github.com/user/repo.git 【my_directory_name】
这会在当前目录下创建一个名为 my-directory-name 的目录(或指定哪个目录),并将仓库内容克隆到这个目录中。
2. 克隆特定分支
默认情况下,git clone 会克隆所有分支。如果你想克隆特定的分支,可以使用 --branch选项:
git clone --branch https://github.com/user/repo.git
这将只克隆指定的分支(将repo仓库的某分支克隆过来)。
3. 限制克隆深度
如果你不需要整个历史记录,可以使用 --depth 选项来限制克隆的提交数量。这在节省时间和带宽方面非常有用:
git clone --depth 1 https://github.com/user/repo.git
这将只克隆最新的提交。
4. 克隆子模块
如果仓库包含子模块,你可以使用 --recurse-submodules 选项来同时克隆子模块:
git clone --recurse-submodules https://github.com/user/repo.git
5. 配置远程仓库
使用 --origin 选项可以为克隆的远程仓库设置不同的名称:
git clone --origin [自定义仓库名字] https://github.com/user/repo.git
这将设置远程仓库的名称为 自定义仓库名字 而不是默认的origin。

5.2 add 增加 / 删除文件 (跟踪文件)

本地修改的代码需要先添加 add 到暂存区然后再commit 到本地仓库

命令说明
git add [file1] [file2] …添加指定文件到暂存区
*git add .txt匹配加入
git add [dir]添加指定目录到暂存区,包括子目录
git add .添加当前目录的所有文件到暂存区
git rm [file1] [file2] …删除工作区文件,并且将这次删除放入暂存区
git rm --cached [file]停止追踪指定文件,但该文件会保留在工作区
git mv [file-original] [file-renamed]改名文件,并且将这个改名放入暂存区

5.3 代码提交

命令说明
git commit -m “说明”提交暂存区到仓库区
git commit [file1] [file2] … -m [message]提交暂存区的指定文件到仓库区
git commit -a提交工作区自上次commit之后的变化,直接到仓库区
git commit -v提交时显示所有diff信息
git commit --amend -m [message]使用一次新的commit,替代上一次提交
如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend [file1] [file2] …重做上一次commit,并包括指定文件的新变化

5.4 分支

远程仓库有不同的分支,提交代码可以提交到 主分支 还可以在其它分支,
在这里插入图片描述
然后本地代码也可以有不同分支,可以在不同分支写代码。

git 为什么创建新分支?

  1. 隔离开发:创建新分支可以让你在隔离的环境中开发新功能或进行实验,而不会影响主分支(通常是 master 或 main)的稳定性(保证主分支能正常运行)。
  2. 特性开发:每个特性或用户故事可以在单独的分支上开发,这样有助于组织代码和跟踪进度(可单独只验证你的功能)。
  3. 错误修复:创建分支来修复特定错误,可以集中精力解决问题,同时保持主分支的代码不受干扰(假如你改的代码在主分支出错了,其它功能代码也受影响)。
  4. 实验性变更:在新分支上尝试实验性变更,如果结果不满意,可以轻易地丢弃该分支,而不会影响其他工作。(分支的代码如果修改导致错误太多,可抛弃该分支代码,重新拉一个分支)
  5. 代码审查:在新分支上开发的代码可以在合并到主分支前进行代码审查,确保代码质量和项目标准。
  6. 多人协作:在团队中工作时,不同的开发者或团队可以在不同的分支上工作,减少直接在主分支上的冲突。
  7. 特性开关:有时使用分支作为特性开关,通过切换分支来控制功能的开启或关闭。(切换分支可选择是否增加这个功能
  8. 准备发布:在发布新版本前,可以在新分支上进行最终的测试和准备,包括更新文档和版本号。(比如在最终版本加维测日志测试功能是否正常,保证主分支代码整体整洁
  9. 并行开发:允许多个开发者或团队并行工作在不同的功能或任务上,提高开发效率。(互不影响
  10. 版本控制:通过分支管理不同的版本或迭代,使得在不同版本间切换和维护变得更加容易。(这个版本有问题可切换版本
命令说明
git branch列出所有本地分支
git branch -r列出所有远程分支
git branch -a列出所有本地分支和远程分支
git branch [branch-name]新建一个分支,但依然停留在当前分支
git checkout -b [branch]新建一个分支,并切换到该分支
git branch [branch] [commit]新建一个分支,指向指定commit
git branch --track [branch] [remote-branch]新建一个分支,与指定的远程分支建立追踪关系
git checkout [branch-name]切换到指定分支,并更新工作区
git checkout -切换到上一个分支
git branch --set-upstream [branch] [remote-branch]建立追踪关系,在现有分支与指定的远程分支之间
git merge [branch]合并指定分支到当前分支
git cherry-pick [commit]选择一个commit,合并进当前分支
git branch -d [branch-name]删除分支
git push origin --delete [branch-name]或git branch -dr [remote/branch]删除远程分支

本地新分支合并到远程主分支要保证新分支是最新的吗?
是的,通常在将本地分支合并到远程主分支之前,需要确保本地分支是最新的。这意味着你的本地分支应该包含远程主分支上所有最新的提交。这样做可以减少合并冲突,确保代码的一致性,并使得合并过程更加顺利。
以下是确保本地分支是最新状态的步骤:

  1. 获取远程分支的最新更改:
    使用 git fetch 命令从远程仓库拉取最新的更改。这会更新你的远程跟踪分支,例如 origin/main 或 origin/master。
  2. 检查当前状态:
    使用 git status 查看当前工作目录的状态,确保没有未提交的更改。
  3. 切换到你的本地分支:
    如果你的更改在一个特定的本地分支上,使用 git checkout <你的本地分支名> 切换到该分支。
  4. 合并远程主分支:
    在本地分支上,使用 git merge origin/main(或 origin/master,取决于你的远程主分支名称)将远程主分支的更改合并到你的本地分支。
  5. 解决合并冲突(如果有的话):
    如果在合并过程中出现冲突,你需要手动解决这些冲突,然后使用 git add 将解决后的文件添加到暂存区,并使用 git commit 提交更改。
  6. 测试更改:
    在合并完成后,进行必要的测试以确保更改没有引入新的问题。
  7. 推送本地分支的更改:
    使用 git push 将你更新后的本地分支推送到远程仓库。如果你正在将更改合并到远程主分支,可能需要使用 git push origin <你的本地分支名>:main(或相应的远程主分支名称)。
  8. 确保远程主分支指向正确:
    如果你直接在远程主分支上工作,确保在推送之前没有其他远程跟踪分支的更新丢失。
    通过这些步骤,你可以确保在将本地分支合并到远程主分支之前,你的本地分支已经包含了所有最新的更改,从而减少合并时的问题和冲突。

5.5 标签tag

标签作用是什么?
Git 标签可以通俗理解为给代码打上的“书签”或“标记”,主要用途包括:

  1. 版本记录:就像给书的不同章节贴上标签一样,Git 标签用于记录代码的不同版本,比如软件的1.0版、2.0版等。
  2. 快速定位:当你想快速找到或切换到某个特定版本的代码时,标签提供了一个方便的参考点。
  3. 备份点:在进行重大更新或更改前,可以通过打标签来作为备份,这样即使后续更新出现问题,也能快速回退。
  4. 发布准备:在准备发布新版本前,打上标签可以确保团队成员都是在相同的代码基础上工作,减少出错。
  5. 记录重要更新:对于项目中的重要更新或里程碑,打标签可以作为记录,方便将来回顾。
  6. 避免混乱:在多人协作的项目中,标签可以帮助团队成员跟踪哪些代码是已经测试和批准的。
  7. 自动化流程:在自动化的构建和部署流程中,标签可以用来指定应该部署哪些版本的代码。
  8. 清晰的历史:标签为代码的提交历史添加了易于理解的标记,使得理解项目的发展脉络更加清晰。
  9. 错误追踪:如果某个版本发现了问题,可以通过标签快速定位并修复该版本的问题。

简而言之,Git 标签就像是一个标记,帮助你和你团队成员快速识别、访问和引用代码库中的特定点。

  1. 创建新标签:
git tag <tagname>   #为当前 HEAD 或指定提交创建一个简单的标签。
  1. 创建带有注释的标签:
git tag -a <tagname> -m "tag message"
  1. 列出所有标签:
git tag     #显示当前 Git 仓库中的所有标签列表。
  1. 删除标签 :
git tag -d <tagname>    #删除本地的标签。注意,这不会从远程仓库中删除标签。
  1. 推送标签到远程仓库:
git push origin <tagname>     #将指定的本地标签推送到远程仓库。
  1. 推送所有标签到远程仓库:
git push --tags    #将所有本地标签推送到远程仓库。
  1. 删除远程标签:
git push origin --delete <tagname>   #从远程仓库中删除指定的标签。
  1. 查看标签列表:
git tag -l <pattern>   #根据模式搜索标签,<pattern> 是一个匹配标签名的搜索模式。
  1. 搜索标签:
git tag --search <search-term>   #根据搜索词搜索标签名。

5.6 远程同步

git reset --hard 放弃本地未提交更改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2051642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能优化理论篇 | Cache VS Buffer,傻傻分不清 ?

性能优化系列目录&#xff1a; 性能优化理论篇 | 彻底弄懂系统平均负载 性能优化理论篇 | swap area是个什么东西 从free命令开始 free 命令是一个在类 Unix 操作系统中用于显示内存使用情况的工具。它的输出包含了系统内存的不同方面&#xff0c;如总内存、已用内存、空闲内存…

不同路径 II[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 一个机器人位于一个m x n网格的左上角 &#xff08;起始点在下图中标记为Start&#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为Finish&#xff09;。 现在考虑网格中有…

@[TOC](letcode 分类练习 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度)

letcode 分类练习 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度 226.翻转二叉树101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度 226.翻转二叉树 利用自底向上的遍历交换左子树和右子树 class Solution { public:TreeNode* invertTr…

后端Web之数据库(以MySQL为例)

目录 1.概述 2.MySQL 3.DDL 4.DML 5.DQL 1.概述 对于我们自己写的一些小功能&#xff0c;数据一般存储在文件中&#xff0c;比如XML文件。而在实际项目中&#xff0c;数据都是存放在数据库中的。数据库&#xff08;DataBase &#xff09;是一个存储数据的集合&#xff0c…

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧&#xff0c;网络无敌&#xff01;Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【计算机硬件蓝光光驱】

蓝光光驱&#xff08;Blu-ray Disc Drive&#xff09;是一种光盘驱动器&#xff0c;用于读取和写入蓝光光盘。蓝光光盘是一种高容量、高清晰度的光存储介质&#xff0c;用于存储视频、音频、数据等多种媒体内容。蓝光光驱的名称“蓝光”来源于其使用的蓝色激光光束&#xff0c;…

Windows 安装 及解决 tvm 无法打开 源 文件 “dmlc/logging.h“

如果你在编译 TVM 时遇到 dmlc/logging.h 文件缺失的问题&#xff0c;很可能是因为在克隆 TVM 仓库时没有包含其子模块&#xff0c;而这些子模块&#xff08;如 dmlc-core&#xff09;是通过 Git 管理的。解决步骤 安装 Git&#xff1a; 如果你还没有安装 Git&#xff0c;需要先…

ES6学习笔记(九)——class(类)

1. 封装 传统面向对象的编程序语言都是【类】的概念&#xff0c;对象都是由类创建出来&#xff0c;然而早期 JavaScript 中是没有类的&#xff0c;面向对象大多都是基于构造函数和原型实现的&#xff0c;但是 ECMAScript 6 规范开始增加了【类】相关的语法&#xff0c;使得 Ja…

虚幻5|AI视力系统,听力系统,预测系统(1)视力系统

继宠物伴随系统初步篇后续 虚幻5|AI巡逻宠物伴随及定点巡逻—初步篇-CSDN博客 一&#xff0c;听力系统 1.打开宠物ai的角色蓝图 2.选中ai感知组件 右侧细节&#xff0c;找到ai感知&#xff0c;添加感知配置&#xff0c;我们需要的是ai视力配置 3.选中左侧创建的ai感知组件&…

CLRerNet推理详解及部署实现(上)

目录 前言1. 概述2. 环境配置3. Demo测试4. ONNX导出初探5. ONNX导出优化6. ONNX导出总结结语下载链接参考 前言 继续我们的车道线检测任务&#xff0c;之前我们分享了基于 anchor 的 LaneATT 模型以及 CVPR2022 的 SOTA 方案 CLRNet&#xff0c;这里我们分享 WACV2024 中的一个…

如何在Linux系统上使用ONLYOFFICE文档编辑PDF文件

​对Linux用户来说&#xff0c;得益于各类免费PDF编辑器&#xff0c;编辑PDF文件从来都不是无解难题。 如果您需要为PDF文件添加注释、留下批注、编辑已有文本或添加新文本框、插入图片或形状、删除某些页面或永久删除页面&#xff0c;您始终可以找到合适的应用&#xff0c;轻…

有关JavaScript的函数定义和函数的两种声明方式

1.函数 函数是一段可重复执行的代码块&#xff0c;它可以接收参数&#xff0c;并返回结果。在JavaScript中&#xff0c;函数用于封装可重用的代码&#xff0c;提高代码的可读性和可维护性。 1.1 函数的定义 函数的定义包括以下几个部分&#xff1a; 函数名称&#xff1a;用…

Hive3:表性能优化-分区与分桶

一、分区 1、概念 我们知道&#xff0c;一个Hive表&#xff0c;对应的HDFS是一个文件夹。 那么&#xff0c;当数据非常多的时候&#xff0c;存放在一个文件夹中&#xff0c;后期进行查询操作会影响性能。 所以&#xff0c;Hive引入了分区管理的方式。 本质就是&#xff0c;在…

Datawhale X 魔搭 AI夏令营-AIGC方向-LoRA学习笔记

LoRA&#xff08;Low-Rank Adaptation&#xff09;是一种用于优化大规模预训练模型的微调技术&#xff0c;特别适用于在资源有限的情况下&#xff0c;对模型进行高效且低成本的微调。LoRA的核心思想是通过低秩分解方法&#xff0c;仅微调模型的少数参数&#xff0c;从而显著减少…

关于图像亮度相关的调试总结

1、问题背景 关于图像亮度的调试&#xff0c;是整个ISP中非常重要的一块&#xff0c;它决定了图像整体的亮度、对比度、细节、以及噪声&#xff0c;对人眼有非常直观的感受&#xff0c; 之前也就具体问题&#xff0c;整理过几篇图像亮度模块相关的调试总结&#xff1a; 关于图…

标题中有多少个字符(c语言)

1.//描述 //凯刚写了一篇美妙的作文&#xff0c;请问这篇作文的标题中有多少个字符&#xff1f; //注意&#xff1a;标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时&#xff0c;空格和换行符不计算在内。 //输入描述&#xff1a; //输入文件只有一…

【12】KMP和Manacher算法

目录 一.KMP算法解决的问题 二.Manacher算法解决的问题 基本概念 优化 一.KMP算法解决的问题 暴力求解复杂度O(N*M) next数组&#xff1a;next[i]表示arr[0...i-1]的前缀和后缀的最长公共长度。 Y位置失败&#xff0c;将前缀和后缀完全匹配&#xff0c;将前缀的部分和后缀对…

软件测试---接口自动化

一、pythonrequests模块 &#xff08;1&#xff09;requests全局观 安装&#xff1a;pip install requests 1.发送请求 ①requests.get() 发送get请求 ②requests.post() 发送post请求 data和json的区别&#xff1a;取绝于你需要传递的参数的类型。 files&#xff1a;文件上…

大学成长之路:如何从烧锅炉的逆袭成为FPGA大厂高管

如何从烧锅炉的逆袭成为FPGA大厂Sales Director 在即将到来的开学季&#xff0c;很多学子从高中生成为一个大学生&#xff0c;走入新的征程。大学生涯是人生的一个非常重要的阶段&#xff0c;如何度过大学4年的时光&#xff0c;并学有所成&#xff0c;是很多大学新生和家长思考…

Spring IoCDI(下)—DI的尾声

我们之前学习了控制反转IoC&#xff0c;接下来就开始学习依赖注入DI的细节。 依赖注入是一个过程&#xff0c;是指IoC容器在创建Bean时&#xff0c;去提供运行时所依赖的资源&#xff0c;而资源指的就是对象。我们使用 Autowired 注解&#xff0c;完成依赖注入的操作。简单来说…