66、使用Git进行版本控制

使用Git进行版本控制

1. 理解版本控制

在软件开发过程中,版本控制至关重要。假设两位软件开发者Natasha和Bruce正在全力投入一个名为StoneTracker的新项目。由于不断的修改和修订,项目被拆分成多个程序文件,文件名变得复杂,如UI - 3.2.A - 73.py。他们需要不断沟通正在处理的文件,避免意外覆盖,还创建了多个目录树来存储项目文件的各种修订。这种情况导致项目进展受阻,他们急需版本控制。

版本控制(也称为源代码控制或修订控制)是一种组织各种项目文件并保护其修改的方法或系统。它不仅可以控制程序文件,还能处理纯文本文件、可执行文件、图形、文字处理文档、压缩文件等。

版本控制系统(VCS)提供了一个公共的中央位置来存储和合并项目文件,让你可以访问项目的最新版本。它能防止文件被其他开发者覆盖,消除关于谁正在修改文件的额外沟通。此外,当新开发者加入项目时,如Tony,他可以通过版本控制系统复制最新的StoneTracker项目文件并开始工作。

分布式版本控制系统让项目开发更加轻松。开发者可以离线工作,无需担心网络连接问题。开发工作在本地系统上进行,直到将修改后的文件和VCS元数据副本发送到远程中央系统,此时才需要网络连接。这样还能将工作备份到中央位置。

2005年,Linus Torvalds为Linux项目创建了一个新的版本控制系统——Git。他希望有一个分布式的VCS,能够快速合并文件并提供Linux开发者所需的其他功能。Git是一个流行的高性能分布式VCS,常用于敏捷和持续软件开发环境。

1.1 Git环境的基本概念

要理解Git的基本原理,需要了解其配置中的几个术语:
|术语|描述|
| ---- | ---- |
|工作目录|所有程序文件在此创建、修改和审查,通常是开发者主目录树中的子目录,开发者的计算机系统可以是本地服务器或笔记本电脑|
|暂存区|也称为索引,与工作目录位于同一系统。工作目录中的程序文件通过Git命令(git add)注册到暂存区,使用名为.git的隐藏子目录,通过git init命令创建|
|本地仓库|包含每个项目文件的历史记录,也使用.git子目录。项目树和提交信息通过Git命令(git commit)作为对象存储在.git/objects/目录中,这些数据称为快照,每次提交都会创建一个新的快照,你可以查看旧快照并在需要时恢复到以前的版本|
|远程仓库|通常是基于云的位置,也可以是本地网络上的另一台服务器。知名的远程仓库包括GitHub、GitLab、BitBucket和Launchpad,其中GitHub最受欢迎|

1.2 使用Git作为VCS的好处

  • 性能 :除了向远程仓库发送/检索文件外,Git仅使用本地文件进行操作,使用起来更快。
  • 历史记录 :Git在文件注册到索引时捕获文件的所有内容。当提交到本地仓库完成时,Git会创建并存储该时间点的快照引用。
  • 准确性 :Git使用校验和来保护文件完整性。
  • 去中心化 :开发者可以在同一个项目上工作,但不必在同一网络或系统上。

1.3 Git环境的设置步骤

Git工具通常不会默认安装,因此在设置Git环境之前,需要安装git包。安装完成后,为新项目设置Git环境有四个基本步骤:
1. 创建工作目录 :在本地主文件夹中创建一个子目录即可。例如:

$ mkdir MWGuard
$ cd MWGuard
$ pwd
/home/Christine/MWGuard
  1. 初始化.git/目录 :使用git init命令。示例如下:
$ git init
Initialized empty Git repository in /home/Christine/MWGuard/.git/
$ ls -ld .git
drwxrwxr-x. 7 Christine Christine 119 Feb  6 15:07 .git
  1. 设置本地仓库选项 :如果是首次在系统上创建.git/子目录,需要修改全局Git仓库的配置文件,包含用户名和电子邮件地址,以便跟踪文件更改。使用git config命令:
$ git config --global user.name "Christine Bresnahan"
$ git config --global user.email "cbresn377@ivytech.edu"
$ git config --get user.name
Christine Bresnahan
$ git config --get user.email
cbresn377@ivytech.edu

可以使用git config –list命令查看所有配置:

$ git config --list
user.name=Christine Bresnahan
user.email=cbresn377@ivytech.edu
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
  1. 建立远程仓库 :以基于云的远程仓库GitHub为例,你可以在github.com/join设置一个免费的远程仓库。建立后,需要记录它提供的URL,用于将项目文件发送到远程仓库。

2. 使用Git进行提交

当Git环境设置好后,就可以开始使用版本控制了,主要有四个步骤:
1. 创建或修改程序文件
2. 将文件添加到暂存区(索引)
3. 将文件提交到本地仓库
4. 将文件推送到远程仓库

根据团队的工作流程,可能需要在进入下一步之前重复某些步骤。例如,程序员在一天内完成文件后将其添加到暂存区,在一天结束时将项目提交到本地仓库,然后将项目工作推送到远程仓库,供非本地团队成员访问。

2.1 创建示例文件

创建一个简单的shell脚本MyScript.sh作为Git VCS的示例:

$ cat MyScript.sh
#!/bin/bash
#
echo "Hello World"
#
exit

2.2 添加文件到暂存区

使用git add命令将文件添加到暂存区:

$ pwd
/home/Christine/MWGuard
$ git add MyScript.sh
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   MyScript.sh
#

git add命令执行时不会提供任何响应,可使用git status命令查看是否添加成功。你也可以使用git add .命令将当前工作目录中的所有文件同时添加到暂存区的索引。如果工作目录中有不想添加到暂存区索引的文件,可以在工作目录中创建一个.gitignore文件,添加不想包含在索引中的文件和目录名称,git add .命令将忽略这些文件。

2.3 查看暂存区索引文件

使用file命令查看暂存区索引文件的类型:

$ file .git/index
.git/index: Git index, version 2, 1 entries

2.4 提交项目到本地仓库

使用git commit命令将项目提交到本地仓库,-m选项用于添加注释行到COMMIT_EDITMSG文件,帮助跟踪更改:

$ git commit -m "Initial Commit"
[master (root-commit) 6d2370d] Initial Commit
 1 file changed, 5 insertions(+)
 create mode 100644 MyScript.sh
$ cat .git/COMMIT_EDITMSG
Initial Commit
$ git status
# On branch master
nothing to commit, working directory clean

如果不添加 -m 选项及其参数,会进入vim编辑器手动编辑.git/COMMIT_EDITMSG文件。

2.5 创建并提交README.md文件

对于新项目,建立远程仓库账户后,创建一个Markdown文件README.md,其内容会显示在远程仓库的网页上,描述仓库信息:

$ pwd
/home/Christine/MWGuard
$ ls
MyScript.sh
$ echo "# Milky Way Guardian" > README.md
$ echo "## Programming Project" >> README.md
$ cat README.md
# Milky Way Guardian
## Programming Project
$ git add README.md
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   README.md
#
$ git commit -m "README.md commit"
[master 4541578] README.md commit
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

2.6 查看Git日志

在将项目推送到远程仓库之前,查看Git日志是个好习惯:

$ git log
commit 45415785c17c213bac9c47ce815b91b6a9ac9f86
Author: Christine Bresnahan <cbresn377@ivytech.edu>
Date:   Fri Feb 11 13:49:49 2022 -0500

    README.md commit

commit 6d2370d2907345671123aeaaa71e147bd3f08f36
Author: Christine Bresnahan <cbresn377@ivytech.edu>
Date:   Wed Feb 9 15:23:11 2022 -0500

    Initial Commit

2.7 配置远程仓库地址

使用git remote add origin URL命令配置远程仓库地址:

$ git remote add origin https://github.com/C-Bresnahan/MWGuard.git
$ git remote -v
origin  https://github.com/C-Bresnahan/MWGuard.git (fetch)
origin  https://github.com/C-Bresnahan/MWGuard.git (push)

可以使用git remote -v命令检查远程地址的状态。如果URL输入错误,可以使用git remote rm origin命令删除远程仓库地址,然后使用正确的URL重新设置。

2.8 推送项目到远程仓库

使用git push命令将项目推送到远程仓库:

$ git push -u origin master
Username for 'https://github.com': C-Bresnahan
Password for 'https://C-Bresnahan@github.com':
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 561 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To https://github.com/C-Bresnahan/MWGuard.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

通常远程仓库需要用户名和密码,除非你设置了使用SSH密钥。推送成功后,你可以查看项目。如果是私有仓库,需要登录远程仓库才能查看工作成果。

2.9 从远程仓库拉取文件

项目团队成员可以使用git pull命令从远程仓库拉取最新的项目文件:

$ whoami
Rich
$ git remote add origin https://github.com/C-Bresnahan/MWGuard.git
$ git pull -u origin master

如果拉取项目文件的人在本地仓库中有未上传到远程仓库的特定文件的修改版本,git pull命令将失败,但错误消息会指导如何解决这个问题。

2.10 克隆项目

新的开发团队成员可以使用git clone命令从远程仓库将整个项目(包括.git/文件)复制到本地系统:

$ whoami
Samantha
$ ls
$ git clone https://github.com/C-Bresnahan/MWGuard.git
Cloning into 'MWGuard'...
[...]
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.
$ ls
MWGuard
$ cd MWGuard
$ ls -a
.  ..  .git  MyScript.sh  README.md
$ git log
commit 45415785c17c213bac9c47ce815b91b6a9ac9f86
Author: Christine Bresnahan <cbresn377@ivytech.edu>
Date:   Fri Feb 11 13:49:49 2022 -0500

    README.md commit

commit 6d2370d2907345671123aeaaa71e147bd3f08f36
Author: Christine Bresnahan <cbresn377@ivytech.edu>
Date:   Wed Feb 9 15:23:11 2022 -0500

    Initial Commit

综上所述,Git是一个强大的版本控制系统,通过合理使用其功能,可以高效地管理项目的版本和协作开发。

3. Git 分支管理

3.1 分支的概念

在 Git 中,分支是一个非常重要的概念。分支允许开发者在不影响主项目的情况下,独立地进行新功能开发、错误修复等工作。每个分支都可以看作是项目的一个独立副本,开发者可以在不同的分支上进行并行开发,最后再将这些分支合并到主分支上。

3.2 创建和切换分支

创建新分支可以使用 git branch 命令,切换分支使用 git checkout 命令。例如,创建一个名为 feature 的新分支并切换到该分支:

$ git branch feature
$ git checkout feature
Switched to branch 'feature'

也可以使用 git checkout -b 命令同时创建并切换到新分支:

$ git checkout -b feature
Switched to a new branch 'feature'

3.3 查看分支

使用 git branch 命令可以查看当前仓库中的所有分支:

$ git branch
  master
* feature

星号 * 表示当前所在的分支。

3.4 合并分支

当在分支上的工作完成后,需要将其合并到主分支(通常是 master )上。首先切换回主分支,然后使用 git merge 命令进行合并:

$ git checkout master
Switched to branch 'master'
$ git merge feature
Updating 6d2370d..4541578
Fast-forward
 README.md | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

上述示例中, Fast-forward 表示这是一次快进合并,即主分支直接移动到了 feature 分支的位置。

3.5 删除分支

合并完成后,如果不再需要该分支,可以使用 git branch -d 命令删除分支:

$ git branch -d feature
Deleted branch feature (was 4541578).

3.6 分支管理流程

下面是一个简单的分支管理流程图:

graph LR
    A[master 分支] --> B[创建 feature 分支]
    B --> C[在 feature 分支开发]
    C --> D[完成开发]
    D --> E[切换到 master 分支]
    E --> F[合并 feature 分支到 master]
    F --> G[删除 feature 分支]

4. 解决冲突

4.1 冲突的产生

当不同的开发者在不同的分支上对同一文件的同一部分进行了修改,然后尝试合并这些分支时,就会产生冲突。Git 无法自动决定使用哪个修改,因此需要开发者手动解决冲突。

4.2 冲突的表现

当执行 git merge 或 git pull 命令时,如果出现冲突,会在终端输出类似如下的信息:

Auto-merging MyScript.sh
CONFLICT (content): Merge conflict in MyScript.sh
Automatic merge failed; fix conflicts and then commit the result.

同时,冲突的文件中会包含特殊的标记,用于指示冲突的位置:

<<<<<<< HEAD
# 主分支上的内容
=======
# 要合并的分支上的内容
>>>>>>> feature

4.3 解决冲突的步骤

  1. 编辑冲突文件 :打开冲突的文件,手动删除特殊标记,并选择要保留的内容。可以结合两边的修改,或者只保留某一边的内容。
  2. 标记冲突已解决 :使用 git add 命令将解决冲突后的文件添加到暂存区:
$ git add MyScript.sh
  1. 提交合并结果 :使用 git commit 命令提交合并结果:
$ git commit -m "Resolve conflict in MyScript.sh"

4.4 冲突解决示例

假设 MyScript.sh 文件在 master 分支和 feature 分支上都有修改,合并时产生冲突。以下是解决冲突的具体步骤:

$ git merge feature
Auto-merging MyScript.sh
CONFLICT (content): Merge conflict in MyScript.sh
Automatic merge failed; fix conflicts and then commit the result.
$ vim MyScript.sh  # 编辑冲突文件,手动解决冲突
$ git add MyScript.sh
$ git commit -m "Resolve conflict in MyScript.sh"

5. Git 标签

5.1 标签的作用

Git 标签用于标记代码仓库中的特定版本,通常用于发布版本。标签可以看作是对某个提交的一个友好的别名,方便开发者快速定位到特定的版本。

5.2 创建标签

创建轻量级标签可以使用 git tag 命令,后面跟上标签名:

$ git tag v1.0

创建带有注释的附注标签可以使用 -a 选项:

$ git tag -a v1.0 -m "Release version 1.0"

5.3 查看标签

使用 git tag 命令可以查看当前仓库中的所有标签:

$ git tag
v1.0

5.4 推送标签到远程仓库

默认情况下, git push 命令不会推送标签到远程仓库。需要使用 git push origin <tagname> 命令推送单个标签,或者使用 git push origin --tags 命令推送所有标签:

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/C-Bresnahan/MWGuard.git
 * [new tag]         v1.0 -> v1.0

5.5 删除标签

删除本地标签使用 git tag -d 命令:

$ git tag -d v1.0
Deleted tag 'v1.0' (was 6d2370d)

删除远程标签使用 git push origin :refs/tags/<tagname> 命令:

$ git push origin :refs/tags/v1.0
To https://github.com/C-Bresnahan/MWGuard.git
 - [deleted]         v1.0

5.6 标签管理总结

操作 命令
创建轻量级标签 git tag <tagname>
创建附注标签 git tag -a <tagname> -m "注释"
查看标签 git tag
推送单个标签到远程 git push origin <tagname>
推送所有标签到远程 git push origin --tags
删除本地标签 git tag -d <tagname>
删除远程标签 git push origin :refs/tags/<tagname>

通过以上对 Git 分支管理、冲突解决和标签管理的介绍,你可以更加高效地使用 Git 进行版本控制和团队协作开发。合理运用这些功能,可以提高项目的开发效率和代码质量。

相关推荐

git push成功提交后如何撤销或回退版本

文章目录1、commits版本号2、如何回退? 1、commits版本号 commits: 版本号,在git中扮演了一个重要角色,即平常用的一些操作如git clone ,git checkout,git commit,git reset, git pull 都会产生commits,但是git reset并不会产生commits 使用如下命令可查看自己项目中的commits,如下图: git reflog HEAD@{} 前面那一串黄色数字就是 commits 2、如何回退? 注意:git reset可

Silence-Lee的博客 1万+

Git使用教程

SSH 为 Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

wuletaotao的专栏 869

手把手教你git开源分布式版本控制系统,并同步到远程仓库Gitee

看完学不会来找我0.o

couture111的博客 416

哔哩哔哩千峰教育Git教程笔记(安装、分支、协作、冲突、GitHub、gitee、vscode集成git)

哔哩哔哩千峰教育Git教程笔记

weixin_59820248的博客 766

Git技术学习使用分享【1.3】

之前你已经看到过 -2 选项了,它只会显示最近的两条提交, 实际上,你可以使用类似 -<n> 的选项,其中的 n 可以是任何整数,表示仅显示最近的 n 条提交。它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了, 还有当你执行 git pull 时哪些本地分支可以与它跟踪的远程分支自动合并。最后一个很实用的 git log 选项是路径(path), 如果只关心某些文件或者目录的历史提交,可以在 git log选项的最后指定它们的路径。它会列出你指定的每一个远程服务器的简写。

qq_43416206的博客 1161

git基础教程

你应该按照流程,新建一个分支,推送(push)这个分支并申请pull request,但是你忘记并直接提交给了main,现在你卡住并且无法推送你的更新。解决办法:新建一个分支feature,推送到远程服务器,然后reset你的main分支和远程服务器保持一致,否则下次你pull并且他人的提交和你冲突的时候就会有问题。将本地仓库中的远程分支更新成远程仓库相应分支最新的状态,即从远程仓库下载本地仓 库中缺失的提交记录,并更新远程分支指针;将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录。

leolin的博客 1174

git某些命令的使用(个人笔记)

1. git rebase 和 git merge的使用 git rebase建议用于分支合并主分支,而git merge不但可以用于前者还可用于主分支合并分支。 先说git rebase: 假如当前主分支是master,其它分支是dev。 git rebase时可能进行多次冲突的解决,这取决于当前分支有多少次commit,以及解决一次冲突后跟后面的commit是否会再次冲突,举例如下: a. 在master分支和dev分支有文件t...

woshiyuanlei的专栏 1931

CTFHub信息泄露 git泄露篇

进入到/root/GitHack-master/dist/challenge-e713a8245931ce60.sandbox.ctfhub.com_10800文件下,使用命令ls -a发现.git,使用git log查看git历史记录,发现当前所处的版本为 remove flag,flag 在 add flag 这次提交中。使用git log查看git历史记录,发现当前所处的版本为 remove flag,flag 在 add flag 这次提交中,使用git diff查看日志对比,并没有得到flag。

2301_79697181的博客 2313

gitlab git ssh 配置多个帐户-不同git仓库使用不用的ssh key

gitlab git ssh 配置多个帐户-不同git仓库使用不用的ssh key 生成 ssh - key manager@mobile:~/.ssh$ ssh-keygen -t rsa -C "yangxx@gmail.com" Generating public/private rsa key pair. Enter file in which to save the key (/h...

满地星辰的博客 5086

git blame查看文件的每一行代码是谁修改的

git blame查看文件的每一行代码是谁修改的 git blame help查看git blame都有哪些使用方法。 $ git help blame GIT-BLAME(1) Git Manual ...

JackDan9 2960

Git的理解-数据模型

自从git诞生于2005年以来,它就已经在开源环境中大受欢迎,并且我们在工作的时候经常使用它。它是一个很棒的VCS工具,有许多优点,但学习它并不容易。我认为,在我们习惯使用git过程中喜欢它最好的方式就是通过了解它的内部工作方式。就像Edward Thomson所说的一句话: Git命令只是对数据存储的泄漏抽象 这就我们平常无论记住多少git命令或技巧,但如果不了解git的工作原理,就会时常刚到对git的奇怪方式的困惑。 所以,在对git的理解中,本文将要讲述的第一件事情就是git的核心和灵魂–数据模

azjhong的博客 660

Git-智能协议

这个HTTP方法是很简单但效率不是很高。使用智能协议是传送数据的更常用的方法。这些协议在远端都有Git智能型进程在服务 - 它可以读出本地数据并计算出客户端所需要的,并生成合适的数据给它,这有两类传输数据的进程:一对用于上传数据和一对用于下载。 上传数据 为了上传数据至远端, Git 使用send-pack和receive-pack进程。这个send-pack进程运行在客户端上,它连接至远端运行的receive-pack进程。 举例来说,你在你的项目上运行了git push orig...

轨道 473

Git 基础 - 查看提交历史

Git2.3 Git 基础 - 查看提交历史查看提交历史在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。完成这个任务最简单而又有效的工具是 git log 命令。我们使用一个非常简单的 “simplegit” 项目作为示例。运行下面的命令获取该项目:当你在此项目中运行 git log 命令时,可以看到下面的输出:$ git log不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。

m0_37843156的博客 983

[TED] 用git下载kernel源码

最近突然对git挺有兴趣, 过去一直都是用wget上站点下载源码包如今发现真是老土了。虽然用起来不如cvs或者svn用起来顺手,不过作为跟踪提交代码的官方指定工具还是有过人之处的。 那么我们就开始吧: 首先当然是下载git,git的版本很多我们就下载基本款 apt-get install git 通过网页找到一个linux的主站https://kernel.org/,当前最新的k

lalune的专栏 807

Git版本控制:如何正确使用标签

本文介绍了在Bitbake环境中正确使用Git标签的方法。针对常见的标签与SRCREV冲突的错误,指出标签是浮动引用,建议使用固定SHA值确保确定性。解决方案提供两种配置方式:仅使用标签(SRC_URI中指定tag)或只使用SHA值(通过SRCREV指定)。通过实例说明如何获取标签对应的SHA值,并强调合理配置确保构建过程的稳定性和可重复性。

m0_62153576的博客 52

018-0701-Git及相关操作

018-0701-Git及相关操作

44

Git:使用cherry-pick合并开发分支的代码到主分支

如果在cherry-pick时发生了代码冲突(毕竟一般项目是由多人进行开发,所以难以保证master分支和开发分支的代码始终一致)。注2:发生冲突后也可以通过cherry-pick --quit退出合并,但代码不会自动恢复到cherry-pick之前的状态。注1:发生冲突后可以通过 cherry-pick --abort放弃合并,程序将回到cherry-pick之前的状态。已经将开发分支上的提交进行了合并,那么如何将开发分支上的提交合并到master分支中呢?通过git status查看冲突的文件。

风静如云的博客 1860

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本资源是一套面向电力电子与智能控制领域的综合性科研仿真资料合集,核心聚焦于LLC谐振变换器的恒压恒流双竞争闭环控制策略设计与Simulink建模仿真实现,涵盖半桥LLC、双向全桥LLC等拓扑结构的调频闭环仿真,并提供详尽的说明文档与PPT辅助材料。资源体系不仅深入呈现LLC变换器的动态响应与控制逻辑,还扩展至双有源桥(DAB)变换器的软开关协同优化、最小应力控制、EPS调制策略及新扩展移相角优化等前沿技术,同时集成三相PWM整流器在电网不平衡条件下的功率平衡控制、VOC+SVPWM双闭环控制等典型应用场景。此外,资源包涵盖状态估计(如EKF、UKF、PF)、微电网经济调度、卡尔曼滤波融合、神经网络控制、PID优化、储能系统管理等多个交叉方向,特别强调对顶级EI期刊研究成果的高精度复现,旨在帮助科研人员快速掌握先进控制算法的核心思想与仿真实现方法。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等相关专业的硕士博士研究生、高校科研人员,以及从事新能源变换器、智能电网、电动汽车、微电网系统研发的工程技术人员。; 使用场景及目标:① 深入理解LLC与DAB变换器的闭环控制机理,掌握恒压恒流切换、软开关实现与损耗优化方法;② 利用Simulink平台构建复杂电力电子系统模型,开展动态性能分析与控制器参数整定;③ 复现高水平期刊论文中的先进控制策略,提升科研创新能力与论文发表竞争力;④ 支持毕业设计、科研课题、项目申报及工程原型开发中的仿真验证环节。; 阅读建议:建议结合提供的完整资源目录循序渐进学习,优先研读标注“顶级EI复现”的案例以获取权威方法参考,配合MATLAB/Simulink动手搭建模型,重点关注控制框图设计、调制逻辑实现与仿真结果对比,深入理解算法背后的物理意义与数学推导过程。

SAP FICO 银企直联实战:从配置到异常处理的全流程解析

本文详细解析了SAP FICO银企直联的实战配置与异常处理全流程,涵盖银行主数据搭建、支付类配置、银行接口适配等关键步骤。通过实际案例分享,帮助用户掌握实时付款、余额监控和自动对账等核心功能,提升企业财务效率与安全性。特别针对常见问题如凭证重复付款、前置机UUID冲突等提供了实用解决方案。

weixin_29215815的博客 663

cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 将SDK文件中...

凤小鹿的博客 6362

关于旋转矩阵的左乘与右乘问题

最近在阅读框架源码时被旋转矩阵左乘右乘绕的云里雾里,故写下一篇记录一下,以防自己不长记性。

菜鸡正在学习 1万+

Dify沙箱权限配置实战:解决‘operation not permitted‘报错的完整指南

本文详细解析了Dify平台中常见的'operation not permitted'报错根源,即沙箱安全机制对系统调用的限制。通过实战步骤,指导用户定位并修改config.yaml配置文件,精准配置allowed_syscalls白名单以解决权限问题,涵盖从文件操作、进程控制到网络通信等关键系统调用的编号详解与配置示例,帮助用户在保障安全的前提下,顺利运行依赖特定库的代码工作流。

tech5的博客 1202

R语言生存分析

自己整理编写的R语言常用数据分析模型的模板,原文件为Rmd格式,直接复制粘贴过来,作为个人学习笔记保存和分享。部分参考薛毅的《统计建模与R软件》和《R语言实战》生存分析是研究生存时间的分布规律,以及生存时间和相关因素之间关系的一种统计分析方法。生存分析在医学科学研究中具有广泛而重要的应用价值,它对人群寿命的研究,各种慢性疾病的现场追踪研究,临床疗效试验和动物试验等研究中随访资料的处理骑着举足轻重的作

Tiaaaaa的博客 2万+

华为OD机试 - 素数之积 - 数学问题(Java 2025 A卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2133

三维点云转深度图

点云投影过程是将三维点云数据转化为二维图像坐标的关键步骤,它的实现涉及到相机内外参数的计算,包括相机的内部参数(如焦距和主点)和外部参数(如相机位置和方向)。具体来说,可以通过将每个点的三维坐标转换为相机坐标系下的坐标,然后使用相机内部参数和外部参数来计算在二维图像中的坐标。接着计算每个点的深度值,将深度值映射到像素值上,最后创建深度图像并将深度值赋给对应的像素值。这里需要注意的是,在将深度值映射到像素值上时,需要将像素值转换为 uchar 类型,否则在将深度值赋给像素值时会出现类型不匹配的错误。

点云兔子的博客 3171

BLDC&PMSM电机控制器硬件设计工程(三)控制器驱动芯片方案

在汽车电机控制系统中,栅极驱动IC扮演着至关重要的角色。它作为主控MCU与功率开关管(MOSFET/IGBT)之间的桥梁,将微弱的PWM信号放大为足以快速、可靠驱动功率管的强信号。本文将深入解析英飞凌、TI和NXP的车规级栅极驱动方案,重点关注半桥和单侧驱动IC。1)为什么需要栅极驱动器?栅极驱动器是低压控制器和高压电路之间的缓冲电路,用于放大控制器的控制信号,从而实现功率器件更有效的导通和关断。栅极驱动器的作用总结如下:1.将控制器的低压信号转化为更高电压的驱动信号,以实现功率器件稳定导通和关断。

小幽余生不加糖 492

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 10、消息驱动Bean的深入解析
下一篇: 3、5G 移动通信架构与技术解析
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值