当前位置: 首页 > news >正文

Git 小白入门教程

🎯 这篇文章详细介绍了版本控制的重要性,特别是通过Git实现的分布式版本控制相对于SVN集中式控制的优势。文章首先解释了版本控制的基本概念,强调了在文档或项目多版本迭代中备份与恢复任意版本的能力。接着,重点阐述了Git的历史背景、安装及配置方法,以及其基本理论和工作流程。文中还具体描述了如何使用Git进行项目的创建、克隆,日常操作命令,文件状态切换,.gitignore的使用规则,还有Gitee平台上的操作方式和Git分支管理等内容。旨在为读者提供从入门到实践的全面指南。

文章目录

  • **版本控制是什么**
  • **Git 和 SVN 的区别**
    • **SVN:集中式版本控制系统**
    • **Git:分布式版本控制系统**
  • **Git 发展历史**
  • **Git 安装**
  • **Git中常用的Linux命令**
  • Git必要配置
    • 查看所有配置
    • 查看系统帮我们默认配置的项
    • 查看需要自己配置的项
  • Git基本理论
    • Git的区域划分
    • 文件、目录
    • Git工作流程
  • Git项目创建及克隆
    • 对已有项目文件夹进行 `git init`
      • 场景描述
      • 具体步骤
    • 直接 `git clone` 克隆远程项目到本地
  • Git基本操作命令和文件状态切换
  • .gitignore 忽略文件
  • Gitee使用
    • 用户名密码访问
    • 配置SSH公钥
  • Git分支使用
    • 相关命令
      • 如何将dev分支的代码合并到master
    • 实践
      • 新建dev分支、dev分支创建文件、合并到master分支
      • 分支切换测试
      • 合并冲突测试
  • IDEA上操作Git

版本控制是什么

假如你在帮甲方写一个文档,途中对文档进行了多次迭代,改了十几个版本,最后甲方说要第一个版本,假如你没有对以前的版本进行备份,没办法找到前面的版本,就要吐血了。版本控制可以理解为:对每个版本都有一个备份,可以轻松回到任意选定的版本

Git 和 SVN 的区别

SVN:集中式版本控制系统

SVN是集中式版本控制系统,版本库是集中放在中央服务器的(一般都是用一台服务器下载 VisualSVN 来搭建仓库,其余用户可以只下载 TortoiseSVN 来拉取服务器的文件或者提交文件到服务器),工作的时候使用自己的电脑,首先从中央服务器得到最新的版本,然后进行工作,完成工作后,把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git:分布式版本控制系统

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,每个人都拥有全部的代码!可以避免很多安全隐患! 所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push至相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,不会因为服务器损坏或者网络问题,造成不能工作的情况。但这增加了本地存储空间的占用

协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!

Git是目前世界上最先进的分布式版本控制系统。

Git 发展历史

  • 起初,Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。
  • 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 Bitkeeper 来管理和维护代码。Linux社区中有很多的大佬破解研究了BitKeeper !
  • 2005 年,开发 Bitkeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统(花了2周左右的时间),也就是后来的 Git !

Git是免费、开源的,最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper

Git 安装

https://blog.csdn.net/laodanqiu/article/details/133386063

Git中常用的Linux命令

右键打开终端之后,可以使用linux的相关命令来控制

在这里插入图片描述

  • ls:列出当前目录中的所有文件名称
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell (master)
$ ls
Code/  LICENSE  Material/  README.en.md  README.md  test.txt
  • ll:列出当前目录中的所有文件的较详细信息
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell (master)
$ ll
total 28
drwxr-xr-x 1 dam 197121     0 Oct 23 20:02 Code/
-rw-r--r-- 1 dam 197121 18431 Oct 19 14:46 LICENSE
drwxr-xr-x 1 dam 197121     0 Oct 23 19:07 Material/
-rw-r--r-- 1 dam 197121   902 Oct 19 14:46 README.en.md
-rw-r--r-- 1 dam 197121   992 Oct 19 14:46 README.md
-rw-r--r-- 1 dam 197121     0 Oct 21 14:40 test.txt
  • cd [文件名]:切换文件目录
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell (master)
$ cd Code
  • cd ..:回退到上一个目录
  • pwd:显示当前所在目录
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ pwd
/e/Projects/eda-standard-cell/Code
  • touch:在当前目录下新建一个文件
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ touch index.ks
  • rm:删除一个文件
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ rm index.ks
  • mkdir:新建一个文件夹
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
eda-standard-cell-generation/  pythonProject/dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ mkdir cssdam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
css/  eda-standard-cell-generation/  pythonProject/
  • rm -r:删除一个文件夹
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
css/  eda-standard-cell-generation/  pythonProject/dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ rm -r cssdam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
eda-standard-cell-generation/  pythonProject/
  • mv [文件名] [目标文件夹] :移动文件
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ touch index.htmldam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
eda-standard-cell-generation/  index.html  pythonProject/dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ mkdir htmldam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
eda-standard-cell-generation/  html/  index.html  pythonProject/dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ mv index.html htmldam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ ls
eda-standard-cell-generation/  html/  pythonProject/dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ cd htmldam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code/html (master)
$ ls
index.html
  • reset:重新初始化终端并清屏
  • clear:清屏
  • history:查看命令历史
dam@HelloDam MINGW64 /e/Projects/eda-standard-cell/Code (master)
$ history1  ls2  git pull3  ls4  ll5  cd Code6  pwd7  ls8  touch index.ks9  ls10  mkdir index.ks11  rm index.ks12  ls13  mkdir css14  ls15  rm -r css16  ls17  history
  • help:帮助
  • exit:退出终端
  • #:表示注释

Git必要配置

查看所有配置

git config -l

在这里插入图片描述

查看系统帮我们默认配置的项

git config --system --list

在这里插入图片描述

查看需要自己配置的项

git config --global --list

在这里插入图片描述

用户名和邮箱必须要配置,这样才知道是谁提交了文件,配置方式如下:

git config --global user.emai] "你的邮箱地址'
git config --globa] user.name "你的帅名,可以给自己取一个帅帅的外号"

Git基本理论

Git的区域划分

在这里插入图片描述

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将其提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器

文件、目录

在这里插入图片描述

  • Directory:使用Git管理的一个文件目录,也就是一个仓库,包含我们的工作空间和Git的管理空间
  • WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间
  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建
  • Index/Stage: 暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区
  • Local Repo: 本地仓库,一个存放在本地的版本库;HEAD指向当前的开发分支( branch )
  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态

Git工作流程

  • 在工作目录中添加、修改文件
  • 将需要进行版本管理的文件放入暂存区域
  • 将暂存区域的文件提交到git仓库

在这里插入图片描述

  1. 工作区(workspace):这是你进行开发的地方,包含了你的项目文件。
  2. 暂存区(index):当你使用git add命令时,修改会被添加到暂存区。暂存区是Git用来保存你即将提交的文件的状态的地方。
  3. 本地仓库(local repository):这是存储在你本地计算机上的Git仓库,包含了所有的提交历史和分支信息。
  4. 远程仓库(remote repository):这是存储在远程服务器上的Git仓库,通常用于团队协作。
  5. 操作流程:
    1. commit -a:将所有已修改的文件添加到暂存区,并创建一个新的提交。
    2. add (-u):将修改的文件添加到暂存区。
    3. commit:创建一个新的提交,将暂存区的文件状态保存到本地仓库。
    4. push:将本地仓库的提交推送到远程仓库。
    5. fetch:从远程仓库获取最新的提交信息,但不会自动合并到当前分支。
    6. pull or rebase:从远程仓库获取最新的提交信息,并将其合并或变基到当前分支。
    7. checkout HEAD:将工作区恢复到最近一次提交的状态。
    8. revert:撤销上次提交,但不会删除文件内容,而是创建一个新的提交来撤销之前的更改。
    9. diff HEAD:比较当前工作区与最近一次提交之间的差异。
    10. checkout:切换到另一个分支或提交。

在这里插入图片描述

Git项目创建及克隆

将一个项目托管到 Git 通常有两种主要方式,你可以根据具体情况选择最适合的一种:

对已有项目文件夹进行 git init

如果你已经有了一个本地项目文件夹,并希望开始使用 Git 进行版本控制,你可以在该文件夹内执行 git init 命令。这会在你的项目文件夹中创建一个新的 Git 仓库,初始化一个新的 .git 目录来存储版本控制所需的所有必要元数据。之后,你可以添加文件到暂存区并提交到这个本地仓库。如果你需要与他人协作或备份代码,可以将这个本地仓库推送到远程仓库(例如 GitHub、GitLab 或 Gitee等)。

下面是一个具体的例子,展示如何使用这些命令来初始化一个项目,并将其推送到远程仓库。

场景描述

假设你正在开发一个新的网站项目,并且希望将该项目托管在 GitHub 上。你已经创建了一个空的 GitHub 仓库,URL 是 https://github.com/yourusername/newwebsite.git。现在你需要将本地的项目文件与这个远程仓库关联起来,并推送你的代码。

具体步骤

1、初始化 Git 仓库:首先,在你的项目根目录下打开终端(或命令行),然后执行以下命令初始化一个新的 Git 仓库。

git init

这会在你的项目目录中创建一个隐藏的 .git 文件夹,用于存储版本控制的相关信息。

2、添加所有文件到暂存区:接着,将当前目录下的所有文件添加到 Git 的暂存区,准备进行第一次提交。

git add .

3、提交更改:为这次提交添加一条描述性的信息。

git commit -m "Initial commit of the new website project"

4、添加远程仓库地址:然后,将你的 GitHub 仓库地址添加为远程仓库,命名为 origin

git remote add origin https://github.com/yourusername/newwebsite.git

5、验证远程仓库设置:确保远程仓库配置正确。

git remote -v

你应该能看到类似如下的输出,显示了远程仓库的名称和地址:

origin  https://github.com/yourusername/newwebsite.git (fetch)
origin  https://github.com/yourusername/newwebsite.git (push)

6、推送本地分支到远程仓库:最后,推送你的本地 master 分支到远程仓库,并设置上游分支,这样以后只需使用 git push 就可以直接推送更新了。

git push --set-upstream origin master

或者使用简写形式:

git push -u origin master

请注意,如果你遇到远程仓库中有冲突或者需要覆盖远程内容的情况(例如远程仓库不是空的),你可能需要使用 -f 参数强制推送,但这种情况应该尽量避免,以免丢失他人的工作成果。

通过以上步骤,你就成功地将本地项目与 GitHub 仓库关联起来,并推送了首次提交。之后,你可以继续在本地进行开发,然后使用简单的 git push 命令同步更新到远程仓库。

直接 git clone 克隆远程项目到本地

如果你想要参与一个已有的项目或者你在远程已经有一个空的仓库,你可以使用 git clone 命令将远程仓库克隆到本地。这样做会自动创建一个与远程仓库对应的本地仓库副本,并设置好远程仓库地址以便后续的推送和拉取操作。这种方式适合于加入团队项目或是从远程仓库获取最新的项目源码进行开发的情况

Git基本操作命令和文件状态切换

  • 未跟踪(untracked):未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过git add状态变为Staged
  • 已入库(unmodify):文件己经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两种去处,如果它被修改,变为Modified,如果使用git rm移出版本库,则成为Untracked文件
  • 已修改(modified):文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add状态变为Staged,或者使用 git checkout丢弃修改,返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前的修改
  • 已暂存(staged):暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为unmodify状态
  • 已提交(committed):指的是文件或更改已经被保存到本地仓库中,成为项目历史记录的一部分。

.gitignore 忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等。这是可以在主目录下建立.gitignore文件

在这里插入图片描述

此文件有如下规则:

  1. 注释和空行:在 .gitignore 文件中,任何空行或者以 # 开始的行都会被视为注释,Git 会忽略这些内容。这允许用户添加注释来解释某些忽略规则的原因,或是简单地用空白行来组织文件内容。
  2. 通配符支持:
    1. 星号(*)可以匹配零个或多个字符。例如,*.log 将忽略所有扩展名为 .log 的文件。
    2. 问号(?)代表任意单个字符。比如,error?.log 可以匹配 error1.log, errorA.log 等等,但不会匹配 error10.log
    3. 方括号([abc])表示可以匹配方括号内任何一个字符。例如,file_[ab].txt 匹配 file_a.txtfile_b.txt
    4. 大括号({string1,string2,...})用来指定多个可选模式。如 {*.jpg,*.png} 忽略所有 .jpg.png 文件。
  3. 例外规则(!):如果某个模式前加上感叹号(!),则表示这是一个例外规则,即使符合之前被忽略条件的文件或目录也将被包含进来。例如,如果忽略了所有的 .log 文件,但希望保留特定的日志文件,可以使用 !important.log 来确保这个文件不会被忽略。
  4. 根目录限定(/):在模式前面加上斜杠(/)表示只在仓库的根目录下应用此忽略规则。例如,/config/local.env 仅忽略位于仓库根目录下的 config/local.env 文件,而不会影响其他子目录中的同名文件。
  5. 目录忽略规则(/):如果模式末尾有斜杠(/),表示这是一个目录,只有当名称与目录名相同时才会被忽略,而不是文件。例如,logs/ 表示忽略 logs 目录下的所有内容,但不包括顶级目录下的名为 logs 的文件。如果没有斜杠,像 logs 这样的条目既会忽略名为 logs 的文件也会忽略名为 logs 的目录。

【案例】

# 为注释
*.txt        # 忽略所有 .txt 结尾的文件
!lib.txt     # 但 lib.txt 除外
/temp         # 仅忽略项目根目录下的 temp 文件,不包括其它目录 temp
build/       # 忽略 build/ 目录下的所有文件
doc/*.txt    # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

Gitee使用

用户名密码访问

如果是刚安装git,拉取一个仓库的时候,可能会让输入gitee的用户名和密码,输入即可

配置SSH公钥

配置本地公钥到Gitee之后可以实现免密码登录

# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen

在这里插入图片描述

ssh-keygen -t rsa

在这里插入图片描述

复制

在这里插入图片描述

在这里插入图片描述

粘贴

在这里插入图片描述

Git分支使用

分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!

在这里插入图片描述

  • 一般软件在master这个分支上运行,当需要增加功能时,就把master复制一份出来到其他分支,然后在其他分支进行开发,在开发完功能并测试之后就可以将开发分支合并到Master分支
  • 若引入新功能之后有bug,可以从master分支再引出一个分支hot-fix(热修分支),对代码进行修改,修改后再合并到master

如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

在这里插入图片描述

相关命令

# 列出所有本地分支
git branch# 列出所有远程分支
git branch -r# 新建一个分支,但依然停留在当前分支
git branch [branch-name]# 新建一个分支,并切换到该分支
git checkout -b [branch]# 切换分支
git checkout [branch]# 合并指定分支到当前分支
git merge [branch]# 删除分支
git branch -d [branch-name]# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

如何将dev分支的代码合并到master

首先在dev分支pull,确保dev代码最新

git checkout dev
git pull origin dev

然后切换master分支,使用merge命令将dev分支的代码合并过来

git checkout master
git merge dev

接着就是将合并过来的代码提交到远程的master分支即可

实践

新建dev分支、dev分支创建文件、合并到master分支

一开始只有一个master分支

在这里插入图片描述

在这里插入图片描述

所新建的dev分支推送到远程仓库之后,可以看到远程仓库有两个分支了

在这里插入图片描述

这时候master分支还是没有所提交的hahaha.txt文件的

在这里插入图片描述

而dev分支中已经有hahaha.txt文件了

在这里插入图片描述

在这里插入图片描述

远程的dev分支中又多了一个txt文件
在这里插入图片描述

假设开发已经结束,希望将所创建的txt文件合并到master分支中

在这里插入图片描述

这时候master分支就有刚刚创建的文件了

在这里插入图片描述

分支切换测试

假如dev分支比master多了一个文件test.csv,克隆项目的时候先克隆的是master分支,这时候如果切换成dev分支,会重新将test.csv文件拉取到本地项目中

在这里插入图片描述

在这里插入图片描述

同理,当切换回master分支时,这个test.csv文件又会消失掉

在这里插入图片描述

在这里插入图片描述

合并冲突测试

为了方便测试,我使用两台电脑来进行演示

首先使用电脑1来创建一个txt文件并上传到远程的dev分支中

在这里插入图片描述

使用电脑2将电脑1上传的文件拉取下来

在这里插入图片描述

使用电脑2编辑冲突.txt文件

在这里插入图片描述

使用电脑1的master分支先merge dev分支的文件下来,然后也对冲突.txt文件进行修改
在这里插入图片描述

在这里插入图片描述

使用电脑2将编辑之后的冲突.txt上传到远程dev分支

在这里插入图片描述

使用电脑1来取远程的dev文件,并将dev的文件合并到master中,触发冲突

在这里插入图片描述

合并之后的冲突.txt是这样的

在这里插入图片描述

这时候就需要处理冲突了,看看是保留电脑1的修改还是电脑2的修改,我这里保留电脑1的修改,首先将其他多余的东西删除

在这里插入图片描述

处理完冲突之后,直接将文件提交到远程仓库即可,最后远程仓库的文件就没有问题了

IDEA上操作Git

在这里插入图片描述

相关文章:

Git 小白入门教程

🎯 这篇文章详细介绍了版本控制的重要性,特别是通过Git实现的分布式版本控制相对于SVN集中式控制的优势。文章首先解释了版本控制的基本概念,强调了在文档或项目多版本迭代中备份与恢复任意版本的能力。接着,重点阐述了Git的历史背…...

Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用

在人工智能的浩瀚宇宙中,深度学习犹如一颗璀璨的星辰,引领着机器学习和计算机视觉领域的前沿探索。而神经网络,作为深度学习的核心架构,更是以其强大的数据建模能力,成为解决复杂问题的重要工具。今天,我们…...

代码随想录刷题day14(2)|(链表篇)02.07. 链表相交(疑点)

目录 一、链表理论基础 二、链表相交求解思路 三、相关算法题目 四、疑点 一、链表理论基础 代码随想录 二、链表相交求解思路 链表相交时,是结点的位置,也就是指针相同,不是结点的数值相同; 思路:定义两个指针…...

C++ 复习总结记录九

C 复习总结记录九 主要内容 1、list 介绍及使用 2、list 剖析及模拟实现 3、list 与 vector 对比 一 list 介绍及使用 List 相关文档 1、List 在任意位置进行插入和删除的序列式容器 O(1) ,且该容器可前后双向迭代 2、List 底层是带头双向循环链表&#xff…...

数据库性能优化(sql优化)_SQL执行计划02_yxy

数据库性能优化_SQL执行计划详解02 常用操作符解读1.1 表扫描类型操作符1.1.1 CSCN 聚集索引扫描1.1.2 CSEK 聚集索引数据定位1.1.3 SSEK 二级索引数据定位1.1.4 SSCN 直接使用二级索引进行扫描1.2 其他常见操作符1.2.1 BLKUP 二次扫描1.2.2 SLCT 选择1.2.3 PRJT 投影1.2.4 NSE…...

Vivado生成X1或X4位宽mcs文件并固化到flash

1.生成mcs文件 01.在vivado里的菜单栏选择"tools"工具栏 02.在"tools"里选择"生成内存配置文件" 03.配置参数 按照FPGA板上的flash型号进行选型,相关配置步骤可参考下图。 注意:Flash数据传输位宽如果需要选择X4位宽&am…...

在K8S中使用Values文件定制不同环境下的应用配置详解

在Kubernetes(简称K8s)环境中,应用程序的配置管理是一项关键任务。为了确保应用程序在不同环境(如开发、测试、预发布和生产)中都能稳定运行,我们需要为每个环境定制相应的配置。Values文件是在使用Helm管理…...

边缘网关具备哪些功能?

边缘网关,又称边缘计算网关,部署在网络边缘,它位于物联网设备与云计算平台之间,充当着数据流动的“守门员”和“处理器”。通过其强大的数据处理能力和多样化的通信协议支持,边缘网关能够实时分析、过滤和存储来自终端…...

ThinkPHP 8 操作JSON数据

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...

环境变量配置与问题解决

目录 方法 配置了还是运行不了想要的东西 解决方案 为什么 解决方案 方法 方法一:此电脑右击-属性-相关链接-高级系统设置-环境变量(N)-系统变量里面找到Path-三个确定】 方法二:winr cmd 黑框输入sysdm.cpl,后面…...

pytorch2.5实例教程

以下是再次为你提供的一个详细的PyTorch使用教程: 一、安装PyTorch 环境准备 确保系统已安装合适版本的Python(推荐3.10及以上)。 安装方式 CPU版本 对于Linux和macOS: 使用命令 pip install torch torchvision torchaudio。 对…...

【开源免费】基于SpringBoot+Vue.JS智慧图书管理系统(JAVA毕业设计)

本文项目编号 T 152 ,文末自助获取源码 \color{red}{T152,文末自助获取源码} T152,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

基于自然语言处理的垃圾短信识别系统

基于自然语言处理的垃圾短信识别系统 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 设计题目设计目的设计任务描述设计要求输入和输出…...

Node.js HTTP模块详解:创建服务器、响应请求与客户端请求

Node.js HTTP模块详解:创建服务器、响应请求与客户端请求 Node.js 的 http 模块是 Node.js 核心模块之一,它允许你创建 HTTP 服务器和客户端。以下是一些关键知识点和代码示例: 1. 创建 HTTP 服务器 使用 http.createServer() 方法可以创建…...

Day 17 卡玛笔记

这是基于代码随想录的每日打卡 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组…...

深圳大学-智能网络与计算-实验一:RFID原理与读写操作

实验目的与要求 掌握超高频RFID标签的寻卡操作。掌握超高频RFID标签的读写操作。掌握超高频RFID标签多张卡读取时的防冲突机制。 方法,步骤 软硬件的连接与设置超高频RFID寻卡操作超高频RFID防冲突机制超高频RFID读写卡操作 实验过程及内容 一.软硬…...

⚡C++ 中 std::transform 函数深度解析:解锁容器元素转换的奥秘⚡【AI 润色】

在 C 编程的世界里&#xff0c;我们常常需要对容器中的元素进行各种转换操作。无论是将数据进行格式调整&#xff0c;还是对元素进行数学运算&#xff0c;高效的转换方法都是提升代码质量和效率的关键。std&#xff1a;&#xff1a;transform函数作为 C 标准库<algorithm &g…...

【miniconda】:langraph的windows构建

langraph需要python3.11 langraph强烈建议使用py3.11 默认是3.12 官方 下载仓库 下载老版本的python (后续发现新版miniconda也能安装老版本的python) 在这里...

(k8s)k8s部署mysql与redis(无坑版)

0.准备工作 在开始之前&#xff0c;要确保我们的节点已经加入网络并且已经准备好&#xff0c;如果没有可以去看我前面发表的踩坑与解决的文章&#xff0c;希望能够帮到你。 1.k8s部署redis 1.1目标 由于我们的服务器资源较小&#xff0c;所以决定只部署一个redis副本&#x…...

Git常用操作指令

初始化配置 # 配置全局用户名和邮箱 git config --global user.name "账号" git config --global user.email "邮箱"# 查看配置信息 git config --list仓库初始化创建新的 Git 仓库&#xff1a; # 初始化新仓库 git init# 克隆远程仓库 git clone URL状态…...

新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景

新手理解&#xff1a;Android 中 Handler 和 Thread.sleep 的区别及应用场景 Handler 是啥&#xff1f;Handler 的几个核心功能&#xff1a; Thread.sleep 是啥&#xff1f;Thread.sleep 的核心特点&#xff1a; 两者的区别它们的应用场景1. Handler 的应用场景2. Thread.sleep…...

智能安全策略-DPL

一、华三防火墙-接口的概念。 1、接口。 1. 什么是接口&#xff1f; 接口就像是防火墙的“门”&#xff0c;用来连接不同的网络设备&#xff0c;比如电脑、路由器、服务器等。通过这些“门”&#xff0c;数据&#xff08;比如网页、视频、文件&#xff09;才能进出防火墙。 …...

差分进化算法 (Differential Evolution) 算法详解及案例分析

差分进化算法 (Differential Evolution) 算法详解及案例分析 目录 差分进化算法 (Differential Evolution) 算法详解及案例分析1. 引言2. 差分进化算法 (DE) 算法原理2.1 基本概念2.2 算法步骤3. 差分进化算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 单目标优化…...

Alibaba Spring Cloud 十七 Sentinel熔断降级

概述 在微服务架构中&#xff0c;熔断与降级是保证系统稳定性的重要机制&#xff0c;能有效防止故障蔓延或雪崩效应。当某个服务出现异常、延迟过高或错误率过高时&#xff0c;触发熔断保护&#xff0c;将该服务“隔离”一段时间&#xff0c;避免影响整体系统的吞吐和可用性。 …...

LetsWave脑电数据简单ERP分析matlab(一)

LetsWave是基于matlab的一款工具包&#xff0c;类似eeglab&#xff0c;也可以对数据进行预处理。习惯使用eeglab做数据预处理的&#xff0c;可以先在eeglab中做预处理&#xff0c;然后可以保存为*.set格式&#xff0c;最后在letswave中画图。 letswave下载地址&#xff1a;htt…...

设计模式Python版 工厂方法模式

文章目录 前言一、工厂方法模式二、工厂方法模式示例三、工厂方法模式客户端改进四、工厂方法模式隐藏工厂方法&#xff08;可选&#xff09; 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方…...

贝叶斯优化相关

贝叶斯优化相关 python中有很多模块支持贝叶斯优化&#xff0c;如bayesian-optimization、hyperopt&#xff0c;比较好用的是hyperopt&#xff0c;下面是对hyperopt文章的翻译&#xff0c;原文地址如下 https://districtdatalabs.silvrback.com/parameter-tuning-with-hyperop…...

【Matlab高端绘图SCI绘图全家桶更新版】在原60种绘图类型基础上更新

俗话说&#xff0c;一图胜千言。数据可视化便是将数据通过图形化的方式展现出来&#xff0c;它更加便于我们观察数据蕴含的的规律&#xff0c;洞察了数据蕴含的规律后&#xff0c;从而使我们能够做更好的进行科研表达和学术写作。 科研过程中&#xff0c;绘图是一项非常重要的…...

如何构建一个 GraphRAG 系统

构建一个 GraphRAG 系统以提升传统 RAG&#xff08;检索增强生成&#xff09;模型的性能&#xff0c;需要结合知识图谱和生成式语言模型的能力&#xff0c;以下是实现的关键步骤和方法&#xff1a; 1. 数据准备 (1) 收集数据 确保有足够的高质量文本数据源&#xff0c;如&…...

代码随想录算法训练营day34

代码随想录算法训练营 —day34 文章目录 代码随想录算法训练营前言一、62.不同路径动态规划动态规划空间优化 二、63. 不同路径 II动态规划动态规划优化空间版 三、343. 整数拆分动态规划贪心算法 96.不同的二叉搜索树总结 前言 今天是算法营的第34天&#xff0c;希望自己能够…...