Git详细使用文档

news2024/11/13 9:42:36

Git

请添加图片描述

1.项目存在哪些问题

  • 1.项目安全性太低
  • 2.项目很难协同开发
  • 3.项目无端报错
  • 4.项目版本混乱

2.Git概念

Git是一个分布式的版本控制及协同开发工具

3.版本控制工具分类

3.1.集中式版本控制工具 cvs svn

​ 集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
请添加图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QPqivjgj-1674896002757)(img\集中式版本控制系统s.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZEiTAOi-1674896002757)(img\集中式版本控制工具.jpg)]

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

3.2.分布式版本控制工具 Git

那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

在这里插入图片描述

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

4.Git下载,安装

4.1.下载

官网下载:https://git-scm.com/

4.2.安装

傻瓜式安装!

在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "zhangcn"
$ git config --global user.email "15236674712@163.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

5.Git使用

1.创建Git仓库(本地库)

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

$ mkdir GitRepository

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in E:/GitRepository/.git/

在这里插入图片描述

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

2.向仓库添加文件

和把大象放到冰箱需要3步相比,把一个文件放到Git仓库只需要两步。

1.创建一个文件

$ touch aaa.txt

2.将文件添加到仓库

第一步,用命令git add告诉Git,把文件添加到仓库:

$ git add <file>  #<file> 文件名
$ git add . #添加所有文件

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

提交警告

在这里插入图片描述

工作区的文件都应该用 CRLF 来换行。如果
改动文件时引入了 LF,提交改动时,git 会警告你哪些文件不是纯 CRLF 文件,但 git 不会擅自修改工作区的那些文件,而是对暂存区(我们对工作区的改动)进行修改。也因此,当我们进行 git add 的操作时,只要 git 发现改动的内容里有 LF 换行符,就还会出现这个警告。

解决方式:
我们可以在git命令行中输入如下指令:

$ git config --global core.autocrlf false

**建议:**遇到了这种问题可以直接忽略,对我们整体工作不会造成影响!

3.向仓库提交文件

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "提交的描述信息" #m=message 本次提交的描述信息

在这里插入图片描述

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);1 insertions`:插入了一行内容(readme.txt有两行内容)。

4.查看Git 状态

$ git status
  • 红色:工作区已修改并未添加到暂存区
  • 绿色:工作区的修改已经添加到暂存区并未提交到版本库
  • nothing to commit, working tree clean 工作区与版本库保持一致

5.Git 分区原理

在这里插入图片描述

在这里插入图片描述

6.查看Git提交版本

当然了,在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:

$ git log

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

$ git log --pretty=onelien  #一行展示

需要友情提示的是,你看到的一大串类似1094adb...的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可视化工具查看Git历史,就可以更清楚地看到提交历史的时间线:

查看历史提交指令

$ git reflog

7.版本回退

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:

7.1.回退上n个版本

$ git reset --hard HEAD^   #^表示回退上一个版本  有几个^就代表回退上几个版本
$ git reset --hard HEAD~100  #回退上100个版本

7.2.回退到制定版本

$ git reset --hard e93a(commitId) #commitId 提交版本的id

8.撤销修改

8.1.撤销工作区的修改

$ git restore <file> # <file>文件名

8.2.撤销暂存区的修改

#1.将暂存区的修改撤销到工作区
$ git restore --staged <file>   # <file>文件名
#2.将工作区的修改撤销
$ git restore <file> # <file>文件名

9.删除文件

1.删除文件

$ rm -rf bbb.txt

2.确定删除

$ git add/rm <file>        #add/rm :提交修改/确定删除    <file>文件名

#提交
$ git commit -m "确定删除"

3.误删除

$ git restore <file> # <file>文件名

6.分支管理

6.1.创建分支

$ git branch dev

6.2.查看分支

$ git branch

6.3.切换分支

$ git checkout dev

6.4.创建并切换分支

$ git checkout -b prod

6.5.合并分支

$ git merge dev

#注意:要将dev分支合并到master分支上,就在master分支执行此命令

6.6.删除分支

$ git branch -d dev

6.7.分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

在这里插入图片描述

7.Github使用

1.注册,登录

官网地址:https://github.com/

2.创建Github仓库

在这里插入图片描述

3.将远程仓库拉取到本地

$ git clone git@github.com:15236674712/2005-Repository.git

克隆失败:

在这里插入图片描述

  • 请确保您具有正确的访问权限
  • 并且存储库存在。

4.生成.ssh秘钥

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

  • C:\Users\Administrator.ssh
$ ssh-keygen -t rsa -C "15236674712@163.com"

在这里插入图片描述

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

公钥:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDAarLzlbCt1IuQ2BWgqwox4PD5NvUjNx8f2iGq0iQziwZ1doMBsePeDUbNEWvYhf+JdU/GIbxooFX18K6fwbv7KzG2h9pwlOFknUnOgjEAaPkLjoEmwCIGt/VJqNivcpWh6Pfn3Lzp9w5GVqK0AZTLK+Sb7pWs6LHeHVoMGFQZWNZiMzZ6QlWhOrHIBotLh2ybbiPZ5q+3i8ykKKmyRLKRirrxEoMWCRzTtrnKBIwYGIT9Qa7Cn+Nfgo6xTS2SFuWnKoU+xfYhvv1B9phHjGQe+lFc3fxATfNEPICDW1kOBj8mPayDgkuNkk9Y0oI6TqqNPOcS6TQSAjDA380/DcE9DBlMeOhNEEQWwVetrqpuLX2BdParPu46sXRkUkCOzWAHunLZILy15Qm+/8/OgTvQnofF63tDKXv0rQgegdo7AvXzma0BdjVvBJD8XMxuphW8hzOc4Avr26iLOKRrH10SmY+H0efeVOHvAIK2jP1M/050G80JAU9vnf4Utp1p65s= 15236674712@163.com

私钥:

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

5.配置GitHub信任列表

第2步:登陆GitHub,打开“Settings”,“SSH and GPG Keys”页面:

然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

在这里插入图片描述

6.将远程仓库拉取到本地

$ git clone git@github.com:15236674712/2005-Repository.git

克隆成功:

在这里插入图片描述

7.将本地修改推送至远程仓库

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master   #origin 默认远程仓库的名字    master:本地分支名称

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

在这里插入图片描述

8.将远程的修改同步到本地

$ git pull origin master

在这里插入图片描述

9.将本地项目推送至Github

1.确定本地项目

  • 确定项目名字
  • 在项目中加入.gitignore

2.在Github创建创库

创建一个空仓库(空文件夹),要与本地项目名保持一致

在这里插入图片描述

3.仓库创建成功

执行以下命令:

在这里插入图片描述

git init
git add .
git commit -m "yingx项目第一次提交"
git branch -M main
git remote add origin git@github.com:15236674712/git_2005.git   #(将本地仓库(项目仓库)与远程空文件夹做一个连接)
git push -u origin main  #将本地项目推送至远程Github

4.拉取远程修改到本地

5.将本地修改推送至远程

8.Git集成IDEA

8.1.配置Git

在这里插入图片描述

8.2.配置Github

配置Github

在这里插入图片描述

创建token

登陆Github网站生成

在这里插入图片描述

配置Token权限
在这里插入图片描述

idea配置token

在这里插入图片描述

配置Github成功

在这里插入图片描述

8.3.修改idea终端为Git bash

修改控制台shell路径:setting -> Tools -> Terminal -> Shell path,修改为git安装路径。

在这里插入图片描述

8.3.Terminal中文乱码问题

我们配置idea 的终端为git 的bash.cmd 之后会出现中文乱码

解决方法:

1.git的安装路径下etc文件下有个 bash.bashrc 文件,在这个文件末尾追加:

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

2.中文乱码问题

  • 在idea安装目录下找到idea.exe.vmoptions和idea64.exe.vmoptions文件,在文件的最后添加:

-Dfile.encoding=UTF-8

  • 在git安装目录下找到etc/bash.bashrc文件,在文件的最后添加:

export LANG=“zh_CN.UTF-8”

export LC_ALL=“zh_CN.UTF-8”

  • 在Terminal控制台输入:set LESSCHARSET=utf-8

  • 退出控制台,重新进入即可。exit

    在这里插入图片描述

8.4.初始化Git仓库

在这里插入图片描述

选择要初始化仓库的项目

在这里插入图片描述

8.5.添加到暂存区 add

在这里插入图片描述

8.6.提交到版本库 commit

在这里插入图片描述

加入提示信息

在这里插入图片描述

8.7.Idea中类的颜色

  • 红色:工作区已修改并未添加到暂存区
  • 绿色:修改已经添加到暂存区暂未提交到版本库
  • 黑色:版本库与工作区一致
  • 蓝色:已经提交到版本库,有修改

8.8.查看历史提交版本

在这里插入图片描述

展示历史提交版本

在这里插入图片描述

8.9.撤销修改

在这里插入图片描述

8.10.版本回退

8.10.1选择回退版本直接回退

在这里插入图片描述

8.10.2根据版本提交id(commitId)回退

复制版本提交编号

在这里插入图片描述

选择切换版本

在这里插入图片描述

输入要切换的版本编号

在这里插入图片描述

8.11.分支

查看/添加分支

在这里插入图片描述

分支操作

在这里插入图片描述

合并分支

在这里插入图片描述

8.12.将本地项目推送至Github

在这里插入图片描述

填写要分享的项目名

在这里插入图片描述

分享成功

在这里插入图片描述

8.13.将Github的修改更新到本地

pull

在这里插入图片描述

在这里插入图片描述

8.14.将本地的修改推送至Github

Commit and Push

在这里插入图片描述

push

在这里插入图片描述

推送成功

在这里插入图片描述

8.15.使用idea克隆并打开远程的项目

使用Git克隆项目

在这里插入图片描述

创建本地文件夹,克隆项目

在这里插入图片描述

是否打开项目

在这里插入图片描述

使用哪种方式打开项目

在这里插入图片描述

8.16.解决代码冲突问题

push时遇到冲突

在这里插入图片描述

当前分支主管的推送被拒绝
推送前需要合并远程更改

当push时遇到冲突,要先pull 再push

判断代码有没有交集,idea自动判断

  • 1.代码无交集

    直接pull成功

  • 2.代码有交集

    当两个开发者同时操作到一个文件时会出现冲突

    当两个开发者遇到冲突代码有交集时:两个人协商解决,解决之后将代码再推送至Github,另一个人再同步修改

    pull遇到冲突

    在这里插入图片描述

    解决冲突案例

    在这里插入图片描述

开发中一定先pull再push

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

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

相关文章

LeetCode 刷题系列 -- 143. 重排链表

给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a;L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a;L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。示例 1&a…

深度卷积神经网络、池化层、为什么使用卷积、残差网络

目录1.深度卷积神经网络(a deep convolutional neural network)输入图像的维度是&#xff0c;如果&#xff0c;计算输出图像维度公式&#xff1a;。s表示步幅&#xff0c;p表示填充的层数。filters的通道数是和输入图像的通道数保持一致的。分析上图案例&#xff1a;第一层卷积…

leetcode刷题记录总结-5.双指针专题

文章目录一、过滤保序27.移除元素题解题解1&#xff1a;暴力解法题解2&#xff1a;双指针法[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)题解[283. 移动零 ](https://leetcode.cn/problems/move-zeroes/description/)题解…

借助ChatGPT学习ROS2机器人编程

很好用&#xff0c;很方便。简单发布和订阅代码直接能跑的。如下&#xff1a;学习效率指数提升&#xff0c;果然数字生产力之神&#xff01;空洞的问题和回复&#xff1a;如何在一个月时间内掌握ROS2机器人操作系统的全部核心内容&#xff1f;要在一个月时间内掌握ROS2机器人操…

源码启动MeterSphereV2.6版本注意事项(三)

前言 之前写过一篇MeterSphereV2.3版本Mac本地启动详细教程&#xff08;含常见错误&#xff09;本地启动V2.3版本的。时隔3个月&#xff0c;MeterSphere已经到了V2.6 版本了&#xff0c;很多小伙伴私信我让我写一篇V2.6 版本的启动&#xff0c;刚好趁过年有时间&#xff0c;给…

Spring和SpringMvc详细讲解

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Spring和SpringMvc详细讲解 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: …

金仓数据库单表与多表查询

单表与多表查询 单引号与双引号 针对有空格、特殊字符、数字开头的字段别名必须加双引号 针对标量字符串表达式必须用加单引号 连接运算 字符串的拼接运算 字符串拼接经常用于生成SQL脚本 删除exam模式下所有的表&#xff0c;可以通过拼接生成如下批量的SQL select drop t…

scipy learn sharpen filter

文章目录1. 问题2. 方案2.1 学习一个 5 * 5的滤波核2.2 学习分通道的滤波核 以及 分离卷积3. 分析根据图像对学习滤波核之前研究过根据图像对生成3Dlut, 以及生成颜色变换系数 这里我们利用图像对学习 滤波 1. 问题 遇到的问题是这样的&#xff0c;已知一个图像和经过邻域滤…

爱快软路由对笔记本实现网络唤醒

本人有一台爱快软路由作为动态域名和端口映射&#xff0c;实现通过阿里域名远程访问内网设备。一台X201笔记本连接在软路由上。由于X201电池已经卸下无法实现来电开机&#xff0c;只能通过爱快e云APP手动实现网络唤醒&#xff0c;感觉非常麻烦。爱快云web端也不能实现开机唤醒X…

学长教你学C-day11-C语言结构体、枚举、联合体

“前面我们学习了数组&#xff0c;从数据类型来看&#xff0c;数组就是具有相同数据类型的变量集合&#xff1b;从内存空间来看&#xff0c;数组就是一串由相同大小的数据空间组成的较大的内存空间。那么结构体是什么呢&#xff1f;从内存角度讲&#xff0c;结构体也是一块地址…

PEG化芘衍生物——Pyrene-PEG-Acid,Pyrene-PEG-COOH,芘丁酸-聚乙二醇-羧基

一&#xff1a;产品描述 1、名称 英文&#xff1a;Pyrene-PEG-COOH&#xff0c;Pyrene-PEG-Acid 中文&#xff1a;芘丁酸-聚乙二醇-羧基 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a; Carboxylic acid PEG Pyrene PEG 4、分子量&#xff1a;可定制2000、1000、340…

2022个人年度总结:别让内心的烦躁和焦虑,占据本就不多的热情。

在从毕业一直到现在&#xff0c;我都会写一篇关于自己的从技术、商业、人情世故以及未来展望的博文&#xff0c;以至于归纳每个时期的自己&#xff0c; 走在互联网开发的边缘&#xff0c;不得不抽出时间鞭策自己学习新知识&#xff0c;未知的知识是 充满好奇的&#xff0c; 就好…

Makefile学习⑧:Makefile中通用部分做公共头文件

Makefile学习⑧&#xff1a;Makefile中通用部分做公共头文件 创建2个文件夹Demo1和Demo2,2个文件夹中的文件完全一样&#xff0c;但是命名不一样。 博主创建的如下&#xff0c;内容沿用前几章的函数文件。 这两个Makefile中的内容除了目标文件名和依赖文件名不一致&#xff0…

轻松实现一个Python+Selenium的自动化测试框架

首先你得知道什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff…

知识抽取-实体及关系抽取

信息抽取的三个最重要&#xff0c;最受关注的子任务&#xff1a; 实体抽取 命名实体识别&#xff0c;包括实体检测&#xff08;find)和分类&#xff08;classify) 关系抽取。 通常我们所述的三元组抽取&#xff0c; 一个谓词&#xff08;predicate)带2个形参&#xff08;argum…

MySQL学习记录(9)存储引擎

文章目录6、InnoDB存储引擎6.1、逻辑存储结构6.2、架构6.2.1、概述6.2.2、内存结构6.2.3、磁盘结构6.2.4、后台线程6.3、事务原理6.3.1、事务基础6.3.2、redo log日志6.3.3、undo log日志6.4、MVCC6.4.1、基本概念6.4.2、记录中隐藏字段6.4.3、undo log日志6.4.4、readview6.4.…

算法基础(二):数组知识点及题型讲解

算法基础&#xff08;二&#xff09;&#xff1a;数组知识点及题型讲解1 数组定义2 Python数组常用操作2.1 创建数组2.2 添加元素2.3 访问元素2.4 更新元素2.5 删除元素2.6 获取数组长度2.7 遍历数组2.8 查找某个元素2.9 数组排序3 力扣题目训练一些算法基础知识点和leetcode题…

汇编语言1基础知识

机器语言 机器语言是机器指令的集合&#xff0c;即计算机可以执行的指令。 机器指令由一连串二进制数字构成&#xff0c;计算机中用高低电平表示。高电平为1&#xff0c;低电平为0。 早期通过在纸带上打孔输入计算机运算。打孔为1&#xff0c;不打孔为0。 上图出自剧版三体第…

c语言tips-【gcc详细介绍】

0. 什么是gcc GCC 原名为 GNU C语言编译器&#xff08;GNU C Compiler&#xff09;GCC&#xff08;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff09;是由 GNU 开发的编程语言译器。 GNU编译器套件包括C、C、 Objective-C、 Java、 Ada 和 Go语言前端&#xff0c…

【GPLT 二阶题目集】L2-009 抢红包

没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录&#xff0c;请你统计一下他们抢红包的收获。 输入格式&#xff1a; 输出格式&#xff1a; 按照收入金额从高到低的递减顺序输出每个人的编号和收入金额&#xff08;以元为单位&#xff0c;输出小数点后2位&a…