【玩转Git三剑客笔记】第一章 Git基础

第一章 Git基础

    • 1.综述
    • 2.安装Git
    • 3.使用Git之前需要做的最小配置
    • 4.创建第一个仓库并配置local用户信息
      • 1.创建Git仓库
      • 2.设置Git最小配置
    • 5.通过几次commit来认识工作区和暂存区
      • 1.将工作区中所有已经被git追踪的文件一起添加到暂存区
      • 2.git log查看提交日志
    • 6.给文件重命名的简便方法
      • 方法一:三个步骤
      • 方法二:一条指令
      • 关于大小写的问题:
    • 7.通过git log查看版本演变历史
      • 1.git log的扩展使用
      • 2.创建临时分支,并在临时分支上进行修改提交
    • 8.gitk:通过图形界面工具来查看版本历史
    • 9.探秘.git目录
      • 1.HEAD文件
      • 2.config文件,存储git仓库的配置信息
      • 3. refs
        • heads
        • tags
      • 4.objects中有三种对象类型:commit,blob,tree
    • 10.commit、tree和blob三个对象之间的关系
    • 11.小练习:数一数tree的个数
    • 12.分离头指针情况下的注意事项
      • 分离头指针的危险:
      • 分离头指针的好处
    • 13.进一步理解HEAD和branch

前言:本系列笔记是基于极客时间的《玩转Git三剑客》专栏的笔记。

1.综述

Git是一种分布式的代码管理工具。

2.安装Git

git官网:Git - Installing Git
在这里插入图片描述

3.使用Git之前需要做的最小配置

我们在使用git前首先要设置git 的用户名和邮箱,这样git在版本管控的时候,就可以知道哪些变更、改动是哪个用户进行的改动,一目了然。(只有做了相关配置,git才能进行版本控制)

1.配置基本的用户名,用户邮箱

$ git config --global user.name 'your_name'
$ git config --global user.email 'youre_mail@domain.com'

2.config的三个作用域

#缺省等于local
$ git config --local  #只针对某个仓库有效,对其他仓库无效。作用域为局部
$ git config --global #global对当前用户所有仓库有效
$ git config --system #system对系统所有登录的用户都有效

3.显示config的配置,加–list

$ git config --list --local
$ git config --list --global
$ git config --list --system

在这里插入图片描述

小结

添加配置

git config [–local | --global | --system] user.name ‘Your name’
git config [–local | --global | --system] user.email ‘Your email’

查看配置

git config --list [–local | --global | --system]

区别

local:区域为本仓库
global: 当前用户的所有仓库
system: 本系统的所有用户

4.创建第一个仓库并配置local用户信息

1.创建Git仓库

两种场景:

1.把已有的项目代码纳入Git管理

$ cd 项目代码所在的文件夹
$ git init 

2.新建的项目直接用Git管理

$ cd 某个文件夹
$ git init your_project #your_project就是你要新建的项目,会在当前路径下创建与项目名称相同的文件夹
$ cd your_project

在这里插入图片描述

2.设置Git最小配置

为了区分config的local设置和global设置不同时,仓库采用哪个设置,我们这里用local进行设置。(结论:局部优先于全局)

在这里插入图片描述

3.做一次简单的提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EeXXUZzS-1682953511862)(C:\Users\Administrator.DESKTOP-I4A8DOF\AppData\Roaming\marktext\images\2022-04-21-23-54-53-image.png)]

5.通过几次commit来认识工作区和暂存区

在这里插入图片描述
在这里插入图片描述

1.将工作区中所有已经被git追踪的文件一起添加到暂存区

$ git add -u

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jbsv9K9z-1682954068478)(C:\Users\Administrator.DESKTOP-I4A8DOF\AppData\Roaming\marktext\images\2022-04-22-00-16-04-image.png)]

2.git log查看提交日志

$ git log
commit abe254ce11b429b6f19ff8b5cbc84e4e27de242c (HEAD -> master)
Author: Jack-song-gif <562054870@qq.com>
Date:   Fri Apr 22 00:15:45 2022 +0800

    Add refering projects

commit 675f2d69f9a0e197e7338bc7dd61bd81a6913aa2
Author: Jack-song-gif <562054870@qq.com>
Date:   Fri Apr 22 00:05:56 2022 +0800

    Add js

commit 0cbe4a5ddd935fbdc380bb51b23cc5798ca6430f
Author: Jack-song-gif <562054870@qq.com>
Date:   Fri Apr 22 00:03:49 2022 +0800

    Add style.css

commit 57a9d1467bbd12c7e3507c3d21bfdc926e83ddda
Author: Jack-song-gif <562054870@qq.com>
Date:   Thu Apr 21 23:59:07 2022 +0800

    Add index+logo

commit e2ed4a8b41dd52cb8e31d345f9b4e41e50d3c92a
Author: Jack-song-gif <562054870@qq.com>
Date:   Thu Apr 21 23:44:13 2022 +0800

    Add readme

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CnrSUnXv-1682954068480)(C:\Users\Administrator.DESKTOP-I4A8DOF\AppData\Roaming\marktext\images\2022-04-22-00-17-36-image.png)]

6.给文件重命名的简便方法

场景:给git-learning目录下的readme文件重命名

方法一:三个步骤

 mv readme readme.md
 git add readme.md
 git rm readme

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oix6CqYz-1682954068482)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502220148701.png)]

方法二:一条指令

 git mv readme readme.md

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GI7yD0kZ-1682954068490)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502220225217.png)]

关于大小写的问题:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9a5lUBt-1682954068500)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502221355125.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4FgcI773-1682954068502)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502221448721.png)]

网友补充:

针对“零维”和“Sleeves” git mv 命令大小写敏感问题的补充实验

我使用的是Windows系统,系统的大小写是不敏感的。
core.ignorecase 默认配置是 true

基于此配置做 git mv readme Readme 操作的话,可以在 git status 看到文件名的变化。
但是,同样基于此配置,做 mv readme Readme 操作后,再使用 git status 查看文件状态,发现 status 仍为 clean 的状态。

当 core.ignorecase 配置修改为 false 时,两个操作的执行结果正好相反。

当切换到Ubuntu这种大小写敏感的系统上,不管 core.ignorecase 配置是什么,使用 git mv 和 mv 命令的结果都是一样的。

OS大小写敏感问题对 git mv 命令和 git status 命令产生了什么样的影响,想不出来可以怎么解释清楚,还希望可以有小伙伴可以继续来讨论。

总结:

直接一步修改文件名:git mv file newfile

先用mv修改,再用git管理:mv file newfile ; git add newfile;git rm file

撤销工作区和暂存区的全部修改,回退到版本库最后一次commit状态:git reset --hard

也可以指定回退到具体某一次commit:git reset --hard commitID

7.通过git log查看版本演变历史

1.git log的扩展使用

git log --oneline  #只显示commit ID和commit message,显示一行
git log -n4 #显示最近四次提交的日志
git log -n4 --oneline #组合使用
git log --oneline -n4 #组合使用
git log #默认查看的是当前分支的日志
git log --all #查看所有分支的日志,--all表示所有分支
git log --all --graph  #图形化查看版本演进历史,可以查看父子关系
git log --all --graph --oneline
git log --all --graph --oneline -n4 #n4表示显示所有分支的最近四个提交
#example
$ git log --oneline
abe254c (HEAD -> master) Add refering projects
675f2d6 Add js
0cbe4a5 Add style.css
57a9d14 Add index+logo
e2ed4a8 Add readme

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z8dF4y2B-1682954068503)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502222722585.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w7mtjcZ2-1682954068505)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502222906375.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-paM4mJSR-1682954068508)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502223057254.png)]

2.创建临时分支,并在临时分支上进行修改提交

git checkout -b temp(新分支名)  commitID
或者:
git checkout -b temp master #基于master分支的最新提交新建temp临时分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2lI5zKs-1682954068510)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502224208673.png)]

git log默认查看当前分支的日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TioDIKxF-1682954068512)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502224759929.png)]

git log --all 查看所有分支的日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pvb3TvgN-1682954068513)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502224921287.png)]

 git log --all --graph  #图形化查看版本演进历史,可以查看父子关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T4ltra62-1682954068516)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502225023973.png)]

git log --all --graph --oneline

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8OHPMp2A-1682954068517)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502225346880.png)]

git log --all --graph --oneline -n4 #n4表示显示所有分支的最近四个提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ir6Liah4-1682954068519)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502225605462.png)]

3.如果想查看详细的git log的使用

git help --web log #通过浏览器查看文档

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0FqpUzuZ-1682954068521)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502225920443.png)]

8.gitk:通过图形界面工具来查看版本历史

gitk

在这里插入图片描述

9.探秘.git目录

1.HEAD文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2vKlsgPF-1682954068525)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502232707183.png)]

2.config文件,存储git仓库的配置信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-la1ebJtk-1682954068526)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502233327679.png)]

修改当前仓库的用户名和邮箱

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4VWrTaT3-1682954068527)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502233613738.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ycr8L3To-1682954068528)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502235138004.png)]

3. refs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fqK5Ifz-1682954068530)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502235523795.png)]

heads

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOFFxV9R-1682954068531)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220502235906204.png)]

git cat-file -t 对象名 #查看对象类型
git cat-file -p 对象名 #查看对象内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dp5FhRFy-1682954068533)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503000326249.png)]

tags

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OquoH8E-1682954068534)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503000852578.png)]

4.objects中有三种对象类型:commit,blob,tree

首先切换到objects文件夹,可以发现里面有两种文件夹一种是02类型,另一种是pack文件夹

cd objects/
ls  -al

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XrheSpH9-1682954068536)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503001530898.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5D94cnUx-1682954068537)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503001811244.png)]

注意:在git眼里只要文件的内容相同就是唯一的blob

10.commit、tree和blob三个对象之间的关系

一个commit就对应一个tree树,一个tree就是存储某个commit的快照,改快照就是当前commit对应的仓库内所有文件夹,文件的信息。(即tree记录在那个时间点,文件夹和文件的信息)

tree树就是文件夹,文件夹就是树

blob跟文件名无关,只要文件内容一样就是唯一的blob

网友解读:

现在我们应该明白git底层的运行流程了,当我们添加或者修改了文件并且add到Stage Area之后,首先会根据文件内容创建不同的blob,当进行提交之后马上创建一个tree组件把需要的blob组件添加进去,之后再封装到一个commit组件中完成本次提交。在将来进行reset的时候可以直接使用git reset --hard xxxxx可以恢复到某个特定的版本,在reset之后,git会根据这个commit组件的id快速的找到tree组件,然后根据tree找到blob组件,之后对仓库进行还原,整个过程都是以hash和二进制进行操作,所以git执行效率非常之高。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8DETKMva-1682954068539)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503002652669.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivaILNO7-1682954068540)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503004626964.png)]

11.小练习:数一数tree的个数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U3HMOSsu-1682954068541)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503004804480.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96mcGhnH-1682954068543)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503005617599.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QeD4oCwZ-1682954068545)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503010216402.png)]

$ git cat-file -t 2d832d9044
blob
$ git cat-file -p 2d832d9044
hello,world

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dgK2AqhX-1682954068547)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503012020257.png)]

网友总结:

没有文件也就是没有blob对象的目录是不会被git管理的,因为git要对文件进行版本管理,所以没有必要对空目录生成对象。基于这一点,readme文件的全路径是这样:[仓库根目录]/doc/readme。那么tree的数量与全路径中“/”的数量一致。

我的总结

git add操作会生成blob对象

git commit操作后才会生成tree,因为tree的作用就是为了记录commit快照。

12.分离头指针情况下的注意事项

你可以直接用git checkout commitID切换到某一个提交上,此时并没有和任何分支进行挂钩。

分离头指针的危险:

假设你基于某个提交进行了一些修改,此时你接收到紧急任务,需要fig一个bug,然后你就切换到master分支进行修改bug了,而原来基于某个提交的变更就会被git当作垃圾给丢弃。

分离头指针的好处

当你想要进行一些变更,但是只是想要实验一下看看效果,你就可以分离头指针到某个提交,然后进行修改,不满意效果就直接切换到别的分支,那些你原来基于提交的修改就会被丢弃。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6tqgRcSB-1682954068549)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503013408063.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5POH3G4W-1682954068551)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503013652378.png)]

将基于commit修改的变更保存到新分支

git branch <new-branch-name> 1df216a #1df216a是变更后的最新提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okY1t16z-1682954068553)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503014400610.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYSoyCx5-1682954068555)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503014724171.png)]

13.进一步理解HEAD和branch

1.我们通过一个场景来演示:

#新建一个fix_readme分支,并且切换到新分支
git checkout -b fix_readme fix_css

$ git checkout -b fix_readme fix_css
Switched to a new branch 'fix_readme'
$ git branch -av #查看所有分支,发现头指针指向fix_readme分支
  fix_css    1df216a Backgroud to green
* fix_readme 1df216a Backgroud to green
  master     abe254c Add refering projects
  temp       025f501 Add zhangsan
$ cat .git/HEAD
ref: refs/heads/fix_readme
#本质上HEAD还是指向某一个提交的,HEAD指向的是分支的最新提交。
$ git cat-file -t refs/heads/fix_readme 
commit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFyQWV78-1682954068557)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503145235020.png)]

2.使用git diff比较两次提交的差异

 $ git diff 1df216 675f2d69f9  #根据ID比较两次提交
 $ git diff HEAD HEAD^1   #根据头指针比较当前提交与前一次提交(父提交)
 $ git diff HEAD HEAD~n   #比较当前提交和前n次提交
 #注:git diff a b 显示的差异是b-a的结果,也就是b相对a没有的用-显示,b比a多的用+显示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RsA4wSCb-1682954068559)(D:\数字媒体技术\程序员资料\笔记汇总\玩转Git三剑客笔记.assets\image-20220503144942056.png)]

扩展阅读:

git dif

repo

repo1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

权限提升:不带引号服务路径 || 不安全的服务权限.

权限提升&#xff1a;不带引号服务路径 || 不安全的服务权限. 权限提升简称提权&#xff0c;由于操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;比如通过 Web 漏洞拿到的是 Web 进程的权限&#xff0c;往往 Web 服务都是以一个权限很低的账号启动…

探讨Redis缓存问题及解决方案:缓存穿透、缓存击穿、缓存雪崩与缓存预热(如何解决Redis缓存中的常见问题并提高应用性能)

Redis是一种非常流行的开源缓存系统&#xff0c;用于缓存数据以提高应用程序性能。但是&#xff0c;如果我们不注意一些缓存问题&#xff0c;Redis也可能会导致一些性能问题。在本文中&#xff0c;我们将探讨Redis中的一些常见缓存问题&#xff0c;并提供解决方案。 一、缓存穿…

了解MSIL汇编和IL汇编评估堆栈

.assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 1.entrypointldstr "I am from the IL Assembly Language..."call void [mscorlib]System.Console::WriteLine (string)ret} 这是MSIL…

1、Flutter使用总结(RichText、Container)

1、创建Flutter项目 flutter create DemoName 2、运行项目 flutter run -d ‘iPhone 14 Pro Max’ 注: 当运用Android Studio时、选择安卓模拟器运行项目、如果项目路径有中文名称: 那么运行报错、如果直接在项目路径下,采用终端运行安卓模拟器、可执行如下命令 flutter ru…

C语言复习笔记2

1.变量命名只能以数字、字母、下划线组成并且不能以数字开头。 #include<stdio.h> #include<unistd.h>//变量名只能由数字字母下划线组成&#xff0c;不能以数字开头 int main() {//int 2b;return 0; }2.内存中保存的是补码 0的补码取反得补码再求源码是-1。 源码…

(8) 支持向量机分类器SVC案例:预测明天是否会下雨

文章目录 案例介绍1 导库导数据&#xff0c;探索特征2 分集&#xff0c;优先探索标签3 探索特征&#xff0c;开始处理特征矩阵3.1 描述性统计与异常值3.2 处理困难特征&#xff1a;日期3.3 处理困难特征&#xff1a;地点3.4 处理分类型变量&#xff1a;缺失值3.5 处理分类型变量…

敏捷ACP.敏捷估计与规划.Mike Cohn.

第一部分 传统规划失败的原因 vs 敏捷规划有效的原因 要回答一个 新产品的范围/进度/资源的组合问题&#xff0c;传统规划过程一般不会产生令人非常满意的答案和最终产品。以下- -些论据可以支持这个结论: ●大约2/3的项目会显著超出费用预算(LedererandPrasad1992) ●产…

网络编程 总结一

一、网络基础&#xff1a; 概念&#xff1a;1> 网络编程的本质就是进程间的通信&#xff0c;只不过进程分布在不同的主机上 2>在跨主机传输过程中&#xff0c;需要确定通信协议后&#xff0c;才可以通信 1. OSI体系结构&#xff08;重点&#xff09; 定义7层模型&…

Vue电商项目--vuex模块开发

vuex状态管理库 vuex是什么&#xff1f; vuex是官方提供的一个插件&#xff0c;状态管理库&#xff0c;集中式管理项目中组件共有的数据。 切记&#xff0c;并不是全部的项目都需要Vuex,如果项目很小&#xff0c;完全不需要vuex,如果项目很大&#xff0c;组件很多&#xff0…

【Leetcode -142.环形链表Ⅱ -143.重排链表】

Leetcode Leetcode -142.环形链表ⅡLeetcode - 143.重排链表 Leetcode -142.环形链表Ⅱ 题目&#xff1a;给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 …

Spring源码解读——高频面试题

Spring IoC的底层实现 1.先通过createBeanFactory创建出一个Bean工厂&#xff08;DefaultListableBeanFactory&#xff09; 2.开始循环创建对象&#xff0c;因为容器中的bean默认都是单例的&#xff0c;所以优先通过getBean、doGetBean从容器中查找&#xff0c;如果找不到的…

QML状态与过渡(States and Transitions)

目录 一 状态&#xff08;States&#xff09; 一 过渡&#xff08;Transitions&#xff09; 通常我们将用户界面描述为一种状态。一个状态定义了一组属性的改变&#xff0c;并且会在一定的条件下被触发。另外在这些状态转化的过程中可以有一个过渡&#xff0c;定义了这些属性…

SpringBoot+vue文件上传下载预览大文件分片上传文件上传进度

文章目录 学习链接上传文件前端后端代码 下载文件a标签下载前端代码后台代码 动态a标签下载前端代码 axios 动态a标签前端代码 浏览器直接输入 预览文件前端代码后端代码 分片上传前后端分别md5加密spark-md5commons-codec 分片上传实现1前端代码后端代码 分片上传实现2前端代…

Spark RDD 持久化(CheckPoint 检查点)

RDD Cache 缓存 RDD 通过 Cache 或者 Persist 方法将前面的计算结果缓存&#xff0c;默认情况下会把数据以缓存 在 JVM 的堆内存中。但是并不是这两个方法被调用时立即缓存&#xff0c;而是触发后面的 action 算 子时&#xff0c;该 RDD 将会被缓存在计算节点的内存中 // cach…

常用排序算法汇总—Python版

一、选择排序 1. 原理&#xff1a; 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法&#xff0c;它的基本思路是将数组按顺序分成已排序部分和未排序部分&#xff0c;然后每次从未排序部分中选择出最小的元素&#xff0c;将其添加到已排序部分的末尾…

【五一创作】【软考:软件设计师】 5 计算机组成与体系结构(三)认证技术 | 计算机可靠性

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于软考中级&#xff1a;软件设计师系列专栏,本专栏服务于软考中级的软件设计师考试,包括不限于知识点讲解与真题讲解两大部分,并且提供电子教材与电子版真题,关注私聊即可 …

三范式(详解+例子)

第一范式&#xff08;1NF&#xff09;&#xff1a;每一列都是不可分割的原子数据项&#xff08;什么意思&#xff0c;每一项都不可分割&#xff0c;像下面的表格就能分割&#xff0c;所以它连第一范式都算不上&#xff09; 分割后的样子 &#xff08;它就是第一范式了&#xff…

FPGA学习_01_基础知识(有点劝退,心灵弱小者勿入)

有些人喜欢直接拿开发板看教程开干&#xff0c;我认为了解点历史发展没什么坏处&#xff0c;一些FPGA的基础知识也是同样重要的。 1.1. FPGA的主要厂商 XILINX 占据FPGA绝大部分的市场份额 ALTERA 被 INTEL 167亿美元收购 改名为INTEL LATTICE 被神秘的中国公…

HMM理论学习笔记-隐马尔可夫模型的三个元素、假设和问题

文章目录 概率论基础条件概率全概公式边缘概率联合概率联合概率与边缘概率的关系贝叶斯公式&#xff08;条件联合概率&#xff09;马尔科夫链的概念 HMM简述HMM的三个元素符号定义1、状态转移概率矩阵A2、观测概率矩阵B3、初始状态概率向量π HMM的三个假设1、齐次马尔可夫假设…

Spring Boot使用(基础)

目录 1.Spring Boot是什么? 2.Spring Boot使用 2.1Spring目录介绍 2.2SpringBoot的使用 1.Spring Boot是什么? Spring Boot就是Spring脚手架,就是为了简化Spring开发而诞生的 Spring Boot的优点: 1.快速集成框架,提供了秒级继承各种框架,提供了启动添加依赖的功能 2.内…