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

news/2024/4/19 7:04:11/文章来源:https://blog.csdn.net/weixin_64609308/article/details/131494632

目录​​​​​​​

理解分布式版本控制系统

远程仓库

新建远程仓库

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.txt1 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.gitf5df974..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---project1eff76c..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] 创建.gitignore1 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.git0a6993b..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.luyixian.cn/news_show_325575.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SLAM学习】获取IMU和雷达消息并发布

本文主要记录如何将rosbag的消息进行获取并进行发布以及后续处理。 测试数据集&#xff1a; 链接: https://pan.baidu.com/s/1DthWE45V5Zhq7UUrfTt_CQ 提取码: mxvn 查看数据集bag包里面都有那些话题&#xff1a; rosbag info indoor_lab_RS.bag 可以看到包含了两个话题…

『手撕 Mybatis 源码』09 - MyBatis 插件

MyBatis插件 概述 问题&#xff1a;什么是Mybatis插件&#xff1f;有什么作用&#xff1f; Mybatis插件本质上来说就是一个拦截器&#xff0c;它体现了 JDK 动态代理和责任链设计模式的综合运用 Mybatis 中所允许拦截的方法如下 Executor 【SQL执行器】【update&#xff…

Docker服务编排之Docker Compose的使用

Docker服务编排 概念&#xff1a;按照一定的业务规则批量的管理容器 微服务架构的应用系统中一般包含很多微服务&#xff0c;一个微服务中又包含很多的实例&#xff0c;每个微服务都要手动管理&#xff0c;维护的工作量很大。 拉去镜像&#xff0c;创建多个容器&#xff0c;分…

【Vue3】学习笔记-自定义hook函数

概念 什么是hook? 本质是一个函数&#xff0c;把setup函数中使用的Composition API进行了封装。 类似于vue2.x中的mixin。(但是mixins会组件的配置项覆盖。vue3使用了自定义hooks替代mixnins&#xff0c;hooks本质上是函数&#xff0c;引入调用。) 自定义hook的优势: 复用代…

【密码学基础】半/全同态加密算法基础学习笔记

文章目录 1 半同态加密Pailliar加法同态加密Paillier加解密过程Paillier的同态性Paillier的安全性 El Gamal乘法同态加密RSA乘法同态加密 2 全同态加密BFV全同态加密BFV的编码方式BFV加解密过程BFV的安全性BFV的同态性自举Bootstrapping 3 同态加密应用场景场景1&#xff1a;安…

0基础学习VR全景平台篇 第54篇: 高级功能-皮肤

功能位置示意 一、本功能将用在哪里&#xff1f; 皮肤功能&#xff0c;摆脱传统VR全景展示样式&#xff0c;自行选择场景与全景分组的界面模板&#xff0c;从而与不同的应用行业风格相互适应&#xff0c;达到最贴切的展示效果。 是在各种风格的VR全景作品中&#xff0c;最快实…

ubuntu安装MobaXterm和WPS

文章目录 ubuntu安装MobaXtermi386 架构wine操作步骤 ubuntu安装WPS操作步骤WPS版本知识补充 ubuntu安装MobaXterm i386 架构 sudo dpkg --add-architecture i386 是一个Linux系统中的命令&#xff0c;用于添加一个新的架构&#xff08;architecture&#xff09;支持到当前系统…

netwox构造免费ARP数据包【网络工程】(保姆级图文)

目录 构造免费的 ARP 数据包。1) 构造免费的 ARP 数据包2) 使用 Wireshark 进行抓包 总结 欢迎关注 『网络工程专业』 系列&#xff0c;持续更新中 欢迎关注 『网络工程专业』 系列&#xff0c;持续更新中 温馨提示&#xff1a;对虚拟机做任何设置&#xff0c;建议都要先快照备…

IDEA中集成zookeeper的插件

IDEA中集成zookeeper的插件 一、IDEA中集成插件 搜索插件并安装&#xff1a; 安装完成&#xff0c;重启IDEA 配置zk集群 连接成功

【PortAudio】PortAudio 音频处理库Demo

1. 介绍 PortAudio是一个免费、跨平台、开源的音频I/O库。看到I/O可能就想到了文件&#xff0c;但是PortAudio操作的I/O不是文件&#xff0c;而是音频设备。它能够简化C/C的音频程序的设计实现&#xff0c;能够运行在Windows、Macintosh OS X和UNIX之上&#xff08;Linux的各种…

从零开始 Spring Boot 57:JPA中的一对多关系

从零开始 Spring Boot 57&#xff1a;JPA中的一对多关系 图源&#xff1a;简书 (jianshu.com) 在上篇文章中我们介绍了如何在 JPA 中实现实体的一对一关系&#xff0c;在关系型数据库设计中&#xff0c;除了一对一关系&#xff0c;还存在一对多关系。本篇文章介绍如何在 JPA 中…

【Python】NLP参数控制模板

前言 学过AI的都知道训练一个模型需要调整很多参数&#xff0c;为了有效的管理这些参数、不至于让代码的参数写的乱七八糟&#xff0c;有必要写一套控制参数的模板。 argparser argparser是python当中的参数解析器&#xff0c;在NLP当中主要是用来接受和使用参数的。一个使用它…

QT学习笔记:TCP客户端的实现

QT一般用来做客户端&#xff0c;我这里就简单讲一下怎么开发基于QT的TCP客户端。 1、用QtCreator创建项目 2、界面 3、.pro文件添加network QT core gui network 4、mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include &l…

SpringBoot的缓存管理

缓存是分布式系统中的重要组件&#xff0c;主要解决数据库数据的高并发访问问题。在实际开发中&#xff0c;尤其是用户 访问量较大的网站&#xff0c;为了提高服务器访问性能、减少数据库的访问压力、提高用户体验&#xff0c;使用缓存显得 尤为重要。Spring Boot对缓存提供了良…

基于单片机的盲人导航智能拐杖老人防丢防摔倒发短息定位

功能介绍 以STM32单片机作为主控系统&#xff1b; OLED液晶当前实时距离&#xff0c;安全距离&#xff0c;当前经纬度信息&#xff1b;超声波检测小于设置的安全距离&#xff0c;蜂鸣器报警提示&#xff1a;低于安全距离&#xff01;超声波检测当前障碍物距离&#xff0c;GPS进…

从零开始备战数学建模国赛之线性规划1.1

从零开始备战数学建模国赛之线性规划1.1 现在距离2023年的数学建模国赛还有不足三个月的时间&#xff0c;想与大家共同备战国赛。 这是我自己总结的一些代码和资料&#xff08;本文中的代码以及参考书籍等&#xff09;&#xff0c;放在github上供大家参考&#xff1a;https://…

Redis学习(一)数据类型、Java中使用redis、缓存概念

文章目录 常用数据结构String类型Hash类型List类型Set类型SortedSet 类型 通用命令key的层级结构 Spring Data Redis快速入门RedisTemplate的序列化方式StringRedisTemplateRedisTemplate的Hash类型操作 实战操作短信登录发送验证码校验登录信息校验登录状态 商家查询缓存缓存更…

怎么学习PHP表单处理与验证? - 易智编译EaseEditing

要学习PHP表单处理与验证&#xff0c;可以按照以下步骤进行&#xff1a; 掌握PHP基础知识&#xff1a; 在学习PHP表单处理与验证之前&#xff0c;首先需要对PHP编程语言有基本的了解。学习PHP的语法、变量、数据类型、数组、函数等基础知识是必要的。 学习HTML表单&#xff1…

MySQL - 第13节 - MySQL用户管理

1.MySQL用户管理概念 MySQL用户管理概念&#xff1a; • 与Linux操作系统类似&#xff0c;MySQL中也有超级用户和普通用户之分。 • 如果一个用户只需要访问MySQL中的某一个数据库&#xff0c;甚至数据库中的某一个表&#xff0c;那么可以为其创建一个普通用户&#xff0c;并为…

交流220v转12v给单片机供电芯片

客户的应用需求&#xff1a;AD220V转DC12V 体积要非常小&#xff0c;单片机使用&#xff0c;单片机设备12V 电流很小不会超过100mA&#xff1f; 【AD220V转DC12V体积小的问题】 问题&#xff1a;我需要将交流电&#xff08;220V&#xff09;转换为直流电&#xff08;12V&…