Git切换历史版本及Gitee云绑定
1、git介绍
Git是目前世界上最先进的分布式版本控制系统
Linux <- BitKeeper(不是开源的,但免费的,后来要收费)
Linus Torvalds(林纳斯·托瓦兹) 两周时间吧,弄了个 Git;大约一个月就把Linux代码从BitKeeper迁移到Git
版本管理系统能干什么:
协同开发
冲突解决(分并没弄好时)
版本记录
历史追查
代码备份(你一份,服务器上一份,云上一份)
版本还原
权限管理
分支管理
代码审查
2、版本管理结构
集中式版本控制系统
-->commit Web服务器 <--commit
开发者A Subversion 开发者B
<--checkout -->checkout
SVN是集中式版本控制系统(CVS,SVN,VSS),版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器
缺点:
必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了
1、版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?
2、程序员上传到服务器的代码要求是完整版本,但是程序员开发过程中想做小版本的管理,怎么破?
3、系统正在上线运行,时不时还要修改bug,要增加好几个功能要几个月,如何管理几个版本?
4、如何管理一个分布在世界各地、互不相识的大型开发团队?
分布式版本控制系统
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
优点:
容灾能力强
本地版本管理
异地协作
灵活分支
3、安装
百度上搜索“git for window”下载安装。
https://gitforwindows.org/
安装完,桌面上右击能看到“Git Bash Here”
4、git基本操作
D:\git\java_pro
进入文件夹,右击 - Git Bash Here,即打开Git命令行工具(小型shell,都是些linux命令),输入:
git init 【表示声明一个空库,会创建.git(隐藏的)文件夹,历史记录配置程序都在这里面】
接着配置签名,你往库里提代码,得知道是谁提的;签邮箱是因为,以后代码会迁到一个平台上,
可能是github、gitee、gitlab 对应的邮箱。
git config user.name "keke"
git config user.email "keke@520.com"
接着打开配置(D:\git\java_pro\.git\config)看看内容
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[user]
name = keke
email = keke@520.com
还有一种全局的配置,会挂在win10账号相关的目录下:
git config --global user.name "keke"
git config --global user.email "keke@520.com"
目录文件内容(C:\Users\Administrator\.gitconfig):
[user]
name = keke
email = keke@520.com
[http]
proxy = http://127.0.0.1:17890
最好,还是每个目录单独设置签名。
那么,签名有本地的,有全局的,使用哪个呢?本地的,就近原则。
新建一空文件夹:src
git status 【没红色提示】
新建一文件:src/java_test.java
git status 【红色提示 src/ ,表示Untracked files 有未追踪的文件】
git add src/java_test.java
git status 【绿色提示,表示文件进到暂存区】
git commit【不指定文件,则提交所有暂存区文件,回车后来到一个vim/vi提示界面】
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
表示让你为这次提交做一些说明。光标一直在最前面闪。
按键盘上的i,进入vi插入模式。输入一些说明,比如:
create 01
按键盘上的Esc键,退出vi插入模式,再输入
:wq
回车,则保存退出。这样就提交完成了。再git status查看状态,就没红、绿提示了。
git log 【查看提交日志,能看到版本的标识符:7b6a……】
commit 7b6a58ad10cc3051f6e7747abfa2d9422206796f (HEAD -> master)
下面做一些修改,并加个pom.xml文件:
$ vim src/java_test.java
hello world
$ git status
On branch master
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: src/java_test.java
Untracked files:
(use "git add <file>..." to include in what will be committed)
pom.xml
no changes added to commit (use "git add" and/or "git commit -a")
看到两个红色提示,下面一次性添加:
git add .
git commit -m "update 02"
我又修改提交了一版本:
$ vim src/java_test.java
hello world
22222222222
$ git commit -m "update 03"
git log --pretty=oneline 【更简单方式查看日志版本】
0997db44f7e3cde849720c4c4f9e9f6b3fef685d (HEAD -> master) update 03
a316e1ab8e81cc0cf96f7844040e089a54bb6344 update 02
7b6a58ad10cc3051f6e7747abfa2d9422206796f create 01
上面中 (HEAD -> master) 什么意思?
master是主分支,是整个版本中最稳定、核心的分支,如果没其他分支的话,就只有master分支。
HEAD 是一个指针,表示现在最新的代码指的是“update 03”这边的代码,如果别人下载你的代码
是从“update 03”开始。
现在企业中往往发布和开发是分开的。
我又修改提交了一版本(在win10用文本文件修改的):
hello world
22222222222
44444444444
$ git add src/java_test.java
$ git commit -m "update 04"
$ git log --pretty=oneline
336771e0ceeb8222efa1914cd34d9be9f518736e (HEAD -> master) update 04
0997db44f7e3cde849720c4c4f9e9f6b3fef685d update 03
a316e1ab8e81cc0cf96f7844040e089a54bb6344 update 02
7b6a58ad10cc3051f6e7747abfa2d9422206796f create 01
后面,想想还是用 03版本 发布,怎么弄?相当于要撤回04版本,所以让 HEAD指向03版本就可以了
回退到上一个版本命令:
$ git reset --hard HEAD^
HEAD is now at 0997db4 update 03
$ git log --pretty=oneline
0997db44f7e3cde849720c4c4f9e9f6b3fef685d (HEAD -> master) update 03
a316e1ab8e81cc0cf96f7844040e089a54bb6344 update 02
7b6a58ad10cc3051f6e7747abfa2d9422206796f create 01
那么,从03版本再撤回2个版本呢?而01版本时,没有 pom.xml 文件,回到01版本时也不会有
$ git reset --hard HEAD~2
HEAD is now at 7b6a58a create 01
…………最后,客户还是确定04版本,怎么弄?
git版本控制就是会“留痕”,都能找得到。
$ git reflog 【能看到你每一次的具体操作,以操作为单位,不是版本记录】
7b6a58a (HEAD -> master) HEAD@{0}: reset: moving to HEAD~2
0997db4 HEAD@{1}: reset: moving to HEAD^
336771e HEAD@{2}: commit: update 04
0997db4 HEAD@{3}: commit: update 03
a316e1a HEAD@{4}: commit: update 02
7b6a58a (HEAD -> master) HEAD@{5}: commit (initial): create 01
这边以7位版本号“336771e”作为标识,直接定位04版本
$ git reset --hard 336771e
HEAD is now at 336771e update 04
5、删除还原
假你本地的代码改了,也保存了还没有提交。怎么撤消还原:
$ git checkout -- src/java_test.java
$ git add src 【add目录,则目录下所有代码都会上传】
$ git commit -m "update 06"
突然发现,一些隐私文件也上传了。怎么删除?
都会“留痕”,你只能当成bug提交。先把本地的文件删除了。
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: src/java_test.java.bak
no changes added to commit (use "git add" and/or "git commit -a")
然后提交到暂存区,再提交覆盖。有心人通过回退,还是能获取到的。
$ git add src/java_test.java.bak
$ git commit -m "bug fix"
6、三个区域
工作区、暂存区、本地库
checkout 是针对某个文件还原
reset 是针对某个版本的(可能多个文件)
三个区域示例图
7、分支与冲突解决
系统上线后,又要修改bug,又要开发新的功能.
由于新功能没有开发完,所以需要建立分支,一边修改bug,一边开发新功能,最终合并.
git branch -v 【查看分支,-v 省略,则显示内容更简洁】
git branch dev 【创建分支dev】
git checkout dev 【切换分支dev,下面的 * 表示当前处于哪一分支】
Administrator@WIN-20250404RBK MINGW64 /d/git/java_pro (dev)
$ git branch -v
* dev b2c9c1c bug fix
master b2c9c1c bug fix
下面在dev分支上创建一文件,并提交:
$ touch src/java_test02.java
$ git add src/java_test02.java
$ git commit -m "new test02"
$ git branch -v
* dev 67f64c8 new test02
master b2c9c1c bug fix
此时,如果切换分支到 master分支,则本地的 src/java_test02.java 文件也删除了
$ git checkout master
dev 67f64c8 new test02
* master b2c9c1c bug fix
$ git merge dev 【合并分支,因处在master分支,要合并dev内容进来,dev分支不受影响的】
【则本地的 src/java_test02.java 文件又回来了】
$ git branch -v 【此时主分支和dev版本就是一致了】
dev 67f64c8 new test02
* master 67f64c8 new test02
冲突产生
冲突一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突。
程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。
【此时,只能程序员去分辨哪些代码是应该保留 或 删除的】
下面来模拟产生冲突:
本地的 src/java_test.java,最后内容添加上 AAA 保存
$ git add src/java_test.java
$ git commit -m "AAA"
$ git checkout dev
本地的 src/java_test.java,最后内容添加上 BBB 保存
$ git add src/java_test.java
$ git commit -m "BBB"
【下面合并时产生冲突】
Administrator@WIN-20250404RBK MINGW64 /d/git/java_pro (dev)
$ git merge master
Auto-merging src/java_test.java
CONFLICT (content): Merge conflict in src/java_test.java
Automatic merge failed; fix conflicts and then commit the result.
Administrator@WIN-20250404RBK MINGW64 /d/git/java_pro (dev|MERGING)
这边的“dev|MERGING”指的是 dev在合并中,没合并完,中间出了些问题;
你不处理完这个问题,这个事情不算解决!也干不了其他的。
$ vim src/java_test.java
hello world
22222222222
44444444444
<<<<<<< HEAD
BBB
=======
AAA
>>>>>>> master
【说明】
======= 上面的是本地的代码
======= 下面的是分支的代码
不管怎么合并,你必须把标签给删除掉
【标签:<<<<<<< HEAD 和 >>>>>>> master】
src/java_test.java 保存的内容如下:
hello world
22222222222
44444444444
BBB
AAA
接着再提交一下
Administrator@WIN-20250404RBK MINGW64 /d/git/java_pro (dev|MERGING)
$ git add src/java_test.java
$ git commit -m "merged"
Administrator@WIN-20250404RBK MINGW64 /d/git/java_pro (dev)
$ git branch -v
* dev f51008d merged
master dde687e AAA
8、github流程
前面讲的git操作,都是在本地上操作,如果要同别人合作,还得通过网络跟另外一个平台进行对接。
平台有很多,最有名的是github(全世界都在用的)。
github是一个git项目托管网站,主要提供基于git的版本托管服务。
git和github对接流程小结(A-领导,B-组员):
A1、搭建代码库
git init
git config
A2、提交代码(到本地Git)
git add xxx
git commit
A3、GitHub准备工作:
注册GitHub账号
在GitHub搭建项目
A4、推送代码到远端
git remote add origin <url>
git push origin master
B5、安装Git,初始拉取代码用clone命令
git clone <url>
B6、组员添加修改代码,并提交到本地Git
git add xxx
git commit
B7、组员push推送到服务器
git push
A8、领导已经存在原始搭建的代码,已存在代码用 pull 拉取
git pull
9、gitee操作
假设:领导-岳不群,组员-令狐冲。电脑路径分别是:yuebuqun_pc、linghuchong_pc
打开文件夹:D:\git\yuebuqun_pc\jianfa (该文件夹里面包含 src空文件夹)
右击 -“Git Bash Here”打开Git命令行工具
$ vim src/bixiejianfa.java
欲练此功
$ git init
$ git config user.name "yuebuqun"
$ git config user.email "giteeybq@163.com"
$ git add src/bixiejianfa.java
$ git commit -m "create jianfa"
$ git log
接着,关联到gitee,打开https://gitee.com/ 左侧,仓库中“新建仓库”
仓库名称:jianfa_0224
仓库介绍:剑法
√ 私有 【私有的,搜索不到。gitee前5个成员私有不收费,github是一月7美元】
下面三个都不勾
初始化仓库 (设置语言、.gitignore、开源许可证)
设置模板 (添加 Readme、Issue、Pull Request 模板文件)
选择分支模型 (仓库创建后将根据所选模型创建分支)
点击“创建”按钮,自动跳到页面:
https://gitee.com/giteeybq/jianfa_0224
该页面中,复制一下仓库地址:
https://gitee.com/giteeybq/jianfa_0224.git
接着,把代码传到 gitee上面刚刚复制的地址。传之前,先来用代号设置一下地址。
可以直接:
git push https://gitee.com/giteeybq/jianfa_0224.git 用下面先设置代号:一般叫 origin(源头,官方的默认词)
$ git remote add origin https://gitee.com/giteeybq/jianfa_0224.git
$ git push origin master 【把master分支推送到origin地址】
回车,输入gitee上注册的用户名和密码。
打开文件夹:D:\git\linghuchong_pc (该文件夹里面空空的)
右击 -“Git Bash Here”打开Git命令行工具
$ git clone https://gitee.com/giteeybq/jianfa_0224.git jianfa
【后面“jianfa”就下载时指定文件夹名称】
10、gitee操作2
$ cd jianfa/
$ vim src/bixiejianfa.java
欲练此功
对不起 不会
$ git add src/bixiejianfa.java
$ git commit -m "sorry" 【提交到本地Git】
$ git push origin master
同一台电脑,上面岳不群账号已经登录了,这边能直接推送成功
不同电脑,这边推送会失败,因为没有权限!
需要设置权限。打开gitee仓库:
https://gitee.com/giteeybq/jianfa_0224
点击“管理”标签页,左侧点击“仓库成员管理”- “开发者”- 点击“邀请用户”按钮,
点击“直接添加”页签,输入“令狐冲”对应的gitee账户名,点击“添加”按钮。
添加成功,则Gitee发一条私信给“令狐冲”账户。
上面“令狐冲”账户推送更新成功后,“岳不群”pull拉取最新的:
Administrator@WIN-20250404RBK MINGW64 /d/git/yuebuqun_pc/jianfa (master)
$ git pull origin master
11、协作冲突
在上传或同步代码时,由于你和他人都改了同一文件的同一位置的代码,版本管理软件无法判断究竟以谁为准,就会报告冲突,需要程序员手工解决。
同一位置具体怎么定的,是由Git软件规定的。
创造冲突示例:
Administrator@WIN-20250404RBK MINGW64 /d/git/yuebuqun_pc/jianfa (master)
$ vim src/bixiejianfa.java
第三行输入AAA
$ git add src/bixiejianfa.java
$ git commit -m "AAA"
$ git push origin master 【push成功了】
此时,“令狐冲”代码没有进行pull拉取,直接修改了第三行
Administrator@WIN-20250404RBK MINGW64 /d/git/linghuchong_pc/jianfa (master)
$ vim src/bixiejianfa.java
第三行输入BBB
$ git add src/bixiejianfa.java
$ git commit -m "BBB"
$ git push origin master 【报错】
To https://gitee.com/giteeybq/jianfa_0224.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/giteeybq/jianfa_0224.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
$ git pull
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (4/4), 296 bytes | 14.00 KiB/s, done.
From https://gitee.com/giteeybq/jianfa_0224
fbcfad4..0c10578 master -> origin/master
Auto-merging src/bixiejianfa.java
CONFLICT (content): Merge conflict in src/bixiejianfa.java
Automatic merge failed; fix conflicts and then commit the result.
【看到这边,提示“CONFLICT”冲突了。解决方法,跟上面冲突提到的一样】
Administrator@WIN-20250404RBK MINGW64 /d/git/linghuchong_pc/jianfa (master|MERGING)
$ vim src/bixiejianfa.java
欲练此功
对不起 不会
<<<<<<< HEAD
BBB
=======
AAA
>>>>>>> 0c10578e17553c0500d3743b11bef32db0e2103b
======= 上面的是本地的代码
======= 下面的是远端的代码
src/bixiejianfa.java 保存的内容如下:
欲练此功
对不起 不会
BBB
AAA
$ git add src/bixiejianfa.java
$ git commit -m "merged"
$ git push origin master
【当然,有可能你此时提交时,别人又刚好同一位置又改了代码,并且提交了,则又会产生冲突】
【此时,按照上面的方法再改一下冲突!再提交!】
【还有Git其实可以直接把别人代码碾过去,相当于别人那段代码就没有了!】
12、pull request
假设,这个项目“岳不群”他“令狐冲”这两个人都搞不定。但是,“令狐冲”认识一人“东方不败”能搞定,那能不能让他也参与到项目中呢?
“岳不群”说我不认识,他不能直接参与到项目,他只能做为第三方团队(或非信任团队)来参与到项目中。那么,他提交代码,就得经过我审核OK,代码才能迁入进来。
正常来说,这个可能是一个开源团队。或者,可能公司有些方面不擅长,就外包出去,或找人合作;合作机构可能跟你不在一起。所以,他写好代码以后,他发过来,你来审核。
那么模式是怎样的呢?
首先,要在相同的平台(比如github),他通过Fork复制的一份到自己的云端,Fork底层其实是一个分支,然后,他 clone一份到他本地Git。他修改完代码,push到自己的云端。他(东方不败)希望修改后的代码能够合并来“岳不群”的项目中,怎么办呢?他就发一个pull request申请(简称PR),“岳不群”看到后可以评估这个PR申请怎么样,如果觉得OK,“岳不群”可以帮你进行合并merge到代码库来。
上面描述示例图
其实,自家程序员是不会这么麻烦的。一定是不同的机构、团体,才会有这么多操作。
“东方不败”找到这个项目有两个途径:
“令狐冲”告诉他 或者 开源项目他通过搜索获取到的。
“东方不败”打开“岳不群”项目,
https://gitee.com/giteeybq/jianfa_0224
点击页面右侧“Fork”按钮,Fork到自己云端。“东方不败”直接在云端上修改好代码(也可以clone到本地,改完push到云端),然后在“代码”标签页中点击“+” - 下拉中点击“新建 Pull Request”,备注一下,并写清你的思路,最后点击“创建 Pull Request”按钮。
“岳不群”打开项目:https://gitee.com/giteeybq/jianfa_0224
点击“Pull Requests”标签页,看到“东方不败”的申请,审核并测试通过后,再点击“合并”就OK 了。
【注】同一团队中,有时可能项目经理忘记给你开权限,你不要心虚,就直接去用Fork的方式。你要直接去要权限!
13、idea上传代码
介绍图形化的git,有很多种。
idea中,从File - New - Project... - 左侧点击“Maven”- Next 按下后,
GroupId: com.huashan
Artifactld: huashan-jianfa
点击“Next”
Project name: huashan-jianfa
Project location: D:\git\linghuchong_pc\huashan-jianfa
点击“Next”,项目创建完成。
idea中,选中 huashan-jianfa/src/main/java 右击 New - Java Class,输入:
com.huashan.jianfa.Dugu9jian
选中 huashan-jianfa/src/main/resources 右击 New - File - config.properties
那么要传哪些,一般 src目录是要传的,pom.xml要传(它是代码扩展、延伸),.idea目录一般不传
idea中如何创建git本地库?
idea中,从File - Settings... - 弹出窗口左侧选中 Version Control(版本控制) - Git,然后右侧中:
Path to Git executable:【比如填】C:\Program Files\Git\bin\git.exe 【点击Test弹出版本号】
【注意,路径填的是 bin\git.exe,不是 cmd\git.exe】
接着,
idea中,从VCS - Import into Version Control - Create Git Repository... 创建git仓库,选择路径:
D:\git\linghuchong_pc\huashan-jianfa
创建完仓库之后,idea中的文件名字体变红色(未上传,未追踪的文件),怎么追加?
选中:
D:\git\linghuchong_pc\huashan-jianfa\src\main\java\com\huashan\jianfa\Dugu9jian.java
右击 - Git 【只要你创建好仓库,这边就会有Git】- Add (则文件变绿色)
Add完之后,可以 idea提交,选中 Dugu9jian.java,
右击 - Git - Commit File... ,弹出窗口的,可以勾选哪些要 commit 的(在这里可以核实一下代码)。
Commit Message: 初始化提交
Author: 【这里是写签名的,比如】linghuchong<linghuchong@163.com>
右侧的,不勾选:
Perform code analysis
Check TODO (Show All) Configure
点击“Commit”按钮,提交后 idea中显示黑色了,表示已经纳入版本管理了。这样就提交到本地库。
然后,传到远端。需要“令狐冲”账户中准备一个库。新建仓库,查看“9、gitee操作”
……这样什么都没有的空仓库,建好了。
idea中,选中“huashan-jianfa”右击 - Git - Repository - Push... 弹出窗口
master → Define remote
点击“Define remote”做一个和远端关联,弹出窗口
Name: origin
URL: https://gitee.com/……xxx.git
点击“OK”
界面中,选中,就可以点击“Push”,则弹出窗口,填写gitee账号和密码。
14、idea上传代码2
“岳不群”首次拉取“令狐冲”远程端源码项目,打开 idea,从Check out from Version Control - Git
pull 回来后,
创建一文件 Zixiashengong.java 弹出提示:
Add File to Git
Do you want to add the following file to Git?
D:\git\yuebuqun_pc\huashan-jianfa0224\src\main\java\com\huashan\jianfa\Zixiashengong.java
If you choose Cancel, you can still add it later manually.
√ Remember, don't ask again “Add” “Cancel”
这种从网上下载的项目,它本身就是自带仓库的,这样你每加一个类,都会问你这个类加不加到仓库中,
建议上面不要点“Add”按钮。
如果点击“Add”这样,以后随意加一文件,都给你加入到仓库中。
所以
勾选,点击“Cancel”按钮。
在UI界面中,上传它给你简化了,你只要 Commit 就可以勾选相应的,不需要提前 Add,再Commit
15、idea中解决协作冲突
UI界面合并时,弹出界面点击 Merge按钮
16、idea gitflow 【工作流】
……在这取了两条独立的分支feature_goldstyle、feature_game,为什么要取两个独立的分支呢?能不能合在一起?
分开和不分开依据是什么?
两功能放一起,说明两个有依赖,这两个功能是一个团队做的,方便调配共用一个分支。
第二,它们的上线时间点是不是绑定的,虽然是两个功能,但是,如果是一起上线的(已经定下来了),那么就可以合在一起。
idea右下角 有 Git: master 点击一下,可以 New Branch ……
idea中pull 时,可以先点击 右侧 刷新按钮。
相关文章:

Git切换历史版本及Gitee云绑定
1、git介绍 Git是目前世界上最先进的分布式版本控制系统 Linux <- BitKeeper(不是开源的,但免费的,后来要收费) Linus Torvalds(林纳斯托瓦兹) 两周时间吧,弄了个 Git;大约一个月就把Linux代码从BitK…...
智能外呼系统中 NLP 意图理解的工作原理与技术实现
智能外呼系统通过整合语音识别(ASR)、自然语言处理(NLP)和语音合成(TTS)等技术,实现了自动化的电话交互。其中,NLP 意图理解是核心模块,负责解析用户话语中的语义和意图&…...

服务器的IP是什么东西?
一、什么是服务器的IP地址? 服务器的IP地址是互联网协议(Internet Protocol)的缩写,是服务器在网络中的唯一数字标识符。它类似于现实生活中的门牌号,用于标识服务器在网络中的位置,使其他设备能够通过它与…...

[问题解决]:Unable to find image ‘containrrr/watchtower:latest‘ locally
一,问题 在使用docker安装部署新应用的时候,报错:Unable to find image containrrr/watchtower:latest locally 分析认为是当前docker的资源库里找不到这个软件的镜像,需要配置一个包含这个软件镜像的新的资源库。 二࿰…...

【文件上传】阿里云对象存储服务实现文件上传
一、基础 上传到本地: package org.example.controller;import lombok.extern.slf4j.Slf4j; import org.example.pojo.Result; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; imp…...

IPv6代理如何引领下一代网络未来
随着互联网技术的不断发展,IPv6逐渐成为下一代网络协议的核心,替代IPv4已是大势所趋。IPv6代理作为IPv6网络环境下的重要工具,为用户提供了更高效、更安全的网络解决方案。 IPv6代理的定义 IPv6代理是在IPv6网络环境中为处理IPv4转换和其他网…...

Linux——数据链路层
1. 认识以太网 认知:以太网是用于局域网数据通信的协议标准,定义了同一局域网内通过电缆/无线怎么在设备之间传输数据帧。 注:整个网络世界可以具象看出由许许多多的局域网组成, • 家庭中的设备A and 家庭中的设备B and 家庭路由…...
ubuntu 22.04 安装下载
ubuntu 22.04下载安装及相关配置_ubuntu22.04下载-CSDN博客...
深度学习面试八股简略速览
在准备深度学习面试时,你可能会感到有些不知所措。毕竟,深度学习是一个庞大且不断发展的领域,涉及众多复杂的技术和概念。但别担心,本文将为你提供一份全面的指南,从基础理论到实际应用,帮助你在面试中脱颖…...
【深度学习-pytorch篇】1. Pytorch矩阵操作与DataSet创建
Pytorch矩阵操作与DataSet创建 1. Python 环境配置 1.1 安装 Anaconda 推荐使用 Anaconda 来管理 Python 环境,访问官网下载安装: https://www.anaconda.com/download/success 1.2 安装 PyTorch 请根据自己的系统平台(Windows/Linux/ma…...

游戏引擎学习第310天:利用网格划分完成排序加速优化
回顾并为今天的内容做个铺垫 昨天我们完成了一个用于排序的空间划分系统,但还没有机会真正利用它。昨天的工作刚好在结束时才完成,所以今天我们打算正式使用这个空间划分来加速排序。 现在我们在渲染代码中,可以看到在代码底部隐藏着一个“…...

数据结构 - 树的遍历
一、二叉树的遍历 对于二叉树,常用的遍历方式包括:先序遍历、中序遍历、后序遍历和层次遍历 。 1、先序遍历(PreOrder) 先序遍历的操作过程如下: 若二叉树为空,则什么也不做;否则࿰…...

时序模型介绍
一.整体介绍 1.单变量 vs 多变量时序数据 单变量就是只根据时间预测,多变量还要考虑用户 2.为什么不能用机器学习预测: a.时间不是影响标签的关键因素 b.时间与标签之间的联系过于弱/过于复杂,因此时序模型依赖于时间与时间的相关性来进行预…...
Java面试实战:从Spring到大数据的全栈挑战
Java面试实战:从Spring到大数据的全栈挑战 在某家知名互联网大厂,严肃的面试官正在面试一位名叫谢飞机的程序员。谢飞机以其搞笑的回答和对Java技术栈的独特见解而闻名。 第一轮:Spring与微服务的探索 面试官:“请你谈谈Spring…...
解决idea与springboot版本问题
遇到以下问题: 1、springboot3.2.0与jdk1.8 提示这个包org.springframework.web.bind.annotation不存在,但是pom已经引入了spring-boot-starter-web 2、Error:Cannot determine path to tools.jar library for 17 (D:/jdk17) 3、Error:(3, 28) java: …...

【第4章 图像与视频】4.4 离屏 canvas
文章目录 前言为什么要使用 offscreenCanvas为什么要使用 OffscreenCanvas如何使用 OffscreenCanvas第一种使用方式第二种使用方式 计算时长超过多长时间适合用Web Worker 前言 在 Canvas 开发中,我们经常需要处理复杂的图形和动画,这些操作可能会影响页…...
[AXI]如何验证AXI5原子操作
如何验证 AXI5 原子操作 摘要:在 UVM (Universal Verification Methodology) 验证环境中,验证 AXI5 协议的原子操作 (Atomic Operations) 是一项重要的任务,特别是在验证支持高并发和数据一致性的 SoC (System on Chip) 设计时。AXI5 引入了原…...

尚硅谷redis7 74-85 redis集群分片之集群是什么
74 redis集群分片之集群是什么 如果主机宕机,那么写操作就被暂时中断,后面就要由哨兵进行投票和选举。那么一瞬间若有大量的数据修改,由于写操作中断就会导致数据流失。 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行…...
Android获取设备信息
使用java: List<TableMessage> dataListnew ArrayList<TableMessage>();//获取设备信息Hashtable<String,String> ht MyDeviceInfo.getDeviceAllInfo2(LoginActivity.this);for (Map.Entry<String, String> entry : ht.entrySet()) {String key entry…...

WPF的基础控件:布局控件(StackPanel DockPanel)
布局控件(StackPanel & DockPanel) 1 StackPanel的Orientation属性2 DockPanel的LastChildFill3 嵌套布局示例4 性能优化建议5 常见问题排查 在WPF开发中,布局控件是构建用户界面的基石。StackPanel和DockPanel作为两种最基础的布局容器&…...

apache的commons-pool2原理与使用详解
Apache Commons Pool2 是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…...

打印Yolo预训练模型的所有类别及对应的id
有时候我们可能只需要用yolo模型检测个别类别,并显示,这就需要知道id,以下代码可打印出 from ultralytics import YOLO# 加载模型 model YOLO(yolo11x.pt)# 打印所有类别名称及其对应的ID print(model.names) {0: person, 1: bicycle, 2: c…...
语法糖介绍(C++ Python)
语法糖(Syntactic Sugar)是编程语言中为了提升代码可读性和简洁性而设计的语法结构。它不改变语言的功能,但能让代码更易写和理解。以下是 C 和 Python 中常见的语法糖示例: C 中的常见语法糖 范围 for 循环(Range-bas…...
事务详解及面试常考知识点整理
事务详解及面试常考知识点整理 1. 什么是事务? **事务(Transaction)**是将多条 SQL 语句打包执行的操作单元,具有“一气呵成”的特性。就好比你要完成“把大象放进冰箱”这件事,一共分三步: 打开冰箱门把…...

设计模式26——解释器模式
写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 解释器模式(Interp…...

在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label
在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3 一、硬件平台二、实现功能三、移植步骤1、下载LVGL-8.42、MDK中安装LVGL-8.43、配置RTE4、配置头文件 lv_conf_cmsis.h5、配置lv_port_disp_template 四、添加心跳相关文件1、在STM32CubeMX中配置TIM7的参数2、使能…...

ArcGIS 与 HEC-RAS 协同:流域水文分析与洪水模拟全流程
技术点目录 洪水淹没危险性评价方法及技术介绍基于ArcGIS的水文分析基于HecRAS淹没模拟的洪水危险性评价洪水风险评价综合案例分析应用了解更多 —————————————————————————————————————————————————— 前言综述 洪水危险性及…...
树莓派设置静态ip 永久有效 我的需要设置三个 一个摄像头的 两个设备的
通过 systemd-networkd 配置 此方法适用于较新的Raspberry Pi OS版本,支持同时绑定多个IP地址到同一网卡,且配置清晰稳定。 1.禁用DHCP客户端对eth0的管理:编辑/etc/dhcpcd.conf文件,添加以下内容以忽略eth0接口的自动分配 sudo nano /etc…...

多模态大语言模型arxiv论文略读(九十九)
PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文标题:PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文作者:Junyi Li, Junfeng Wu, Weizhi Zhao, Song Bai, Xiang Bai ➡️ 研究机构…...

Fine-tuning:微调技术,训练方式,LLaMA-Factory,ms-swift
1,微调技术 特征Full-tuningFreeze-tuningLoRAQLoRA训练参数量全部少量极少极少显存需求高低很低最低模型性能最佳中等较好接近 LoRA模型修改方式无变化局部冻结插入模块量化插入模块多任务共享不便较便非常适合非常适合适合超大模型微调❌✅✅✅(最优&…...