Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理

news2024/12/28 8:04:33

在这里插入图片描述

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

文章目录

  • Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理
    • 摘要:
    • 1. 引言
    • 2. 什么是Git?
      • 2.1 历史背景与由来
      • 2.2 特点与优势
        • 2.2.1 分布式版本控制
        • 2.2.2 强大的分支管理
        • 2.2.3 本地化操作
        • 2.2.4 数据完整性
        • 2.2.5 多种工作流支持
    • 3. 版本控制系统简介
      • 3.1 集中式版本控制系统
        • 3.1.1 优点
        • 3.1.2 缺点
      • 3.2 分布式版本控制系统
        • 3.2.1 优点
        • 3.2.2 缺点
    • 4. Git的核心概念
      • 4.1 仓库(Repository)
        • 使用场景:
      • 4.2 提交(Commit)
        • 使用场景:
      • 4.3 分支(Branch)
        • 使用场景:
      • 4.4 合并(Merge)
        • 使用场景:
      • 4.5 标签(Tag)
        • 使用场景:
    • 5. Git的工作原理
      • 5.1 提交对象(Commit Object)
        • 工作原理:
      • 5.2 树对象(Tree Object)
        • 工作原理:
      • 5.3 引用(Reference)
        • 工作原理:
    • 6. 分布式版本控制的优势
      • 6.1 离线操作
      • 6.2 协作性能
      • 6.3 分支管理
      • 6.4 安全性
    • 7. Git的基本操作
      • 7.1 初始化Git仓库
      • 7.2 文件跟踪与提交
      • 7.3 查看提交历史
      • 7.4 创建分支
      • 7.5 切换分支
      • 7.6 合并分支
      • 7.7 查看状态
    • 8. 远程仓库与协作
      • 8.1 远程仓库的概念
      • 8.2 使用远程仓库
        • 8.2.1 克隆远程仓库
        • 8.2.2 添加远程仓库
      • 8.3 团队协作流程
        • 8.3.1 拉取(Pull)
        • 8.3.2 推送(Push)
        • 8.3.3 合并请求(Pull Request)
    • 9. 解决代码冲突
    • 10. 附录:Git常用命令速查表
    • 11. 总结
    • 12. 参考资料
  • 原创声明

在这里插入图片描述

Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理

摘要:

本篇博客将带您了解Git版本控制系统的基本概念和工作原理。Git在现代软件开发中扮演着重要的角色,通过本文的介绍,您将了解Git的历史背景、核心概念、工作原理以及与分布式版本控制系统的优势比较。同时,我们还会介绍Git的基本操作、远程仓库与协作、解决代码冲突的方法和技巧,并提供Git常用命令的速查表供您参考。

1. 引言

Git是目前最流行的版本控制系统之一,在现代软件开发中扮演着重要的角色。它能够有效地跟踪文件变化、协作开发,并存储项目的历史记录。本文的目的是向读者介绍Git的基本概念和工作原理,帮助初学者快速上手使用Git,并帮助有经验的开发者深入了解Git的内部机制。

2. 什么是Git?

Git是一个免费、开源的分布式版本控制系统,由Linus Torvalds于2005年创建。它因其速度快、灵活性高和强大的分支管理能力而广受欢迎。

2.1 历史背景与由来

Git的历史可以追溯到2005年,当时Linux内核社区使用BitKeeper作为版本控制系统。然而,由于一些争议和限制,Linux社区需要一个替代方案。于是,Linus Torvalds决定亲自开发一个新的版本控制系统,这就是Git的由来。

Linus Torvalds在Git的设计和开发过程中借鉴了一些现有版本控制系统的优点,并加入了自己的创新。Git最初的目标是为了更好地管理Linux内核的开发,但其简洁高效的设计很快引起了全球开发者的关注,逐渐成为最受欢迎的版本控制系统之一。

2.2 特点与优势

Git之所以如此受欢迎,主要归功于以下特点与优势:

2.2.1 分布式版本控制

Git是一种分布式版本控制系统,每个开发者都可以在本地拥有完整的代码仓库,不必依赖中央服务器。这样的设计使得团队成员可以在没有网络连接的情况下继续工作,提高了开发的灵活性和效率。

2.2.2 强大的分支管理

Git在分支管理方面表现出色。创建、合并和切换分支非常快速和高效,这为团队的协同开发和并行工作提供了便利。分支的使用使得开发者可以独立开发新功能或修复bug,而不会影响主线代码,最后再将其合并回主分支。

2.2.3 本地化操作

Git的所有操作都是本地化的,无需联网即可进行版本控制操作。这使得Git的速度非常快,开发者可以快速地提交、切换分支和查看历史记录。

2.2.4 数据完整性

Git中的所有数据都以SHA-1哈希值存储,这意味着每个文件和版本都有唯一的标识,并保证数据的完整性和安全性。

2.2.5 多种工作流支持

Git适用于多种开发工作流程,可以根据团队的需求和开发模式来选择合适的工作流。

总的来说,Git作为一个高效、灵活且功能强大的版本控制系统,为开发者提供了极大的便利和支持,成为现代软件开发中不可或缺的工具。

3. 版本控制系统简介

版本控制系统是一种记录文件内容变化的系统,它对文件的每次修改都进行记录和保存。版本控制系统的主要目的是帮助团队成员协同开发,并有效地管理代码。

3.1 集中式版本控制系统

在集中式版本控制系统中,所有的文件和版本都存储在中央服务器上。开发者通过与服务器交互来获取文件的最新版本,然后进行开发工作。代表性的集中式版本控制系统包括SVN(Subversion)。

3.1.1 优点

  • 管理简单:所有版本信息集中存储在服务器上,易于管理和控制。
  • 安全性高:服务器存储所有文件,团队成员只能通过服务器进行协作,可以有效保护代码安全。

3.1.2 缺点

  • 单点故障:如果服务器发生故障,所有团队成员将无法正常工作。
  • 需要联网:开发者必须联网才能进行版本控制操作,限制了团队的工作灵活性。

3.2 分布式版本控制系统

分布式版本控制系统中,每个开发者都拥有完整的代码仓库,包含完整的历史记录。开发者可以在本地进行版本控制操作,不需要始终依赖中央服务器。代表性的分布式版本控制系统包括Git、Mercurial等。

3.2.1 优点

  • 分布式协作:每个开发者都有完整的代码仓库,可以在本地独立开发和提交,然后再将修改推送到远程仓库,从而实现分布式协作。
  • 离线操作:由于每个开发者本地拥有完整的代码仓库,可以在没有网络连接时继续工作,不受网络状态的影响。

3.2.2 缺点

  • 初始复制较慢:在开始时,需要将远程仓库克隆到本地,这可能需要一些时间。
  • 学习曲线较陡:相对于集中式版本控制系统,分布式版本控制系统有一定的学习曲线。

综上所述,版本控制系统是现代软件开发不可或缺的工具,而分布式版本控制系统具有更多的优势,因其灵活性和高效性而成为首选。Git作为最流行的分布式版本控制系统之一,拥有强大的功能和便利

的特性,是众多开发团队的选择。

4. Git的核心概念

Git作为一个分布式版本控制系统,有一些核心概念,这些概念是理解Git工作原理和使用Git的关键。在本节中,我们将介绍Git的核心概念,并解释它们在项目开发中的作用和使用场景。

4.1 仓库(Repository)

Git仓库是存储项目所有文件、历史记录和元数据的地方。它可以理解为项目的数据库,保存了项目从创建到最新状态的所有信息。在仓库中,每个提交(Commit)都包含了项目的一个快照和相关的元数据,这样就可以随时回溯到任意历史状态。

使用场景:

  • 创建新项目:通过在本地或远程服务器上初始化一个Git仓库,您可以开始一个新的项目。
  • 克隆项目:通过从远程仓库克隆一个Git仓库,您可以复制项目到本地并开始参与开发。
  • 回溯历史:通过查看提交历史,您可以回溯到项目的不同版本,了解每个版本之间的差异和变化。

4.2 提交(Commit)

提交是Git中最基本的操作,它代表了项目中的一个快照或一个代码的更改。每次提交都会生成一个唯一的SHA-1哈希值,用于标识该次提交。每个提交都包含了作者、提交时间、提交信息以及指向它所包含的快照和上一个提交的引用。

使用场景:

  • 保存更改:当您在项目中修改了文件后,将这些更改提交到仓库,就会生成一个新的提交,记录了这些更改的状态。
  • 添加描述:每次提交都需要添加提交信息,描述本次更改的内容,方便其他开发者理解您的工作内容。

4.3 分支(Branch)

分支是Git中一个非常重要的概念,它是项目的一个独立线路,是从某个提交派生出来的指针。默认情况下,Git会创建一个名为"master"的主分支,但您也可以创建其他分支来并行开发不同的功能或修复bug。

使用场景:

  • 并行开发:通过创建不同的分支,不同开发者可以同时处理不同的任务,而互不干扰。
  • 临时修复:当项目的主分支出现问题时,您可以创建一个临时分支来快速修复bug,而不影响主分支的开发。

4.4 合并(Merge)

合并是将两个分支的更改合并成一个新的提交,以使两个分支的历史记录保持同步。在合并过程中,Git会尝试自动合并更改,但有时可能会出现冲突,需要手动解决。

使用场景:

  • 将功能集成到主分支:当一个功能开发完成后,您可以将该功能分支合并到主分支,以便发布新功能。
  • 解决冲突:当两个分支上有相同文件的不同修改时,合并会产生冲突。您需要手动解决冲突,以确保合并成功。

4.5 标签(Tag)

标签是用于标记项目中的重要点,比如版本发布。与分支不同,标签是不可变的,一旦创建后就不会再改变。它们通常用于指定版本号或重要的里程碑。

使用场景:

  • 版本发布:在发布一个版本时,您可以创建一个标签来标记该版本的稳定状态,方便日后回溯和参考。
  • 重要事件:当项目达到一个重要的里程碑,比如完成一个重要功能或修复一个重要的问题时,可以创建一个标签来标记这个事件。

以上是Git的核心概念,它们为项目开发提供了强大的版本控制和管理能力。理解这些概念将帮助您更好地使用Git,并在团队协作中发挥更大的作用。

5. Git的工作原理

Git的工作原理涉及到一些重要的概念,例如提交对象(Commit Object)、树对象(Tree Object)和引用(Reference)。深入了解Git的工作原理将帮助我们更好地理解Git是如何跟踪文件变化和存储历史记录的。

5.1 提交对象(Commit Object)

提交对象是Git中的基本单位,每次提交都会生成一个唯一的提交对象。提交对象包含了当前项目的快照信息和提交相关的元数据,比如作者、提交时间和提交信息。

工作原理:

当您提交更改时,Git会创建一个提交对象,该对象包含了项目文件的快照,记录了这次提交的作者、时间和提交信息,以及指向前一个提交对象的引用。这样就形成了一条提交历史链,可以方便地回溯项目的历史状态。

5.2 树对象(Tree Object)

树对象是一个目录结构的快照,它对应着项目文件在某个提交时的状态。每次提交都会生成一个树对象,其中包含了当前项目文件和目录的结构和内容信息。

工作原理:

当您提交更改时,Git会创建一个树对象,该对象对应着当前项目文件和目录的结构,记录了文件的位置、名称和内容信息。这样就可以通过树对象快速查找和恢复项目文件在某个提交时的状态。

5.3 引用(Reference)

引用是指向提交对象的指

针,它可以是分支、标签或其他指向提交的指针。引用可以帮助我们标记提交历史中的重要点,方便查找和管理。

工作原理:

当您创建一个分支或标签时,Git会创建一个引用,它指向某个提交对象。随着新的提交产生,引用也会随之移动,始终指向最新的提交。通过引用,您可以方便地找到不同分支或标签对应的提交历史。

通过了解Git的工作原理,我们可以更深入地理解Git是如何跟踪文件变化、保存历史记录和实现版本控制的。这些核心概念和工作原理为我们在实际项目中更加灵活和高效地使用Git提供了基础。

6. 分布式版本控制的优势

分布式版本控制系统(DVCS)相较于集中式版本控制系统(CVCS)具有许多优势,这些优势使得分布式版本控制系统如Git越来越受欢迎。以下是分布式版本控制的优势:

6.1 离线操作

在分布式版本控制系统中,每个开发者都有完整的代码仓库,不必始终依赖中央服务器。这意味着即使在没有网络连接的情况下,开发者仍然可以进行版本控制操作和提交更改。这种离线操作的能力在实际开发中非常有用,尤其是在旅途或网络连接不稳定的情况下,团队成员可以持续工作而不受网络状态的影响。

6.2 协作性能

由于每个开发者都拥有完整的代码仓库,分布式版本控制系统可以支持更高效的协作方式。开发者可以在本地创建分支、提交更改和合并,而不必每次都依赖中央服务器。这种分散的协作模式可以大大减轻服务器的负担,提高团队的协作性能和开发效率。

6.3 分支管理

分布式版本控制系统在分支管理方面表现出色。创建、合并和切换分支都非常快速和高效,使得团队成员可以并行开发不同的功能或修复bug。每个开发者都可以在本地创建分支,独立进行开发,而不必影响主线代码。这种灵活的分支管理使得团队的开发流程更加流畅和灵活。

6.4 安全性

由于每个开发者都有本地完整的代码仓库,分布式版本控制系统具有更高的安全性。即使中央服务器发生故障或数据丢失,团队成员的本地仓库仍然包含完整的项目历史记录,可以用于恢复和重建。这种安全性和冗余性使得分布式版本控制系统在保护项目数据方面更加可靠。

综上所述,分布式版本控制系统的离线操作、协作性能、分支管理和安全性等优势,使得它成为现代软件开发中首选的版本控制系统。Git作为其中最流行和广泛使用的分布式版本控制系统,为开发团队提供了强大的版本控制能力和优秀的协作体验。

7. Git的基本操作

在本节中,我们将介绍Git的基本操作,这些操作是使用Git进行版本控制的关键步骤。对于初学者来说,掌握这些基本操作是非常重要的。

7.1 初始化Git仓库

在开始使用Git之前,您需要在项目目录中初始化一个Git仓库。使用以下命令来初始化Git仓库:

git init

7.2 文件跟踪与提交

在Git中,您需要明确告诉Git哪些文件需要进行版本控制。使用以下命令来将文件添加到暂存区:

git add <file1> <file2> ...

一旦您添加了所有要提交的文件到暂存区,使用以下命令来提交这些更改:

git commit -m "提交说明"

7.3 查看提交历史

您可以使用以下命令来查看项目的提交历史:

git log

7.4 创建分支

在Git中,创建分支是非常简单的。使用以下命令来创建一个新的分支:

git branch <branch-name>

7.5 切换分支

切换分支是非常常见的操作。使用以下命令来切换到其他分支:

git checkout <branch-name>

7.6 合并分支

当您在其他分支完成了开发工作后,可以将该分支合并到主分支。使用以下命令来合并分支:

git merge <branch-name>

7.7 查看状态

您可以使用以下命令来查看项目的当前状态:

git status

以上是Git的一些基本操作,这些操作可以帮助您开始使用Git进行版本控制。熟练掌握这些基本操作后,您将能更好地利用Git的功能,并在团队协作中发挥更大的作用。

8. 远程仓库与协作

8.1 远程仓库的概念

远程仓库是位于云端或其他服务器上的Git仓库,用于存储项目的代码和版本历史。它可以是像GitHub、GitLab等代码托管平台,也可以是您自己搭建的服务器。远程仓库允许多个开发者在不同的地方协同工作,并可以通过推送(Push)和拉取(Pull)操作来同步代码。

8.2 使用远程仓库

8.2.1 克隆远程仓库

要开始与远程仓库进行协作,首先需要将远程仓库克隆到本地。使用以下命令来克隆远程仓库:

git clone <remote-url>

其中,<remote-url>是远程仓库的URL地址,通常以.git结尾。

8.2.2 添加远程仓库

在克隆远程仓库后,Git会自动将其添加为默认远程仓库,并命名为origin。您也可以添加其他远程仓库,使用以下命令:

git remote add <remote-name> <remote-url>

其中,<remote-name>是远程仓库的别名,<remote-url>是远程仓库的URL地址。

8.3 团队协作流程

8.3.1 拉取(Pull)

在团队协作中,开发者通常需要先拉取远程仓库的最新代码,以便与其他开发者的工作保持同步。使用以下命令拉取远程分支的最新代码:

git pull <remote-name> <branch-name>

其中,<remote-name>是远程仓库的别名,<branch-name>是要拉取的分支名称。

8.3.2 推送(Push)

当您在本地完成了新的提交后,可以将这些更改推送到远程仓库,使其他开发者可以看到您的工作。使用以下命令推送本地分支的更改到远程仓库:

git push <remote-name> <branch-name>

8.3.3 合并请求(Pull Request)

在使用像GitHub、GitLab这样的代码托管平台时,团队成员通常使用合并请求来将自己的更改合并到主分支中。合并请求是一种让团队成员审查和讨论代码更改的机制。其他团队成员可以查看您的合并请求,并提供反馈和建议,确保代码的质量和正确性。

9. 解决代码冲突

在团队协作中,当多个开发者同时修改同一个文件或同一部分代码时,可能会发生代码冲突。代码冲突意味着Git无法自动合并这些更改,需要开发者手动解决冲突。

解决代码冲突的方法和技巧:

  1. 查看冲突

    在发生冲突后,使用git status命令查看冲突文件,Git会在文件中标记出冲突的部分,例如:

    <<<<<<< HEAD
    代码在本地分支的更改
    =======
    代码在远程分支的更改
    >>>>>>> remote/branch
    
  2. 手动编辑文件

    打开冲突文件,手动编辑以解决冲突。您需要决定保留哪个更改或进行修改来合并两个版本。

  3. 提交解决冲突后的文件

    解决完冲突后,使用git add命令将冲突文件标记为已解决。然后使用git commit提交解决冲突后的文件。

  4. 重新拉取和推送

    在解决冲突并提交后,确保您的本地分支是最新的,使用git pull拉取远程分支的最新代码,并使用git push推送您的更改到远程仓库。

解决代码冲突是团队协作中常见的任务,了解如何正确解决冲突对于保持项目的稳定和团队的协作非常重要。及时解决冲突并保持代码的一致性可以使团队开发更加顺利和高效。

10. 附录:Git常用命令速查表

以下是Git常用命令的速查表,供读者在实际使用中参考:

  1. 初始化Git仓库:

    git init
    
  2. 克隆远程仓库:

    git clone <remote-url>
    
  3. 添加文件到暂存区:

    git add <file1> <file2> ...
    
  4. 提交更改:

    git commit -m "提交说明"
    
  5. 查看提交历史:

    git log
    
  6. 创建分支:

    git branch <branch-name>
    
  7. 切换分支:

    git checkout <branch-name>
    
  8. 合并分支:

    git merge <branch-name>
    
  9. 查看项目状态:

    git status
    
  10. 添加远程仓库:

    git remote add <remote-name> <remote-url>
    
  11. 拉取远程分支代码:

    git pull <remote-name> <branch-name>
    
  12. 推送本地分支代码到远程仓库:

    git push <remote-name> <branch-name>
    
  13. 解决代码冲突:

    • 查看冲突:使用git status命令查看冲突文件。
    • 手动编辑文件:打开冲突文件,解决冲突并保存。
    • 提交解决冲突后的文件:使用git add标记冲突文件为已解决,并使用git commit提交更改。

11. 总结

本文介绍了Git的基本概念和工作原理,探讨了分布式版本控制系统相较于集中式系统的优势。我们学习了Git的核心概念,包括仓库、提交、分支、合并和标签等。了解了Git的工作原理,包括提交对象、树对象和引用的作用。同时,我们学习了在团队协作中使用远程仓库,进行拉取、推送和合并请求的操作。

Git作为现代软件开发中最流行的版本控制系统,为团队协作和项目管理提供了强大的支持。熟练掌握Git的基本操作和工作原理,可以使开发团队更加高效地协作,有效地管理项目,保障代码的稳定性和质量。

鼓励读者在实际项目中广泛应用Git,并充分利用速查表,快速高效地使用Git,将版本控制成为项目开发中的得力助手。

12. 参考资料

  1. Pro Git (2nd Edition) by Scott Chacon and Ben Straub

    • 这本书是Git的权威指南,详细介绍了Git的原理、使用方法和最佳实践,是学习Git的重要参考资料。
  2. Official Git Documentation (git-scm.com)

    • Git官方文档是学习Git的官方来源,包含了Git的全部命令和使用说明,对于深入了解Git的工作原理非常有帮助。
  3. GitHub Guides (guides.github.com)

    • GitHub提供了一系列Git和GitHub的教程,涵盖了从入门到高级使用的内容,对于学习Git的实际操作和团队协作有很大帮助。
  4. Atlassian Git Tutorials (atlassian.com/git/tutorials)

    • Atlassian提供了一系列Git教程,涵盖了版本控制基础、团队协作、解决冲突等方面的内容,非常适合新手入门。
  5. Git for Teams: A User-Centered Approach to Creating Efficient Workflows in Git by Emma Jane Hogbin Westby

    • 这本书着重讲解团队协作中如何使用Git进行版本控制,提供了实用的工作流程和最佳实践。
  6. Git Internals by Scott Chacon

    • 这本书深入探讨了Git的内部工作原理,对于理解Git的底层机制非常有帮助。
  7. Git Version Control Cookbook by Aske Olsson and Rasmus Voss

    • 这本书提供了许多实用的Git使用技巧和实例,适合那些想要深入了解Git的高级用法的读者。

希望本篇博客能为您提供对Git简介与工作原理的全面了解。通过掌握Git的基本概念和工作原理,您将在软件开发过程中拥有更好的版本控制能力,提高团队的协作效率。开始您的Git学习之旅吧!

原创声明

======= ·

  • 原创作者: 猫头虎

作者wx: [ libin9iOak ]

  • 今日已学习

本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

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

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

相关文章

Centos安装postgresql数据库以及postgis扩展的安装

这几天项目上的数据库迁移差点没把我弄死 &#xff0c;因为项目上的使用的是postgis来处理地理数据 &#xff0c;而开发环境的数据库以及postgis扩展并不是我安装的。所以在迁移的时候造成了不小的麻烦。记录一下迁移过程中遇到的。下面以Centos操作系统为例 文章目录 卸载post…

微信小程序——实现手机振动效果

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

解决行业反复“造轮子”现象,全新地平线RDK系列机器人开发者套件上线

7月25日&#xff0c;“地平线2023机器人开发者创享日”在深圳举办&#xff0c;地平线RDK系列机器人开发者套件正式上线&#xff0c;机器人操作系统TogetheROS.Bot™2.0版发布&#xff0c;应用中心NodeHub首发亮相&#xff0c;地平线开发者社区改版上线。 地平线2023机器人开发者…

go性能分析工具之trace

参考文章&#xff1a; https://eddycjy.gitbook.io/golang/di-9-ke-gong-ju/go-tool-trace https://mp.weixin.qq.com/s__bizMzUxMDQxMDMyNg&mid2247484297&idx1&sn7a01fa4f454189fc3ccdb32a6e0d6897&scene21#wechat_redirect 你有没有考虑过&#xff0c;你的g…

HTTP1、 HTTP2、HTTP3 区别

HTTP1、 HTTP2、HTTP3 区别 HTTP1HTTP/1.0和HTTP/1.1的区别HTTP1的缺陷 HTTP2SPDY协议HTTP/2 新特性&#xff08;即HTTP/2.0和HTTP/1.x的区别&#xff09;HTTP/2 的缺点 HTTP3QUIC协议HTTP/3 新特性&#xff08;HTTP/3与HTTP/2、HTTP/1的区别&#xff09;基于QUIC的0RTT是如何实…

【Linux后端服务器开发】HTTP协议

目录 一、HTTP协议概述 二、HTTP应用层服务器实现 Util.hpp Protocal.hpp Http_Server.hpp http_server.cc indext.html 一、HTTP协议概述 请求和响应怎么保证应用层完整读取完毕了&#xff1f; 读取完整的一行&#xff08;识别行分隔符&#xff09;&#xff0c;while&…

MobPush Android SDK 厂商推送限制

概述 厂商推送限制 每个厂商通道都有对应的厂商配额和 QPS 限制&#xff0c;当请求超过限制且已配置厂商回执时&#xff0c;MobPush会采取以下措施&#xff1a; 当开发者推送请求超过厂商配额时&#xff0c;MobPush将通过自有通道进行消息下发。当开发者推送请求超过厂商 QP…

elementui el-table 封装表格

ps: 1.3版本 案例&#xff1a; 完整代码&#xff1a; 可直接复制粘贴&#xff0c;但一定要全看完&#xff01; v-slot"scopeRows" 是vue3的写法&#xff1b; vue2是 slot-scope"scope" <template><!-- 简单表格、多层表头、页码、没有合并列行…

2023年度盘点:网络电视盒子哪个好?目前性能最好的电视盒子

挑选电视盒子时配置性能是最重要的&#xff0c;芯片、运存、存储全部会影响到我们的观影体验&#xff0c;想播放流畅、响应速度快&#xff0c;要在预算范围内选择配置最高的产品&#xff0c;那么哪些电视盒子称得上是目前性能最好的电视盒子呢&#xff1f;不懂网络电视盒子哪个…

自定义view - 玩转字体变色

自定义View步骤&#xff1a; 1>&#xff1a;values__attrs.xml&#xff0c;定义自定义属性&#xff1b; 2>&#xff1a;在第三个构造方法中获取自定义属性&#xff1b; 3>&#xff1a;onMeasure【不是必须的】&#xff1b; 4>&#xff1a;onDraw&#xff1a;绘制代…

【Java中的Thread线程的简单方法介绍和使用详细分析】

文章目录 前言一、run() 和 start() 方法二、sleep() 方法三、join() 方法总结 前言 提示&#xff1a;若对Thread没有基本的了解&#xff0c;可以先阅读以下文章&#xff0c;同时部分的方法已经在如下两篇文章中介绍过了&#xff0c;本文不再重复介绍&#xff01;&#xff01;…

海量遥感数据处理与云计算技术教程

详情点击链接&#xff1a;海量遥感数据处理与GEE云计算技术 一&#xff0c;GEE及开发平台 1.GEE平台及典型应用&#xff1b; 2.GEE JavaScript开发环境及常用数据资源&#xff1b; 3.JavaScript基础&#xff0c;包括变量&#xff0c;运算符&#xff0c;数组&#xff0c;判断及…

【数据结构和算法15】二叉树的实现

二叉树是这么一种树状结构&#xff1a;每个节点最多有两个孩子&#xff0c;左孩子和右孩子 重要的二叉树结构 完全二叉树&#xff08;complete binary tree&#xff09;是一种二叉树结构&#xff0c;除最后一层以外&#xff0c;每一层都必须填满&#xff0c;填充时要遵从先左后…

程序员千万别碰这3种副业!!!

最近&#xff0c;“消费降级”这个词频频被大家提及&#xff0c;某瓣上&#xff0c;“今天消费降级了吗”小组的常驻人口有36万&#xff0c;某书上&#xff0c;跟消费降级有关的笔记近7万条...... 不少网友晒出了自己消费降级后的生活&#xff1a;由从前每天一杯的星巴克变成了…

ROS noetic,ROS melodic 安装 MoveIt 并运行

ROS noetic&#xff0c;ROS melodic 安装 MoveIt 并运行 前言更新功能包版本下载依赖文件创建工作区和软件源下载源代码安装编译器缓存&#xff08;可选环节&#xff09;编译Moveit&#xff01;安装Moveit&#xff01;检测是否安装成功 前言 在安装过程中我也碰壁过很多次&…

[算法通关村] 1.3 链表的删除

上一节我们谈到了链表的头插、尾插、中间插入的方法&#xff0c;忘记的小伙伴可以复习一下&#xff1a; [算法通关村] 1.2 链表的插入 接下来&#xff0c;完成链表的删除工作&#xff0c;我们在上一节的学习中&#xff0c;分别在链表的开头、中间和结尾插入了节点&#xff0c;…

【USACO OPEN12铜组】岛屿

【USACO OPEN12铜组】岛屿 文章目录 【USACO OPEN12铜组】岛屿题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 思路code 2014. 岛 - AcWing题库 题目描述 每当下雨时&#xff0c;农夫约翰的田地总是被洪水淹没。 由于田地不是完全水平的&#xf…

Cesium态势标绘专题-扇形(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

(五)FLUX中的数据类型

以下内容来自 尚硅谷&#xff0c;写这一系列的文章&#xff0c;主要是为了方便后续自己的查看&#xff0c;不用带着个PDF找来找去的&#xff0c;太麻烦&#xff01; 第 5 章 FLUX中的数据类型 5.1 10 个基本数据类型 5.1.1 Boolean &#xff08;布尔型&#xff09; 5.1.1.1 …

Pytorch学习笔记 | 利用线性回归实现最简单的梯度下降 | 含代码和数据

代码 import torch import numpy as np import matplotlib.pyplot as plt import pandas as pddef make_linear_regression_data():x = np.linspace(start=10