Git(六):基本命令(3):储藏、标签、拉取、子模块

news2024/10/2 12:32:26

目录

17、stash 储藏

17.2 描述

17.3 基本用法

18、tag 标签

18.1 描述

18.2 基本用法

19、fetch 获取

19.1 描述

19.2 基本用法

20、pull 整合

20.1 描述

20.2 基本用法

20.3 pull 与 fetch 的区别

21、push 更新推送

21.1 描述

21.2 基本用法

22、remote 管理

22.1 基本用法

23、submodule 管理子模块

23.1 使用场景

23.2 描述

23.3 基本用法

24、show 显示

24.1 描述

24.2 基本用法

25、shortlog 汇总

25.1 基本用法

26、describe 显示最近标签

26.1 描述

26.2 基本用法

27、rebase 合并修改

27.1 示例


17、stash 储藏

    用于将更改储藏在脏工作目录中。

git stash list [<options>]
git stash show [<stash>]
git stash drop [-q|--quiet] [<stash>]
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash branch <branchname> [<stash>]
git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
         [-u|--include-untracked] [-a|--all] [<message>]
git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
         [-u|--include-untracked] [-a|--all] [-m|--message <message>]]
         [--] [<pathspec>…​]]
git stash clear
git stash create [<message>]
git stash store [-m|--message <message>] [-q|--quiet] <commit>

17.2 描述

  • 当要记录工作目录和索引的当前状态,但想要返回干净的工作目录时,使用 git stash 保存本地修改,并恢复工作目录以匹配 HEAD 提交;

  • list 列出所储藏的修改,show 进行检查,apply 恢复,默认情况下,储藏列表”分支名称上的 WIP “,但可以在创建一个消息时在命令行上给出具体描述性的消息;

  • 创建的最新储藏存储在 refs/stash 中,这个引用中的反垃圾中会发现较旧的垃圾邮件,并且可以使用通常的 reflog 语法命名(stash@{0}是最近创建的垃圾邮件),也可以通过指定存储空间索引来引用锁存。

17.3 基本用法

  • 拉取到一颗肮脏树

当发现本地的更改与上游的更改冲突时,git pull 拒绝覆盖您的更改,此时可以隐藏更改,执行 git pull ,再解压缩:

 git pull
 ...
file foobar not up to date, cannot merge.
$ git stash
$ git pull
$ git stash pop
  • 工作流中断

当要处理紧急的事务从而不得不中断自己的工作流程时,应该提交临时分支来存储更改并返回原始分支进行紧急修复:

$ git checkout -b my_wip                // 临时分支
$ git commit -a -m "WIP"                // 临时提交
$ git checkout master                   // 返回主分支
$ edit emergency fix # 编辑内容          // 紧急修复
$ git commit -a -m "Fix in a hurry"     // 提交修复
$ git checkout my_wip                   // 返回临时分支
$ git reset --soft HEAD^                // 移位值最新的提交的头位置

    可使用 git stash 来简化:

$ git stash        // 临时储藏
$ edit             // 处理
$ git commit -a -m 'fix'        // 紧急处理
$ git stash pop    // 获取最近一次储藏的内容,之后删除栈中对应的 stash
  • 储藏工作

当修改文件后,想要切换分支但不想提交当前进行的工作,此时可以往栈中推送新的储藏:

$ git stash
Saved working directory and index state \
  "WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file
(To restore them type "git stash apply")

# 查看现有的储藏
$ git stash list
  • 应用存储

若想应用之前的变更,可以通过 apply 进行指定应用,不指定将会使用最近的存储:

$ git stash apply
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   index.html
#      modified:   lib/simplegit.rb
--重新暂存被暂存的文件
$ git stash apply --index
--移除储藏的文件
$ git stash drop stash@{0}
  • 取消储藏

通过取消该储藏的补丁使得取消之前所储藏的修改:

$ git stash show -p stash@{0} | git apply -R
# 不指定储藏的索引将会选择最近的储藏
-- 设置别名
$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'
$ git stash apply
$ #... work work work
$ git stash-unapply
  • 储藏中创建分支

当储藏了一些工作之后继续工作,重新储藏将会归并冲突,若想重新检验储藏变更,创建新分支,成功将会丢弃储藏:

$ git stash branch testchanges

18、tag 标签

  • 用于创建,列出,删除或验证使用 GPG 签名的标签对象。
git tag [-a | -s | -u <keyid>] [-f] [-m <msg> | -F <file>]
    <tagname> [<commit> | <object>]
git tag -d <tagname>…
git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>]
    [--points-at <object>] [--column[=<options>] | --no-column]
    [--create-reflog] [--sort=<key>] [--format=<format>]
    [--[no-]merged [<commit>]] [<pattern>…]
git tag -v [--format=<format>] <tagname>…

18.1 描述

  • 创建标签可以:用于在开发阶段,某个阶段的完成,创建一个版本,在开发中都会使用到,指向软件开发中的一个关键时期;

  • 不能创建已经存在的标签,除非指定 -f

  • 创建标签对象以及一个标签消息:-a-s-u <keyid>,使用 -m <msg>-F <file>,否则将启动编辑器自主输入标签消息;

  • 标签类型:

    • 轻量级标签,像不会变化的分支,实际上就是个指向特定提交对象的引用;

    • 含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。

18.2 基本用法

  • 列出已有的标签,也可进行筛选:
$ git tag
$ git tag -l 'v1.4.2.*'
  • 创建含附注类型的标签:
$ git tag -a v1.4 -m 'my version 1.4'

# 轻量级标签
$ git tag v1.4-lw

# git show 查看响应标签的版本信息,包括标签对象
--$ git show v1.4
tag v1.4
Tagger: Scott Chacon <1@qq.com>
Date:   Mon Feb 9 14:45:11 2009 -0800

my version 1.4

commit 15027951111...3b3ff6
Merge: 4a41117... a611117...
Author: n <1@qq.com>
Date:   Sun Feb 18 10:10:10 2009 -0800
  • 签署标签:

如果有自己的私钥,还可用 GPG 来签署标签:

$ git tag -s v1.5 -m 'my signed 1.5 tag'
  • 删除标签:
$ git tag -d v1.0
  • 验证已经签署的标签:
$ git tag -v v1.4
object 883653babd11111116a5c392bb739348b1eb61
type commit
tag v1.4
tagger 1C 1<1@1.1> 111111111-0700

GIT 1.4
  • 后期标签加注:
$ git tag -a v1.2 9fceb11
  • 分享标签:

默认情况下不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。运行 git push origin [tagname]

$ git push origin --tags
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.1/1.git
 * [new tag]         v0.1 -> v0.1
 * [new tag]         v1.2 -> v1.2
 * [new tag]         v1.4 -> v1.4
 * [new tag]         v1.4-lw -> v1.4-lw

19、fetch 获取

用于从另一个存储库中下载对象和引用

git fetch [<options>] [<repository> [<refspec>…]]
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch --all [<options>]

19.1 描述

  • 从一个或多个其他存储库中获取分支或标签(引用)以及完成其历史所必需的对象**

  • 远程跟踪以更新,需要将这些更新获取回本地

  • 默认情况下还会获取正在获取的历史记录的任何标签

  • 可以从单个命名的存储库或 URL 中,也可以从多个存储库中获取;

  • 获取的参考名称以及它们所指向的对象名称被写入到 .git/FETCH_HEAD 中。

19.2 基本用法

  • 更新远程跟踪分支:
# 从远程 refs/heads/ 命名空间复制所有分支,并存储到本地 refs/remotes/origin/ 中
$ git fetch origin
  • 使用 refspec:
# 从远程分支 pu 和 maint 提取到本地 pu 和 tmp
$ git fetch origin +pu:pu maint:tmp
  • 远程分支上窥视:
$ git fetch git://git.1.org/1/git.git maint
# 使用FETCH_HEAD来检查具有git-log的分支
$ git log FETCH_HEAD 
  • 更新远程分支主机:
$ git fetch <远程主机名>
# 更新所有分支
$ git fetch
# 指定远程主机的指定分支
$ git fetch <远程主机名> <分支名>
# 查看远程分支
$ git branch -a
* master    # 本地的当前分支
  remotes/origin/master    # 远程分支

20、pull 整合

用于从另一个存储库或本地分支获取并集成(整合)到本地分支

git pull [options] [<repository> [<refspec>…]]

20.1 描述

  • 默认模式下,git pullgit fetch 后跟 git merge FETCH_HEAD 的缩写;

  • git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。

20.2 基本用法

  • 将远程主机的分支与本地的分支 master 合并
$ git pull origin next:master
# 合并当前分支则省略 : 冒号
  • 建立追踪关系(tracking)下 pull 可以省略远程分支名
# 手动建立追踪关系
$ git branch --set-upstream master origin/next
# 合并
$ git pull origin
# 若当前分支只有一个跟踪分支,则可以省略远程主机名
$ git pull
# 采用 rebase 模式
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

20.3 pull 与 fetch 的区别

  1. git fetch :相当于是从远程获取最新到本地,不会自动合并
$ git fetch origin master            # 下载最新版本都本地
$ git log -p master..origin/master   # 比较分支差别
$ git merge origin/master            # 合并
  1. git pull :相当于是从远程获取最新并 merge 到本地
git pull origin master

21、push 更新推送

用于将本地分支的更新,推送到远程主机。格式与 pull 相似。

$ git push <远程主机名> <本地分支名>:<远程分支名>

git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
       [--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
       [-u | --set-upstream] [--push-option=<string>]
       [--[no-]signed|--sign=(true|false|if-asked)]
       [--force-with-lease[=<refname>[:<expect>]]]
       [--no-verify] [<repository> [<refspec>…]]

21.1 描述

  • 使用本地引用更新远程引用,同时发送完成给定引用所需的对象;

  • 可以在每次推入存储库时,通过在那里设置挂钩触发一些事件;

  • 当不指定使用<repository>参数时,将查询当前分支的 branch.*.remote 以此确定位置。

21.2 基本用法

  • 删除远程分支
# 推送本地空的分支
$ git push origin :master
# 等同于
$ git push origin --delete master
  • -u 指定默认主机
$ git push -u origin master    # 后面可直接使用 git push
  • 更改默认推送方式 simple 方法( V2.0 之前默认 matching )
$ git config --global push.default matching
# 或者
$ git config --global push.default simple
  • 推送更新
# 推送所有远程主机
$ git push --all origin
# 强制推送,产生一个 非直进式 合并
$ git push --force origin
# 推送标签,默认不推送
$ git push origin --tags
# 将远程分支推送到远程同名下
$ git push origin HEAD
# 将当前分支推送到源存储库中的远程引用匹配主机
$ git push origin HEAD:master
  • 异分支推送、补充与覆盖
# 推送新分支
$ git push origin lbranch-1:refs/rbranch-1
# 补充原有分支
$ git rebase rbranch-1
$ git push origin lbranch-2:refs/rbranch-1
# 覆盖远程分支
$ git push -f origin lbranch-2:refs/rbranch-1
--或者
$ git push origin :refs/rbranch-1   //删除远程的rbranch-1分支
$ git push origin lbranch-1:refs/rbranch-1
  • 查看 push 结果
$ gitk rbranch-1
  • 标签推送与删除
$ git push origin tag_name
# 删除远程标签
$ git push origin :tag_name

22、remote 管理

  • 用于管理一组跟踪的存储库。
git remote [-v | --verbose]
git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url>
git remote rename <old> <new>
git remote remove <name>
git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
git remote set-branches [--add] <name> <branch>…​
git remote get-url [--push] [--all] <name>
git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <url>
git remote [-v | --verbose] show [-n] <name>…​
git remote prune [-n | --dry-run] <name>…​
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…​]

22.1 基本用法

  • 列出存在的远程分支
git remote
  • 列出详细信息
# --verbose 显示对应的克隆地址
$ git remote -v
  • 添加新的远程并检出一个分支
# taging 指代对应的仓库
$ git remote add staging git://git.kernel.org/.../gregkh/staging.git
# 列出分支
$ git remote
# 更新远程分支
$ git fetch staging 
# 查看分支关系
$ git branch -r
# 切换到远程分支
$ git checkout -b github/master
  • 模仿 clone ,但只跟踪选定分支
$ git remote add -f -t master -m master origin git://example.com/git.git
$ git merge origin

23、submodule 管理子模块

  • 用于初始化、更新或检出子模块。
git submodule [--quiet] add [<options>] [--] <repository> [<path>]
git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…​]
git submodule [--quiet] init [--] [<path>…​]
git submodule [--quiet] deinit [-f|--force] (--all|[--] <path>…​)
git submodule [--quiet] update [<options>] [--] [<path>…​]
git submodule [--quiet] summary [<options>] [--] [<path>…​]
git submodule [--quiet] foreach [--recursive] <command>
git submodule [--quiet] sync [--recursive] [--] [<path>…​]
git submodule [--quiet] absorbgitdirs [--] [<path>…​]

23.1 使用场景

    当项目越来越多的时候,常常会需要提取一个公共的库给多个项目使用,此时会有:

  1. 如何在 git 项目中导入库?

  2. 库在其他项目中被修改了可以更新到远程代码库?

  3. 其他库如何获取库的最新的提交?

  4. 如何在 clone 的时候自动导入库?

23.2 描述

    submodule 是一个很好的多项目使用共同类库的工具

  • 允许类库项目为 repository,子项目为一个单独的 git 项目存在父项目中,子项目可以有自己的独立的commitpushpull

  • 父项目以 Submodule 的形式包含子项目,父项目可以指定子项目 header;

  • 父项目中的提交信息包含 Submodule 的信息,clone 父项目时可以把 Submodule 初始化。

23.3 基本用法

  • 添加子模块

  1. 添加名为 “DbConnector” 的库,默认情况下子模块会将子项目放到一个与仓库同名的目录
$ git submodule add http://github.com/chaconinc/DbConnector
  1. 此时会新增两个文件,包括 .gitmodules 文件,该配置文件保存了 URL 与已经拉取的本地目录之间的映射:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   .gitmodules
    new file:   DbConnector

$ cat .gitmodules
[submodule "DbConnector"]
    path = DbConnector
    url = http://github.com/chaconinc/DbConnector

如果有多个子模块,该文件就会有多条记录;

如果 .gitignore 文件一样受到版本控制;

  • 克隆含有子模块的项目

  1. 项目中有 DbConnector 目录,不过是空的,需要进行初始化:
$ ls -la
drwxr-xr-x  13 schacon  staff  442 Sep 17 15:21 .git
-rw-r--r--   1 schacon  staff   92 Sep 17 15:21 .gitmodules
drwxr-xr-x   2 schacon  staff   68 Sep 17 15:21 DbConnector
...
  1. git submodule init 用来初始化本地配置文件,而 git submodule update 则从该项目中抓取所有数据并检出父项目中列出的合适的提交:
$ git submodule init
Submodule 'DbConnector' (http://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
$ git submodule update
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
  1. 也可以在 clone 时利用 --recursive 进行自动初始化并更新仓库中的每一个子模块:
$ git clone --recursive http://github.com/chaconinc/MainProject
  • 删除 submodule
# 不支持直接删除,需手动删除:
git rm --cached pod-library
rm -rf pod-library
rm .gitmodules
更改git的配置文件config:
vim .git/config
# 删除后进行提交远程服务器
git commit -a -m 'remove pod-library submodule'

24、show 显示

  • 用于显示各种类型的对象。
git show [options] <object>…​

24.1 描述

  • 显示一个或多个对象(blobs,树,标签和提交);

  • 显示日志消息和文本差异,还以 git diff-tree --cc 生成的特殊格式呈现合并提交;

  • 显示标签消息和引用对象;

  • 显示树的名称(相当于 git ls-tree--name-only);

  • 显示 blobs 的普通的内容;

  • 通常用来显示提交引入的更改。

24.2 基本用法

  • 显示标签及其指向对象
$ git show v1.0.0
  • 显示标签指向的
$ git show v1.0.0^{tree}
  • 显示标签指向的提交的主题
$ git show -s --format=%s v1.0.0^{commit}
  • 显示 README 文件内容,next 分支的第10次提交的内容
$ git show next~10:README
  • 将 Makefile 的内容连接到分支主控的头部:
$ git show master:Makefile master:t/Makefile

25、shortlog 汇总

  • 用于汇总 git 日志输出
git log --pretty=short | git shortlog [<options>]
git shortlog [<options>] [<revision range>] [[\--] <path>…​]

如果在命令行上没有传递修订版本,并且标准输入不是终端或没有当前的分支,则 git shortlog 将输出从标准输入读取的日志的摘要,而不引用当前存储库。

25.1 基本用法

  • 显示用户提交次数以及提交的注释:
$ git shortlog -s -n
  135  Tom Preston-Werner
  15  Jack Danger Canty

-s 省略每次 commit 注释仅仅返回一个简单统计;

-n 按照 commit 数量从多到少进行排序。

26、describe 显示最近标签

    显示离当前提交最近的标签

    简介:

git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>…​]
git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]

26.1 描述

  • 查找从提交可访问的最新标记;

  • 如果标签指向提交,则只显示标签。 否则,它将标记名称与标记对象之上的其他提交数量以及最近提交的缩写对象名称后缀;

  • 默认情况下(不包括--all--tags) git 描述只显示注释标签。

26.2 基本用法

  • 显示标签描述信息:
$ git describe --tags
tag1-2-g026498b

2:表示自打tag tag1 以来有2次提交(commit);

g026498b:g 为git的缩写,在多种管理工具并存的环境中很有用处;

27、rebase 合并修改

  • 在另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支
git rebase [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
    [<upstream> [<branch>]]
git rebase [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
    --root [<branch>]
git rebase --continue | --skip | --abort | --quit | --edit-todo

27.1 示例

  • merge 合并:

  1. 基于远程分支 origin 新建一个分支 mywork:

 

  1. 在 mywork 分支上做一些修改生成两个提交:

 

  1. 此时用 pull 命令把 origin 分支上的修改拉下来与自己的修改进行合并

 

# 1.
$ git checkout -b mywork origin
# 2.
$ vi file.txt
$ git commit
# 3.
$ git pull ...
  • rebase 合并:

  1. 若是想分支历史合并,使得远程记录进行合并,则用 rebase 合并:
$ git checkout mywork
$ git rebase origin

    该命令会把”mywork“分支里的每个 commit 取消掉,并临时保存为补丁(patch 在”.git/rebase“),然后把”mywork“ 更新 ”origin“ ,最后把补丁应用到”mywork“上。

 

    更新 mywork 之后,会指向新的提交,丢弃旧的提交。

运行垃圾收集命令(pruning garbage collection), 删除被丢弃的提交。

 

    rebase 过程中也会出现冲突,git 会停止 rebase,解决完冲突后,add 更新内容的索引,无需 commit ,只需要:

$ git rebase --continue

    此时 git 会 apply 余下的 补丁。

  • 可以用 --abort终止 rebase 操作。并且 mywork 会回到 rebase 开始前的状态:
$ git rebase --abort

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

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

相关文章

Vue性能优化

目录 Vue性能优化的必要性&#xff1a;Vue项目优化工具webpack-bundle-analyzerwebpack-bundle-analyzer作用&#xff1a;webpack-bundle-analyzer用法&#xff1a;webpack-bundle-analyzer运行&#xff1a;webpack-bundle-analyzer使用&#xff1a; vue项目性能优化代码模块化…

Tensorflow入门图像分类-猫狗分类-安卓

最近在温习 Tensorflow&#xff0c;写了一篇笔记&#xff0c;记录了使用 Tensorflow 训练一个猫狗图像分类器的模型并在安卓应用上使用的全过程。 一、数据集准备 1.1 数据集来源 我采用的是微软的猫狗数据集&#xff0c;链接&#xff1a;Download Kaggle Cats and Dogs Datas…

2023华中杯数学建模C题完整模型代码

已完成全部模型代码&#xff0c;文末获取。 摘要 随着工业化和城市化的快速发展&#xff0c;空气污染已经成为全球性的环境问题。细颗粒物&#xff08;PM2.5&#xff09;等污染物对人类健康、生态环境和社会经济造成了严重影响。本研究旨在深入探究影响PM2.5浓度的主要因素&a…

【Android入门到项目实战-- 8.4】—— 如何解析JSON格式数据

目录 一、准备工作 二、使用JSONObject 三、使用GSON 比起XML&#xff0c;JSON的主要优势在于它的体积更小&#xff0c;在网络上传输的时候可以更省流量&#xff0c;但缺点是语义性较差&#xff0c;看起来不直观。 一、准备工作 还是使用前面文章的方法&#xff0c;在服务器…

【C++】STL标准库之vector

STL标准库之vector vector类的简介常用的vector类的接口构造容量遍历及访问增删查改迭代器迭代器失效问题 vector类的简介 vector是大小可变数组的序列容器&#xff0c;与string相比&#xff0c;vector中可以存任何类型的数据&#xff0c;而string中存储的只能是字符类型。 因为…

第二十九章 使用消息订阅发布实现组件通信

PubSubJS库介绍 如果你想在React中使用第三方库来实现Pub/Sub机制&#xff0c;PubSubJS是一个不错的选择。它是一个轻量级的库&#xff0c;可以在浏览器和Node.js环境中使用。 PubSubJS提供了一个简单的API&#xff0c;可以让你在应用程序中订阅和发布消息。你可以使用npm来安…

大数据Doris(十):Doris基础介绍

文章目录 Doris基础介绍 一、基本概念 二、建表语法及参数解释 1、column_definition_list 2、index_definition_list 3、engine_type 4、key_type 5、table_comment 6、partition_desc 7、distribution_desc 8、rollup_list 9、properites 三、数据类型 Doris基础…

java合并数组的方法

在 Java中&#xff0c;数组是一种重要的数据结构&#xff0c;在 Java中数组的操作方式有两种&#xff0c;一种是直接使用数组来操作&#xff0c;另一种是通过引用计数或者双指针对数组进行操作。对于直接使用数组来操作的方式&#xff0c;我们可以通过两个方法来实现。 一种是将…

C++(多态中)

目录&#xff1a; 1.多态实现原理&#xff08;再剖析&#xff09; 2.析构函数加virtual 3.C11新增两个关键字 override 和 final 4.重载、覆盖&#xff08;重写&#xff09;、隐藏的对比 5.抽象类 1.多态实现原理&#xff08;再剖析&#xff09; 实现出多态的效果&#xff0c;我…

Docker之Docker Compose技术

目录 一、什么是docker compose? 二、安装docker compose 三、使用案例&#xff1a;部署一个简单的fastapi服务 (以下教程是基于环境已将安装了docker服务) 一、什么是docker compose? Compose是一个将多个docker容器组合部署的技术&#xff0c;能通过编写yaml配置文件…

IJCAI2023 | A Systematic Survey of Chemical Pre-trained Models(化学小分子预训练模型综述)

IJCAI_A Systematic Survey of Chemical Pre-trained Models 综述资料汇总(更新中&#xff0c;原文提供)&#xff1a;GitHub - junxia97/awesome-pretrain-on-molecules: [IJCAI 2023 survey track]A curated list of resources for chemical pre-trained models 参考资料&…

『python爬虫』09. bs4实战之下载精美壁纸(保姆级图文)

目录 爬取思路代码思路1.拿到主页面的源代码. 然后提取到子页面的链接地址, href2.通过href拿到子页面的内容. 从子页面中找到图片的下载地址 img -> src3.下载图片 3. 完整实现代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&…

docker 非持久化存储 tmpfs mounts

docker 非持久化存储 tmpfs mounts 简介tmpfs mounts 限制--tmpfs 和 --mount 之间的差异在容器中使用 tmpfs mounts指定 tmpfs 选项 简介 官方文档&#xff1a;https://docs.docker.com/storage/tmpfs/ 与 volume 和 bind mounts 不同&#xff0c;tmpfs mounts 是临时的&…

jdk中juc多线程编程工具

jdk线程池实现原理分析 目录 CompletionService CompletableFuture 基本原理 CompletableFuture的接口 静态方法 handle() vs whenComplete() xxxEither() 异常处理exceptionally() 获取任务结果 结束任务 Semaphore CyclicBarrier CountDownLatch jdk线程池实…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 4 Mining Data Streams

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 4 Mining Data Streams &#x1f4a1; Skip this chapter due to its difficulty and for me, it is hard to understand. Summary of Chapter 4 The Stream Data Model: This model assumes da…

【微机原理】半导体存储器

目录 一.半导体存储器的分类 二、半导体存储器性能指标 三、半导体存储器的结构 一.半导体存储器的分类 半导体存储器的分类方法有很多种。 1.按器件原理来分&#xff1a;有双极型存储器和MOS型存储器。 双极型&#xff1a;速度快、集成度低、功耗大MOS型&#xff1a;速度慢、集…

“ 探索迷局:解密广度寻路算法 “

专栏文章&#xff0c;自下而上 数据结构与算法——二叉搜索树 数据结构与算法——深度寻路算法 数据结构与算法——二叉树实现表达式树 数据结构与算法——树(三指针描述一棵树&#xff09; 数据结构与算法——栈和队列&#xff1c;也不过如此&#xff1e; 数据结构与算法——八…

C++的智能指针

文章目录 1. 内存泄漏1.1 什么是内存泄漏1.2 内存泄漏分类 2. 为什么需要智能指针3. 智能指针的使用及原理3.1 RAII3.2 使用RAII思想设计的SmartPtr类3.3 让SmartPtr像指针一样3.3 SmartPtr的拷贝3.4 auto_ptr3.5 unique_ptr3.6 shared_ptr3.6.1 shared_ptr的循环引用3.6.2 wea…

MYSQL-数据库管理(上)

一、数据库概述 一、数据库基本概念 1.1 数据 1&#xff09; 描述事物的符号记录称为数据&#xff08;Data&#xff09;。数字、文字、图形、图像、声音、档案记录等 都是数据。 2&#xff09;数据是以“记录”的形式按照统一的格式进行存储的&#xff0c;而不是杂乱无章的。…

机器学习之分类决策树与回归决策树—基于python实现

大家好&#xff0c;我是带我去滑雪&#xff01; 本期为大家介绍决策树算法&#xff0c;它一种基学习器&#xff0c;广泛应用于集成学习&#xff0c;用于大幅度提高模型的预测准确率。决策树在分区域时&#xff0c;会考虑特征向量对响应变量的影响&#xff0c;且每次仅使用一个分…