Git Core Lecture

1、Git 简介

官方介绍:Git is a fast distributed revision control system (Git 是一个快速的分布式版本控制系统)

2、Git Core Command

2.1 git init

git 工程初始化,会在工作区 (working directory) 根目录中创建.git 目录

# 创建目录
$ mkdir git-init
$ cd git-init# git 目录初始化
$ git inithint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
Initialized empty Git repository in /core-command/git-init/.git/

说明:

  • git init 初始化的集成分支名为:master,可以通过如下命令修改
# 修改默认分支名
$ git config --global init.defaultBranch main# 再执行初始化时,不再有如上提示
$ git init
Initialized empty Git repository in /temp/.git/
  • 命令行直接修改分支名称,(master -> main)
$ git branch -m main
  • 查看配置修改结果,通过 git config -l 命令
$ git config -l------
init.defaultbranch=main
------

2.2 git status

显示工作区的状态,可多次使用

刚初始化的工作区是没有可提交的内容

$ git statusNo commits yetnothing to commit (create/copy files and use "git add" to track)

2.3 git add

将文件内容添加到索引中(暂存区)

该命令是在工作区中找到的当前内容更新到索引(暂存区),为下一次提交准备内容。
示例:

# 创建一个文件
$ echo '# Hello Git' > hello-git.md# 查看工作区状态
$ git status
On branch mainNo commits yet# 未追踪的文件
Untracked files:(use "git add <file>..." to include in what will be committed)hello-git.mdnothing added to commit but untracked files present (use "git add" to track)# 将hello-git.md文件添加到索引(暂存区)
$ git add hello-git.md# 查看工作区状态
$ git status
On branch mainNo commits yet
# 将去提交的修改
Changes to be committed:(use "git rm --cached <file>..." to unstage)new file:   hello-git.md

2.4 git commit

记录仓库的修改,即将索引(暂存区)的内容提交到对象仓库

提交信息包含索引当前的内容和描述变化的给定日志信息。
示例:

# 修改内容提交到对象库
$ git commit -m 'add hello-git.md file'
[main (root-commit) f3de15d] add hello-git.md file1 file changed, 1 insertion(+)create mode 100644 hello-git.md$ git status
On branch main
nothing to commit, working tree clean

2.5 git diff

用于对比内容差异,包括工作区和索引,索引和对象库,以及分支之间等其他可对比的内容

示例:

# 修改 hello-git.md 文件
$ cat >> hello-git.md
## Git Core Command
### git init$ git status
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   hello-git.mdno changes added to commit (use "git add" and/or "git commit -a")$ git diff
# 比较文件,a 是比较源文件,b 是比较目标文件
diff --git a/hello-git.md b/hello-git.md
index ab690e8..db1f38b 100644
--- a/hello-git.md
+++ b/hello-git.md
@@ -1 +1,3 @@# Hello Git
+## Git Core Command
+### git init# 再次提交
# 将 git add 和 git commit 命令合并使用
$ git commit -a -m 'modify hello-git.md file'

说明

  • git 的工作空间分为三种,工作区(工作目录)、索引(暂存区)、对象库
  • git 的工作流:工作区修改的有效内容 添加到 索引 提交 到对象库

2.6 git restore

恢复工作区、索引中已修改的文件,默认恢复工作区

示例:

  • 恢复工作区
# 修改hello-git.md 文件
$ cat >> hello-git.md
git init is used to initial git working tree(directory).$ git status
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   hello-git.mdno changes added to commit (use "git add" and/or "git commit -a")# 撤回修改(方式一): 将修改的内容手动撤回,如果改动太多,手动改成本太高,非常不推荐
$ vim hello-git.md
......# 撤回修改(方式二): 使用 git restore 命令恢复修改的内容
$ git restore hello-git.md
# 查看 hello-git.md 内容
$ cat hello-git.md
# Hello Git
## Git Core Command
### git init
  • 恢复索引
# 修改 hello-git.md 文件
$ cat >> hello-git.md
git init is used to initial git working tree(directory).# 添加到索引
$ git add hello-git.md# 查看状态
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   hello-git.md# 从索引中恢复文件(将内容恢复到未追踪状态)
$ git restore --staged hello-git.md$ git status
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   hello-git.mdno changes added to commit (use "git add" and/or "git commit -a")# 恢复文件
$ git restore hello-git.md$ git status
On branch main
nothing to commit, working tree clean# 查看 hello-git.md 内容
$ cat hello-git.md
# Hello Git
## Git Core Command
### git init

2.7 git rm

从工作区和索引中删除文件

示例:

# 1️⃣ 新增文件 git-rm.md
$ echo '# git rm' > git-rm.md
# 第1次删除 git-rm.md 
$ git rm git-rm.md
fatal: pathspec 'git-rm.md' did not match any files (执行报错,git rm 不能删除工作区中未追踪的文件)# 2️⃣ 添加到索引
$ git add git-rm.md
# 第2次删除 git-rm.md 
$ git rm git-rm.md
error: the following file has changes staged in the index:git-rm.md
(use --cached to keep the file, or -f to force removal)# 3️⃣ 提交到对象库
$ git commit -m 'add git-rm.md file'
# 第3次删除 git-rm.md 
$ git rm git-rm.md
rm 'git-rm.md'
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)deleted:    git-rm.md# 4️⃣ 提交到对象库
$ git commit -m 'rm git-rm.md file'

2.8 git mv

移动或重命名一个文件,目录或符号链接

示例:

# 1️⃣ 新增文件 git-mv.md
$ echo '# git mv' > git-mv.md
# 第一次 mv
$ git mv git-mv.md git-mv-target.md
fatal: not under version control, source=git-mv.md, destination=git-mv-target.md# 2️⃣ 添加到索引
$ git add git-mv.md
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   git-mv.md
# 第二次 mv
$ git mv git-mv.md git-mv-target.md
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   git-mv-target.md# 3️⃣ 提交到对象库
$ git commit -m 'add git-mv.md file'
# 第三次 mv
$ git mv git-mv-target.md git-mv-new.md
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)renamed:    git-mv-target.md -> git-mv-new.md
# 4️⃣ 再次提交
$ git commit -m 'mv git-mv-target.md to git-mv-new.md file'

2.9 git reset

重置当前 HEAD 到指定的状态

语法

git reset [<mode>] [<commit>]

mode 模式包含如下几种

  • –mixed(默认值):移动 HEAD 指针并重置索引,不会修改工作区,撤销了提交和暂存的更改,但保留了工作区的修改
  • –soft:只移动 HEAD 指针,暂存区和工作区中的更改都会保留在工作区中,以便再次提交
  • –hard:移动 HEAD 指针并重置索引和工作区,彻底删除了提交以及暂存区和工作区的修改,慎用,因为会导致工作区的内容丢失
  • –merge 和 --keep:较少使用,适用于特殊场景。前者尝试将 HEAD 指向的提交和指定提交之间的差异应用到当前工作区,后者类似 mixed,但保留未修改的文件。

示例:

2.9.1 mode参数
–mixed (默认值)
  • 新增文件的状态流转
# 1️⃣ 新增文件 git-reset.md
$ echo '# git reset' > git-reset.md
# 第1次 git reset
$ git reset
On branch main
Untracked files:(use "git add <file>..." to include in what will be committed)git-reset.mdnothing added to commit but untracked files present (use "git add" to track)# 2️⃣ 添加到索引
$ git add git-reset.md
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   git-reset.md
# 第2次 git reset (将文件从索引退回到未追踪状态)
$ git reset
$ git status
On branch main
Untracked files:(use "git add <file>..." to include in what will be committed)git-reset.mdnothing added to commit but untracked files present (use "git add" to track)# 3️⃣ 提交到对象库
$ git commit -m 'add git-reset.md file'
# 第3次 git reset
$ git reset
On branch main
nothing to commit, working tree clean
  • 修改文件的状态流转
# 1️⃣ 修改文件
$ cat >> git-reset.md
## git reset <mode> <commit>
mode : --soft, --mixed, --hard, --keep etc.
# 第1次 git reset
$ git reset
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   git-reset.md# 2️⃣ 添加到索引
$ git add git-reset.md
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   git-reset.md
# 第2次 git reset(回退到未追踪状态)
$ git reset
$ git status
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   git-reset.md# 3️⃣ 提交到对象库
$ git commit -a -m 'modify git-reset.md file'
# 第3次 git reset
$ git reset
On branch main
nothing to commit, working tree clean
–soft
  • 新增文件状态流转
# 1️⃣ 新增文件 git-reset-soft.md
$ echo '# git reset --soft' > git-reset-soft.md
# 第1次 git reset --soft
$ git reset --soft
On branch main
Untracked files:(use "git add <file>..." to include in what will be committed)git-reset-soft.md# 2️⃣ 添加到索引
$ git add git-reset-soft.md
# 第2次 git reset --soft
$ git reset --soft
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   git-reset-soft.md# 3️⃣ 提交到对象库
$ git commit -m 'add git-reset-soft.md file'
# 第3次 git reset --soft
$ git reset --soft
$ git status
On branch main
nothing to commit, working tree clean
  • 修改文件状态流转
# 1️⃣ 修改文件 git-reset-soft.md
$ cat >> git-reset-soft.md
# git reset --soft mode is in active.
# 第1次 git reset --soft
$ git reset --soft
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   git-reset-soft.md# 2️⃣ 添加到索引
$ git add git-reset-soft.md
# 第2次 git reset --soft
$ git reset --soft
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   git-reset-soft.md# 3️⃣ 提交到对象库
$ git commit -m 'modify git-reset-soft.md file'
# 第3次 git reset --soft
$ git reset --soft
$ git status
On branch main
nothing to commit, working tree clean
–hard
  • 新增文件状态流转
# 1️⃣ 新增文件 git-reset-hard.md
$ echo '# git reset --hard' > git-reset-hard.md
# 第1次 git reset --hard
$ git reset --hard
HEAD is now at 64c3235 modify git-reset-soft.md file# 2️⃣ 添加到索引
$ git add git-reset-hard.md
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   git-reset-hard.md
# 第2次 git reset --hard
$ git reset --hard
HEAD is now at 64c3235 modify git-reset-soft.md file (add 到索引的文件被删除了)
$ git status
On branch main
nothing to commit, working tree clean# 3️⃣ 提交到对象库
$ echo '# git reset --hard' > git-reset-hard.md
$ git add git-reset-hard.md
$ git commit -a -m 'add git-reset-hard.md file'
# 第3次 git reset --hard
$ git reset --hard
$ git status
On branch main
nothing to commit, working tree clean
  • 修改文件状态流转
# 1️⃣ 修改文件 git-reset-hard.md (工作区修改的内容被撤销)
$ cat >> git-reset-hard.md
## git reset --hard
the mode of hard will remove working tree and index.
$ git status
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   git-reset-hard.md
# 第1次 git reset --hard
$ git reset --hard
HEAD is now at 2f1ffeb add git-reset-hard.md file(工作区中修改的内容被删除了)
$ git status
On branch main
nothing to commit, working tree clean# 2️⃣ 添加到索引 (添加到索引中的修改的内容被撤销)
$ cat >> git-reset-hard.md
## git reset --hard
the mode of hard will remove working tree and index.
$ git add git-reset-hard.md
# 第2次 git reset --hard
$ git reset --hard
HEAD is now at 2f1ffeb add git-reset-hard.md file (add到索引的文件被删除了)
$ git status
On branch main
nothing to commit, working tree clean# 3️⃣ 提交到对象库(提交到对象库的不会被撤销)
$ cat >> git-reset-hard.md
## git reset --hard
the mode of hard will remove working tree and index.
$ git add git-reset-hard.md
$ git commit -a -m 'modify git-reset-hard.md file'
# 第3次 git reset --hard
$ git reset --hard
HEAD is now at b128c80 modify git-reset-hard.md file(提交到对象库的不会被删除)
$ git status
On branch main
nothing to commit, working tree clean
2.9.2 commit 参数
mode(–mixed)默认值
# 新增文件并提交到对象库
$ echo 'add git-reset-HEAD-1.md' > git-reset-HEAD-1.md
$ git add git-reset-HEAD-1.md
$ git commit -m 'add git-reset-HEAD-1.md file'# 回退到上个提交 commit(上次提交的内容又回到工作区,可继续通过 add/commit 到对象库)
$ git reset HEAD~1
$ git status
On branch main
Untracked files:(use "git add <file>..." to include in what will be committed)git-reset-HEAD-1.md
mode(–soft)
# 新增文件并提交到对象库
$ echo 'add git-reset-HEAD-1.md' > git-reset-HEAD-1.md
$ git add git-reset-HEAD-1.md
$ git commit -m 'add git-reset-HEAD-1.md file'# 回退到上个提交 commit(上次提交的内容又回到暂存区,可继续通过 commit 到对象库)
$ git reset --soft HEAD~1
$ git status
On branch main
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   git-reset-HEAD-1.md
mode(–hard)
# 新增文件并提交到对象库
$ echo 'add git-reset-HEAD-1.md' > git-reset-HEAD-1.md
$ git add git-reset-HEAD-1.md
$ git commit -m 'add git-reset-HEAD-1.md file'# 回退到上个提交 commit(上次提交的内容从工作区和暂存区全部删除)
$ git reset --hard HEAD~1
HEAD is now at b128c80 modify git-reset-hard.md file
$ git status
On branch main
nothing to commit, working tree clean

3、Git Branch

git branch 是用于创建、删除以及查看分支信息

3.1 查看分支

列出当前 git 工程的所有分支

# 列出所有分支
$ git branch
* main# 列出所有分支详情
$ git branch -v (--verbose)
* main b128c80 modify git-reset-hard.md file

说明

  • main:表示分支名称
  • *:星号标识当前的分支

3.2 新建分支

# 新建 test 分支
$ git branch test# 查看分支
$ git branch
* maintest

3.3 切换分支

  • 方式一:checkout
# 切换到 test 分支
$ git checkout test
Switched to branch 'test'# 查看分支
$ git branchmain
* test
  • 方式二:switch
# 切换到 main 分支
$ git switch main
Switched to branch 'main'# 查看分支
$ git branch
* maintest
  • 方式三(推荐):switch
# 新建并切换到uat分支
$ git switch -c uat
Switched to a new branch 'uat'$ git branchmaintest
* uat
  • 方式四(切换到上个分支):switch
# 切换到 main
$ git switch main
Switched to branch 'main'# 切换到上个分支
$ git switch -
Switched to branch 'uat'# 多次使用可在 main 和 uat 分支来回切换
$ git switch -
Switched to branch 'main'

3.4 删除分支

# 1️⃣ 删除 test 分支 (test 分支没有需要合并到 main 分支内容时可直接删除)
$ git branch -d test
Deleted branch test (was b128c80).# 2️⃣ 新建 test 分支,且增加一个提交
$ git switch -c test
$ echo 'add test.md file in test branch' > test_branch.md
$ git add test_branch.md
$ git commit -m 'add test.md file'# 先切换到 main 分支
$ git switch main 
# 再次删除 test 分支(不能删除当前分支)
$ git branch -d test
error: The branch 'test' is not fully merged.
If you are sure you want to delete it, run 'git branch -D test'.

说明:test 分支有未 merge 到 main 分支的 commit,所以删除报错,要删除有 2 种方式

  • 合并到 main 后删除
# test 分支合并到 main
$ git mrege test
Updating b128c80..495a531
Fast-forwardtest_branch.md | 1 +1 file changed, 1 insertion(+)create mode 100644 test_branch.md# 删除 test 分支(成功删除)$ git branch -d testDeleted branch test (was 495a531).
  • 强制删除分支:git branch -D test
# 新建 test 分支
$ git switch -c test# 强制删除
$ git branch -D test
Deleted branch test (was c9d4915).

3.5 修改分支

# 移动或重命名分支(test -> test-new)
$ git branch -m test test-new
$ git branch
* maintest-newuat# 复制分支(test-new -> test-new-copy)
$ git branch -c test-new test-new-copy
$ git branch
* maintest-newtest-new-copyuat

3.6 合并分支

# 创建 feature 分支
$ git switch -c feature-add-readme# 新建一个提交
$ echo '# Git add new Feature' > README.md
$ git add README.md
$ git commit -m 'add readme.md file'# feature 分支合并到 main 分支
$ git switch main
$ git merge feature-add-readme
Updating b128c80..d3ecec6
Fast-forwardREADME.md | 1 +1 file changed, 1 insertion(+)create mode 100644 README.md

说明:

  • 分支合并并不总是一帆风顺的,总会出现冲突,此时可以通过 git diff 查看差异并修正,修正后可通过 **git merge --continue **继续合并。如果不想再合并,可通过 **git merge --abort **放弃本次合并
  • 如果合并分支差异很多,建议使用 GUI 工具进行查看差异并合并

3.7 分支隐藏变化内容

工作中经常情况是,正在某个分支开发需求,但是突然线上有问题需要紧急修复 bug。此时可以用过stash指令,将已修改的内容保存后,再去切换到主分支进行修复 bug。

# test分支正开发需求(添加一个文件,修改一个文件)
$ echo 'add test-stash.md file' > test-stash.md
$ git add test-stash.md
$ cat >> README.md
working on feature readme.md file
$ git status
On branch test
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   test-stash.mdChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   README.md# 隐藏修改的内容
$ git stash
Saved working directory and index state WIP on test: d3ecec6 add readme.md file
# 查看隐藏的修改内容
$ git stash list
stash@{0}: WIP on test: d3ecec6 add readme.md file# 切换到 main 分支修复 bug
$ git switch main
------on-fix-bug------# 切换到 test 分支
$ git switch -# 恢复隐藏的内容,继续开发新需求
$ git stash pop
On branch test
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   test-stash.mdChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   README.md# 删除隐藏的内容
Dropped refs/stash@{0} (2e5f54e16dbe17da875c2a542edacd64f0532a89)# 查看隐藏列表
$ git stash list
// 空内容

stash 其他参数
数据准备:

# 将上面的内容继续隐藏
$ git stash
Saved working directory and index state WIP on test: d3ecec6 add readme.md file# 添加隐藏
$ echo 'add test-stash-2.md file' > test-stash-2.md
$ git add test-stash-2.md
$ git stash
Saved working directory and index state WIP on test: d3ecec6 add readme.md file
# 添加隐藏
$ cat >> test-stash-2.md
modify test-stash-2.md file
$ git add test-stash-2.md
$ git stash
Saved working directory and index state WIP on test: d3ecec6 add readme.md file# 查看
$ git stash list
stash@{0}: WIP on test: d3ecec6 add readme.md file
stash@{1}: WIP on test: d3ecec6 add readme.md file
  • drop:删除一条隐藏的内容
# 删除指定 stash
$ git stash drop stash@{0}
Dropped stash@{0} (db32a1ec419ad2b74bffe23755102e146f9d170a)# 查看
$ git stash list
stash@{0}: WIP on test: d3ecec6 add readme.md file
  • clear : 移除所有已隐藏的内容
# 添加隐藏
$ echo 'add test-stash-3.md file' > test-stash-3.md
$ git add test-stash-2.md
$ git stash
Saved working directory and index state WIP on test: d3ecec6 add readme.md file# 查看
$ git stash list
stash@{0}: WIP on test: d3ecec6 add readme.md file
stash@{1}: WIP on test: d3ecec6 add readme.md file# 清空所有 stash
$ git stash clear# 查看
$ git stash list
// 空内容

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

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

相关文章

C# 深拷贝和浅拷贝

文章目录 1.深拷贝2.浅拷贝3.拷贝类4.浅拷贝的实现5.深拷贝实现5.1 浅拷贝对象&#xff0c;对引用类型重新一个个赋值5.2 反射实现5.3 利用XML序列化和反序列化实现 1.深拷贝 拷贝一个对象时&#xff0c;不仅仅把对象的引用进行复制&#xff0c;还把该对象引用的值也一起拷贝。…

python期末作业:批量爬取站长之家的网站排行榜数据并保存,数据分析可视化

爬虫作业,含python爬取数据和保存文件,数据分析使用pyecharts做数据可视化 整体上分析网站的排名,直观看各个网站的热度。 数据分析之后大致的效果: 整个项目分为两个大的部分,第一部分就是抓取网站排名数据,然后保存为Excel、csv等格式,其次就是从文件中…

【30天精通Prometheus:一站式监控实战指南】第8天:redis_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

arc-eager算法XJTU-NLP自然语言处理技术期末考知识点

arc-eager算法&#xff1a;以我/做了/一个/梦为例来描述arc-eager算法的四个操作&#xff1a;shift&#xff0c;left-arc&#xff0c;right-arc&#xff0c;reduce XJTU-NLP期末考点2024版 题型&#xff1a;5*6简答题4*15计算题 简答题考点&#xff1a; &#xff08;1&#…

Java+Spring+ IDEA+MySQL云HIS系统源码 云HIS适合哪些地区的医院?

JavaSpring IDEAMySQL云HIS系统源码云HIS适合哪些地区的医院&#xff1f; 云HIS适合哪些地区的医院&#xff1f; 云HIS&#xff08;云医院信息系统&#xff09;适合多种地区的医院&#xff0c;特别是那些希望实现医疗服务的标准化、信息化和规范化&#xff0c;同时降低IT运营成…

42-2 应急响应之计划任务排查

一、进程排查 进程排查是指通过分析系统中正在运行的进程,以识别和处理恶意程序或异常行为。在Windows和Linux系统中,进程是操作系统的基本单位,因此对于发现和处理恶意软件或异常活动至关重要。恶意程序通常会以进程的形式在系统中运行,执行各种恶意操作,比如窃取信息、破…

每日一题 包含不超过两种字符的最长子串

目录 1.前言 2.题目解析 3.算法原理 4.代码实现 1.前言 首先我打算介绍一下&#xff0c;我对滑动窗口的理解。 滑动窗口可以分为四个步骤&#xff1a; 进窗口&#xff1a; 在这一步骤中&#xff0c;我们决定了要在窗口中维护的信息。例如&#xff0c;在这个问题中&#xff…

Codeforces Round 946 (Div.3)

C o d e f o r c e s R o u n d 946 ( D i v . 3 ) \Huge{Codeforces~Round~946~(Div.3)} Codeforces Round 946 (Div.3) 题目链接&#xff1a;Codeforces Round 946 (Div. 3) 文章目录 Problems A. Phone Desktop题意思路标程 Problems B. Symmetric Encoding题意思路标程 Pr…

ubuntu 配置用户登录失败尝试次数限制

前言&#xff1a; 通过修改pam配置来达到限制密码尝试次数&#xff01; 1&#xff1a;修改 /etc/pam.d/login 配置&#xff08;这里只是终端登录配置&#xff0c;如果还需要配置SSH远程登录限制&#xff0c;只配置下面的 /etc/pam.d/pam.d/common-auth 即可&#xff09; vim…

SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端?

SpringCloud的Config配置中心&#xff0c;为什么要分Server服务端和Client客户端&#xff1f; 在SpringCloud的Config配置中心中分了Server服务端和Client客户端&#xff0c;为什么需要这样分呢&#xff1f;它的思想是所有微服务的配置文件都放到git远程服务器上&#xff0c;让…

Elasticsearch集群搭建学习

Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器&#xff1f;如何自定义分词器&#xff1f;拼音分词器注意事项&#xff1f; 自动补全数据同步集群搭建ES集群结构创…

蓝桥杯备赛——DP【python】

一、小明的背包1 试题链接&#xff1a;https://www.lanqiao.cn/problems/1174/learning/ 问题描述 输入实例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 37 问题分析 这里我们要创建一个DP表&#xff0c;DP&#xff08;i&#xff0c;j&#xff09;表示处理到第i个物品时消耗j体…

Atlas 200 DK(Model 3000)安装MindSpore Ascend版本

一、参考资料 mindspore快速安装 二、重要说明 经过博主多次尝试多个版本&#xff0c;Atlas 200 DK&#xff08;Model 3000&#xff09;无法安装MindSpore Ascend版本。 三、准备工作 1. 测试环境 设备型号&#xff1a;Atlas 200 DK(Model: 3000) Operating System Vers…

依赖的各种java库(工具类) :fastjson,lombok,jedis,druid,mybatis等

lombok 功能&#xff1a; Lombok 是一个实用的Java类库&#xff0c;可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。 导入包&#xff1a;使用Lombok首先要将其作为依赖添加到项目中&#xff0c;在pom.xml文件中手动添加 <dependency><groupId&g…

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…

【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)

web5 1 阿呆被老板狂骂一通&#xff0c;决定改掉自己大意的毛病&#xff0c;痛下杀手&#xff0c;修补漏洞。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\…

24款奔驰S450升级原厂后排娱乐系统 主动氛围灯有哪些功能

24款奔驰S400豪华升级原厂主动氛围灯与后排娱乐系统&#xff1a;画蛇添足还是锦上添花&#xff1f; 在当今汽车市场竞争激烈的环境下&#xff0c;汽车制造商们为了满足消费者的多元化需求&#xff0c;不断推出各种升级配置和豪华版本。24款奔驰S400豪华版作为奔驰S级的一款重要…

听说部门来了个00后测试开发,一顿操作给我整麻了

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

uniapp开发vue3监听右滑返回操作,返回到指定页面

想要在uniapp框架中监听左滑或者右滑手势&#xff0c;需要使用touchstart和touchend两个api&#xff0c;因为没有原生的左右滑监听api&#xff0c;所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对&#xff0c;右滑的话&#xff0c;结束时候的x坐…

飞速提升中文打字,Master of Typing in Chinese for Mac助你一臂之力

Master of Typing in Chinese for Mac是一款专为Mac用户设计的中文打字练习软件。其主要功能包括帮助用户提高打字速度和准确性&#xff0c;培养盲打技巧&#xff0c;使键盘输入更加高效。 打字速度提升&#xff1a;软件提供多种练习模式&#xff0c;如字母、特殊字符、单词和…