当前位置: 首页 > news >正文

CI/CD持续集成和持续部署以及相关软件的使用

目录

一:CI/CD是什么?

1.1 持续集成(Continuous Integration)

1.2 持续部署(Continuous Deployment)

1.3 持续交付(Continuous Delivery)

CI/CD 的好处包括:

二:git工具

git简介

git工作流程

三:部署git

四:gitlab的部署搭建

gitlab简介

部署gitlab

配置gitlab

添加密钥

​编辑jenkins

部署jenkins

删除jenkins

jenkins和gitlab的整合方法


一:CI/CD是什么?

CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)

1.1 持续集成(Continuous Integration)

持续集成是一种软件开发实践,团队成员频繁地将他们的工作集成到共享的代码仓库中。其主要特点包括:

  1. 频繁提交代码:开发人员可以每天多次提交代码,确保代码库始终保持最新状态。

  2. 自动化构建:每次提交后,自动触发构建过程,包括编译、测试、静态分析等。

  3. 快速反馈:如果构建失败或测试不通过,能够快速地向开发人员提供反馈,以便及时修复问题。

1.2 持续部署(Continuous Deployment)

持续部署是在持续集成的基础上,将通过所有测试的代码自动部署到生产环境中。其特点如下:

  1. 自动化流程:从代码提交到生产环境的部署完全自动化,无需人工干预。

  2. 高频率部署:可以实现频繁的部署,使得新功能能够快速地提供给用户。

  3. 风险控制:需要有强大的测试和监控体系来确保部署的稳定性和可靠性。

1.3 持续交付(Continuous Delivery)

持续交付与持续部署类似,但不一定自动部署到生产环境,而是随时可以部署。其重点在于确保软件随时处于可发布状态。

CI/CD 的好处包括:

  1. 提高开发效率:减少手动操作和等待时间,加快开发周期。

  2. 尽早发现问题:通过频繁的集成和测试,问题能够在早期被发现和解决。

  3. 降低风险:减少了大规模部署时可能出现的问题,提高了软件的质量和稳定性。

  4. 增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。

常见的 CI/CD 工具包括 Jenkins、GitLab CI/CD、Travis CI 等。这些工具可以帮助团队实现自动化的构建、测试和部署流程。

CI/CD 的好处包括:

  • 1.提高开发效率:减少手动操作和等待时间,加快开发周期。

  • 2.尽早发现问题:通过频繁的集成和测试,问题能够在早期被发现和解决。

  • 3.降低风险:减少了大规模部署时可能出现的问题,提高了软件的质量和稳定性。

  • 4.增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。

常见的 CI/CD 工具包括Jenkins、GitLab 、CI/CD、Travis Cl等。这些工具可以帮助团队实现自动化的构建、测试和部署流程。

二:git工具

git简介

Git 是一个分布式版本控制系统,被广泛用于软件开发中,以管理代码的版本和变更。 主要特点:

  • 分布式

    • 每个开发者都有完整的代码仓库副本,这使得开发者可以在离线状态下进行工作,并且在网络出现问题时也不会影响开发。

    • 即使中央服务器出现故障,开发者仍然可以在本地进行开发和查看项目历史。

  • 高效的分支管理

    • Git 中的分支创建和切换非常快速和简单。开发人员可以轻松地创建新的分支来进行新功能的开发或修复 bug,而不会影响主分支。

    • 合并分支也相对容易,可以使用多种合并策略来满足不同的需求,

  • 快速的版本回退

    • 如果发现某个版本存在问题,可以快速回退到之前的版本

    • 可以查看每个版本的详细变更记录,方便了解代码的演进过程。

  • 强大的提交管理

    • 每个提交都有一个唯一的标识符,可以方便地引用和查看特定的提交。

    • 提交可以包含详细的提交信息,描述本次提交的更改内容。

  • 支持协作开发

    • 开发者可以将自己的更改推送到远程仓库,供其他开发者拉取和合并。

    • 可以处理多个开发者同时对同一文件进行修改的情况,通过合并冲突解决机制来确保代码的完整性。

Git必看秘籍:https://git-scm.com/book/zh/v2

git工作流程

工作区---->暂存区---->代码库

每一步都可以撤销

Git 有三种状态:已提交(committed)、已修改(modified)和已暂存(staged)

  • 已修改表示修改了文件,但还没保存到数据库中。

  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

三:部署git

#rhel9自带,直接下载
[root@gitlab ~]# dnf install git -y
[root@gitlab ~]# mkdir example
[root@gitlab ~]# cd example/#初始化命令
[root@gitlab example]# git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
Initialized empty Git repository in /root/example/.git/#在 Git 中全局设置你的电子邮件地址的。这里的“全局”意味着这个设置会应用于你机器上所有的 Git 仓库,直到你更改它为止。
#git config:这是 Git 中用来配置 Git 设置的命令。通过它可以设置各种 Git 相关的参数,比如用户信息、仓库的默认行为等。
#--global:这个选项指定了接下来的设置应该被应用到全局配置文件中,而不是当前仓库的配置文件。全局配置文件通常位于你的用户主目录下的 
#user.email:这是你想要设置的配置项的名称。Git 使用这个配置项来记录你的电子邮件地址,这个地址会出现在你提交(commit)到仓库的每一次更改的记录中。这对于多人协作的项目非常有用,因为它帮助识别是谁做了哪些更改。
[root@gitlab example]# git config --global user.email "lee@example.org"#不要随便修改这个隐藏文件
[root@gitlab example]# ls -a
.  ..  .git
[root@gitlab example]# ls .git/
branches  config  description  HEAD  hooks  info  objects  refs#在工作区域开始工作
[root@gitlab example]# echo example > README.md
[root@gitlab example]# git status 
On branch masterNo commits yet               #没有需要提交的东西Untracked files:(use "git add <file>..." to include in what will be committed)README.mdnothing added to commit but untracked files present (use "git add" to track)# ??表示这个项目库里没有这个项目
[root@gitlab example]# git status -s
?? README.md
#添加这个项目
[root@gitlab example]# git add README.md 
#查看状态  左A:添加到暂存区  右A
[root@gitlab example]# git status -s
A  README.md#git commit表示把代码提交到代码库    -m表示说明
[root@gitlab example]# git commit -m "add README.md"
[master (root-commit) 0e71d1c] add README.md1 file changed, 1 insertion(+)create mode 100644 README.md#没有信息,表示提交成功
[root@gitlab example]# git status -s#修改代码
[root@gitlab example]# echo >> README.md
#查看状态   右A:修改但是没有提交
[root@gitlab example]# git status -sM README.md
[root@gitlab example]# git add README.md
#左A:提交到暂存区
[root@gitlab example]# git status -s
M  README.md
#提交 备注v2
[root@gitlab example]# git commit -m "README.md v2"
[master 23525ab] README.md v21 file changed, 2 insertions(+)#没有信息,表示提交成功
[root@gitlab example]# git status -s

撤销 工作区 内容 checkout

[root@gitlab example]# vim README.md 
[root@gitlab example]# git status -sM README.md#撤销这次工作内容的修改
[root@gitlab example]# git checkout -- README.md
[root@gitlab example]# cat README.md 
example

撤回 暂存区 内容 git restore --staged

[root@gitlab example]# echo example >> README.md 
[root@gitlab example]# git add README.md 
[root@gitlab example]# git status -s
M  README.md[root@gitlab example]# git restore --staged README.md 
[root@gitlab example]# git status -sM README.md
[root@gitlab example]# 
[root@gitlab example]# git add README.md 
[root@gitlab example]# git status -s
M  README.md

版本回溯

[root@gitlab example]# git rm -f  README.md 
rm 'README.md'
[root@gitlab example]# git status -s
D  README.md
[root@gitlab example]# git commit -m "delete README.md"
[master 4250726] delete README.md1 file changed, 3 deletions(-)delete mode 100644 README.md#查看日志
[root@gitlab example]# git log
commit 4250726ca77c7bfc24028491b2da511936c15cd1 (HEAD -> master)
Author: root <lee@example.org>
Date:   Fri Sep 13 09:57:03 2024 +0800delete README.mdcommit 23525ab2207ff7942a7e183736d086b70861e725
Author: root <lee@example.org>
Date:   Fri Sep 13 00:54:08 2024 +0800README.md v2commit 0e71d1ca06d09728360d1f5a96ee0b21f5cda5a6
Author: root <lee@example.org>
Date:   Thu Sep 12 11:29:20 2024 +0800add README.md#显示历史记录
[root@gitlab example]# git reflog
4250726 (HEAD -> master) HEAD@{0}: commit: delete README.md
23525ab HEAD@{1}: commit: README.md v2
0e71d1c HEAD@{2}: commit (initial): add README.md#回溯历史版本,用于将当前分支的 HEAD 指针重置到指定状态,同时重置暂存区和工作目录以匹配该状态。
[root@gitlab example]# git reset --hard 23525ab
HEAD is now at 23525ab README.md v2
[root@gitlab example]# ls
README.md

编译文件

[root@gitlab example]# cd /mnt
[root@gitlab mnt]# vim hello.c
#include<stdio.h>
main()
{print("hello example\n");
}
[root@gitlab mnt]# dnf install gcc -y#编译文件
[root@gitlab mnt]# gcc hello.c -o hello
hello.c:2:1: warning: return type defaults to ‘int’ [-Wimplicit-int]2 | main()| ^~~~
[root@gitlab mnt]# ./hello
hello example

git对文件如何忽略

[root@gitlab mnt]# cd /root/example/
[root@gitlab example]# ls
README.md
[root@gitlab example]# touch .lee
[root@gitlab example]# ls
README.md
[root@gitlab example]# mkdir lee
[root@gitlab example]# touch lee/.lee
[root@gitlab example]# ls
lee  README.md
[root@gitlab example]# git status -s
?? .lee
?? lee/
[root@gitlab example]# ls
lee  README.md#开始编写忽略文件
[root@gitlab example]# vim .gitignore
.*
#没有了
[root@gitlab example]# git status -s

四:gitlab的部署搭建

gitlab简介

  • Gitlab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。

  • GitLab 具有很多功能,比如代码托管、持续集成和持续部署(CI/CD)、问题跟踪、合并请求管理等。它可以帮助开发团队更好地协作开发软件项目,提高开发效率和代码质量。

官网:https://about.gitlab.com/install/ 中文站点:GitLab下载安装_GitLab安装和配置_GitLab最新中文官网免费版下载-极狐GitLab 官方包地址:gitlab/gitlab-ce - Packages · packages.gitlab.com

部署gitlab

[root@gitlab ~]# yum install curl policycoreutils-python-utils openssh-server perl -y
[root@gitlab ~]# dnf instal1 gitlab-ce-17.1.6-ce.0.e19.x86_64.rpm -y

配置gitlab

[root@gitlab ~]# cd /etc/gitlab/
#修改一下,不做解析
[root@gitlab gitlab]# vim gitlab.rb 
external_url 'http://172.25.254.80'#修改配置文件后需利用gitlab-crt来生效
#执行命令成功后会把所有组件全部启动起来
[root@gitlab ~]# gitlab-ctl reconfigure#查看密码
[root@gitlab gitlab]# cat initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: p1FAEMCwl8xBElqh43cqJpwpfHHwl6DfCEkbKqzfCj0=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
#添加key
[root@gitlab ~]# ssh-keygen#查看密钥
[root@gitlab ~]# cd .ssh/
[root@gitlab .ssh]# ls
id_rsa  id_rsa.pub  known_hosts  known_hosts.old
[root@gitlab .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCrlTBBQW1QOipFBrAbsF5fek1hYM1xetMMln4tWVOtOeAY2lvd1HEwfbjBE4e8DACyC14Soowl4djs42TvelxYyiwyOkkB5uTtIhZxmju9hsj8e1fHOrbIgQ5l5cy8M2YCgBnWEAYYyDuf11t3aWYvdr4rM13lyMR9TeH51lI1ls5iI3Q9l/TfV9h4NvOolpDvxBPeRTVg6bvj0ukqn0lOiKtZ5jgCqsU4Tf6xIc2p+JKEt2xVltSpAJsFTFXFjba4aX/7W4vMbIdX6Yn+nBYnWRtho+7FG2AneCGQVtkyfadEDqJxnGcXXWO8ElZ2rzlimD9HSNJqz1MQDjyBKbAeqM1FNbzSIU+WhuDs4YuDnf0ahXrXgaYoD/RxrQLxNaFh1oD5ECR1YkZu3GKE2FXC5R+DXQOKjK8ti5T7OYGCKw813GE/29xdoffWMFJgRsw9z4NS8skZ+QDVRq3HkfJ3Hu7MlwMHSlaeezS5r6e2udVbyhzAfzWCvunYv7BYKOM= root@gitlab.example.org

添加密钥

#克隆
[root@gitlab ~]# git clone git@172.25.254.80:root/example.git
Cloning into 'example'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
[root@gitlab ~]# 

#添加文件
[root@gitlab ~]# cd example/
[root@gitlab example]# ls
README.md
[root@gitlab example]# echo example > example
[root@gitlab example]# ls
example  README.md
[root@gitlab example]# git add example 
[root@gitlab example]# git commit -m "add example"
[main 3667b4d] add example1 file changed, 1 insertion(+)create mode 100644 example
[root@gitlab example]# git push -u origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 172.25.254.80:root/example.git7a85c1b..3667b4d  main -> main
branch 'main' set up to track 'origin/main'.
​

jenkins

部署jenkins

[root@jenkins ~]# cat /etc/hosts
172.25.254.90   jenkins.example.org
172.25.254.80   gitlab.example.org
​
#安装依赖包
[root@jenkins ~]# yum install fontconfig java-17-openjdk git -y#安装软件 
[root@jenkins ~]# dnf install jenkins-2.462.2-1.1.noarch.rpm 
​
#启动jenkins
[root@jenkins ~]# systemctl enable --now jenkins.service 
​
#查看原始密码
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

删除jenkins

[root@jenkins ~]# systemctl stop jenkins.service 
[root@jenkins ~]# rm -rf /var/lib/jenkins/*
[root@jenkins ~]# systemctl start jenkins.service 

jenkins和gitlab的整合方法

大致思路:

在jenkins里面新建一个项目,然后复制git仓库的地址

在jenkins主机里面创建密钥,添加到gitlab里面

在jenkins添加密钥凭据,把本机的sshd的私钥加入 id_isa

#依旧存在报错:地址解析  以及ssh首次链接主机需要签名认证,手动输入yes
[root@jenkins ~]# vim /etc/ssh/ssh_config
Host *StrictHostKeyChecking no

相关文章:

CI/CD持续集成和持续部署以及相关软件的使用

目录 一&#xff1a;CI/CD是什么&#xff1f; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 1.2 持续部署&#xff08;Continuous Deployment&#xff09; 1.3 持续交付&#xff08;Continuous Delivery&#xff09; CI/CD 的好处包括: 二&#xff1a;git…...

Charles mac电脑配置

安装 Charles&#xff1a; 如果你还没有安装 Charles&#xff0c;可以从官方网站下载安装包并按照提示完成安装。 启动 Charles&#xff1a; 安装完成后&#xff0c;启动 Charles 应用程序。 设置 Charles 代理&#xff1a; Charles 默认的代理端口是 8888。你可以通过以下步…...

FPGA基本结构和简单原理

前言&#xff1a; FPGA全程为&#xff08;Field Programmable Gate Array&#xff09;现场可编程逻辑阵列&#xff0c;以基本的逻辑为主可以实现大多数芯片可以实现的功能&#xff0c;比如说&#xff1a;ASIC芯片等&#xff0c;在半导体领域有着重要的作用。 本文…...

【machine learning-七-线性回归之成本函数】

监督学习之cost function 成本函数权重、偏置如何实现拟合数据成本函数是如何寻找出来w和b&#xff0c;使成本函数值最小化&#xff1f; 在线性回归中&#xff0c;我们说到评估模型训练中好坏的一个方法&#xff0c;是用成本函数来衡量&#xff0c;下面来详细介绍一下 成本函数…...

Stable Diffusion Fooocus批量绘图脚本

当当当挡~&#xff0c;流动传热数值计算之余发布点AIGC相关文章&#xff0c;希望大家能喜欢~ 1 Stable Diffusion各种UI分析对比 提示&#xff1a;此部分主要是对SD各种界面的简要介绍和对比&#xff0c;只关注Fooocus批量绘图的读者可直接跳到第二部分。 Stable Diffusion …...

Web 安全基础教程:从零基础入门到精通

一、Web 安全概述 &#xff08;一&#xff09;Web 安全的定义与重要性 1.定义 Web 安全是指保护 Web 应用程序免受各种网络威胁&#xff0c;确保 Web 服务的保密性、完整性和可用性。在当今数字化时代&#xff0c;Web 应用广泛存在于各个领域&#xff0c;从电子商务到社交媒…...

ubuntu 20.04 ‘Wired Unmanaged‘ 网络无法配置解决方法

问题描述 系统&#xff1a;ubuntu20.04连上网线后右上角没有有线网络连接的图标&#xff0c;在网络配置界面也只有VPN和无线网络的配置;实际上此时电脑已经连接网络&#xff0c;通过DHCP获得IP地址可以正常访问网络。 解决办法 ubuntu有有两套网络管理软件&#xff1a;serve…...

前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)

图形验证码是网站安全防护的重要组成部分&#xff0c;能有效防止自动化脚本进行恶意操作&#xff0c;如何实现一个简单的运算图形验证码&#xff1f;本文封装了一个简单的js类&#xff0c;可以用于生成简单但安全的图形验证码。它支持自定义验证码样式&#xff0c;包括字体大小…...

SQL Server 语句日期格式查找方法

1. SQL Server中&#xff0c;处理日期格式和查找特定日期格式方法示例 在SQL Server中&#xff0c;处理日期格式和查找特定日期格式的记录是一个常见的需求。SQL Server提供了多种函数和格式选项来处理和比较日期。以下是一个详细的示例&#xff0c;展示了如何根据特定日期格式…...

【Python报错已解决】python setup.py bdist_wheel did not run successfully.

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

查询结果是1条记录,但执行更新却是2条记录原因查找

1、问题 在 sqlserver2008 数据库 select * from userinfo WHERE username SP4267ED2409011; 查询结果是1条记录&#xff0c;但执行更新 UPDATE userinfo SET qt qt 2.0 WHERE username SP4267ED2409011; 结果是这样的 Affected rows: 1 Affected rows: 1 返回了2个&#x…...

校园网站的管理与建设心得体会

随着时代发展的需要&#xff0c;学校网站建设如雨后春笋般的涌现出来。在这股大潮的带动下我校校园网网站建设也逐步开展深入。通过数年的发展&#xff0c;我校的校园网建设取得了长足发展&#xff0c;架构了数字化交流平台&#xff0c;整理了专题学习网站资源&#xff0c;开设…...

智慧农业——InsectMamba利用状态空间模型对害虫进行分类

介绍 论文地址&#xff1a;https://arxiv.org/abs/2404.03611 害虫分类是农业中的一个重要问题。准确识别有害害虫可减少对作物的损害&#xff0c;确保粮食安全和环境的可持续发展。然而&#xff0c;害虫及其自然环境的高度拟态性和物种多样性使得视觉特征的提取极具挑战性。…...

基于机器学习的癌症数据分析与预测系统实现,有三种算法,bootstrap前端+flask

研究背景 癌症作为全球范围内最主要的死亡原因之一&#xff0c;已成为当代医学研究和公共健康的重大挑战。据世界卫生组织&#xff08;WHO&#xff09;的统计&#xff0c;癌症每年导致全球数百万人的死亡。随着人口老龄化、环境污染和生活方式的改变&#xff0c;癌症的发病率逐…...

docker|Oracle数据库|docker快速部署Oracle11g和数据库的持久化(可用于生产环境)

一、 容器数据持久化的概念 docker做为容器化的领先技术&#xff0c;现在广泛应用于各个平台中&#xff0c;但不知道什么时候有一个说法是docker并不适用容器化数据库&#xff0c;说容器化的数据库性能不稳定&#xff0c;其实&#xff0c;这个说法主要是因为对docker的数据持…...

uni-app 聊天界面滚动到消息底部

目录 问题 组件 页面 使用的API 总结 问题 当你发一个消息&#xff0c;但是消息却需要你自己向下滑你才能看见&#xff0c;否则一直呗输入框挡住。 组件 scroll-view组件&#xff1a;一般使用scroll-view组件的都采取使用其scroll-into-view或者scroll-to属性。 scroll-…...

学习风格的类型

学习风格是指个体在学习过程中偏好的方式和方法。不同的学习风格反映了人们在接收、处理和记忆信息方面的不同偏好。了解自己的学习风格可以帮助提高学习效率和效果。以下是几种常见的学习风格类型&#xff1a; 1. 视觉型&#xff08;Visual Learner&#xff09; 特点&#x…...

GCP容器镜像仓库使用

GCP容器镜像仓库产品为&#xff1a;Artifact Registry。 1&#xff09;用户账号认证 GCP需要前置在控制台登陆对应环境账号。然后执行以下命令操作&#xff1a; $ gcloud auth login 2&#xff09;登陆镜像仓库 $ gcloud auth configure-docker us-west1-docker.pkg.dev …...

【C++ Primer Plus习题】16.10

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <string> #include <…...

Django框架全面指南

Django是一个高级的Python Web框架,它鼓励快速开发和清晰、实用的设计。本指南将全面介绍Django的核心概念和使用方法。 1. Django简介 Django遵循"batteries included"哲学,提供了Web开发所需的几乎所有功能。它的主要特点包括: ORM(对象关系映射)URL路由模板…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

从实验室到产业:IndexTTS 在六大核心场景的落地实践

一、内容创作&#xff1a;重构数字内容生产范式 在短视频创作领域&#xff0c;IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色&#xff0c;生成的 “各位吴彦祖们大家好” 语音相似度达 97%&#xff0c;单条视频播放量突破百万…...