【Git原理与使用】-- 远程操作

news2024/9/20 10:40:42

目录​​​​​​​

理解分布式版本控制系统

远程仓库

新建远程仓库

lssue 与 Pull Request模板文件

知识铺垫

lssue 模板文件

Pull Request模板文件

克隆远程仓库

使用 HTTPS 方式

使用 SSH 方式

第一步:创建SSH Key

向远程仓库推送

过程梳理

实操

拉取远程仓库

配置 Git

忽略特殊文件

给命令配置别名


理解分布式版本控制系统

        我们目前所说的所有内容(工作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上。而我们的 Git 其实是分布式版本控制系统!可以简单理解为,我们每个人的电脑上都是⼀个完整的版本库,这样你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有⼀个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

        分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某⼀个人的电脑坏掉了不要紧,随便从其他⼈那里复制⼀个就可以了。
         在实际使用分布式版本控制系统的时候,其实很少在两⼈之间的电脑上推送版本库的修改,因为可能 你们俩不在⼀个局域网内,两台电脑互相访问不了,等多种无法访问的原因。 因此,分布式版本控制系统通常也有⼀台充当 “中央服务器” 的电脑,但这个服务器的作用仅仅是用来方便 “交换” 大家的修改,没有它别人也⼀样干活,只是交换修改不方便而已。有了这个 “中央服务器” 的电脑,这样就不怕本地出现什么故障了。

远程仓库

        找⼀台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个 “服务器” 仓库克隆⼀份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别⼈的提交。 有一个叫 GitHub 的神奇的网站,从名字就可以看出,这个网站就是提供 Git 仓库托管服务的。所以,只要注册⼀个GitHub账号,就可以免费获得 Git 远程仓库。github是国外的网站,速度比较慢,在国内还有码云来托管代码。(此处以码云为例)

新建远程仓库

        新建远程项目仓库。

        填写基本信息,一般一个仓库对应着的都是一个项目系统,而项目系统的名字其实就是仓库的名字,所以在这里的仓库命名一定要围绕着系统要做什么来命名。

        上述不重要详细后续讲解,默认不勾选即可。

        这个是当我们创建好一个仓库之后,会自动在这个仓库当中创建添加的文件。

  • Readme 文件:用于写一些仓库中主要的、详细内容。
  • 两个模板文件后续讲解。

         此时,创建出来就会如下所示:

        从创建好的远程仓库中我们便能看到,之前在本地学习过的分支,也存在于远程仓库中并被管理起来了,刚创建的仓库有且只有⼀个默认的 master 分支。

        远程仓库中,经过我们的勾选,反别创建了英文版与中文版的resdme文件,其中会默认为我们创建一个模板,为我们仓库中的项目起一个介绍的作用。

lssue 与 Pull Request模板文件

        然后在 gitee 中还创建了我们勾选的两个模板文件。

        lssue模板文件其实就是一个模板。

        Pull Request 模板文件一样的,是一个模板。

知识铺垫

        首先我们创建出来的仓库是可以设计成员的,也就是谁可以在这个仓库里进行开发。

        也可以设置对应的用户角色。

        如果对于角色不清楚,可以通过点击进行详细的了解。所以远程仓库是有其对应的成员的。

lssue 模板文件

        可以发现上述有一个,通过添加。

        可以发现正文里面的内容,刚好和我们之前在 .gitee 中点开的是一样的模板内容。这个 lssue 就是让有问题的人与当前仓库的人员进行交流的地方。

Pull Request模板文件

        可以发现上述有一个,通过添加。

        之前有所提过,我们想要在一个仓库当中进行一定的开发,我们并不是在 master 上进行开发的(这是对于我们开发者来说的),而是在其他分支上进行开发的,比如说:dev分支。这个时候我们在 dev 分支上开发完了,我们是想在 master 分支上 merge dev 分支的。所以对应的合并操作,其实是一个非常危险的操作,因为无法保证上传的代码是完全没有问题的,所以如果是直接将 dev 合并到 master 上是不被允许的。

        正确的做法是,开发者要提一个 PR(Pull Request) 。可以理解为是一个合并的申请单,在这个申请单里面要说明,为什么要进行合并,给到仓库管理员看。一旦管理人员同意了,我们才可以进行对应的合并操作。

克隆远程仓库

        克隆/下载远端仓库到本地,需要使用 git clone 命令,后面跟上我们的远端仓库的链接,远端仓库的链接可以从仓库中找到。

        其中我们最常用的还是 HTTPS 和 SSH 。

使用 HTTPS 方式

        其是在克隆的时候没有任何的要求的,直接使用该链接克隆即可。

Note:想要执行克隆的时候,不能在任意一个本地仓库进行执行。

[qcr@ecs-205826 ~]$ git clone https://gitee.com/chuanru/remote---project.git
Cloning into 'remote---project'...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), done.

        可以进行对应的查看。

[qcr@ecs-205826 ~]$ cd remote---project/
[qcr@ecs-205826 remote---project]$ ls -a
.  ..  .git  .gitee  README.en.md  README.md

        克隆下来的仓库有一个默认名:origin,可以在当前仓库中使用 git remote 命令进行查看。

[qcr@ecs-205826 remote---project]$ git remote
origin

        如果想看更加详细的远端信息,可以通过添加 -v 选项。 

[qcr@ecs-205826 remote---project]$ git remote -v
origin	https://gitee.com/chuanru/remote---project.git (fetch)
origin	https://gitee.com/chuanru/remote---project.git (push)

        可以发现一个为 fetch拿、push推,这两个代表的是我当前本地仓库拥有和远程仓库的拿和推的权限。

使用 SSH 方式

        使用的是公钥加密和公钥登录的机制,体现的是实用性和安全性,如果我们想要使用 SSH 提供的链接进行对应的克隆操作,必须先要将本地的公钥,存到 gitee 的服务器上。

查看 gitee 上配置的公钥:

        在左边的设置框里面就可以看到。

        如果为上述,则证明没有配置任何的公钥。这种情况下,直接对 SSH 提供的地址进行 git clone 操作是会出现问题的。

[qcr@ecs-205826 ~]$ git clone git@gitee.com:chuanru/remote---project.git
Cloning into 'remote---project'...
Warning: Permanently added 'gitee.com,212.64.63.215' (ECDSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

        其会提示我们权限不足,没有办法读取远程的仓库。这个错误就是没有在 gitee 服务器上去配置本地服务器的公钥。

第一步:创建SSH Key

        在用户主目录下,看看有没有 .ssh 目录,如果有再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下⼀步。如果没有,需要创建 SSH Key。
[qcr@ecs-205826 ~]$ ssh-keygen -t rsa -C "gitee 上配置的email"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/qcr/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/qcr/.ssh/id_rsa.
Your public key has been saved in /home/qcr/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:iJLEiBinPuJDFGYmtx8d8Gf4bWhZPasqC4CH2jLrpm4 2390139574@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|o=o ...          |
|BB.. o o   .     |
|=.+ . + o . o    |
|o+ o o = =   o   |
|++= o . S o .    |
|=o.o   . . .     |
|+o. .     .      |
| E.  ..  .       |
|Oo    .o.        |
+----[SHA256]-----+

        剩下的一路回车即可。

[qcr@ecs-205826 ~]$ ls .ssh
id_rsa  id_rsa.pub  known_hosts
  • id_rsa:私钥,保存在自己的服务器上,不能对外展示。
  • id_rsa.pub:公钥,将其配置在 gitee 服务器上。
        随后 cat  id_rsa.pub,然后将其中的内容放到下述中即可:

        这个时候输入对应的 gitee 密码进行验证之后,就成功的配置了一个 SSH 公钥了。而之前有所提到,在一个仓库下,可能会有多人协作的开发。如果用的都是 SSH 协议的方式,是需要配置多个电脑上的公钥,即在上述直接添加即可,其是支持我们进行多个 SSH 公钥的。

[qcr@ecs-205826 ~]$ git clone git@gitee.com:chuanru/remote---project.git
Cloning into 'remote---project'...
Warning: Permanently added the ECDSA host key for IP address '212.64.63.190' to the list of known hosts.
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.

向远程仓库推送

过程梳理

        首先开发是在本地开发的,也就是对工作区先进行一定的修改。

        然后将工作区中的修改通过 git add 命令放置暂存区中。

        然后再通过 git commit 命令将暂存区中的内容提交至本地仓库上的 master 分支,一旦我们给 master 主分支上进行新的提交,对于本地仓库来说就有了一次新的修改,但是这个时候远程仓库是看不到我们本地修改的。远程仓库想要看到本地仓库的修改,是需要经过本地仓库的推送 git push 命令的。

        也就是将本地仓库,比如说:本地仓库的 master 分支上的修改推送到远程仓库的 master 分支下,push 操作其实是分支与分支之间的交互。

实操

        首先,进入一个仓库第一步就是配置,而如果看过前述博客就可以发现,之前配置的信息是 --global选项的,所以此处的 user.name 与 user.email 是已经有的,无需配置,此处不再提。

        本地已经 git clone 成功远程仓库后,我们便可以向仓库中提交内容,例如:新增⼀个 file.txt 文件。

[qcr@ecs-205826 remote---project]$ git branch
* master
[qcr@ecs-205826 remote---project]$ vim file.txt
[qcr@ecs-205826 remote---project]$ git add .
[qcr@ecs-205826 remote---project]$ git commit -m "创建file.txt"
[master 1eff76c] 创建file.txt
 1 file changed, 1 insertion(+)
 create mode 100644 file.txt
[qcr@ecs-205826 remote---project]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean

        由于这个仓库是克隆远程仓库的内容,所以此处比原来多了两行内容。

        其建议我们进行 git push 命令,来将我们的本地提交进行一个推送的操作,推送到 'origin/master' 。该命令用于将本地的分支版本上传到远程并合并,命令格式如下:

git push <远程主机名> <本地分⽀名>:<远程分⽀名>

# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:
git push <远程主机名> <本地分⽀名>
[qcr@ecs-205826 remote---project]$ git push origin master:master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:chuanru/remote---project.git
   f5df974..1eff76c  master -> master

        这个时候,一旦推送成功,远端仓库就可以看到我们本地仓库的修改了。这个时候的当前仓库状态:

[qcr@ecs-205826 remote---project]$ git status
# On branch master
nothing to commit, working directory clean

        这个时候的 gitee 中可以看到,该对应的远端仓库的 master 分支上:

#问:为什么可以push成功?

        就是我们有一个 push 权限。

[qcr@ecs-205826 remote---project]$ git remote -v
origin	git@gitee.com:chuanru/remote---project.git (fetch)
origin	git@gitee.com:chuanru/remote---project.git (push)

         所以进行推送成功的,是远程分支与本地分支之间的一些交互。所以我们必须要让两个分支成立链接关系,有这个关系才可以成功互通。

        对于远程仓库和本地仓库的master分支来说,是在克隆的时候 Git 会自动帮我们建立联系。

拉取远程仓库

        在 gitee 上点击 file.txt 文件并在线修改它:

         此处采取新添加一行:

Note:此处只是由于本仓库只有一个用户,所以才在远端上直接修改,让远端仓库新于本地仓库,平时千万千万不能在远端仓库直接进行修改,要改就是在本地改,然后进行推送上来改。

        此时,远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,我们需要拉取下远端代码,并合并到本地。Git 提供了 git pull 命令,该命令用于从远程获取代码并合并本地的版本。格式如下:
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>

# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull <远程主机名> <远程分⽀名>
[qcr@ecs-205826 remote---project]$ cat file.txt 
hello Git
[qcr@ecs-205826 remote---project]$ git pull origin master:master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From gitee.com:chuanru/remote---project
   1eff76c..0a6993b  master     -> master
[qcr@ecs-205826 remote---project]$ cat file.txt 
hello Git
hello world

        pull 其实是做了两件事情的:拉取 + 合并。

配置 Git

忽略特殊文件

        在日常开发中,我们有些文件不想或者不应该提交到远端,比如:保存了数据库密码的配置文件。所以在这个时候,在 Git 工作区的根目录下会创建⼀个特殊的 .gitignore 件,然后把要忽略的文件名填进去,Git 就会自动忽略这些文件了。

        此处也就是之前,创建远程仓库时未讲解的第一个选项的部分。

        如果当时没有选择这个选择,在工作区创建⼀个也是可以的。无论哪种方式,最终都可以得到⼀个完整的 .gitignore 件,例如:我们想忽略以 .so .ini 结尾所有文件, .gitignore 的内容
如下:
# 省略选择模本的内容
...
# My configurations:
*.ini
*.so
        在 .gitignore 件中也可以指定某个确定的文件。 最后⼀步就是把 .gitignore 也提交到远端,就完成了。
[qcr@ecs-205826 remote---project]$ vim .gitignore
[qcr@ecs-205826 remote---project]$ cat .gitignore 
*.ini
*.so
[qcr@ecs-205826 remote---project]$ git add .
[qcr@ecs-205826 remote---project]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   .gitignore
#
[qcr@ecs-205826 remote---project]$ git commit -m "创建.gitignore"
[master e532e80] 创建.gitignore
 1 file changed, 2 insertions(+)
 create mode 100644 .gitignore
[qcr@ecs-205826 remote---project]$ git push origin master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 284 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:chuanru/remote---project.git
   0a6993b..e532e80  master -> master

        这个时候让我们创建一个 .so 文件进行测试。

[qcr@ecs-205826 remote---project]$ touch a.so
[qcr@ecs-205826 remote---project]$ ls
a.so  file.txt  README.en.md  README.md
[qcr@ecs-205826 remote---project]$ git status
# On branch master
nothing to commit, working directory clean

        这个时候,但道理来所明明应该会有工作区的变化,但是状态查询下工作区是干净的。这就是因为我们在 .gitignore 下的配置就是,不让 Git 对所有的 .so 文件进行追踪管理。但有些时候,我们就是想添加⼀个文件到 Git,但由于这个文件被 .gitignore 忽略了,根本添加不了,那么可以用 -f 强制添加。

[qcr@ecs-205826 remote---project]$ git add -f .
[qcr@ecs-205826 remote---project]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   a.so
#

        但是尽量还是不要破坏 .gitignore 文件的规则的,最好的方式就是在 .gitignore 文件添加配置。(文件名前面加 ! ,表示不排除)

[qcr@ecs-205826 remote---project]$ vim .gitignore
[qcr@ecs-205826 remote---project]$ cat .gitignore
*.ini
*.so

!a.so
        或者你发现,可能是 .gitignore 写得有问题,需要找出来到底哪个规则写错了,比如说 a.so 文件是要被添加的,可以用  git check-ignore 命令检查:
[qcr@ecs-205826 remote---project]$ touch b.so
[qcr@ecs-205826 remote---project]$ git check-ignore -v b.so
.gitignore:2:*.so	b.so

给命令配置别名

        在我们使用 Git 期间,有些命令敲的时候着实让人头疼(太长了……),幸运的是 Git 支持对命令进行简化!

        举个例子,将 git status 简化为 git st ,对应的命令为:
(git status 是还可以使用的)
[qcr@ecs-205826 remote---project]$ git config --global alias.st status
[qcr@ecs-205826 remote---project]$ git st
# On branch master
nothing to commit, working directory clean

         --global 参数是全局参数,也就是这些命令在这台电脑的所有 Git 仓库下都有用。如果不加,那只针对当前的仓库起作用。 该取别名,甚至可以是更长的:

[qcr@ecs-205826 remote---project]$ git log --pretty=oneline --abbrev-commit
e532e80 创建.gitignore
0a6993b update file.txt.
1eff76c 创建file.txt
f5df974 Initial commit
[qcr@ecs-205826 remote---project]$ git config --global alias.lpa "log --pretty=oneline --abbrev-commit"
[qcr@ecs-205826 remote---project]$ git lpa
e532e80 创建.gitignore
0a6993b update file.txt.
1eff76c 创建file.txt
f5df974 Initial commit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java安全——安全提供者

Java安全 安全提供者 在Java中&#xff0c;安全提供者&#xff08;Security Provider&#xff09;是一种实现了特定安全服务的软件模块。它提供了一系列的加密、解密、签名、验证和随机数生成等安全功能。安全提供者基础设施在Java中的作用是为开发人员提供一种扩展和替换标准…

vue中使用Drawflow连线插件,并对端口进行命名

效果如图 场景:项目中需要拖拽模块并连线,有输入端和输出端之分,不同模块不同端口才能相连 文档相关 点击前往------->原项目git地址 点击前往------->提供端口既可输出又可输出方案 点击前往----->查阅发现原项目无法对端口命名 public文件夹下创建drawflow文件夹…

myCobot 280 2023机械臂全新功能,手柄控制、自干涉检测

引言 机械臂是一种可编程的、自动化的机械系统&#xff0c;它可以模拟人类的动作&#xff0c;完成各种任务&#xff0c;例如装配、喷涂、包装、搬运、焊接、研磨等。由于其高度灵活性和多功能性&#xff0c;机械臂在现代社会中已经得到了广泛的应用。 myCobot 280 M5Stack 20…

在服务器部署前后端分离的项目(前后都有), 并使用nginx配置跨域

怎样部署自己的项目呢 先准备一个服务器(小系统最便宜的轻量级服务器就行, 如果不需要给人访问的话)安装宝塔面板 (宝塔面板, 可视化界面, 操作简单, 使用非常方便, 上手也很容易, 如果只是学习, 虚拟机也行没必要花钱, 我使用的CentOS7系统,安装宝塔面板)软件: MySQL, Tomcat…

【问题记录】多线程环境下,使用 std::cout 输出内容会显示混乱

环境 Windows 11 家庭中文版Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 测试代码 #include <iostream> #include <Windows.h>//创建的线程数量 #define THREAD_COUNT 4DWORD WINAPI ThreadProc(LPVOID lpParam) {UNREFERENCED_P…

JS事件监听

目录 事件监听 事件监听案例 事件监听 事件&#xff1a;HTML事件是发生在HTML元素上的“事情” 按钮点击鼠标移动到元素上按下键盘按键事件监听&#xff1a;JS可以在事件被检测到时执行代码事件绑定 方法一&#xff1a;通过HTML标签中的事件属性进行绑定 <input type"…

在windows环境下安装支持CUDA的opencv-python

文章目录 附件&#xff1a;GPU和CUDA的关系 —— 开发人员通过CUDA可以使用GPU的计算能力来加速各种计算任务&#xff0c;并提高计算性能和效率。一、环境配置&#xff08;0&#xff09;我的电脑配置环境&#xff08;1&#xff09;CUDA cuDNN下载与安装&#xff08;2&#xff…

【云原生、Kubernetes】Kubernetes核心概念理解

首先我们要掌握 Kubernete 的一些核心概念。 这些核心可以帮助我们更好的理解 Kubernetes 的特性和工作机制。 集群组件 首先&#xff0c;Kubernetes 集群中包含2类节点&#xff0c;分别是&#xff1a;master控制节点和node工作节点。 master 控制节点 负责管理整个集群系统…

【手撕算法|动态规划系列No.4】leetcode91. 解码方法

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

软件测试:系统测试

1 系统测试的概念 系统测试&#xff08;System Testing&#xff09;的定义&#xff1a;将已经集成好的软件系统&#xff0c;作为整个基于计算机系统的一个元素&#xff0c;与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起&#xff0c;在实际运行&#…

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops

D flip-flop module top_module (input clk,input d,output reg q );always (posedge clk)q < d; endmoduleD flip-flops 建立一个8bit的D触发器 module top_module (input clk,input [7:0] d,output reg [7:0] q );always (posedge clk)q < d; endmoduleDFF with res…

GDAL 图像直方图统计

文章目录 一、简介二、实现代码三、实现效果参考资料 一、简介 这里使用一种简单的方式来计算图像中的像素值直方图分布。计算过程如下所述&#xff1a; 第一种方式&#xff1a; 1、首先将图像变为一维数组&#xff08;reshape&#xff09;&#xff0c;并将数组中的数值进行排序…

vue点击盒子一步一步滚动

vue点击盒子一步一步滚动 HTML <div class"course_detail"><div class"arrow" v-if"index 0" click"step"></div><div class"lightArrow" v-else click"step"></div><div clas…

自定义的车牌号键盘组件

<template><view class"keyboard-wrap" v-if"kbShow"><view class"head"><view class"done" tap"done"><text class"iconfont iconxiala-"></text>关闭</view></vi…

2. 注册platform

这里先分析platform 对应的dts内容如下 i2s0_8ch: i2sff800000 {compatible "rockchip,rv1126-i2s-tdm";reg <0xff800000 0x1000>;interrupts <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;clocks <&cru MCLK_I2S0_TX>, <&cru MCLK_I2S0_RX&g…

JAVA开发( 腾讯云消息队列 RocketMQ使用总结 )

一、问题背景 之所以需要不停的总结是因为在java开发过程中使用到中间件实在太多了&#xff0c;久久不用就会慢慢变得生疏&#xff0c;有时候一个中间很久没使用&#xff0c;可能经过了很多版本的迭代&#xff0c;使用起来又有区别。所以还是得不断总结更新。最近博主就是在使用…

睿铂相机同步性控制技术解析

极客睿铂 前几期睿铂给大家分享了一些倾斜相机背后的技术&#xff0c;主要都是的关于镜头光学方面的。但实际上倾斜摄影相机还有很多其他关键性技术有待突破&#xff0c;任何技术的发展都不能一蹴而就&#xff0c;需要根据客户的问题反馈&#xff0c;发现新的问题并解决问题&a…

自定义MVC架构【下】

目录 一、前言 二、导出自定义MVC架包 三、使用自定义MVC架包 四、优化增删改查Dao层及Servlet 1.优化增删改查Dao层 2.优化增删改查Servlet代码 五、案例实操 1.将PageTag自定义标签进行配置 2.jsp页面环境搭建 3.案例演示 一、前言 在上篇中&#xff0c;我们已经优化…

ARM架构(寄存器点灯)

文章目录 前言一、LED原理图二、使用寄存器点灯的步骤三、如何操作寄存器四、实际操作1.使能GPIO端口2.将引脚设置为输出模式3.设置输出状态 五、全部代码总结 前言 本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯&#xff0c;一般对于新人来说都是使用HAL库或者标准库来…

SpringBoot3【④ 基础特性】

1. SpringApplication 1.1. 自定义 banner 类路径添加banner.txt或设置spring.banner.location就可以定制 banner推荐网站&#xff1a;Spring Boot banner 在线生成工具&#xff0c;制作下载英文 banner.txt&#xff0c;修改替换 banner.txt 文字实现自定义&#xff0c;个性化…