git 学习笔记

news2024/9/27 12:16:19

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件,可以敏捷高效地处理任何或小或大的项目。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持。

一、安装配置

1. 安装

$ sudo apt install git

2. 配置用户和邮箱

初次使用git,必须配置一下用户和邮箱

git config --global user.name "ymz316"    
git config --global user.email "ymz316@email.com"

3.其他常见配置

git config --global core.editor vim      # 设置git默认编辑器,不设置的话默认是nano,可选vim,pluma等
git config --global merge.tool vimdiff   # 设置git默认差异分析工具

Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。

4. 其他常见指令

git config --list                        # 查看配置信息
git config user.name                     # 直接查询某个配置信息(如:user.name)
git help config                          # 获取帮助(如想知道config命令怎么用)

二、git基础使用

1. 创建git仓库

1) 直接在工作目录中创建新仓库

$ mkdir test
$ cd test
$ git init
$ git config init.defaultbranch=master     #创建默认分支master

这时候会发现当前目录下生成了一个.git目录,该目录下存放了 git 需要的数据和资源,但目前仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

如果当前目录下有些文件需要纳入版本控制,需要先用git add命令告诉git开始对这些文件进行跟踪,然后用git commit提交。

$ touch a.txt b.txt         #创建2个文件
$ git status                #查看文件状态,提示此时位于master分支,且a.txt和b.txt都为未跟踪,需用git add进行跟踪
$ git a.txt b.txt           #跟踪a.txt和b.txt
$ git status                #查看文件状态,a.txt和b.txt已跟踪,但需要git commit提交,或者git rm取消跟踪
$ git commit -m "第一次提交"  #提交
$ git log                    #查看提交记录
commit 0014fb6e33a533134db88c45ff7e5a5891a69c5b (HEAD -> master)
Author: ymz316 <ymz316@126.com>
Date:   Fri Apr 29 08:54:17 2022 +0800

    第一次提交

2) 从现有仓库克隆

切换到需要创建git仓库的上级目录,执行:git clone [url] 如:

git clone https://git.suckless.org/dwm

会在当前目录创建同名的dwm目录及目录内的文件,同时该目录下包含.git目录。如果希望新建的目录不是dwm,可以指定新的项目名称:

git clone https://git.suckless.org/dwm mydwm

此时新建的目录就是mydwm而不是dwm了。

2. 记录每次更新到仓库

对项目中的某些文件进行阶段性的修改之后,可以提交本次更新到仓库。

工作目录下的所有文件只有2种状态:已跟踪(tracked)未跟踪(untracked)

  • 已跟踪文件又有3种状态:未修改(un modified)已修改未暂存(modified/not staged)暂存(staged)
  • 暂存状态的文件又分为2种:新加入跟踪的文件(new file)已跟踪并修改暂存(modified)

更新提交流程:
未跟踪 —git add—> 暂存 —git commit—> 未修改
已修改 —git add—> 暂存 —git commit—> 未修改

每次都add和commit略显繁琐,可以跳过暂存直接提交,只要将 git commit 加上 -a 选项,可以将已经跟踪过的文件(只能对已跟踪过的文件使用,对于未跟踪过的文件无法使用,也就是新建的文件该语句会提示错误)暂存起来一并提交,从而跳过 git add 步骤,如:

git commit -a -m "修改说明"

检查文件状态:

git status    # 只显示未跟踪状态(红色)、已修改状态(红色)和暂存状态(绿色)的文件。
git diff      # 可以查看未暂存的文件更新了哪些部分
$ echo abc > a.txt     #在a.txt文件写入abc
$ echo abc > b.txt     #在b.txt文件写入abc
$ git add a.txt        #追踪a.txt,并没有追踪b.txt
$ git status           #检查文件状态
位于分支 master
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
	修改:     a.txt

尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)
	修改:     b.txt

$ git diff            #查看未暂存文件b.txt更新情况
diff --git a/b.txt b/b.txt
index e69de29..8baef1b 100644
--- a/b.txt
+++ b/b.txt
@@ -0,0 +1 @@
+abc

$ git commit -a -m "第二次提交"

3.忽略某些文件:

有些文件我们不希望它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。如日志文件,或者编译过程中创建的临时文件等。

可以创建一个名为 .gitignore 的文件并列出要忽略的文件模式。编辑完 .gitignore 文件后同样需要更新提交,因为该文件也是属于跟踪文件。

文件 .gitignore 的格式规范如下:

  • #开头的行为注释行。
  • 可以使用标准的 glob 模式匹配。
  • 以反斜杠(/)结束的表示要忽略的是目录。
  • 以叹号(!)开头的表示要忽略指定模式以外的文件或目录。

说明:glob 模式是shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(a,b,c中的任意一个);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

例子:

# 注释部分
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 忽略 doc/*.txt
doc/*.txt

4.重命名文件

项目中的文件如果需要重命名,传统方法是:

$ mv a.txt c.txt
$ git rm a.txt
$ git add c.txt
$ git commit -m "第三次提交:重命名"

但git也提供了一条语句来实现上述3条重命名操作的效果:

$ git mv c.txt a.txt
$ git commit -m "第四次提交:重命名"

5.删除文件

项目中已经跟踪的文件删除后,需要用git rm命令将其从跟踪清单中清除,并且使用git commit提交,否则会提示该文件未暂存。

$ git rm b.txt
$ git commit -m "第五次提交:删除b.txt"

6.查看提交历史

git log --参数...

也可以gitk直接打开可视化图形查看界面(推荐)

7.修改上次提交

如果你提交之后发现还有些文件要再次修改,又不想增加一次修改记录,可以使用git commit --amend这条命令。

三、关于git分支

首先明白 head 是什么。head 可以理解为当前指针位置,也可理解为指针指向当前分支,head 指向指向哪个分支,你的项目目录内只显示当前分支的文件内容。可通过git log --graph(gitg 或 gitk 可以打开图形查看窗口)查看分支内容及 head 指向

$ git log --graph 
* commit d4019afddd199af9cb56bc7fa7f5a7bab20efe8d (HEAD -> master)
| Author: ymz316 <ymz316@126.com>
| Date:   Fri Apr 29 09:09:58 2022 +0800
| 
|     第五次提交:删除b.txt
...省略输出...

这里head指向的当前分支为master

1.创建分支:$ git branch 分支名

$ git branch hollowman  #创建分支hollowman

2.查看本地仓库分支:$ git branch

$ git branch    # 带*的master,表示当前分支处于master
  hollowman
* master

3.切换分支:$git checkout 分支名

切换分支,表示当前指针位置(head)指向了切换的分支,在此分支提交保存的数据不会影响其他分支的数据,此时若进行了修改提交,虽然数据变化了,但切换回原来的分支,数据仍将不变。

$ git checkout hollowman                #切换到分支 'hollowman'
$ echo hhh >> a.txt                     #将123添加到文件1的末尾
$ git commit -a -m "分支修改"            #提交保存

可以使用git checkout -b 分支名来创建并切换分支

4.查看两个分支的不同:$git diff 分支1 分支2

$ git diff master hollowman 
diff --git a/a.txt b/a.txt
index 8baef1b..32fbbed 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,2 @@
 abc
+hhh

5.将指定分支的工作成果合并到当前分支:

语法:git merge 指定分支的名字

$ git checkout master #先切换到分支 'master'
$ git merge hollowman #将hollowman分支成果合并到当前分支master
更新 d4019af..c73606a
Fast-forward
 a.txt | 1 +
 1 file changed, 1 insertion(+)

合并分支后,当前分支和指定的分支内容相同,可以删除多余的分支(比如这里的hollowman)。

6.删除本地仓库指定分支:

$ git branch -d hollowman

git 鼓励使用者利用分支完成某个任务,然后再合并和删除分支,这和直接在master分支上工作效果虽然一样,但可以避免因操作失误而无法回到之前的可靠状态,过程更加安全。

7.分支合并冲突处理

上面的分支合并有个前提,也就是当前分支和合并的分支处于一条链中,这并不会产生冲突;但若两个分支都进行过commit操作,则不会处于一条链中,虽然在合并时会将2个分支中的修改部分均体现在新的文件中,但会提示自动合并失败,需要手动修改,重新commit提交才能算合并成功。

1) 在两条分支中分别修改同一个文件,并提交

$ git checkout -b hollowman   #创建并切换到分支hollowman
$ echo ddd >> a.txt           #将ddd追加到a.txt末尾
$ git commit -a -m "分支修改"  #提交分支修改
$ git checkout master         #切换到分支master
切换到分支 'master'
$ echo fff >> a.txt          #将fff追加到a.txt末尾
$ git commit -a -m "分支修改"  #提交分支修改
$ gitg                        #查看分支记录,可以发现master和还hollowman两个分支已经不处于同一条链路

在这里插入图片描述

2)将2个分支合并

$ git merge hollowman        #合并分区,发现有冲突,需手动修复。
自动合并 a.txt
冲突(内容):合并冲突于 a.txt
自动合并失败,修正冲突然后提交修正的结果。

3)修复有冲突的文件

先看看自动合并且产生冲突的a.txt文件的内容信息:

$ cat a.txt
abc
hhh
<<<<<<< HEAD
fff
=======
ddd
>>>>>>> hollowman

会发现将master分支和hollowman分支所做的修改都写进了a.txt,其中<<<<<<< HEAD表示当前分支master修改的内容,>>>>>>> hollowman表示hollowman分支修改的内容,而=======这是一条分界线。删掉这些标记,保存并提交

$ vim a.txt
abc
hhh
fff
ddd
$ git commit -a -m "合并"

此时分支合并成果,且master分支和hollowman分支处于1个节点上,可通过gitg查看。

在这里插入图片描述

4) 删除不需要的分支

$ git branch -d hollowman
已删除分支 hollowman(曾为 3cebb3b)。

四、git远程仓库实践

几个名词:远程(remote)、远程仓库(remote repository)、本地仓库(local repository)、分支(branch)、默认的远程分支别名(origin)、初始的本地分支名称(master)

1. 配置公钥

配置号公钥信息,才能在本地机器与远程仓库之间构成安全通道。首先在本地机器生成公钥信息

$ ssh-keygen -t rsa -C "ymz316@126.com"        #在本地机器生成公钥信息
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hollowman/.ssh/id_rsa):  #回车即可
Enter passphrase (empty for no passphrase):                         #回车即可
Enter same passphrase again:                                        #回车即可
Your identification has been saved in /home/hollowman/.ssh/id_rsa
Your public key has been saved in /home/hollowman/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:vxD+pX9wf0PQyJhi1TaFpzd72KEe1bVq/CLdmgRRtYY ymz316@126.com
The key's randomart image is:
+---[RSA 3072]----+
|            ..+o |
|           ..=..o|
|          ..=E*o+|
|         o o.=.B.|
|        S ... *o+|
|       . o  o*ooo|
|        o . =+=..|
|         o =.+o+o|
|          +.o+o o|
+----[SHA256]-----+

复制~/.ssh/id_rsa.pub文件内的数据,将其添加到gitee上。

$ cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0Jng3qC1BsHhW7i0nqw0Mw03w0K9QOKrKHYOLHeRRaqCfuRBOxC
.........................................................................................
UPSqkoqXu+KM9K32bQsW18hGu0Yp2azzMKa9dubNt9nNIn0OfsXzoLdfnzWKczQVzIkRbQas= ymz316@126.com

2. 克隆远程仓库

$ git clone 远程仓库ssh地址 [本地仓库目录名]   # 如果不输入‘本地仓库目录名’,则默认为远程仓库名gittest

下面语句将远程gittest仓库代码克隆到本地gittest文件夹

$ git clone https://gitee.com/ymz316/sig-documentation.git
正克隆到 'sig-documentation'...
remote: Enumerating objects: 123, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (85/85), done.
remote: Total 123 (delta 34), reused 123 (delta 34), pack-reused 0
接收对象中: 100% (123/123), 4.10 MiB | 780.00 KiB/s, 完成.
处理 delta 中: 100% (34/34), 完成.

此时远程仓库数据被克隆到本地,并自动为远程仓库(remote repository)创建一个别名origin,同时,远程仓库默认分支名也会被克隆到本地裆裤,作为默认分支名(如master),指针指向远程仓库的默认分支(如master)。

可通过 git remotegit remote -v 查看远程仓库的简易或详细信息:

$ cd sig-documentation
$ git remote 
origin
$ git remote -v
origin	https://gitee.com/ymz316/sig-documentation.git (fetch)
origin	https://gitee.com/ymz316/sig-documentation.git (push)

可以通过gitg查看本地仓库各分支详细信息。

3. 查看本地和远程仓库分支信息

$ git branch -r                      #查看远程仓库分支
  origin/HEAD -> origin/master
  origin/dev
  origin/dev-moshengren
  origin/master
$ git branch -a                      #查看本地仓库及远程仓库分支
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/dev-moshengren
  remotes/origin/master

4. 创建分支,修改数据

$ git branch dev-ymz316
$ git checkout dev-ymz316
...修改数据...
$ git add .
$ git commit -a -m "提交数据说明"

5. 数据推送

本地仓库的分支信息修改后,可以将本地分支推送至远程仓库的指定远程分支名:git push 远程仓库名 本地分支名:远程分支名,如果远程分支名不存在,则会新建一个远程分支名,如果省略远程分支名,则会默认为本地分支名。

推送数据到远程仓库

$ git push origin dev-ymz316:dev-ymz316
Username for 'https://gitee.com': ymz316
Password for 'https://ymz316@gitee.com': 
枚举对象中: 6, 完成.
对象计数中: 100% (6/6), 完成.
使用 8 个线程进行压缩
压缩对象中: 100% (4/4), 完成.
写入对象中: 100% (4/4), 5.62 KiB | 5.63 MiB/s, 完成.
总共 4(差异 2),复用 0(差异 0),包复用 0
remote: Powered by GITEE.COM [GNK-6.3]
remote: Create a pull request for 'dev-ymz316' on Gitee by visiting:
remote:     https://gitee.com/ymz316/sig-documentation/pull/new/ymz316:dev-ymz316...ymz316:master
To https://gitee.com/ymz316/sig-documentation.git
 * [new branch]      dev-ymz316 -> dev-ymz316

这里git push origin dev-ymz316:dev-ymz316也可以用缩写的方式 git push origin dev-ymz316` ,这两条语句作用相同。

6. 删除远程仓库指定分支,有2种方法:

$ git push origin :远程分支名
$ git push origin -d 远程分支名

7. 同步上游仓库

假如你的远程仓库是从上游仓库fork过来的,如果上游仓库进行了版本更新,是不会自动推送到你的远程仓库的,需要进行同步。

将上游仓库作为一个远程仓库添加到clone的本地git项目中,这里我的远程仓库 https://gitee.com/ymz316/sig-documentation.git 就是fork自 https://gitee.com/ukylin-os/sig-documentation.git

$ git remote add upstream https://gitee.com/ukylin-os/sig-documentation.git

查看一下远程仓库,可以看到新增上游仓库成功了

$ git remote -v
origin	https://gitee.com/ymz316/sig-documentation.git (fetch)
origin	https://gitee.com/ymz316/sig-documentation.git (push)
upstream	https://gitee.com/ukylin-os/sig-documentation.git (fetch)
upstream	https://gitee.com/ukylin-os/sig-documentation.git (push)

将上游仓库的版本信息fetch到本地

$ git fetch upstream 
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 3), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (7/7), 2.53 KiB | 78.00 KiB/s, 完成.
来自 https://gitee.com/ukylin-os/sig-documentation
 * [新分支]          dev            -> upstream/dev
 * [新分支]          dev-moshengren -> upstream/dev-moshengren
 * [新分支]          master         -> upstream/master

将上游仓库的dev分支合并到本地dev-ymz316(假如上游的dev分支进行了修改和提交)

$ git checkout dev-ymz316
$ git merge upstream/dev

此时dev-ymz316分支应与上游仓库dev分支保持一致,可以将本地dev-ymz316分支推送到自己的远程仓库dev分支

$ git push origin dev-ymz316:dev

至此,远程仓库的dev分支将与上游仓库的dev分支一致。

参考资料:

  • https://gitee.com/progit/index.html
  • https://www.runoob.com/git/git-tutorial.html
  • https://www.cnblogs.com/matengfei123/p/8252128.html

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

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

相关文章

线性神经网络(sotfmax回归)

sotfmax回归定义网络架构softmax运算softmax回归实现&#xff08;MNIST数据集&#xff09;数据集的处理读取数据集查看形状数据可视化读取小批量整合所有组件神经网络的搭建加载数据集初始化模型参数定义softmax函数定义模型定义损失函数&#xff08;难点&#xff09;分类精度训…

有序表之跳表

文章目录1、前言2、跳表简介3、理解“跳表”4、用跳表查询到底有多快5、跳表是不是很浪费内存6、高效的动态插入和删除7、跳表索引动态更新8、跳表代码实现1、前言 在开始讲解跳表之前&#xff0c;先来说一说积压结构。 何为积压结构&#xff1f;就是当数据达到了一定程度&am…

【ROS2实践】Vmware17下安装ubuntu22.04和ros2-humble

一、简介 ROS2-foxy已经不再维护&#xff0c;ROS2-humble成为主角&#xff0c;因而该转变一下开发场景了。如何安装&#xff1f;官方文档没有错&#xff0c;然而&#xff0c;照着做却无法进行。实超中遇到的需要变通的地方&#xff0c;官网是不给你提供解决的&#xff0c;本文给…

宽刈幅干涉高度计SWOT(Surface Water and Ocean Topography)卫星进展(待完善)

以下信息搬运自SWOT官方网站等部分文献资料&#xff0c;如有侵权请联系&#xff1a;sunmingzhismz163.com 排版、参考文献、部分章节待完善 概况 2022年12月16日地表水与海洋地形卫星SWOT (Surface Water and Ocean Topography)在加利福尼亚州范登堡航天基地由SpaceX猎鹰9号(Sp…

mysql面试题(最全)

1. 数据库三大范式是什么&#xff1f; 什么是范式&#xff1f; 范式是数据库设计时遵循的一种规范&#xff0c;不同的规范要求遵循不同的范式。 最常用的三大范式 第一范式(1NF)&#xff1a;属性不可分割&#xff0c;即每个属性都是不可分割的原子项。(实体的属性即表中的列)…

ESXi主机CVE-2021-21972漏洞复现安全处置建议

一、漏洞简介 vSphere 是 VMware 推出的虚拟化平台套件&#xff0c;包含 ESXi、vCenter Server 等一系列的软件。其中 vCenter Server 为 ESXi 的控制中心&#xff0c;可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机。 vSphere Client&#xff08;HTML5&#xf…

【博客624】MAC地址表、ARP表、路由表(RIB表)、转发表(FIB表)

MAC地址表、ARP表、路由表(RIB表/FIB表) MAC地址表 MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系&#xff0c;代表了交换机从哪个端口学习到了某个MAC地址&#xff0c;交换机把这个信息记录下来&#xff0c;后续交换机需要转发数据的时候就可以根据报文的目的MAC地…

SpringBoot社区版专业版带你配置热部署

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 SpringBoot社区版专业版带你配置热部署 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1…

C++类基础(十七)

类的继承——补充知识 ● public 与 private 继承&#xff08;C Public, Protected and Private Inheritance&#xff09; 改变了类所继承的成员的访问权限 //公有继承 struct Base { public:int x; private:int y; protected:int z; }; struct Derive : public Base //公有继承…

【数据结构与算法】时间复杂度与空间复杂度

目录 一.前言 二.时间复杂度 1.概念 二.大O的渐进表示法 概念&#xff1a; 总结&#xff1a; 三.常见时间复杂度计算举例 例1 例2 例3 例4 例5.计算冒泡排序的时间复杂度 例6.二分算法的时间复杂度 例7.阶乘递归Fac的时间复杂度 例8.斐波那契递归的时间复杂度 …

【MyBatis】| MyBatis的注解式开发

目录 一&#xff1a;MyBatis的注解式开发 1. Insert注解 2. Delete注解 3. Update注解 4. Select注解 5. Results注解 一&#xff1a;MyBatis的注解式开发 MyBatis中也提供了注解式开发⽅式&#xff0c;采⽤注解可以减少Sql映射⽂件的配置。 当然&#xff0c;使⽤注…

推荐几款好用的数据库管理工具

本文主要介绍几款常用的数据库管理软件&#xff08;客户端&#xff09;&#xff0c;包括开源/免费的、商用收费的&#xff0c;其中有一些是专用于 MySQL 数据库的&#xff0c;例如 MySQL Workbench、phpMyAdmin&#xff0c;有一些是支持多种 SQL、NoSQL 数据库的&#xff0c;例…

Kubernetes集群维护—备份恢复与升级

Etcd数据库备份与恢复 需要先安装etcd备份工具yum install etcd -y按不同安装方式执行不同备份与恢复kubeadm部署方式&#xff1a; 备份&#xff1a;ETCDCTL_API3 etcdctl snapshot save snap.db --endpointshttps://127.0.0.1:2379 --cacert/etc/kubernetes/pki/etcd/ca.cr…

知其然更要知其所以然,聊聊SQLite软件架构

SQLite是一个非常受欢迎的数据库&#xff0c;在数据库排行榜中已经进入前十的行列。这主要是因为该数据库非常小巧&#xff0c;而且可以支持Linux、Windows、iOS和Andriod的主流的操作系统。 SQLite非常简单&#xff0c;是一个进程内的动态库数据库。其最大的特点是可以支持不同…

spring的了解以及项目构建

spring理念&#xff1a; 使现有的技术更容易使用&#xff0c;其本身是一个大杂烩&#xff0c;整合了现有的技术框架。 ssh&#xff1a; struct2 spring hibernate ssm &#xff1a;springmvc spring mybatis 优点&#xff1a; spring 是一个免费的开源框架&#xff08;容器…

特征归一化(Normalization)和Batch Normalization的理解

一、理解BN必备的前置知识&#xff08;BN, LN等一系列Normalization方法的动机&#xff09; Feature Scaling&#xff08;特征归一化/Normalization&#xff09;:通俗易懂理解特征归一化对梯度下降算法的重要性 总结一下得出的结论&#xff1a; &#xff08;以下举的例子是针对…

创建基于Vue2.0开发项目的两种方式

前天开始接触基于Vue2.0的前端项目&#xff0c;实际操作中肯定会遇到一些问题&#xff0c;慢慢摸索和总结。   其实&#xff0c;作为开发一般企事业单位应用的小项目&#xff0c;前端的懂一点HTMLCSSJavaScroptJQueryJson&#xff08;或者Xml&#xff09;&#xff0c;后端懂一…

PGLBox全面解决图训练速度、成本、稳定性、复杂算法四大问题!

图神经网络&#xff08;Graph Neural Network&#xff0c;GNN&#xff09;是近年来出现的一种利用深度学习直接对图结构数据进行学习的方法&#xff0c;通过在图中的节点和边上制定聚合的策略&#xff0c;GNN能够学习到图结构数据中节点以及边内在规律和更加深层次的语义特征。…

Dubbo学习笔记2

Dubbo学习笔记&#xff08;二&#xff09; Dubbo常用配置 覆盖策略 规则&#xff1a; 1、精确优先&#xff08;方法级优先&#xff0c;接口次之&#xff0c;全局配置再次之&#xff09; 2、消费者设置优先&#xff08;如果级别一样&#xff0c;则消费方优先&#xff0c;提供…

网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎

网络安全-信息收集- 谷歌浏览器插件收集信息&#xff0c;谷歌hacking搜索语法-带你玩不一样的搜索引擎 前言 一&#xff0c;我也是初学者记录的笔记 二&#xff0c;可能有错误的地方&#xff0c;请谨慎 三&#xff0c;欢迎各路大神指教 四&#xff0c;任何文章仅作为学习使用 …