代码管理系统简介与部署(Introduction and Deployment of Code Management System)

news2024/11/22 18:42:31
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

代码管理系统简介与部署
技能目标:
- 了解各软件版本控制系统
- 掌握各软件版本控制系统的安装与部署

1.1 案例分析

1.1.1 案例概述

在开发一个项目时,如果只有几十行代码或几百行代码时维护还算简单,但是当代码数
量达到一定程度或两三个人共同开发一个项目时,就很容易会出现代码混乱、冲突、排错难
等问题。当代码编写完成以后发现整个项目运行不了时,提交的代码也无法确认到责任人,
导致维护项目时需要花费数倍的时间。为解决上述问题,版本控制系统应运而生。
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管
理,是软件配置管理的核心思想之一。

1.1.2 案例前置知识点

1. 常见的版本控制系统介绍

Git 是一个开源的分布式版本控制系统,用于有效、高速的处理版本控制,从很小到非
常大的项目都支持。一个原始 Git 版本仓库,可以让其他主机克隆这个原始版本仓库,从而
使得一个 Git 版本仓库可以同时分布到不同的主机上,并且每台主机的版本库都是一样的,
并没有主次之分,极大的保证了数据的安全性,并使得用户能够自主选择 Git 服务器推送文
件。作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念。每一份复制出的
库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
Git Linus Torvalds 为了帮助管理 Linux 内核开发而设计的一个开放源码的版本控制
系统,是作为一种过渡方案用来替代 BitKeeperBitKeeper 一直是 Linux 内核开发人员在
全球使用的主要源代码工具。因为开放源码社区中有些人认为 BitKeeper 的许可证并不适合
开放源码社区的工作,所以 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管
最初研发 Git 的目的是为了辅助 Linux 内核开发,但目前在很多其他自由软件项目中也使用
Git
GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本
库格式进行托管,故名 GitHubGitHub 可以提供给用户空间创建 Git 仓储,保存用户的一
些数据文档或者代码等。GitHub 作为开源代码库以及版本控制系统,目前拥有 140 多万开
发者用户。随着越来越多的应用程序转移到了云上,GitHub 已经成为了管理软件开发以及
发现已有代码的首选方法。GitHub 可以托管各种 Git 库,并提供一个 Web 界面,但与其它
SourceForge Google Code 这样的服务不同,GitHub 的独特卖点在于从另外一个项
目进行分支的简易性。
GitLab 是一个基于 Git 的项目管理软件,用于仓库管理系统的开源项目。使用 Git 作为代
码管理工具,并在此基础上搭建起来 Web 服务。GitGitlabGithub 都是基于 Git 的,可
以说是 Git 的衍生品。
Subversion 英文全称为 Apache Subversion(简称 SVN),是一个开放源代码的版本
控制系统。相较于 RCSCVSSubversion 采用了分支管理系统,其设计目标就是取代
CVS。互联网上很多版本控制服务都是从 CVS 转移到 Subversion 的。

2. Git、Subversion 功能特性

Git 不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性。例如大多数的
分布式版本控制系统只会记录每次文件的变化,它们只关心文件的内容变化差异,而 Git
是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快照,而非仅记录差异内
容,并且使用 SHA-1 加密算法保证数据的完整性。从一般开发者的角度来看,Git 有以下功
能:
克隆数据库版本:从服务器上克隆数据库(包括代码和版本信息)到本机上;
提交代码:在本机自己创建的分支上提交代码;
合并分支:在本机上合并分支;
拉取合并分支:新建一个分支,把服务器上最新版的代码 Fetch 下来,然后跟自己
的主分支合并;
代码冲突解决:一般开发者之间解决冲突的方法是,开发者可以使用 pull 命令拉
取代码,解决冲突,解决完冲突之后再向主开发者提交补丁。
Subversion 属于传统的版本控制系统,以下是 Subversion 功能特性:
统一的版本号:SVN 在任何一次提交时,都会对所有文件增加一个新的版本号,
版本号相同的文件才能构成一个项目软件版本;
原子提交:一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当
中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏;
版本记录:重命名、复制、删除文件等动作都保存在版本历史记录当中。对于二进
制文件,使用了节省空间的保存方法(简单的理解,就是只保存和上一版本不同之
处)。当目录也有版本历史或者整个目录被移动或者复制,能够保留全部版本记录;
开销:分支的开销非常小;
元数据管理:每个目录或文件都可以定义属性(Property),它是一些隐藏的键值
对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内;
格式支持:支持 FSFS Berkeley DB 两种资料库格式。

1.1.3 案例环境

1. 本案例环境

本案例环境如表 1-1 所示。
1-1 代码版本控制系统环境
主机操作系统主机名/IP 地址 主要软件及版本
服务器CentOS 7.3-x86_64master/192.168.9.246Git Gitlab SVN
客户端CentOS 7.3-x86_64client/192.168.9.247Git

2. 案例需求

安装部署 GitGitlabSVN 等几种常见的代码管理控制系统。

3. 案例实现思路

1)准备案例实现环境。
2)部署 Git 版本控制系统。
3)部署 Gitlab 版本控制系统。
4)部署 Subversion 版本控制系统。

1.2 案例实施1.2.1 部署 Git 服务器

1. 系统环境准备

//两台服务器均执行如下命令
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
[root@master ~]# systemctl stop NetworkManager
[root@master ~]# systemctl disable NetworkManager
[root@master ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
[root@master ~]# setenforce 0

2. 使用 YUM 安装 Git

[root@master ~]# yum install -y git //两台服务器都需要安装

创建 Git 版本仓库,一般要以.git 为后缀。
[root@master ~]# mkdir linuxprobe.git
[root@master ~]# useradd git
[root@master ~]# passwd git
更改用户 git 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@master ~]# chown -Rf git:git linuxprobe.git
初始化 Git 版本仓库。
[root@master ~]# cd linuxprobe.git
[root@master linuxprobe.git]# git --bare init
初始化空的 Git 版本库于 /root/linuxprobe.git/
此时,Git 服务器已经部署好,但用户还不能向服务器推送数据,也不能克隆 Git 版本
仓库。要想实现上述功能,需要在服务器上开放至少一种支持 Git 的协议,比如:
HTTP/HTTPS/SSH 等。现在使用最多的就是 HTTPS SSH,本案例中使用 SSH 协议。
切换至 Git 客户机来生成 SSH 密钥。
[root@client ~]# ssh-keygen
//一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f3:35:60:41:6a:ef:85:da:fe:b2:39:f7:50:14:47:21 root@client
The key's randomart image is:
+--[ RSA 2048]----+
|
.o E.o+|
|
. . .o |
|
o o
. |
|
. o o .
|
|
S o + . |
|
* o o
|
|
. + .
|
|
.o...
|
|
+*... |
+-----------------+
[root@client ~]# ssh-copy-id 192.168.9.246 //将客户机的公钥传递给 Git 服务器
The authenticity of host '192.168.9.246 (192.168.9.246)' can't be established.
ECDSA key fingerprint is ca:0f:4c:c3:f5:2a:8e:30:94:77:b1:44:00:8e:84:fd.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already
installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install
the new keys
root@192.168.9.246's password:
Number of key(s) added: 1
Now try logging into the machine, with:
"ssh '192.168.9.246'"
and check to make sure that only the key(s) you wanted were added.
这样,可以从 Git 服务器中克隆版本仓库(此时目录内没有文件是正常的)。
[root@client ~]# git clone root@192.168.9.246:/root/linuxprobe.git
正克隆到 'linuxprobe'...
warning: 您似乎克隆了一个空版本库。
配置用户名称和电子邮件地址。每次 Git 提交时都会引用这两条信息,记录提交了文
件的用户,并且会随更新内容一起被永久纳入历史记录。
[root@client ~]# git config --global user.name "Zhan San"
[root@client ~]# git config --global user.email root@linuxprobe.com
设置 vim 为默认的文本编辑器。
[root@client ~]# git config --global core.editor vim查看 Git 工作环境信息。
[root@client ~]# git config --list
user.name=Zhan San
user.email=root@linuxprobe.com
core.editor=vim
Git 只能追踪类似于 txt 文件、网页、程序源码等文本文件内容的变化,下面模拟代码
提交过程。
[root@client ~]# cd linuxprobe /
[root@client linuxprobe]# echo "Initialization Git repository" > readme.txt
将该文件添加到暂存区。
[root@client linuxprobe]# git add readme.txt
添加到暂存区后再次修改文件的内容。
[root@client linuxprobe]# echo "Something not important" >> readme.txt
将暂存区的文件提交到 Git 版本仓库,命令格式为:git commit -m "提交说明"
[root@client linuxprobe]# git commit -m "add the readme file"
[master(根提交) c7824b8] add the readme file
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
查看当前工作目录的状态。
[root@client linuxprobe]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
#
(使用 "git add <file>..." 更新要提交的内容)
#
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#
修改:
readme.txt
#
修改尚未加入提交(使用 "git add" /"git commit -a"
(1)第一次修改提交代码:git 将代码文件提交到本地 Git 版本数据库,此时会在暂存
区生产一个快照版本;
(2)第二次修改提交代码:当再次修改代码时,需要重新提交代码文件到暂存区,此
时还会生产一个快照版本;
(3)提交代码:只有将暂存区的代码文件提交到 Git 版本数据库才能算真正提交。查看当前文件内容与 Git 版本数据库中的差别。
[root@client linuxprobe]# git diff readme.txt
diff --git a/readme.txt b/readme.txt
index cb06697..33d16d0 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
Initialization Git repository
+Something not important
把文件提交到 Git 版本数据库。
[root@client linuxprobe]# git add readme.txt
[root@client linuxprobe]# git commit -m "added a line of words"
[master ebc5069] added a line of words
1 file changed, 1 insertion(+)
再次查看下当前 Git 版本仓库的状态。
[root@client linuxprobe]# git status
# 位于分支 master
无文件要提交,干净的工作区
本次操作还是只将文件提交到了本地的 Git 版本仓库,并没有推送到远程 Git 服务器,
所以需要定义远程的 Git 服务器。
[root@client linuxprobe]# git remote add server root@192.168.9.246:/root/linuxprobe.git
将文件提交到远程 Git 服务器。
[root@client linuxprobe]# git push -u server master
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 521 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To root@192.168.9.246:/root/linuxprobe.git
* [new branch]
master -> master
分支 master 设置为跟踪来自 server 的远程分支 master
为了验证文件是否推送到远程的 Git 服务,可以换个目录再次克隆一份版本仓库。
[root@client linuxprobe]# mkdir test
[root@client linuxprobe]# cd test/
[root@client test]# git clone root@192.168.9.246:/root/linuxprobe.git
正克隆到 'linuxprobe'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
接收对象中: 100% (6/6), done.
[root@client test]# cd linuxprobe/
[root@client linuxprobe]# cat readme.txt //查看该文件是否存在,存在说明克隆成功
Initialization Git repository
Something not important
1.2.2 部署 GitLab 服务器
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基
础上搭建 Web 服务。建议:服务器内存 4G 以上。
[root@master ~]# vim /etc/yum.repos.d/gitlab-ce.repo
//添加 GitLab
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
[root@master ~]# yum makecache
[root@master ~]# yum install -y gitlab-ce
[root@master ~]# gitlab-ctl reconfigure //加载配置文件并启动,前提是 80 端口没有被占用
Starting Chef Client, version 13.6.4
resolving cookbooks for run list: ["gitlab"]
Synchronizing Cookbooks:
- postgresql (0.1.0)
......
//省略部分内容
Running handlers:
Running handlers complete
Chef Client finished, 428/613 resources updated in 07 minutes 49 seconds
gitlab Reconfigured!
[root@master ~]# lsof -i:80
COMMAND
PID
USER
FD
TYPE DEVICE SIZE/OFF NODE NAME
nginx
44551
root
7u IPv4 79911
0t0 TCP *:http (LISTEN)
nginx
44552 gitlab-www
7u IPv4 79911
0t0 TCP *:http (LISTEN)
gitlab-ctl 其他命令。
启动:gitlib-ctl start
关闭:gitlab-ctl stop
重启:gitlab-ctl restart
重载配置:gitlab-ctl reconfigure
查看状态:gitlab-ctl status
GitLab 配置文件路径为/etc/gitlab/gitlab.rb,生产环境下可以根据实际需求修改配置,
本章采用默认配置不做修改。
在浏览器中输入 http://服务器 IP 地址,访问 GitLab,如图 1.1 所示。
1.1 Gitlab 登录密码设置页
设置完密码后,使用 root 用户进行登录,如图 1.2 所示。
1.2 root 用户登录登录成功后,便可进入 GitLab 首页,如图 1.3 所示。
1.3 Gitlab 登录首页
点击图 1.3 中的“Create project” 按钮,创建如图 1.4 所示的新项目 kgc-demo
1.4 创建 kgc-demo 项目
在项目创建完成界面中点击“Add Readme”,并在 Readme 文件中添加“It's kgc-demo!”
字段,如图 1.5 所示。
1.5 添加 Readme 文件
在客户机验证。
[root@client ~]# git clone http://192.168.9.246/root/kgc-demo.git
正克隆到 'kgc-demo'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
[root@client ~]# cat kgc-demo/README.md
It's kgc-demo!
1.2.3 部署安装 Subversion
[root@master ~]# yum -y install subversion
//client 也执行此命令,安装 SVN 客户端命令
[root@master ~]# mkdir -p /kgc/svn
[root@master ~]# svnadmin create /kgc/svn
[root@master ~]# cd /kgc/svn/conf
[root@master ~]# vim passwd
kgc-test=123.com
[root@master ~]# vim authz
[/]
kgc-test=rw
修改 svnserve.conf 配置文件。
[root@master conf]# vim svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = /kgc/svn
[sasl]
[root@master conf]# svnserve -d -r /kgc/svn
//启动 SVN 即可完成部署
在客户机使用 svn list 命令查看分支。执行 svn list 命令时要求先输入系统密码,再输
SVN 授权的用户名和密码即可查看 SVN 所有分支。
[root@client ~]# svn list svn://192.168.9.246
认证领域: <svn://192.168.9.246:3690> /kgc/svn
“root”的密码:
认证领域: <svn://192.168.9.246:3690> /kgc/svn
用户名: kgc-test
“kgc-test”的密码:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
注意! 你的密码,对于认证域:
<svn://192.168.9.246:3690> /kgc/svn
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”“yes”“no”
来避免再次出现此警告。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
保存未加密的密码(yes/no)?yes
在客户端提交代码文件,过程如下所示。
[root@client ~]# svn checkout svn://192.168.9.246
[root@client ~]# mkdir svndemo
[root@client ~]# svn add svndemo
A
svndemo
[root@client ~]# svn commit -m "add svn demo"
正在增加
svndemo
提交后的版本为 1
[root@client ~]# svn list svn://192.168.9.246
svndemo/
[root@client ~]# cd svndemo
[root@client svndemo]# echo "svn test" > test.txt
[root@client svndemo]# svn add test.txt
A
test.txt
[root@client svndemo]# svn commit -m "add txt file."
正在增加
test.txt
传输文件数据.
提交后的版本为 2
[root@client svndemo]# svn list svn://192.168.9.246/svndemo
test.txt至此,SVN 部署完成。

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

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

相关文章

TCP.IP四层模型

一、TCP/IP模型协议分层 1、应用层&#xff1a; 2、传输层&#xff1a; TCP&#xff1a;传输控制协议 UDP&#xff1a;用户数据报协议 3、网络层&#xff1a; IP: 国际协议&#xff08;IP地址&#xff09; ICMP&#xff1a; 互联网控制消息协议&#xff08;互联网…

dedecms(四种webshell姿势)、aspcms webshell漏洞复现

一、aspcms webshell 1、登陆后台&#xff0c;在扩展功能的幻灯片设置模块&#xff0c;点击保存进行抓包查看 2、在slideTextStatus写入asp一句话木马 1%25><%25Eval(Request(chr(65)))%25><%25 密码是a&#xff0c;放行&#xff0c;修改成功 3、使用菜刀工具连…

【Python笔记】PyCharm大模型项目环境配置

一、PyCharm创建新项目 二、更新pip版本 ...>python.exe -m pip install --upgrade pip 三、生成所需requirements配置文件 ...>pip freeze > requirements.txt 四、安装所需组件requirements.txt ...>pip install -r requirements.txt

算法入门-贪心1

第八部分&#xff1a;贪心 409.最长回文串&#xff08;简单&#xff09; 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回通过这些字母构造成的最长的回文串 的长度。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串…

Linux下文件下载中文乱码问题

最近做的一个项目中&#xff0c;本地打包到线上后&#xff0c;发现生成的文件中出现中文乱码&#xff0c;但在本地运行正常。经排查&#xff0c;文件输入输出流都指定了utf-8的编码格式&#xff0c;IDE的File Encodings也都是utf-8&#xff0c;Linux编码格式也是utf-8&#xff…

JS基础之【对象详解 -- 对象的属性与方法、遍历对象与内置对象】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…

【数据结构与算法 | 灵神题单 | 自顶向下DFS篇】力扣1022,623

1. 力扣1022&#xff1a;从根到叶的二进制之和 1.1 题目&#xff1a; 给出一棵二叉树&#xff0c;其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。 例如&#xff0c;如果路径为 0 -> 1 -> 1 -> 0 -> 1&#xff0c;那…

如何在kotlin中给空字符串(””)和null值设置默认值问题?

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。 &#x1f60a; 座右铭&#xff1a;不…

句子成分——每日一划(九)

人民英雄&#xff0c;永垂不朽&#xff01; 目录 一、原句 二、主语 三、谓语 四、介词短语 一、原句 Eternal glory to the heroes of the people who from 1840 laid down their lives in the many struggles against domestic and foreign enemies and for national i…

关于安卓App自动化的一些想法

安卓App自动化一般使用PythonAppium。页面元素通常是使用AndroidStudio中的UI Automator Viewer工具来进行页面元素的追踪。但是这里涉及到一个问题就是&#xff0c;安卓apk在每次打包的时候&#xff0c;会进行页面的混淆以及加固&#xff0c;所以导致每次apk打包之后会出现页面…

C++ | Leetcode C++题解之第407题接雨水II

题目&#xff1a; 题解&#xff1a; class Solution { public:int trapRainWater(vector<vector<int>>& heightMap) {int m heightMap.size(), n heightMap[0].size();int maxHeight 0;int dirs[] {-1, 0, 1, 0, -1};for (int i 0; i < m; i) {maxHei…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(2)---置顶和取消置顶(含示例代码)

一、预览 获取winform的置顶参数,和设置置顶参数 1.1 置顶(默认不置顶) 1.2 示例代码

VSCode C++ Tasks.json中的变量

前言 上文介绍了在VSCode中创建C项目和编译多文件的情况。本文将介绍Tasks.json中一些变量的含义&#xff1b; 内容 tasks.json文件 下文参考VSCode文档&#xff1a;Visual Studio Code 变量参考 预定义标量 ${userHome} - 用户主文件夹的路径${workspaceFolder} - 在 VS Co…

[产品管理-22]:NPDP新产品开发 - 20 - 产品设计与开发工具 - 开发、制造、装配阶段

目录 前言&#xff1a; 一、原型法 - 开发阶段首先开发原型 1.1 概述 1、定义 2、目的 3、类型 4、开发过程 5、优点与缺点 优点 缺点 6、应用实例 1.2 开发阶段 1. Alpha 原型阶段 - 实验室验证 2. Beta 原型阶段 - 客户现场验证 3. 试生产原型阶段 4. 虚拟原…

【机器学习】多模态AI——融合多种数据源的智能系统

随着人工智能的快速发展&#xff0c;单一模态&#xff08;如文本、图像或语音&#xff09;已经不能满足复杂任务的需求。多模态AI&#xff08;Multimodal AI&#xff09;通过结合多种数据源&#xff08;如文本、图像、音频等&#xff09;来提升模型的智能和表现&#xff0c;适用…

【Spring框架精讲】进阶指南:企业级Java应用的核心框架(Spring5)

文章目录 【Spring框架精讲】进阶指南&#xff1a;企业级Java应用的核心框架(Spring5)1.Spring框架快速入门1.1七大核心模块1.1.1 Spring Core1.1.2 Spring-Beans1.1.3 Spring Context1.1.4 Spring-Expression1.1.5 Spring AOP1.1.6 JDBC和DAO模块&#xff08;Spring DAO&#…

Python酷库之旅-第三方库Pandas(120)

目录 一、用法精讲 531、pandas.DataFrame.reindex_like方法 531-1、语法 531-2、参数 531-3、功能 531-4、返回值 531-5、说明 531-6、用法 531-6-1、数据准备 531-6-2、代码示例 531-6-3、结果输出 532、pandas.DataFrame.rename方法 532-1、语法 532-2、参数 …

用Python实现时间序列模型实战——Day 23: LSTM 与 RNN 模型的深入学习

一、学习内容 1. 深入理解 LSTM 和 RNN 模型的工作原理 LSTM 和 RNN 模型都擅长处理时间序列数据&#xff0c;但它们在处理长序列时遇到了一些问题&#xff0c;比如 梯度消失 和 梯度爆炸。LSTM 通过 门控机制 改进了传统 RNN 的缺陷&#xff0c;但在处理非常长的序列时仍可能…

Java浅,深拷贝;内,外部类的学习了解

目录 浅拷贝 深拷贝 内部类 匿名内部类 实例内部类 静态内部类 外部类 浅拷贝 简单理解&#xff1a;定义了A&#xff0c;A里面有age和num&#xff0c;拷贝成为B&#xff0c;B里面有age和num package demo1浅克隆和深克隆;//interfaces 是定义了一个接口//implements是使…

火语言RPA流程组件介绍--浏览器页面操作

&#x1f6a9;【组件功能】&#xff1a;浏览器页面前进&#xff0c;后退&#xff0c;刷新及停止等操作 配置预览 配置说明 丨操作类型 后退/前进/刷新 丨超时时间 支持T或# 输入仅支持整型 页面操作超时时间 丨执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待…