99.【Git】
Git
- (一)、什么是版本控制
- 1.什么是版本控制
- 2、常见的版本控制工具
- (二)、版本控制分类
- 1、本地版本控制
- 2、集中版本控制 SVN
- 3、分布式版本控制 Git
- (三)、Git与SVN的主要区别
- 1、Git历史
- (四)、Git下载与环境配置
- 1.git下载
- 2、启动Git
- (五)、常用的Linux命令
- 1.Linux常用命令
- (六)、Git必要配置
- 1、配置
- 2、设置用户名和邮箱⭐
- (七)、Git工作原理
- 1、三个区域
- 2、工作流程
- (八)、Git项目搭建和项目克隆
- 1、本地仓库搭建
- 2、克隆远程仓库 (HTTP)
- (九)、Git基本的操作命令
- 1、文件的四种状态
- 2、测试文件的四种状态
- 3、忽略文件
- (十)、码云的注册和实现及创建远程仓库
- 1.配置SSH公钥 (可以免密登入)
- 2.创建远程仓库
- (十一)、idea集成Git
- 1.万能绑定Git仓库(⭐)
- 2.GIT分支
(一)、什么是版本控制
1.什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 (版本迭代)
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
简单说就是用于管理多人协同开发项目的技术。
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性
、软件内容的冗余
、软件过程的事物性
、软件开发过程中的并发性
、软件源代码的安全性
,以及软件的整合等问题。
无论是工作还是学习,或者是自己做笔记,都经历过这样一个阶段!我们就迫切需要一个版本控制工具!
多人开发就必须要使用版本控制!
2、常见的版本控制工具
我们学习的东西,一定是当下最流行的!
主流的版本控制器有如下这些:
- Git
- SVN(Subversion)
- CVS(Concurrent Versions System)
- VSS(Micorosoft Visual SourceSafe)
- TFS(Team Foundation Server)
- Visual Studio Online
版本控制产品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),现在影响力最大且使用最广泛的是Git与SVN
(二)、版本控制分类
1、本地版本控制
只有部分文件
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
2、集中版本控制 SVN
只有部分文件
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS
3、分布式版本控制 Git
每个人都拥有全部的代码!安全隐患!
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里
。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况!
(三)、Git与SVN的主要区别
SVN是集中式版本控制系统
,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高
。
Git是分布式版本控制系统,没有中央服务器
,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!
Git是目前世界上最先进的分布式版本控制系统。
1、Git历史
聊聊Git的历史
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
Linux社区中存在很多的大佬!破解研究 BitKeeper !
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。(2周左右!) 也就是后来的 Git!
Git是目前世界上最先进的分布式版本控制系统。
Git是免费、开源的,最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper!
Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰
Git环境配置
(四)、Git下载与环境配置
1.git下载
开 [git官网] https://git-scm.com/,下载git对应操作系统的版本。
所有东西下载慢的话就可以去找镜像!
官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/
先卸载
直接返安装
查找环境变量,有就移除
下载对应的版本即可安装!
安装:无脑下一步即可!安装完毕就可以使用了!
2、启动Git
安装成功后在开始菜单中会有Git项,菜单下有3个程序:任意文件夹下右键也可以看到对应的程序!
Git Bash: Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD: Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
(五)、常用的Linux命令
1.Linux常用命令
平时一定要多使用这些基础的命令!
1)、cd : 改变目录。
2)、cd . . 回退到上一个目录,直接cd进入默认目录
3)、pwd : 显示当前所在的目录路径。
4)、ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6)、rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7)、mkdir: 新建一个目录,就是新建一个文件夹。
8)、rm -r : 删除一个文件夹, rm -r src 删除src目录
rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!
22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ cd ../22612@LAPTOP-A930E2O7 MINGW64 /e
$ cd GitTest22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ pwd
/e/GitTest22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ ls22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ touch new.text22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ mkdir aaa22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ mv new.txt aaa
mv: cannot stat 'new.txt': No such file or directory22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ mv new.text aaa22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ ^C22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ cd aaa22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest/aaa
$ ls
new.text22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest/aaa
$ re new.text
bash: re: command not found22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest/aaa
$ rm new.text22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest/aaa
$ ls22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest/aaa
9)、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
10)、reset 重新初始化终端/清屏。
11)、clear 清屏。
12)、history 查看命令历史。
13)、help 帮助。
14)、exit 退出。
15)、#表示注释
(六)、Git必要配置
1、配置
所有的配置文件,其实都保存在本地!
查看配置 git config -l
$ git config -l
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=jsxs
user.email=2261203961@11.com
查看不同级别的配置文件:
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
Git相关的配置文件:
1)、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ git config --system --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局
2612@LAPTOP-A930E2O7 MINGW64 /e/GitTest
$ git config --global --list
user.name=jsxs
user.email=2261203961@11.com
这里可以直接编辑配置文件,通过命令设置后会响应到这里。
2、设置用户名和邮箱⭐
当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:
git config --global user.name "jsxs" #名称git config --global user.email 2261203961@qq.com #邮箱
只需要做一次这个设置,如果你传递了–global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作
。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要–global选项。总之–global为全局配置,不加为某个项目的特定配置。
(七)、Git工作原理
1、三个区域
Git本地有三个工作区域:工作目录(Working Directory
)、暂存区
(Stage/Index)、资源库
(Repository或Git Directory)。如果在加上远程的git仓库
(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
本地的三个区域确切的说应该是git仓库中HEAD指向的版本:
- Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
- WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
- .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
- Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
- Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
2、工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;git add
3、将暂存区域的文件提交到git仓库。git commit
4、推向远程仓库。 git push
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
(八)、Git项目搭建和项目克隆
工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图6个命令:
git add
git commit
git push
git fetch
git checkout
git pull
1、本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
首先我们要去本地找一个要上传仓库的文件夹,然后右键 git bash
# 在当前目录新建一个Git代码库$,并且初始化
git init
2、执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
2、克隆远程仓库 (HTTP)
1、另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地!
首先我们要先删除刚才生成的.git文件。然后打开我们要克隆的仓库,点击里面的HTTP,我们就能对其进行克隆。
# 克隆一个项目和它的整个代码历史(版本信息)$ git clone [url] $ git clone https://gitee.com/lwt121788/MangerStudent_GUI.git
(九)、Git基本的操作命令
1、文件的四种状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
Untracked
: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add状态变为Staged.Staged
: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为ModifiedUnmodify
: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处,如果它被修改, 而变为Modified
. 如果使用git rm移出版本库, 则成为Untracked文件Modified
: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
2、测试文件的四种状态
上面说文件有4种状态,通过如下命令可以查看到文件的状态:
#查看指定文件状态
git status [filename]#查看所有文件状态
git status# 添加所有文件到暂存区
git add .
#提交暂存区中的内容到本地仓库 -m 提交信息git commit -m "消息内容"
本地仓库路径就是初始化时的 .git。里面的信息,可以通过日志查看
$ git init
Initialized empty Git repository in E:/GitTest/.git/22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ git status
On branch masterNo commits yetnothing to commit (create/copy files and use "git add" to track)22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ ^C22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)td.txtnothing added to commit but untracked files present (use "git add" to track)22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ git add .22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ git status
On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file: td.txt22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ git commit -m "hello jsxs"
[master (root-commit) 88850bf] hello jsxs1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 td.txt22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$ git status
On branch master
nothing to commit, working tree clean22612@LAPTOP-A930E2O7 MINGW64 /e/GitTest (master)
$
3、忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
- 忽略文件中的空行或井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
- 如果名称的
最前面
有一个感叹号(!),表示例外规则,将不被忽略。 - 如果名称的
最前面
是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。 - 如果名称的
最后面
是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!!lib.txt #但lib.txt除外/temp #仅忽略项目根目录下的TODO文件,不包括其它目录tempbuild/ #忽略build/目录下的所有文件doc/*.txt #会忽略doc/notes.txt 但不包括 doc/server/arch.txt
(十)、码云的注册和实现及创建远程仓库
1.配置SSH公钥 (可以免密登入)
配置SSH可以免密登入
C:\Users\22612.ssh
git命令输入并执行
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen
执行之后,会在这里生成一个 pub
2.创建远程仓库
如果我们创建仓库的时候选择私有,那么就远程不了。(gitee默认是私有)
2.克隆刚才新建的仓库 (http)
git clone https://gitee.com/lwt121788/git-jsxs.git
3.命令行进行提交
cd spring-cloud # 进入响应的文件夹git add . # 把所有新改动的文件全部添加上去git status # 查看添加的状态git commit -m "first commit" #进行提交以及备注git push origin master #进行推送到码云
(十一)、idea集成Git
1.万能绑定Git仓库(⭐)
1、新建项目,绑定git。
2、把刚才克隆仓库的文件中的所有文件剪切到你要上传到git仓库的java项目中。
3.剪切之后,我们发现我们的java项目发生了变化
4.介绍各个功能。
5.颜色的变化
红色 代表未被跟踪
绿色 代表被添加到暂存区
6.我们通过控制台,输入 git add .进行提交到暂存区
git add .
7.假如说我们提交到暂存区之后,又想要进行修改。修改之后该怎么办?
8.我们使用commit 实现提交到本地仓库
9.提交到远程仓库
git push
10.提交到远程仓库之后,我们想新添加。此时就会弹出一个提示框,点击yes
# 先更新,然后提交到本地仓库(并填写comment),最后提交到远程仓库
git add .
git commit -m "修改内容描述"
git push
可以在左下角的git中查看日志。
假如说我们提交到仓库之后,还想继续修改。那么就重复提交到远程仓库的步骤即可
# 先更新,然后提交到本地仓库(并填写comment),最后提交到远程仓库
git add .
git commit -m "修改内容描述"
git push
2.GIT分支
分支在GIT中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!
git分支中常用指令:
# 列出所有本地分支
git branch# 列出所有远程分支
git branch -r# 新建一个分支,但依然停留在当前分支
git branch [branch-name]# 新建一个分支,并切换到该分支
git checkout -b [branch]# 切换分支
git checkout [branch-name]
# 合并指定分支到当前分支
$ git merge [branch]# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
多个分支如果并行执行,就会导致代码冲突,也就是同时存在多个版本
web-api -> A组开发
web-admin ->B组开发 (假如先修改了A代码)
web -app -C会调用B和A的代码 (C)
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码(协商)!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git branch -rorigin/HEAD -> origin/masterorigin/master22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git branch dev22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git branchdev
* master22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git checkout -b dev
fatal: A branch named 'dev' already exists.22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git checkout -d dev
HEAD is now at e54c77e 我们这里修改了hello类22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit ((e54c77e...))
$ git branch
* (HEAD detached at refs/heads/dev)devmaster22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit ((e54c77e...))
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git branchdev
* master22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git branch -d dev
Deleted branch dev (was e54c77e).22612@LAPTOP-A930E2O7 MINGW64 /e/Ideal源码/testGit (master)
$ git branch
* master
相关文章:
99.【Git】
Git(一)、什么是版本控制1.什么是版本控制2、常见的版本控制工具(二)、版本控制分类1、本地版本控制2、集中版本控制 SVN3、分布式版本控制 Git(三)、Git与SVN的主要区别1、Git历史(四)、Git下载与环境配置1.git下载2、启动Git(五)、常用的Linux命令1.Linux常用命令(六)、Git必…...
Linux驱动交叉编译把驱动文件放入开发板,以及printk函数打印级别
上一篇介绍了一个最简单的驱动程序和驱动程序大体结构,但那还是用本地编译只能在Ubuntu上运行,我们该怎么编译一个能加载到开发板上呢,就需要交叉编译,交叉编译通常都是在嵌入式开发中使用到的。 交叉编译 理解交叉编译前先了解…...
力扣(LeetCode)433. 最小基因变化(2023.03.07)
基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 ‘A’、‘C’、‘G’ 和 ‘T’ 之一。 假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如,“AACCGGTT”…...
网络基础(2)
目录1. 端口号2. 套接字socket3. 网络通信3.1 sockaddr与sockaddr_in3.2 接口服务端3.2.1 创建套接字,打开网络文件3.2.2 给该服务器绑定端口和ip(特殊处理)3.2.3 初始化相关服务器3.2.4 提供服务客户端3.2.5 绑定3.2.6 使用服务4. makefile实…...
掌握Spring Cloud Gateway:构建高性能API网关的原理和实践
Spring Cloud Gateway 是一个基于 Spring Boot 的 API 网关,用于构建微服务架构中的网关服务。它提供了统一的路由、请求转发、过滤器、负载均衡、熔断等功能,帮助开发者更好地管理和控制微服务系统的请求流量。 本文将介绍 Spring Cloud Gateway 的原理…...
NAST概述
一、NATS介绍 NATS是由CloudFoundry的架构师Derek开发的一个开源的、轻量级、高性能的,支持发布、订阅机制的分布式消息队列系统。它的核心基于EventMachine开发,代码量不多,可以下载下来慢慢研究。 不同于Java社区的kafka,nats…...
【JS知识点】——原型和原型链
文章目录原型和原型链构造函数原型显式原型(prototype)隐式原型(\_\_proto\_\_)原型链总结原型和原型链 在js中,原型和原型链是一个非常重要的知识点,只有理解原型和原型链,才能深刻理解JS。在…...
c盘怎么清理到最干净?有什么好的清理方法
c盘怎么清理到最干净?有什么好的清理方法?清理C盘空间是电脑维护的重要步骤之一。C盘是Windows操作系统的核心部分,保存了许多重要的系统文件,因此空间不足会影响计算机的性能和稳定性。下面是一些清理C盘空间的方法 一.清理临时文件 在使用…...
day26_HTML
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 见代码 一、二阶段介绍 第一阶段: 基础入门 java基本语法编程基础(方法,数组)面向对象编程常用类高级(IO,线程,新…...
深度剖析C语言预处理
致前行的人: 人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定冷静,学习如何从慌乱中找到生机。 目录 1.程序翻译过程: 2.字符串宏常量 3.用宏定义充当注释符号 4…...
【WPF 值转换器】ValueConverter 进阶用法
【WPF 值转换器】ValueConverter 进阶用法介绍基类实现子类实现效果介绍 值转换器在WPF开发中是非常常见的,当然不仅仅是在WPF开发中。值转换器可以帮助我们很轻松地实现,界面数据展示的问题,如:模块隐藏显示、编码数据展示为可读…...
Vue2的基本使用
一、vue的基本使用 第一步 引入vue.js文件 <script src"https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script> 或者<script src"./js/vue.js"></script> 第二步 在body中设置一个挂载点 {{msg}} <div id"app…...
【云原生kubernetes】k8s数据存储之Volume使用详解
目录 一、什么是Volume 二、k8s中的Volume 三、k8s中常见的Volume类型 四、Volume 之 EmptyDir 4.1 EmptyDir 特点 4.2 EmptyDir 实现文件共享 4.2.1 关于busybox 4.3 操作步骤 4.3.1 创建配置模板文件yaml 4.3.2 创建Pod 4.3.3 访问nginx使其产生访问日志 4.3.4 …...
SerDes---CDR技术
1、为什么需要CDR 时钟数据恢复主要完成两个工作,一个是时钟恢复,一个是数据重定时,也就是数据的恢复。时钟恢复主要是从接收到的 NRZ(非归零码)码中将嵌入在数据中的时钟信息提取出来。 2、CDR种类 PLL-Based CDROve…...
如何实现在on ethernetPacket中自动回复NDP response消息
对于IPv4协议来说,如果主机想通过目标ipv4地址发送以太网数据帧给目的主机,需要在数据链路层填充目的mac地址。根据目标ipv4地址查找目标mac地址,这是ARP协议的工作原理 对于IPv6协议来说,根据目标ipv6地址查找目标mac地址,它使用的不是ARP协议,而是邻居发现NDP(Neighb…...
CSS清楚浮动
先看看关于浮动的一些性质 浮动使元素脱离文档流 浮动元素可以设置宽高,在CSS中,任何元素都可以浮动,浮动元素会生成一个块级框,而不论其本身是何种元素。 如果没有给浮动元素指定高度,,那么它会以内容的…...
HTTPS详解(原理、中间人攻击、CA流程)
摘要我们访问浏览器也经常可以看到https开头的网址,那么什么是https,什么是ca证书,认证流程怎样?这里一一介绍。原理https就是httpssl,即用http协议传输数据,数据用ssl/tls协议加密解密。具体流程如下图&am…...
EventLoop机制
JavaScript 是单线程的语言 JavaScript 是一门单线程执行的编程语言。也就是说,同一时间只能做一件事情。 单线程执行任务队列的问题: 如果前一个任务非常耗时,则后续的任务就不得不一直等待,从而导致程序假死的问题。 同步任…...
倒立摆建模
前言 系统由一辆具有动力的小车和安装在小车上的倒立摆组成,系统是不稳定,我们需要通过控制移动小车使得倒立摆保持平衡。 具体地,考虑二维情形如下图,控制力为水平力FFF,输出为角度θ\thetaθ以及小车的位置xxx。 力…...
SpringSecurity支持WebAuthn认证
WebAuthn是无密码身份验证技术,解决了密码泄露的风险,主流的浏览器都支持。有很多开源的类库实现了WebAuthn规范,Java下流行的类库有:webauthn4jjava-webauthn-serververtx-authSpring Security官方暂时未支持WebAuthn,…...
深度学习技巧应用3-神经网络中的超参数搜索
大家好,我是微学AI,今天给大家带来深度学习技巧应用3-神经网络中的超参数搜索。 在深度学习任务中,一个算法模型的性能往往受到很多超参数的影响。超参数是指在模型训练之前需要我们手动设定的参数,例如:学习率、正则…...
【信号量机制及应用】
水善利万物而不争,处众人之所恶,故几于道💦 目录 一、信号量机制 二、信号量的应用 >利用信号量实现进程互斥 >利用信号量实现前驱关系 >利用记录型信号量实现同步 三、例题 四、参考 一、信号量机制 信号量是操作系统提…...
围棋高手郭广昌的“假眼”棋局
(图片来源于网络,侵删)文丨熔财经作者|易不二2022年,在复星深陷债务压顶和变卖资产漩涡的而立之年,“消失”已久的郭广昌,在质疑与非议声中回国稳定军心,强调复星将在未来的五到十年迎来一个全新…...
学成教育-统一异常处理实现
一、统一异常处理实现 统一在base基础工程实现统一异常处理,各模块依赖了base基础工程都 可以使用。 首先在base基础工程添加需要依赖的包: <dependency><groupId>org.springframework</groupId><artifactId>spring-web</…...
JNI内通过参数形式从C/C++中传递string类型数据至Java层
目录 0 前言 1 string类型参数形式传值 2 测试和结果 0 前言 类似之前我写过的两篇文章:一篇介绍了在JNI中基础类型int的传值方式;一篇详细梳理了在JNI层中多维数组的多种传值方式。 JNI内两种方式从C/C中传递一维、二维、三维数组数据至Java层详细…...
自动化测试——执行javaScript脚本
文章目录一、点击元素(对应的click())二、input标签对应的值(对应的send_keys())修改时间控件的属性值:三、元素的文本属性四、js脚本滚动操作一、点击元素(对应的click()) 使用场景:当使用显性等待不能解决问题时 代码中实现点击…...
常用十种算法滤波
十种算法滤波1. 限幅滤波法(又称程序判断滤波法)2. 中位值滤波法3. 算术平均滤波法4. 递推平均滤波法(又称滑动平均滤波法)5. 中位值平均滤波法(又称防脉冲干扰平均滤波法)6. 限幅平均滤波法7. 一阶滞后滤波…...
IO多路复用
一、概述 IO多路复用:进程同时检查多个文件描述符,以找出他们中的任何一个是否可执行IO操作。 核心:同时检查多个文件描述符,看他们是否准备好了执行IO操作。文件描述符就绪状态的转化是通过一些IO事件来触发。 二、水平触发和…...
Python中的错误是什么,Python中有哪些错误
7.1 错误(errors) 由于Python代码通常是人类编写的,那么无论代码是在解释之前还是运行之后,或多或少总会出现一些问题。 在Python代码解释时遇到的问题称为错误,通常是语法和缩进问题导致的,这些错误会导致代码无法通过解释器的解…...
记录自己开发一款小程序中所遇到的问题(uniapp+uview)(持续更新)
每次开发小程序中,都会遇到各种各样的问题。但是有的问题已经遇到过了,但是遇到的时候还是要各种的问度娘。 特此出这篇文章,方便自己也是方便大家。 仅供参考 1. u-collapse的样式在h5中正常,但是运行到微信小程序中样式就乱了…...
自己怎么做百度网站/深圳网站seo推广
迎接县均衡化国家验收学校解说词办学条件组尊敬的各位专家、各位领导:欢迎莅临我校检查指导工作。我们宁津县第二实验小学始建于1997年,是一所县属非寄宿完全小学。当时只有北面这一座楼,29名教师。2012年秋季扩建,建成南面这座教…...
网站关键词排名/今日热搜榜
折纸王子帮你找折纸图解你好,我是折纸王子,欢迎来到我的公众号。折纸王子教你折纸,讲解详细,演示清楚,容易听懂,一学就会。往期精彩:圣诞节剪纸折纸大全43款万圣节折纸大全专辑 29款折纸张口霸王…...
网站开发合同知识产权/深圳网站seo
charles 校验 验证工具/validate 验证工具Charles可以通过发送到W3C HTML验证器,W3C CSS验证器和W3C Feed验证器来验证记录的响应。 验证报告在Charles中显示,并显示出与响应源中相应行的警告或错误(双击错误消息中的行号可以切换到源视图)。…...
公司让做网站违法/十大技能培训机构排名
Apple在 WWDC 上宣布,将向iOS 14.6、iPadOS 14.6、macOS 11.4 和tvOS 14.6及以上的用户提供空间音频和无损音频。 Apple 表示,在发布时将会提供超过 2000 万首无损质量的歌曲,到 2021 年底,整个 Apple Music 目录中将会提供超过 …...
佛山做网站哪家好/网站批量查询
L2-算法基础-第07课 递推1, 2, 4, 8, 16 …… 数列的下一项是什么? 1, 2, 3, 5, 8 …… 数列的下一项是什么?递推递推就是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果。可用递推算法求解的问题…...
哪种网站/网页自动点击软件
文章目录前言一、方法1.使用TextBox层叠2.同步TextBox位置二、示例1.代码2.显示效果总结1.优点2.缺点前言 我上一篇文章写到了C# wpf textblock文字添加描边的一种方法 ,这里做个补充添加上TextBox用同样方法实现文字描边,但是TextBox和TextBlock还是有…...