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

Git分布式版本控制工具 Git基本概念、Git工作流程、Git常用命令、Git远程仓库、IDEA操作Git

目录

​​​​​​

1.Git基本概念

1.1 概述

1.1.1 开发中的实际场景

1.1.2 版本控制器的方式

1.1.2.1 集中式版本控制工具(SVN)

1.1.2.2 分布式版本控制工具(Git)

2.概述git工作流程

3.Git常用命令

3.1 Git环境配置

3.1.1 下载与安装

3.1.2 基本配置

3.1.3 为常用指令配置别名(可选)

3.1.4 解决GitBash乱码问题

3.2 获取本地仓库

3.3 基础操作指令

3.3.1 *查看修改的状态(status)

3.3.2 *添加工作区到暂存区(add)

3.3.3 *提交暂存区到本地仓库(commit)

3.3.4 *查看提交日志(log)

3.3.5 版本回退(reset)

3.3.6 添加文件至忽略列表(.gitignore)

3.3.7 基础命令练习

3.4 分支

3.4.1 查看本地分支(branch)

3.4.2 创建本地分支(branch 分支名)

3.4.4 切换分支(checkout)

3.4.6 合并分支(merge)

3.4.7 删除分支(branch -d/-D)

3.4.8 解决分支合并冲突

3.4.9 开发中分支使用原则与流程

3.4.10 分支练习

4.Git远程仓库

4.1 常用的托管服务[远程仓库]

4.2 创建远程仓库

4.4 配置SSH公钥

4.5 操作远程仓库

4.5.1 添加远程仓库

4.5.2 查看远程仓库

4.5.3 推送到远程仓库

4.5.4 本地分支与远程分支的关联关系

4.5.5 从远程仓库克隆

4.5.6 从远程仓库中抓取和拉取

4.5.7 解决合并冲突

4.5.8 远程仓库练习

5.idea操作git

5.1 Idea中配置Git

5.2 Idea中操作Git

5.2.1 创建项目远程仓库

5.2.2 初始化本地仓库

5.2.3 设置远程仓库

5.2.4 提交到本地仓库

5.2.5 推送到远程仓库

5.2.6 克隆远程仓库到本地

5.2.7 创建分支

5.2.8 切换分支及其他分支相关操作

5.2.10 解决冲突

5.3 IDEA常用GIT操作入口

5.4 场景分析


  • 1. 切换分支前先提交本地的修改。
  • 2. 代码及时提交,提交过了就不会丢

1.Git基本概念

1.1 概述

1.1.1 开发中的实际场景

场景一:备份。
小明负责的模块就要完成了, 硬盘光荣牺牲!几个月来的努力付之东流
场景二:代码还原。
场景三:协同开发。
一个程序员对应一个分支。最后功能都没问题,就可以合并分支。
场景四:追溯问题代码的编写人和编写时间!

1.1.2 版本控制器的方式

1.1.2.1 集中式版本控制工具(SVN)
集中式版本控制工具,版本库是集中存放在中央服务器的 team 里每个人 work 时从中央服务器下载代码。个人修改后然后提交到中央版本库。
举例:SVNCVS.
1.1.2.2 分布式版本控制工具(Git)

分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库(本地仓库), 版本库就在你自己的电脑上。
举例:Git.

2.Git工作流程

命令如下:
  • 1. clone(克隆): 从远程仓库中克隆代码到本地仓库
  • 2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
  • 3. add(添加): 在提交前先将代码提交到暂存区
  • 4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
  • 5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  • 6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
  • fetch+merge
  • 7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

3.Git常用命令

本教程里的 git 命令例子都是在 Git Bash 中演示的,会用到一些基本的 linux 命令:
  • ls/ll 查看当前目录
  • cat 查看文件内容
  • touch 创建文件
  • vi vi编辑器

3.1 Git环境配置

3.1.1 下载与安装

下载地址: https://git-scm.com/download

git config --global user.name “itcast”
git config --global user.email “hello@itcast.cn”
注意事项:
Git GUI Git 提供的图形界面工具
Git Bash Git 提供的命令行工具
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

3.1.2 基本配置

1. 打开 Git Bash
2. 设置用户信息
git config --global user.name
git config --global user.email
查看配置信息
git config --global user.name
git config --global user.email

3.1.3 为常用指令配置别名(可选)

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
1. 打开用户目录,创建 .bashrc 文件
该目录下创建:
部分 windows 系统不允许用户创建点号开头的文件,可以打开 gitBash, 执行 touch ~/.bashrc

2. .bashrc 文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'

3. 打开gitBash,执行 source ~/.bashrc

3.1.4 解决GitBash乱码问题

1. 打开 GitBash 执行下面命令
git config --global core.quotepath false

2. ${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

3.2 获取本地仓库

要使用 Git 对我们的代码进行版本控制,首先需要获得本地仓库。
  • 1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
  • 2)进入这个目录中,点击右键打开Git bash窗口
  • 3)执行命令git init
  • 4)如果创建成功后可在文件夹下看到隐藏的.git目录。

3.3 基础操作指令

Git 工作目录下对于文件的 修改 ( 增加、删除、更新 ) 会存在几个状态,这些 修改 的状态会随着我们执行 Git的命令而发生变化。

使用命令来控制这些状态之间的转换:
  • 1. git add (工作区 --> 暂存区)
  • 2. git commit (暂存区 --> 本地仓库)

3.3.1 *查看修改的状态(status

作用:查看的修改的状态(暂存区、工作区)。
命令形式:
git status

3.3.2 *添加工作区到暂存区(add)

作用:添加工作区一个或多个文件的修改到暂存区
命令形式:
git add 单个文件名|通配符

将所有修改加入暂存区:
git add .

3.3.3 *提交暂存区到本地仓库(commit)

作用:提交暂存区内容到本地仓库的当前分支。
命令形式:
​​​​​​​git commit -m '注释内容'

​​​​​​​

3.3.4 *查看提交日志(log)

3.1.3 中配置的别名 git - log 就包含了这些参数,所以后续可以直接使用指令 git - log。
作用:查看提交记录。
命令形式:
git log [option]
options:
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的 commitId 更简短
--graph 以图的形式显示

注意事项:参数的过多,可以使用别名来优化,就不用每一次都输入参数。

3.3.5 版本回退(reset)

作用:版本切换。
命令形式:
git reset --hard commitID
commitID 可以使用 git-log git log 指令查看。
如何查看已经删除的记录?
 
//这个指令可以看到已经删除的提交记录
git reflog

3.3.6 添加文件至忽略列表(.gitignore

一般我们总会有些文件 无需纳入Git 的管理 ,也不希望它们总出现在未跟踪文件列表。
通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
在这种情况下,我们可以在工作目录 中 创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。 下面是一个示例:
# 以.a的后缀都会被匹配
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

3.3.7 基础命令练习

##################### 仓库初始化 ######################
# 创建目录( git_test01 )并在目录下打开 gitbash
# 初始化 git 仓库
git init
##################### 创建文件并提交 #####################
# 目录下创建文件 file01.txt
# 将修改加入暂存区
git add .
# 将修改提交到本地仓库,提交记录内容为: commit 001
git commit -m 'commit 001'
# 查看日志
git log
#################### 修改文件并提交 ######################
# 修改 file01 的内容为: count=1
# 将修改加入暂存区
git add .
# # 将修改提交到本地仓库,提交记录内容为: update file01
git commit --m 'update file01'
# 查看日志
git log
# 以精简的方式显示提交记录
git-log
#################### 将最后一次修改还原 ##################
# 查看提交记录
git-log
# 找到倒数第 2 次提交的 commitID
# 版本回退
git reset commitID --hard

3.4 分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug 修改、开发新的功能,以免影响开发主线。

3.4.1 查看本地分支(branch)

命令:
git branch

3.4.2 创建本地分支(branch 分支名)

命令:
git branch 分支名

3.4.4 切换分支(checkout)

命令:

git checkout 分支名
我们还可以直接切换到一个不存在的分支 (创建并切换)
命令:
git checkout -b 分支名

3.4.6 合并分支(merge)

一个分支上的提交可以合并到另一个分支
命令:
git merge 分支名称

注意事项:一般都是切换为主分支,然后再把其他分支合并到主分支。

3.4.7 删除分支(branch -d/-D)

// 删除分支时,需要做各种检查
git branch -d b1 
// 不做任何检查,强制删除
git branch -D b1 

注意事项:不能删除当前分支,只能删除其他分支。

master分支提交的信息:

切换为dev01分支的信息:

合并分支:

3.4.8 解决分支合并冲突

当两个分支上对文件的修改可能会存在冲突, 例如同时修改了同一个文件的同一行 这时就需要手动解决冲突 ,解决冲突步骤如下:
  • 1. 处理文件中冲突的地方(手动修改)
  • 2. 将解决完冲突的文件加入暂存区(add)
  • 3. 提交到仓库(commit)
冲突部分的内容处理如下所示:

3.4.9 开发中分支使用原则与流程

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug 修改、开发新的功能,以免影响开发主线。
在开发中,一般有如下分支使用原则与流程:
  • master (生产) 分支
    • 线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
  • develop(开发)分支
    • 是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线 要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
  • feature/xxxx分支
    • develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。
  • hotfix/xxxx分支,
    • master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到mastertestdevelop分支。
还有一些其他分支,在此不再详述,例如 test 分支(用于代码测试)、 pre 分支(预上线分支)等
等。

3.4.10 分支练习

########################### 创建并切换到 dev01 分支,在 dev01 分支提交
# [master] 创建分支 dev01
git branch dev01
# [master] 切换到 dev01
git checkout dev01
# [dev01] 创建文件 file02.txt
# [dev01] 将修改加入暂存区并提交到仓库 , 提交记录内容为: add file02 on dev
git add .
git commit -m 'add file02 on dev'
# [dev01] 以精简的方式显示提交记录
git-log
########################### 切换到 master 分支,将 dev01 合并到 master 分支
# [dev01] 切换到 master 分支
git checkout master
# [master] 合并 dev01 master 分支
git merge dev01
# [master] 以精简的方式显示提交记录
git-log
# [master] 查看文件变化 ( 目录下也出现了 file02.txt)
########################## 删除 dev01 分支
# [master] 删除 dev01 分支
git branch -d dev01
# [master] 以精简的方式显示提交记录
git-log

4.Git远程仓库

4.1 常用的托管服务[远程仓库]

gitHub ( 地址: https://github.com/ )是一个面向开源及私有软件项目的托管平台, 因为只支持
Git 作为唯一的版本库格式进行托管,故名gitHub。
码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由 于服务器在国内,所以相比于
GitHub,码云速度会更快。
GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用 Git
为代码管理工具,并在此基础上搭建起来的 web 服务 , 一般用于在企业、学校等内部网络搭建git私服。

4.2 创建远程仓库

仓库创建完成后可以看到仓库地址,如下图所示 :

4.4 配置SSH公钥

目的:为了校验身份,校验成功才能去操作对应的远程仓库。
生成 SSH 公钥:
  • ssh-keygen -t rsa

  • 不断回车
注意事项:如果公钥已经存在,则自动覆盖。
Gitee 设置账户共公钥:
获取公钥
cat ~/.ssh/id_rsa.pub

验证是否配置成功:
ssh -T git@gitee.com

实现:

验证成功:

4.5 操作远程仓库

4.5.1 添加远程仓库

此操作是先初始化本地库,然后与已创建的远程库进行对接
命令:
git remote add <远端名称> <仓库路径>

远端名称,默认是origin,取决于远端服务器设置。

仓库路径,从远端服务器获取此 URL:
例如:
git remote add origin git@gitee.com:czbk_zhang_meng/git_test.git

4.5.2 查看远程仓库

查询远程仓库:
命令:
git remote

4.5.3 推送到远程仓库

命令:
git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]
  • -f 表示强制覆盖
  • --set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
    • 如果当前分支已经和远端分支关联,下次push则可以省略分支名和远端名。
    • git push 将master分支推送到已关联的远端分支。        
注意事项:如果没有配置--set-upstream关联关系,每次push都要指定远程名称和远程分支名。
如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master

4.5.4 本地分支与远程分支的关联关系

查看关联关系:
命令:
git branch -vv 

4.5.5 从远程仓库克隆

如果已经有一个远端仓库,我们可以直接clone到本地。
命令:
git clone <仓库路径> [本地目录]

注意事项:

本地目录可以省略,会自动生成一个目录。目录名称默认为SSH路径的最后一个文件名。

可以自己指定本地目录。

4.5.6 从远程仓库中抓取和拉取

远程分支和本地的分支一样,我们可以进行 merge 操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
命令:
git fetch [remote name] [branch name]

抓取指令就是将仓库里的更新都抓取到本地,不会进行合并:

  • 如果不指定远端名称和分支名,则抓取所有分支。
  • 抓取 命令:
    • ​​​​​​​git fetch [remote name] [branch name]

注意事项:抓取不会进行分支合并。如何想要获取到远程更新的文件,就得进行merge合并。
因此推荐使用 pull。
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于 fetch+merge:
  • 如果不指定远端名称和分支名,则抓取所有并更新当前分支。
  • 拉取 命令:
    • git pull [remote name] [branch name]

4.5.7 解决合并冲突

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A 用户在本地修改代码后优先推送到远程仓库,此时 B 用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B 用户晚于 A 用户, 故需要先拉取远程仓库的提交,经过合并后才能推送到远端分 支, 如下图所示。

B 用户拉取代码时,因为 A B 用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。
解决方案:
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同。

4.5.8 远程仓库练习

##########################1- 将本地仓库推送到远程仓库
# 完成 4.1 4.2 4.3 4.4 的操作
# [git_test01] 添加远程仓库
git remote add origin git @gitee.com/**/**.git
# [git_test01] master 分支推送到远程仓库 , 并与远程仓库的 master 分支绑定关联关系
git push --set-upstream origin master
###########################2- 将远程仓库克隆到本地
# 将远程仓库克隆到本地 git_test02 目录下
git clone git @gitee.com/**/**.git git_test02
# [git_test02] 以精简的方式显示提交记录
git-log
###########################3- 将本地修改推送到远程仓库
# [git_test01] 创建文件 file03.txt
# [git_test01] 将修改加入暂存区并提交到仓库 , 提交记录内容为: add file03
git add .
git commit -m 'add file03'
# [git_test01] master 分支的修改推送到远程仓库
git push origin master
###########################4- 将远程仓库的修改更新到本地
# [git_test02] 将远程仓库修改再拉取到本地
git pull
# 以精简的方式显示提交记录
git-log
# 查看文件变化 ( 目录下也出现了 file03.txt)

5.IDEA操作git

5.1 Idea中配置Git

安装好 IntelliJ IDEA 后,如果 Git 安装在默认路径下,那么 idea 会自动找到 git 的位置,如果更改了 Git 的安装位置则需要手动配置下Git 的路径。选择 File Settings 打开设置窗口,找到 Version Control 下的 git 选项:

5.2 Idea中操作Git

使用场景:本地已经有一个项目,但是并不是git项目,我们需要将这个放到码云的仓库里,和其他开发人员 继续一起协作开发。

5.2.1 创建项目远程仓库

5.2.2 初始化本地仓库

5.2.3 设置远程仓库

5.2.4 提交到本地仓库

5.2.5 推送到远程仓库

5.2.6 克隆远程仓库到本地

5.2.7 创建分支

最常规的方式

5.2.8 切换分支及其他分支相关操作

5.2.10 解决冲突

1. 执行 merge pull 操作时,可能发生冲突

2. 冲突解决后加入暂存区
3. 提交到本地仓库
4. 推送到远程仓库

5.3 IDEA常用GIT操作入口

1. 第一张图上的快捷入口可以基本满足开发的需求。

2. 第二张图是更多在 IDEA 操作 git 的入口。

5.4 场景分析

基于我们后面的实战模式,我们做一个综合练习
当前的开发环境如下,我们每个人都对这个项目已经开发一段时间,接下来我们要切换成团队开发模式。
也就是我们由一个团队来完成这个项目实战的内容。团队有组长和若干组员组成(组长就是开发中的项目经理)。
所有操作都在 idea 中完成。
练习场景如下:
1 、由组长,基于本项目创建本地仓库;创建远程仓库,推送项目到远程仓库。

2 、每一位组员从远程仓库克隆项目到 idea , 这样每位同学在自己电脑上就有了一个工作副本,可以正式的开始开发了。我们模拟两个组员( 组员 A 、组员 B) ,克隆两个工作区。
3 、组员 A 修改工作区 , 提交到本地仓库,再推送到远程仓库。组员 B 可以直接从远程仓库获取最新的代码。
4 、组员 A 和组员 B 修改了同一个文件的同一行,提交到本地没有问题,但是推送到远程仓库时,后一个推送操作就会失败。
解决方法:需要先获取远程仓库的代码到本地仓库,编辑冲突,提交并推送代码。

相关文章:

Git分布式版本控制工具 Git基本概念、Git工作流程、Git常用命令、Git远程仓库、IDEA操作Git

目录 ​​​​​​ 1.Git基本概念 1.1 概述 1.1.1 开发中的实际场景 1.1.2 版本控制器的方式 1.1.2.1 集中式版本控制工具(SVN) 1.1.2.2 分布式版本控制工具(Git) 2.概述git工作流程 3.Git常用命令 3.1 Git环境配置 3.1.1 下载与安装 3.1.2 基本配置 3.1.3 为常用指令配置别名&…...

Spring 容器管理 Bean

Bean是什么 Bean 是指 Java 中的可重用软件组件,容器会根据提供的元数据来创建和管理这些 Bean,也包括它们之间的依赖关系。Spring 容器对 Bean 并没有太多的要求,无须实现特定接口或依赖特定库,只要是最普通的 Java 对象即可,这类对象也被称为 POJO(Plain Old Java Obj…...

Spring 容器 详解

Spring 容器详解 Spring 容器 是 Spring 框架的核心组件之一&#xff0c;它负责创建和管理应用程序中的 Bean&#xff08;对象&#xff09;以及处理它们之间的依赖关系。容器通过控制反转&#xff08;IoC&#xff09;和依赖注入&#xff08;DI&#xff09;实现对象的生命周期管…...

ubuntu环境下安装electron环境,并快速打包

1.配置镜像源 关闭防火墙&#xff0c;命令&#xff1a;sudo ufw disable 1.1配置国内镜像源&#xff1a; vim /etc/apt/source.list deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ jammy main…...

Yeeco成长型一体化数智赋能平台:科技矩阵重塑企业数字生态

随着科技的飞速发展&#xff0c;我们正在步入一个被称为“数智化时代”的新时代。在这个时代中&#xff0c;数据处理和分析的能力被提升到一个前所未有的高度&#xff0c;而这种变化背后的重要推动力量就是各种新兴的技术趋势。 为了在激烈的市场竞争中脱颖而出&#xff0c;Yee…...

DP、CP、Mn是什么?有什么关系?双径节齿轮又是什么?

有一些刚刚接触齿轮的小伙伴们&#xff0c;经常听到和齿轮相关的是Mn这个代号&#xff0c;有时候拿到图纸会碰到DP和CP的图纸&#xff0c;今天就简单数一数他们三个的关系&#xff1a; 径节DP 齿轮的节距定义为两个相邻齿轮齿上两个相同点之间的距离。在理想情况下&#xff0c…...

Python 中的生成器是什么?

生成器&#xff08;Generator&#xff09;是Python中一种特殊的迭代器&#xff0c;它允许你逐步生成一系列值&#xff0c;而不是一次性创建整个列表或集合。 这在处理大型数据集或流式数据时特别有用&#xff0c;因为你可以逐个处理元素&#xff0c;而不需要将所有元素加载到内…...

如何参加华为欧拉考试?

华为欧拉考试主要针对的是华为欧拉&#xff08;EulerOS/openEuler&#xff09;操作系统的认证考试&#xff0c;这一认证体系旨在培养和认证具备基于欧拉操作系统进行企业级应用运行基础环境搭建、管理和调测能力的工程师以及云计算架构师。以下是对华为欧拉考试的详细介绍&…...

基于STM32设计的智能家居控制系统(华为云IOT)_275

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…...

2024年第七届传智杯程序设计挑战赛第一场初赛题解

文章目录 2024年第七届传智杯程序设计挑战赛初赛第一场A-吃糖果(B组、C组)B-汤姆和杰瑞(A组、C组)C-游游的重组偶数(A组、B组、C组)D-开心还是难过(B组、C组)E-小欧的平面连线(A组、B组、C组)F-小红的四子棋(A组、B组、C组)G-小红的数组操作(A组、B组)H-游游的不相邻取数(A组) …...

iOS视图控制器的生命周期及各阶段的作用

iOS视图控制器&#xff08;UIViewController&#xff09;的生命周期是指从它被创建到最终被销毁的过程中所经历的一系列阶段。每个阶段都有其特定的作用和执行时机&#xff0c;这些阶段和作用对于开发高效、稳定的iOS应用至关重要。以下是iOS视图控制器的生命周期及其各个阶段的…...

stm32上电不能启动什么原因

STM32上电不能启动可能由多种原因造成,以下是一些常见的原因及解决方法: 一、软件原因 程序错误: 程序可能存在死循环、堆栈溢出、指针指向不允许的内存空间等问题。 解决方法:使用调试工具进行调试,检查程序流程,定位并修复错误。 时钟问题: 时钟切换失败或外部时钟源…...

【后端面试总结】golang channel深入理解

在Go语言中&#xff0c;Channel是一种用于在goroutine之间进行通信和同步的重要机制。它提供了一种安全、类型安全的方式来传递数据&#xff0c;使得并发编程变得更加直观和简单。本文将详细介绍Golang中Channel的基本概念、创建与关闭、发送与接收操作&#xff0c;以及相关的使…...

lobeChat安装

一、安装Node.js version > v18.17.0 二、下载 cd F:\AITOOLS\LobeChat git clone https://github.com/lobehub/lobe-chat.git &#xff08;下载要是失败就手动下&#xff1a;https://codeload.github.com/lobehub/lobe-chat/zip/refs/heads/main&#xff09; npm install …...

OpenCV 简介与安装方法

大家好啊&#xff0c;我是董董灿。 如果你在做计算机视觉相关的工作&#xff0c;肯定少不了使用 OpenCV 库。 在《计算机视觉专栏》的传统计算机视觉部分&#xff0c;我曾经使用 OpenCV 进行了很多图像的处理&#xff0c;比如边缘检测。 刚好最近在整理一份文稿&#xff0c;…...

力扣刷题TOP101:14.BM16 删除有序链表中重复的元素-II

目录&#xff1a; 目的 思路 复杂度 记忆秘诀 python代码 目的 1→1→2→3→3 删除重复后变成2。 思路 这个任务是删除链表里重复的节点包含本身。可以看成是一个抽奖活动的系统升级。某人通过多种方式报名&#xff08;节点不同&#xff09;&#xff0c;后台数据检测到这些…...

Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署

文章目录 前言一、Zookeeper单机部署&#xff08;手动部署&#xff09;1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…...

【Linux】文件

声明&#xff1a;以下内容均学习自《Linux就该这么学》一书 1、文件权限及归属 对目录文件来说&#xff0c;“可读”表示能够读取目录内的文件列表&#xff1b;“可写”表示能够在目录内新增、删除、重命名文件&#xff1b;“可执行”表示能够进入该目录。 文件类型区分 -普通…...

仿真键盘输入遇到Edge环境不识别 回车符如何处理

这个问题我也是最近才遇到&#xff0c;可能现在大家都喜欢用新架构&#xff0c;基于网页来写应用管理软件。 当遇到Edge环境下&#xff0c;文本框不识别回车符如何处理&#xff0c;根据笔者经验可通过配置Edge 基于键盘管理设置来解决这个事情。如图 即在Edge浏览器环境下&…...

Python 列表操作详解

Python 列表操作详解 在 Python 中&#xff0c;列表&#xff08;list&#xff09;是一种用于存储有序集合的数据结构。列表可以包含各种类型的数据&#xff0c;如整数、浮点数、字符串等&#xff0c;甚至可以包含其他列表&#xff08;这称为嵌套列表&#xff09;。 示例列表 …...

Git操作学习2

1.使用git rm删除文件 查看文件夹的内容 ls -lr 删除文件rm 文件名 但是此时只删了工作区的文件&#xff0c;仓库还没有删 可以再使用git add更新提交给仓库 也可以直接通过git rm 删除仓库里面的文件 工作区也删除了 暂存区也删除了 最后记得提交 否则删除的文件在版本库还…...

Spring Event 监听与异步设置:深入解析与应用场景

在开发中&#xff0c;事件驱动编程&#xff08;Event-Driven Programming&#xff09;是一种常见的编程模式&#xff0c;Spring 提供了强大的事件机制&#xff0c;使得我们可以通过 EventListener 或 ApplicationListener 来监听和处理应用中的各种事件。这种机制不仅使得应用架…...

百度木木浆测试

本程序测试识别图片的文字 import cv2 from paddleocr import PaddleOCR, draw_ocr from matplotlib import pyplot as plt # 加载PaddleOCR模型&#xff0c;这里你可以根据需要选择语言和模型路径 ocr PaddleOCR(use_gpuFalse, langch) # 假设我们识别中文字符&#xff0c…...

视频监控集中管理方案设计:Liveweb视频汇聚方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…...

剑指offer(专项突破)---字符串

总目录&#xff1a;剑指offer&#xff08;专项突破&#xff09;---目录-CSDN博客 1.字符串的基本知识 C语言中&#xff1a; 函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中&#xff0c;包括结束符\0&#xff0c;要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…...

Zygote启动流程(AndroidV)

一&#xff1a;背景 众所周知&#xff0c;Android应用及system_server基本都是由zygote fork出来的&#xff0c;那么zygote是如何启动的、又是如何接收fork进程的请求&#xff0c;接下来一步步揭秘。 二&#xff1a;启动流程 init进程是Android系统启动时&#xff0c;启动的第一…...

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智行无忧停车场管理系统(前后端源码 + 数据库 sql 脚本)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 车辆信息管理功能 5.0 停车位管理功能 6.0 入场登记管理功能 7.0 预约管理功能 8.0 收费规则功能 9.0…...

岩体力学的材质-力学等属性的自动划分.

#背景: 在力学求解过程中,我们往往会对目标物体进行网格划分, 那么如何做到自动完成这个过程呢? 这里使用岩体力学中的地下岩层进行举例,这里只是简单的导入了4种界面, 复杂的可以一次性导入几十种界面,都可以计算(你能分多细,这个计算方式就可以帮你分层多细) 这里我只是导…...

注解 实现原理 详解

Java 注解实现原理详解 注解&#xff08;Annotation&#xff09;是 Java 提供的一种元数据机制&#xff0c;用于为代码元素&#xff08;类、方法、字段、参数等&#xff09;添加额外的信息。注解不会直接影响程序逻辑&#xff0c;但可以通过 工具&#xff08;如编译器、运行时…...

第4章 陷入与系统调用

有三种类型的事件会让CPU停止正常执行的指令&#xff0c;强制切换到指定的代码&#xff0c;处理这些事件。一种是系统调用&#xff0c;当用户程序执行ecall指令来让内核为它做一些事。另一种是异常&#xff1a;一个指令&#xff08;用户或内核&#xff09;做了一些非法的事&…...

项目基于oshi库快速搭建一个cpu监控面板

后端&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-…...

力扣C语言刷题记录 (二)移除元素

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&#xff1a; 更改…...

多模态大语言模型的对比

简介 文章主要对比了包括 VideoLLaMA 2 、CogVLM2-video 、MiniCPM-V等模型 目前主流的多模态视觉问答大模型&#xff0c;大部分采用视觉编码器、大语言模型、图像到文本特征的投影模块 目录 简介1. VideoLLaMA 21.1 网络结构1.2 STC connector具体的架构 2. MiniCPM-V 2.62.…...

关于最近od机考中--树

题目 树按照层级遍历获取非叶子结点&#xff0c;然后将非叶子结点以后序遍历打印。 eg 图解 只需要将1&#xff0c;3&#xff0c;4&#xff0c;2进行后序遍历打印&#xff1a;既左-右-中方式打印 最后结果如&#xff1a;2&#xff0c;3&#xff0c;4&#xff0c;1。 思路&a…...

基数排序(代码+注释)

#include <stdio.h> #include <stdlib.h>// 获取数组中的最大值 int GetMax(int* a, int n) {int max a[0];for (int i 1; i < n; i) {if (a[i] > max) {max a[i];}}return max; }// 对数组按照某个位数进行计数排序 void CountingSortForRadix(int* a, i…...

NLP 相关知识的构成

自然语言处理&#xff08;Natural Language Processing, NLP&#xff09; 自然语言处理相关知识 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;什么是自然语言处理&#xff1f;自然语言处理的构成1. 基本术语1.1 分词&#xff08;Segmentation&#x…...

算力100问☞第20问:GPU算力的影响因素有哪些?

影响因素1&#xff1a;核心数量 GPU中的计算核心数量是决定其算力的关键因素之一。更多的计算核心意味着可以同时处理更多的数据和任务&#xff0c;从而提高整体的计算效率。例如&#xff0c;GPU里面的计算核心就好像是工厂里的工人。工人数量越多&#xff0c;同时干活儿的也就…...

C语言柔性数组

在C语言中&#xff0c;结构体定义数组指定长度0&#xff0c;sizeof时候不计入占用&#xff0c;实际分配时候占用为准&#xff01; 也许你从来没有听说过柔性数组的概念&#xff0c;但其确实存在。C99规定&#xff1a;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就…...

TensorFlow与PyTorch对比:哪个更适合初学者?

小贴士: 不必着急,慢慢消化每一部分。有问题就查阅示例,实践是最好的老师!别忘了,选择合适的框架才是王道!💻🔍 本文全面对比了 TensorFlow 与 PyTorch 两大深度学习框架,详细分析了它们的特点、优势及适用场景,帮助初学者做出框架选择。内容包含框架背景、代码示例…...

Windows 11 如何配置node.js

一&#xff0c;官网下载 官网首页 下载最新LTS版本&#xff0c;比较稳定&#xff0c;如果想探索更新的版本去探索新的nodejs功能。 1. 下载完成后&#xff0c;双击运行程序&#xff0c;点击next 2. 勾选接受协议&#xff0c;点击next 3. 选择自己的安装路径&#xff08;默认是…...

std::reverse_iterator

std::reverse_iterator 是 C 标准库中的一个迭代器适配器&#xff08;iterator adapter&#xff09;&#xff0c;它允许你以反向顺序遍历容器或序列。这个适配器通过封装一个基础迭代器&#xff08;通常是正向迭代器&#xff09;并提供反向的递增&#xff08;&#xff09;和递减…...

On-Chip-Network之router微架构的物理实现

Low-Power Microarchitecture 自20世纪90年代以来&#xff0c;功耗一直是嵌入式芯片和高性能芯片面临的一个挑战。自2000年代中期以来&#xff0c;它已经成为大多数设计的主要约束。多核解决了功耗问题&#xff0c;由此产生的communication substrate&#xff0c;namely the on…...

学习threejs,使用canvas更新纹理

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Texture 贴图 二、&#x1…...

CSS 选择器的优先级

一、基本概念 CSS 选择器的优先级决定了在样式冲突时&#xff0c;哪个样式规则将被应用到 HTML 元素上。通过理解 CSS 选择器的优先级&#xff0c;可以更好地控制网页元素的样式&#xff0c;避免样式冲突。 二、优先级计算规则 1. 内联样式 内联样式具有最高的优先级。 &l…...

如何将python项目导出为docker镜像

如何将python项目导出为docker镜像 前提条件步骤 1: 创建并准备 Python 项目步骤 2: 创建 `setup.py`步骤 3: 打包项目步骤 4: 创建 Dockerfile步骤 5: 构建 Docker 镜像步骤 6: 运行 Docker 容器步骤 7: 保存修改并继续开发总结要将修改后的Python代码导出为 .tar.gz 格式,并…...

微信 创建小程序码-有数量限制

获取小程序码&#xff1a;小程序码为圆图&#xff0c;有数量限制。 目录 文档 接口地址 功能描述 注意事项 请求参数 对接 获取小程序码 调用获取 小程序码示例 总结 文档 接口地址 https://api.weixin.qq.com/wxa/getwxacode?access_tokenaccess_token 功能描述 …...

桶排序(代码+注释)

#include <stdio.h> #include <stdlib.h>// 定义桶的结构 typedef struct Bucket {int* data; // 动态数组int count; // 当前存储的元素个数int capacity; // 桶的容量 } Bucket;// 初始化桶 void InitBucket(Bucket* bucket) {bucket->capacity 10; // 初…...

Python从入门到入狱

Python是从入门到入狱&#xff1f;这个充满调侃意味的说法在程序员圈子里流传甚广。表面看&#xff0c;它似乎是在嘲笑这门语言从简单易学到深陷麻烦的巨大反差&#xff0c;实际上却隐藏着很多值得深思的问题。要解读这个话题&#xff0c;得从Python的特点、使用场景以及潜在风…...

图像模糊处理

图像模糊处理 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定n行m列的图像各像素点的灰度值&#xff0c;要求用如下方法对其进行模糊化处理&#xff1a; 1 四周最外侧的像素点灰度值不变&#xff1b…...

全面UI组件库Telerik 2024 Q4全新发布——官方宣布支持.NET 9

Telerik DevCraft包含一个完整的产品栈来构建您下一个Web、移动和桌面应用程序。它使用HTML和每个.NET平台的UI库&#xff0c;加快开发速度。Telerik DevCraft提供最完整的工具箱&#xff0c;用于构建现代和面向未来的业务应用程序&#xff0c;目前提供UI for ASP.NET MVC、Ken…...