Git:在本地电脑上如何使用git?
git 版本: 2.40.1.windows.1
文章目录
- 一. 使用git之前你必须要理解的几个概念
- 1.1 理解工作区、版本库、暂存区的概念
- 1.2 提交Git版本库的步骤【分两步执行】
- 二. Git本地库实战
- 2.1 初始化版本库
- 2.2 新建 & 提交 & 状态
- 2.3 查看日志
- 2.4 回退 & 穿梭 & 撤销
- 2.4.1 回退到历史版本
- 2.4.2 版本穿梭
- 2.4.3 撤销文件
- 2.5 删除
- 2.6 分支
- 2.6.1 实际开发流程
- 2.6.2 分支概念
- 2.6.3. 分支的好处
- 2.6.4 分支操作
- 2.6.5 分支操作详解
- 1) 创建分支和切换分支之图解
- 2) 如何创建分支和切换分支?
- 3)如何删除分支?
- 4) 如何合并分支?
- 2.7 git追踪的文件数据丢失了,怎么办?
- 1.问题描述
- 2.问题原因
- 3.解决方案
- 2.8 版本冲突
- 1. 冲突产生的表现
- 2. 冲突产生的原因
- 3. 冲突的解决
- 4. 避免冲突
一. 使用git之前你必须要理解的几个概念
1.1 理解工作区、版本库、暂存区的概念
以本人电脑桌面上的文件夹git_test举例说明
-
工作区(Working Directory)
:就是电脑本地的硬盘目录 -
版本库(Repository)
:工作区有个隐藏目录 .git ,它就是Git的本地版本库
-
暂存区(stage)
:一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index) -
分支(Branch)
:Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
1.2 提交Git版本库的步骤【分两步执行】
👉第一步
用“git add”把文件纳入Git管理,实际是把本地文件修改添加到暂存区
👉第二步
用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以commit就是往master分支上提交更改。
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。一旦提交完后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。即:nothing to commit (working directory clean)。
👉其他操作
①用“git diff HEAD – filename”命令可以查看工作区和暂存区里面最新版本的区别。
②撤销未add的文件: git checkout --文件名
③撤销已add未commit的文件:先git reset [HEAD] 文件名,再 git checkout – 文件名
④撤销已add已commit:git reset --hard HEAD^ 【^ -> 回退一个版本,^^ -> 回退两个版本,剩下依此类推,如果嫌麻烦,想回退多个版本,后面加~+数字
二. Git本地库实战
👉 常用命令预览
命令名称 | 命令作用 |
---|---|
git init | 初始化本地库,生成.git 目录【本地库】 |
git config --global user.name 用户名 | 设置用户签名的用户名部分 |
git config --global user.email 邮箱 | 设置用户签名的邮箱部分 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
2.1 初始化版本库
👉前提
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库
👉获取Git仓库通常有两种方式
- 在本地初始化一个Git仓库
- 从远程仓库克隆
❓如何在本地初始化一个Git仓库?
①创建目录(用作本地版本库),例如:C:\Users\king\Desktop\git_test,git_test表示你自己新建的项目名称
②当前目录打开Git Bash窗口,初始化仓库
👉初始化仓库命令
git init
💡注意
我这里git报了一个“ Reinitialized existing Git repository in
C:/Users/king/Desktop/git_test/.git/ ”的提示信息。
它表示在路径 “C:/Users/king/Desktop/git_test/” 下重新初始化了一个已存在的 Git 仓库。
🤔原先存在的git仓库数据会被清空吗?
是的,执行
git init
命令时,如果指定的路径下已经存在一个 Git 仓库,并且重新初始化了该仓库,那么原有的 Git仓库数据将被清除。这意味着之前的提交历史、分支、标签等所有与该仓库相关的数据都将被删除。 在重新初始化后,该仓库会变成一个空的、新的 Git 仓库,需要重新添加文件、进行提交等操作,因此建议对重要项目的git仓库做好备份
💡ps:我这里所说的git仓库就是上文介绍的git本地版本库
③查看当前目录产生 .git隐藏文件夹
💡注意:当前的 .git 是一个隐藏文件夹,需要在电脑上面设置隐藏文件夹显示设置,否则,看不到这个.git目录,可参考如下步骤查看隐藏文件夹
2.2 新建 & 提交 & 状态
1.新建文件
👉命令
-
touch a.txt:新建一个空白文件
-
vim a.txt:编辑文件
2.查看文件状态
👉命令
git status
- On branch master :表示主分支
- Untracked files:表示未跟踪状态
👉Git工作目录下的文件状态信息如下
Untracked
:未跟踪(未被纳入版本控制)Tracked
:已跟踪(被纳入版本控制)Unmodified
:未修改状态Modified
:已修改状态Staged
:已暂存状态
💡注意这些文件的状态会随着我们执行Git的命令而发生变化
红色
:表示新建文件或者新修改的文件,都在工作区绿色
:表示文件在暂存区- 一般新建的文件存放在工作区,它需要被添加到暂存区并提交到本地库中
👉也可以使用git status –s 使输出信息更加简洁
-
??
: 表示未跟踪状态
3.添加到暂存区
👉命令
git add <文件名称>
:只是增加到栈空间(index文件)中,还没有添加到本地库中。初始化时没有这个index文件。这还是一个新文件,需要将栈空间文件提交到本地仓库- git add:添加项目中所有文件
👉举例演示
将刚创建的文件[a.txt]添加到缓存区中
💡注意
①添加未存在文件会出错,错误信息为【fatal: pathspec ‘hello.txt’ did not match any files】
🤔不信?请看如下案例
使用命令 git add hello.txt 添加不存在的文件[hello.txt]到缓存区中
②使用git add 文件名时,可以使用Tab键自动补全其文件名
4.撤销暂存区的文件
👉命令
git reset <文件名称>
:撤销后,查看文件状态(git status)文件由绿色变为红色
👉举例演示
将添加到缓存区中的文件[a.txt]撤销,使其回到工作区中
5.将暂存区文件提交到本地库
👉命令
-
git commit
:执该行命令时需手动填写提交日志[备注/注释],进入编辑模式不信?请看如下演示
-
git commit –m “注释内容”
:直接用-m参数指定日志内容,推荐,因为commit 会生成一条版本记录,add只是添加暂存区,不会生成版本记录,建议多次add后,一次性commit,避免每次add都commit产生版本信息爆炸 -
git commit -am "注释内容"
:代码编辑完成后即可进行 add 和 commit 操作,此命令是添加和提交的合并命令
👉举例演示
将文件[a.txt]提交到本地库中
💡注意
虽然git commit -am "注释内容"
命令虽然可以**将已跟踪的修改直接添加到暂存区,并创建一个新的提交记录,将这些修改永久保存到版本库中
,但是该命令只适用于对已经添加到版本库中的文件进行修改,且修改后的文件需要被提交
, 换而言之,不能对工作区中的文件一键添加并提交到本地库中。对于新添加的未跟踪文件,仍然需要先使用 git add
命令将其添加到暂存区,然后再使用 git commit -m "注释内容"
进行提交。
2.3 查看日志
👉命令
-
git log
:显示提交日志信息 -
git log a.txt
:文件日志(查看所有日志或某个文件日志),按q退出
-
git log --pretty=oneline
:如果日志很多,可以在一行显示 -
git reflog
:查看所有的历史操作
2.4 回退 & 穿梭 & 撤销
2.4.1 回退到历史版本
👉命令
-
git reset --hard HEAD\^
:一次回退一个版本,一个^代表一个版本数量 -
git reset --hard HEAD~n
:回退n次操作
👉举例演示:
对b.txt文件回退到上一个版本
执行回退命令前
执行回退命令后
2.4.2 版本穿梭
👉步骤
git reflog 文件名
:查看指定文件的历史操作git reset --hard 版本号
:回到指定的版本
👉举例演示:
文件b.txt已经插入了三条数据,且每次插入数据后都提交到了本地库中,现需要将b.txt文件穿梭到第一版[即插入“第一次插入数据”的b.txt]
执行版本穿梭命令前
执行版本穿梭命令后
2.4.3 撤销文件
🚩情形1(未add,未commit的文件)
👉命令
git checkout -- 文件名
:撤销修改,即还原原来的文件
👉理解
该命令的主要作用是将指定文件恢复到最近一次提交的状态。简而言之,如果你在工作区对某个文件做了修改,但是还没有使用 git add
将其添加到暂存区,那么可以使用 git checkout -- <文件名>
命令来撤销对文件的修改,将其恢复为最近一次提交的状态。这里有个使用前提,如果你的文件仅仅只是在工作区中新增并修改了一个文件,比如c.txt,再使用 git checkout -- c.txt
命令撤销文件,会报错,报错信息如下所示:
🤔why?
我在工作区中新建并修改了文件C.txt,该文件没有被add,即添加进缓存区中,Git 在执行撤销操作时,会检查文件是否已经被 Git 跟踪(即已添加到 Git 中)。由于 ‘c.txt’ 文件尚未被添加到 Git 中,因此 Git 不知道如何撤销该文件的更改。 故会报错,该命令的使用场景是你在工作区新增并修改了某个文件,把文件add到缓存区,紧接着你第二次修改了这个文件,但没有add到缓存区,就可以使用该命令撤销第二次修改的数据,恢复到第一次修改时的状态。
🤔 如何得知某个文件是否已经被 Git 跟踪?
要想确定文件是否已经被 Git 跟踪,可以使用 git status
命令来查看文件的状态。
在终端或命令行界面中,进入到该文件所在的工作目录,并运行 git status
命令。Git 将显示当前分支的状态以及与之相关的文件信息。
如果文件已经被 Git 跟踪,git status
命令的输出中会显示在 “Changes to be committed
” 或者 “Changes not staged for commit
” 部分下列出该文件。
如果文件没有被 Git 跟踪,则不会在上述两个部分中显示该文件,而是会出现在 “Untracked files
” 部分。
🤔 使用
git add 文件名
命令是否意味着该文件已经被纳入Git 监管(已被Git 跟踪)?
是的,使用命令会将文件 ‘c.txt’ 添加到 Git 的跟踪列表中,标记为已追踪(tracked)。
当运行 git add
命令时,Git 会将指定的文件从工作区添加到暂存区。暂存区是一个缓冲区域,用于暂时存储要包含在下一次提交中的更改。通过将文件添加到暂存区,Git 开始跟踪该文件的状态变化,即文件的新修改或删除操作。这意味着 Git 将在下一次提交时记录并保存对文件的更改。
所以,一旦使用 git add c.txt
将文件添加到 Git 的跟踪列表,该文件就被视为已追踪。接下来,你可以使用 git commit
命令将暂存区中的更改提交到版本历史记录中。
需要注意的是,如果在运行 git add
命令之前没有创建过该文件,那么该文件将被识别为新文件,并添加到 Git 的跟踪列表中。如果在运行 git add
命令之前对文件进行了修改,则 git add
命令将记录这些修改并更新版本控制系统。
👉举例演示
新建一个文件c.txt,使用vim修改该文件,第一次修改后add到缓存区中,第二次修改后不add和commit,然后使用git checkout --文件名命令进行文件撤销
①新建文件c.txt并使用vim修改它,插入“你好,世界!”,第一次修改后add到缓存区中
king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ vim c.txtking@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat c.txt
你好,世界!king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git checkout c.txt
error: pathspec 'c.txt' did not match any file(s) known to git
②第二次修改该文件,插入“你好,Git!”,然后使用git checkout --文件名命令进行文件撤销
king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ vim c.txtking@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat c.txt
你好,世界!
你好,Git!king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git checkout c.txt
Updated 1 path from the indexking@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat c.txt
你好,世界!
我们可以很明显的看到,c.txt文件已被恢复到第一次修改时的状态,即文件中只有一条数据【你好,世界】!!!
🚩情形二(已add,未commit的文件)
👉命令
git reset HEAD <文件名>
:将已经添加到暂存区(或索引)的文件移出暂存区git reset HEAD .
:撤销所有已添加到暂存区的文件,可以使用.
作为文件名
👉举例演示
使用vim修改文件c.txt,d.txt和e.txt,添加add,但不提交commit,使用上述命令进行撤销
①使用git reset HEAD c.txt命令将c.txt移出缓存区
②使用git reset HEAD . 命令将剩余的两个文件一起移出缓存区
💡注意
git reset HEAD
命令只影响暂存区,不会修改工作区中的实际文件内容。如果需要撤销对文件的修改并还原到最近一次提交的状态,可以使用git checkout -- <文件名>
命令。
2.5 删除
👉可以使用
git rm
命令。git rm
命令会将文件从 Git 仓库中删除,并将删除操作记录到提交历史中。
以下是删除文件的几种常见情况和对应的命令:
-
删除工作目录中的文件并将删除操作提交到 Git 仓库
git rm <文件名>
将
<文件名>
替换为要删除的文件的名称。例如,要删除名为c.txt
的文件,命令如下:git rm c.txt
运行该命令后,文件将被从工作目录和 Git 仓库中删除。
举例演示:将文件c.txt使用
git rm c.txt
命令删除①先将文件c.txt提交到本地版本库中
②t使用
git rm c.txt
命令删除此文件 -
仅删除 Git 仓库中的文件,而不删除工作目录中的文件
git rm --cached <文件名>
使用
--cached
选项可以仅将文件从 Git 仓库中删除,而保留工作目录中的实际文件。例如,要从 Git 仓库中删除名为
c.txt
的文件,但保留工作目录中的实际文件,命令如下:git rm --cached c.txt
运行该命令后,文件将被从 Git 仓库中删除,但保留在工作目录中。
举例演示:使用git rm --cached d.txt命令删除文件d.txt
①先把文件d.txt添加到git仓库中
②使用git rm --cached d.txt命令删除文件d.txt
-
删除整个文件夹及其内容:
git rm -r <文件夹路径>
使用
-r
选项可以递归地删除文件夹及其内容。例如,要删除名为
folder
的文件夹及其所有内容,命令如下:git rm -r folder
运行该命令后,文件夹及其内容将被从工作目录和 Git 仓库中删除。
举例演示:在该项目所在的文件夹中新建一个文件夹folder,使用git rm -r folder命令删除该文件夹
①在该项目所在的文件夹中新建一个文件夹folder,并提交到git仓库中
②使用git rm -r folder命令删除该文件夹
在执行 git rm
命令后,需要通过提交操作来确认删除 ,需要使用 git commit
命令提交你的更改,并将删除操作记录到提交历史中。
why?
这是因为
git rm
命令会把删除操作添加到暂存区,但实际的文件删除操作只会在提交时生效。
注意
git rm
命令不仅会从 Git 仓库中删除文件,还会将删除操作添加到暂存区。如果只想保留文件在 Git仓库中但从工作目录中删除,可以使用git rm --cached
命令。
2.6 分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建它,并且大多数人都懒得去改动它。
2.6.1 实际开发流程
2.6.2 分支概念
在使用版本控制工具【git / svn 】开发的过程中,可以同时推进多个任务,如下图所示
2.6.3. 分支的好处
①可以同时并行推进多个功能开发,提高开发效率
②各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
2.6.4 分支操作
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
2.6.5 分支操作详解
1) 创建分支和切换分支之图解
解读
- master,hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的
- HEAD如果指向master,那么我们现在就在master分支上
- HEAD如果指向hotfix,那么我们现在就在hotfix分支上
- 切换分支的本质就是移动HEAD指针
2) 如何创建分支和切换分支?
①创建分支
👉前提
你已在本地仓库的主分支(一般是
master
)
🤔如何确保当前所在分支是是主分支?
通过命令
git branch
来确认当前所在分,当前所在的分支会在列表中以特殊标记(通常是*
)显示出来
👉命令
git branch <新分支名>
👉举例演示
创建分支test
②切换分支
👉切换到新创建的分支,可以使用以下命令:
git checkout <新分支名>
👉举例演示
要切换到名为
test
的新分支
💡注意
如果你使用的是较新版本的 Git(2.23+),也可以使用以下命令创建并切换到新分支:
git switch -c <新分支名>
👉举例演示
使用git switch -c <新分支名> 命令创建新分支test1
3)如何删除分支?
👉删除分支之前需通过git branch命令确定要删除的分支名称,然后执行以下命令:
git branch -d <分支名>
👉举例演示
要删除名为
test1
的分支,可以运行以下命令:
git branch -d test1
💡注意
删除分支只会删除对应的分支引用,而不会删除与该分支关联的提交历史。因此,删除分支并不会造成数据丢失,可以放心执行。
4) 如何合并分支?
👉图解如下所示:
合并分支时会涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”
👉命令
git merge 目标分支
此命令的本质就是把目标分支合并到当前所在分支。
👉举例演示
把分支hotfix合并到test分支中
①确保当前所在的分支是test
②使用git merge hotfix命令将分支hotfix合并到当前分支test上
2.7 git追踪的文件数据丢失了,怎么办?
1.问题描述
我在分支test上修改文件abc.txt,修改完后提交到git仓库,但是切回master分支时vim
abc.txt文件时,文件中没有数据,是空白的
①在test分支上查看文件abc.txt,其内容如下
②在master分支上查看文件abc.txt,其内容如下
2.问题原因
①操作失误
:删除了一个错误的分支可能会导致数据丢失,在删除分支之前,确保选择了正确的分支。
②使用错误的分支合并
:当使用Git进行分支合并时,有时候会选择错误的分支或提交。如果在错误的分支上执行合并操作,可能会导致数据丢失,因为合并会更新当前分支的提交记录。
③磁盘故障
:Git的数据存储在硬盘上。如果硬盘发生故障,可能会导致git仓库的部分或全部数据丢失
3.解决方案
👉步骤
①使用
git reflog <文件名/文件路径>
/git reflog
命令检查 Git 的提交历史记录,确认文件是否在之前的提交中存在
②如果你找到了包含丢失数据的提交,则通过回退该提交来恢复丢失的版本。使用
git checkout
命令将文件恢复到特定提交的状态
命令参考如下:
git checkout <目标提交> -- <文件路径>
替换 <目标提交>
为包含丢失数据的提交的哈希值或相对引用,<文件路径>
为丢失数据的文件路径
简而言之,就是把历史操作记录中每一行记录最左边的”编号"[哈希值或相对引用],例如“6621c2e ”之类的,放到<目标提交>的位置,在当前位置上的文件,可直接写文件名在<文件路径>上的位置
2.8 版本冲突
1. 冲突产生的表现
举例演示:
①创建分支test,并在此分支上新建并修改文件abc.txt,提交到git仓库中
代码示例如下:
king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git checkout test
Switched to branch 'test'king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ vim abc.txtking@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ cat abc.txt
你好,世界!
风调雨顺
你好,Java!king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ git add abc.txt
warning: in the working copy of 'abc.txt', LF will be replaced by CRLF the next time Git touches itking@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ git commit -m "test分支修改了第二行数据"
[test 67ca5a4] test分支修改了第二行数据1 file changed, 3 insertions(+)create mode 100644 abc.txt
②切回主分支master,并在此分支上修改文件abc.txt,主要是对文件abc.txt中第二行数据修改为“xxxx”,最后提交到git仓库中
king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ git checkout master
Switched to branch 'master'king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat abc.txt
你好,世界!
风调雨顺
你好,Java!king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ vim abc.txtking@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat abc.txt
你好,世界!
xxxx
你好,Java!king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git commit -am "master修改了第二行数据"
[master 7766fc2] master修改了第二行数据1 file changed, 3 insertions(+)create mode 100644 abc.txt
③把test分支合并到master分支上
king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git merge test
Auto-merging abc.txt
CONFLICT (add/add): Merge conflict in abc.txt
Automatic merge failed; fix conflicts and then commit the result.king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master|MERGING)
$ cat abc.txt
你好,世界!
<<<<<<< HEAD
xxxx
=======
风调雨顺
>>>>>>> test
你好,Java!
Git使用“<<<<<<< HEAD、=========、>>>>>>>>>> 分支名称”符号帮我们标记出产生冲突的内容
具体冲突内容如下所示:
2. 冲突产生的原因
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
3. 冲突的解决
①编辑有冲突的文件,删除特殊符号,决定要使用的内容
②添加到暂存区
③执行提交(注意:使用git commit命令时不能带文件名)
4. 避免冲突
👉容易冲突的操作方式
-
多个人同时操作了同一个文件
-
一个人一直写不提交
-
修改之前不更新最新代码
-
提交之前不更新最新代码
-
擅自修改同事代码
👉减少冲突的操作方式
-
养成良好的操作习惯,先
pull
在修改,修改完立即commit
和push
-
一定要确保自己正在修改的文件是最新版本的
-
各自开发各自的模块
-
如果要修改公共文件,一定要先确认有没有人正在修改
-
下班前一定要提交代码,上班第一件事拉取最新代码
-
一定不要擅自修改同事的代码
相关文章:

Git:在本地电脑上如何使用git?
git 版本: 2.40.1.windows.1 文章目录 一. 使用git之前你必须要理解的几个概念1.1 理解工作区、版本库、暂存区的概念1.2 提交Git版本库的步骤【分两步执行】 二. Git本地库实战2.1 初始化版本库2.2 新建 & 提交 & 状态2.3 查看日志2.4 回退 & 穿梭 &am…...
卷和分区的关系
1、分区 存储空间管理和仓库管理类似,只不过仓库管理的是货物,存储空间管理的是文件。当仓库规模小时,可以不划分货物的存放区域,但当仓库规模很大,就必须根据货物的类型和存储需要,把仓库分为多个区域。例…...

Linux下在qtcreator中创建qt程序
目录 1、新建项目 2、单工程项目创建 3、多工程项目创建 4、添加子工程(基于多工程目录结构) 5、 .pro文件 1、新建项目 切换到“编辑”界面,点击菜单栏中的“文件”-“新建文件或项目” 2、单工程项目创建 只有一个工程的项目&#…...

快递再多也不怕!你的顺丰快递用上5G“神器”
互联网时代,剁手党疯狂“买买买”之后,快递件量再创新高。《2023年6月中国快递发展指数报告》显示,2023二季度单月快递业务量稳定在百亿件以上。其中,由于“618”电商促销活动与父亲节叠加,6月16日至20日单日揽收量均超…...

微信小程序:模板使用
目录 模板的优点: 一、静态模板创建 二、静态模板使用 1.*.wxml引入模板 2.模板使用 3.*.wxss引入模板的样式 三、动态模板创建 四、动态模板使用 1.*.wxml引入模板 2.模板使用 3.*.js定义动态数据 五、结果展示 总结 模板的优点: 有利于保持网…...

AUTOSAR NvM Block的三种类型
Native NVRAM block Native block是最基础的NvM Block,可以用来存储一个数据,可以配置长度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基础上再加一个冗余块,当Native block失效(读取失败或CRC校验失…...

Vue+ElementUI实现选择指定行导出Excel
这里记录一下,今天写项目时 的一个需求,就是通过复选框选中指定行然后导出表格中选中行的Excel表格 然后这里介绍一个工具箱(模板):vue-element-admin 将它拉取后,运行就可以看到如下界面: 这里面的很多功能都已经实现…...

SNMP简单介绍
SNMP SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。SNMP采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用…...

使用python对图像加噪声
加上雨点噪声 import cv2 import numpy as npdef get_noise(img, value10):#生成噪声图像>>> 输入: img图像value 大小控制雨滴的多少 >>> 返回图像大小的模糊噪声图像noise np.random.uniform(0, 256, img.shape[0:2])# 控制噪声水平ÿ…...

以 Java NIO 的角度理解 Netty
文章目录 前言Java NIO 工作原理Selector 的创建ServerSocketChannel 的创建ServerSocketChannel 注册 Selector对事件的处理总结 前言 上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识,包括 Netty 的发展历程、核心功能与组件,并且通过实例演示…...

Maven自定义脚手架(多module模块)+自定义参数
脚手架 视频教程: Maven保姆级教程 脚手架是一个项目模板,包含常用的工程结构、代码。 1 自定义脚手架 脚手架创建的步骤如下,先创建一个工程,把常用的代码写好,进入工程根目录,进行如下操作: …...

爬虫逆向实战(七)--猿人学第十六题
一、数据接口分析 主页地址:猿人学第十六题 1、抓包 通过抓包可以发现数据接口是api/match/16 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以看出m是加密参数 请求头是否加密? 无响应是否加密? 无cook…...

Qt 杂项(Qwt、样式等)
Qt隐藏窗口边框 this->setWindowFlags(Qt::FramelessWindowHint);Qt模态框 this->setWindowModality(Qt::ApplicationModal);QLable隐藏border 代码中设置 lable->setStyleSheet("border:0px");或者UI中直接设置样式:“border:0px” Qwt开源…...

Python程序设计——列表
一、引言 关键点:一个列表可以存储任意大小的数据集合。 程序一般都需要存储大量的数值。假设,举个例子,需要读取100个数字,计算出它们的平均值,然后找出多少个数字是高于这个平均值的。程序首先读取100个数字并计算它…...

NPDP含金量高吗?难考吗?
一,什么是NPDP认证? NPDP认证中文名为产品经理国际资格认证,New Product Development Professional (NPDP) ,是由美国 产品开发与管理协会 (PDMA) 所发起, 是国际公认的唯一的新产品开发专业认证,集理论、方…...

windows pip安装出现 error: Microsoft Visual C++ 14.0 is required
可参考:如何解决 Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools“_不吃香菜的小趴菜的博客-CSDN博客 一、安装Visual Studio2022 1、下载:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 我这使…...

威胁分析风险评估(TARA)影响和攻击可行性评估参考
在威胁分析风险评估(TARA)过程中,风险等级由对资产安全属性侵害造成后果的影响等级和威胁的可能性两方面综合评估。 备注:以上内容的评估皆是建立在由信息安全问题引起并导致的前提下。 影响等级评估 影响等级说明,影响从安全&a…...
【教程】H5匿名信源码下载一封来信系统安装流程搭建教程
1、下载源码 匿名信2.0:匿名信h5源码 - 万策云盘 提取码:hOC4 2、查看搭建和使用教程 1,准备授权好的域名和服务器还有源码 2,创建网站和数据库,版本选择7.1【不可以选7.2】 3,上传源码并解压,导入数据…...

PyTorch训练简单的生成对抗网络GAN
文章目录 原理代码结果参考 原理 同时训练两个网络:辨别器Discriminator 和 生成器Generator Generator是 造假者,用来生成假数据。 Discriminator 是警察,尽可能的分辨出来哪些是造假的,哪些是真实的数据。 目的:使…...

django实现文件上传
在django中实现文件上传有三种方法可以实现: 自己手动写使用Form组件使用ModelForm组件 其中使用ModelForm组件实现是最简单的。 1、自己手写 先写一个上传的页面 upload_file.html enctype"multipart/form-data 一定要加这个,不然只会上传文件名…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...