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

1、CI/CD 平台安装部署(Gitlab+Jenkins)

CI/CD 平台安装部署

      • 安装部署
        • Gitlab安装
          • Gitlab添加组、创建用户、创建项目
        • Jenkins 安装
        • Maven 安装和配置
        • Tomcat 安装和配置
        • Jenkins 构建 Maven 项目
          • 自由风格项目构建

什么是CI/CD?
通俗来说就是启动一个服务,能够监听代码变化,然后自动执行构建、测试、打包、发布等流程;

CICD 是持续集成和持续交付/部署简称。
指在研发过程中自动执行一系列脚本来降低开发引入bug的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。这一策略加快了代码提交到功能上线的速度,保证新的功能能够第一时间部署到生产环境并被使用。

CI 持续集成
指在开发人员频繁地提交新代码,都会自动执行构建、测试。根据测试结果,我们可以确定新代码能否合并到主分支。

假设现在有个应用的代码存储在仓库上,每天开发人员都会提交很多次新代码,针对每次提交,我们可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率。

持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,如果构建或测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。

CD 持续交付
指将完成CI的最新代码部署到类生产环境进行功能验证,以确保新增的代码在生产环境中是可用的。

CD 持续部署
指在持续交付的基础上,通过自动化部署的手段将软件功能频繁的部署到生产环境中。

安装部署

Gitlab安装

192.168.110.10
关闭防火墙核心防护

systemctl disable --now firewalld
setenforce 0

安装相关依赖

yum install -y curl policycoreutils-python openssh-server perl postfix
systemctl enable --now sshd postfix
#启动失败则修改 /etc/postfix/main.cf
inet_interfaces = 127.0.0.1,[ip]

安装Gitlab
软件包下载
下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm

rpm -ivh gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm

修改gitlab配置,修改gitlab访问地址和端口,默认为80,我们改为82

vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.110.10:82'
nginx['listen_port'] = 82

重载配置及启动gitlab

gitlab-ctl reconfigure
gitlab-ctl restart

浏览器访问:http://192.168.110.10:82 ,如果显示 502,稍等片刻再刷新
1、设置管理员 root 用户的新密码,注意有格式要求,这里设置成 root@123
2、使用管理员 root 用户登录(root/root@123)
3、登录后点击页面右上方的用户选项下拉选择【Settings】,点击左边菜单【Preferences】,在【Localization】的【Language】中选择【简体中文】,点击【Save changes】按钮,再刷新页面使用中文显示。

Gitlab添加组、创建用户、创建项目

Gitlab添加组、创建用户、创建项目
#创建群组
点击页面左上方的【GitLab】图标,点击 【新建群组】
【群组名称】、【群组URL】、【群组描述】都设置成 sunny_group
【可见性级别】设置成 私有
其他都保持默认值,点击 【创建群组】

#创建项目
点击 【新建项目】
【项目URL】群组选项下拉选择 sunny_group
【项目名称】设置成 sunny_demo
【项目描述】设置成 sunny_demo
【可见等级】设置成 私有
点击 【创建项目】

#创建用户
点击页面上方的【扳手】图标进入“管理区域”
点击 【新建用户】
【姓名】设置成 sunny
【用户名】设置成 sunny
【电子邮箱】设置成 sunny@sl.com
这里密码暂不设置,其他都保持默认值,先点击 【创建用户】
注:Access level:Regular(表示的是普通用户,只能访问属于他的组和项目);Admin(表示的是管理员,可以访问所有组和项目)

创建好用户后再点击右上角的【Edit】,可在这里设置密码,如 sunny@123

#将用户添加到组中
点击页面上方的【群组】下拉选择 sunny_group
点击左边菜单【成员】
【添加成员到 sunny_group】选择 sunny,角色权限选择 Owner
点击 【添加到群组】
注:角色权限:
●Guest:可以创建issue、发表评论,不能读写版本库
●Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
●Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
●Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
●Owner:可以设置项目访问权限(Visibility Level)、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限

使用自己创建的账户进行管理
退出当前账户,使用自己创建的账户 sunny 登录(sunny/zhangsan@123)
第一次登录会被强制要求修改密码(sunny/sunny@123),可与旧密码相同,再重新登录

源码上传到Gitlab仓库

git config --global user.name "sunny"
git config --global user.email "sunny@sl.com"cd ~
git clone http://192.168.110.10:82/sunny_group/sunny_demo.git       #账号/密码:sunny/sunny@123
ls -A sunny_demo[root@master01 ~]# ls -A sunny_demo
.git

上传 web_demo.zip 文件

unzip web_demo.zip 
mv web_demo/* /root/sunny_demo/cd /root/sunny_demo
git add .
git commit -m "init web_demo"
git push -u origin master                #账号/密码:sunny/sunny@123[root@master01 sunny_demo]# git push -u origin master
Username for 'http://192.168.110.10:82': sunny
Password for 'http://sunny@192.168.110.10:82':
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (10/10), 1.65 KiB | 0 bytes/s, done.
Total 10 (delta 0), reused 0 (delta 0)
To http://192.168.110.10:82/sunny_group/sunny_demo.git* [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

点击页面上方的【项目】下拉选择 web_demo,即可看到上传的代码

Jenkins 安装

192.168.110.20
安装JDK
下载网址:https://download.oracle.com/java/17/archive/jdk-17.0.10_linux-x64_bin.tar.gz

tar zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local/vim /etc/profile
export JAVA_HOME=/usr/local/jdk-17.0.10
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile
java -version[root@node01 ~]# java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)

安装jenkins

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.keyyum install epel-release -y
yum install jenkins -y

修改jenkins的启动参数

vim /usr/lib/systemd/system/jenkins.service
User=root
Group=root
Environment="JAVA_HOME=/usr/local/jdk-17.0.10"
Environment="JENKINS_PORT=8080"systemctl daemon-reload
systemctl start jenkins
systemctl enable jenkins

替换插件更新源

sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json#g' /root/.jenkins/hudson.model.UpdateCenter.xmlhttps://mirrors.aliyun.com/jenkins/updates/update-center.jsonsed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' /root/.jenkins/updates/default.json
sed -i 's#https://www.google.com#https://www.baidu.com#g' /root/.jenkins/updates/default.jsonsystemctl restart jenkins

浏览器访问:http://192.168.110.20:8080 ,获取并输入 admin 账户密码
在这里插入图片描述

创建第一个管理员用户,如 sunny/sunny@123

Manage Jenkins -> Manage Plugins -> 点击 Availale -> 安装以下几个插件
Localization: Chinese
Git

点击用户名下拉选择凭据(Credentials) -> Jenkins 全局 -> 添加凭据
类型选择 “Username with password” ,输入 Gitlab 的用户名和密码(sunny/sunny@123),描述输入 gitlab-auth-password
点击 “确定”。

创建一个FreeStyle项目:新建Item -> 任务名称(test01) FreeStyle Project -> 确定
源码管理:选择 Git,Repository URL:http://192.168.110.10:82/sunny_group/sunny_demo.git(可从 Gitlab 使用 HTTP 克隆),
Credentials 下拉选择 gitlab-auth-password,点击 保存。

点击 Bulid Now 开始构建,查看控制台输出可以看到构建成功,构建后的包会生成在服务器的 /root/.jenkins/workspace/test01 目录中。

[root@node01 ~]# cd /root/.jenkins/workspace/test01
[root@node01 test01]# ls
pom.xml  src  web_demo.iml
Maven 安装和配置

Maven 是一个主要用于 Java 项目的自动化构建工具。Maven 还可以用来构建和管理用 C#、Ruby、Scala 和其他语言开发的项目。

在 Jenkins 服务器上安装 Maven 来编译和打包项目

#上传 apache-maven-3.6.2-bin.tar.gz 软件包
tar -zxvf apache-maven-3.6.2-bin.tar.gz
mv apache-maven-3.6.2 /usr/local/maven#设置环境变量
vim /etc/profile
......
export MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:${JAVA_HOME}/bin:$PATHsource /etc/profile
mvn -v[root@node01 ~]# mvn -v
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00)
Maven home: /usr/local/maven
Java version: 17.0.10, vendor: Oracle Corporation, runtime: /usr/local/jdk-17.0.10
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

修改 Maven 的 settings.xml

#创建本地仓库目录
mkdir /usr/local/maven/repo		vim /usr/local/maven/conf/settings.xml
54行-->		#本地仓库改为 /usr/local/maven/repo<localRepository>/usr/local/maven/repo</localRepository>153行 -->		#添加阿里云私服地址<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror></mirrors>

添加 Jenkins 全局工具配置,关联 JDK 和 Maven

tar xf jdk-8u391-linux-x64.tar.gz -C /usr/local/

Manage Jenkins -> Global Tool Configuration
-> JDK
点击 新增JDK,别名输入 jdk17,取消勾选 Install automatically,JAVA_HOME输入 /usr/local/jdk-17.0.10
点击 新增JDK,别名输入 jdk1.8,取消勾选 Install automatically,JAVA_HOME输入 /usr/local/jdk1.8.0_391
-> Maven
点击 新增Maven,Name输入 maven3,取消勾选 Install automatically,MAVEN_HOME驶入 /usr/local/maven
点击 “应用"和"保存”。

添加 Jenkins 全局变量,让 Jenkins 能够识别 JDK 和 Maven 环境的命令
Manage Jenkins -> Configure System -> 全局属性,勾选 Environment variables
键值对列表添加:键 JAVA_HOME ,值 /usr/local/jdk1.8.0_391
键 MAVEN_HOME ,值 /usr/local/maven
键 PATH+EXTRA ,值 $MAVEN_HOME/bin

测试 Maven 是否配置成功
点击项目 test01 -> 设置 -> 构建 -> 增加构建步骤 -> Execute Shell
输入 mvn clean package #清空原有的构建元素(插件、依赖包等target文件),再进行打包
点击 保存
再次构建,如果可以把项目打成 war 包,代表 maven 环境配置成功。

[root@node01 target]# ls /root/.jenkins/workspace/test01/target
maven-archiver  web_demo-1.0-SNAPSHOT  web_demo-1.0-SNAPSHOT.war

在这里插入图片描述

Tomcat 安装和配置

192.168.110.30

安装 Tomcat

tar zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local/vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_391
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATHsource /etc/profiletar zxvf apache-tomcat-9.0.16.tar.gzmv apache-tomcat-9.0.16/ /usr/local/tomcat/usr/local/tomcat/bin/startup.sh

配置 Tomcat 用户角色权限
默认情况下 Tomcat 是没有配置用户角色权限的
验证方法:可浏览器访问 http://192.168.110.30:8080 ,点击 Managing Tomcat 下的 manager webapp ,发现返回 403 页面。
在这里插入图片描述

但是后续 Jenkins 部署项目到 Tomcat 服务器,需要用到 Tomcat 的用户进行远程部署,所以修改 tomcat 以下配置,添加用户及权限

vim /usr/local/tomcat/conf/tomcat-users.xml
43 -->    #添加 tomcat 用户角色权限,指定用户和密码都是 tomcat ,并授予权限<role rolename="tomcat"/><role rolename="role1"/><role rolename="manager-script"/><role rolename="manager-gui"/><role rolename="manager-status"/><role rolename="admin-gui"/><role rolename="admin-script"/><user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
</tomcat-users>vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<!--     #注释掉 Valve 配置<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

再次访问:http://192.168.110.30:8080/manager/html ,输入账号/密码 tomcat/tomcat,即可成功登录
在这里插入图片描述
在这里插入图片描述

Jenkins 构建 Maven 项目
自由风格项目构建

项目的集成过程:拉取代码 -> 编译 -> 打包 -> 部署

拉取代码
新建item -> 任务名称(sunny_demo_freestyle) FreeStyle Project -> 确定
源码管理:选择 Git,Repository URL:http://192.168.110.10:82/sunny_group/sunny_demo.git
Credentials 下拉选择 gitlab-auth-password,点击 保存
点击 Build Now,尝试构建项目

编译打包
配置 —> 构建 -> 添加构建步骤 -> Execute Shell,输入以下命令
echo “开始编译和打包”
mvn clean package
echo “编译和打包结束”
点击 Build Now,尝试构建项目

把项目部署到远程的 Tomcat 里面
1)安装 Deploy to container 插件
Jenkins 本身无法实现远程部署到 Tomcat 的功能,需要安装 Deploy to container 插件实现:
Manage Jenkins -> 管理插件-可选插件 -> 搜索 Deploy to container 插件选中直接安装即可
在这里插入图片描述

2)添加构建后操作
配置 —> 构建后操作 -> 增加构建后操作步骤 -> Deploy war/ear to a container
WAR/EAR files 输入 target/*.war
Containers —> Add Container —> Tomcat 9.x Remote -> Credentials,点击添加 -> Jenkins
用户名 输入 tomcat,密码 输入 tomcat,描述 输入 tomcat-auth,点击添加
Credentials 下拉选择 tomcat-auth
Tomcat URL 输入 http://192.168.110.30:8080
点击保存
点击 Build Now,尝试构建项目

3)部署成功后,刷新 http://192.168.110.30:8080/manager/html 页面,可以发现应用程序中多出一个项目,点击新项目进去访问
在这里插入图片描述

在这里插入图片描述

相关文章:

1、CI/CD 平台安装部署(Gitlab+Jenkins)

CI/CD 平台安装部署 安装部署Gitlab安装Gitlab添加组、创建用户、创建项目 Jenkins 安装Maven 安装和配置Tomcat 安装和配置Jenkins 构建 Maven 项目自由风格项目构建 什么是CI/CD&#xff1f; 通俗来说就是启动一个服务&#xff0c;能够监听代码变化&#xff0c;然后自动执行构…...

数据集路径出错.yaml‘ images not found , missing path

方法一&#xff1a;删除settings.yaml 方法二&#xff1a;dataset_name.yaml改用绝对路径&#xff0c;如最后一张图 错误分析&#xff1a; dataset_name.yaml中的path的路径仅支持绝对路径&#xff0c;写相对路径就会搜索不到&#xff0c;使用settings.json中的路径&#xff0…...

零基础学习Python 之类(Class)和实例(Instance)_我的学习Python记录12

零基础学习Python 之类&#xff08;Class&#xff09;和实例&#xff08;Instance&#xff09;_我的学习Python记录12 目录 什么是类和实例&#xff1f;类的作用如何定义类&#xff1f;如何创建实例&#xff1f;类的属性和方法 属性方法 实际案例 案例 1&#xff1a;学生信息…...

Map<String,Object>转换为XML报文的方法

1. 使用 JAXB (Java Architecture for XML Binding) JAXB 是 Java 标准库的一部分&#xff0c;支持将 Java 对象与 XML 相互转换。虽然 JAXB 主要用于将 Java 对象转换为 XML&#xff0c;但可以通过一些技巧将 Map<String, Object> 转换为 XML。 示例代码 import java…...

Linux:如何安装虚拟机

Linux&#xff1a;如何安装虚拟机 第一步首先打开阿里巴巴开源镜像网站然后点击相应要下载链接 选择自己需要的 这个是完整版 这个是联网进行安装系统 这个是基础版只有命令行界面 这里我选择下载基础版 下载好打开vmwareworkstation 开始安装...

HTML 编辑器推荐与 VS Code 使用教程

在进行 HTML 编程时&#xff0c;选择一款合适的 HTML 编辑器能极大地提高开发效率。以下为大家推荐几款常用且功能强大的 HTML 编辑器&#xff0c;同时详细介绍如何使用 VS Code 创建和预览 HTML 文件。 一、HTML 编辑器推荐 VS Code&#xff1a;由微软开发&#xff0c;是一款…...

Python的Pandas和matplotlib库:让数据可视化贼简单

在数据爆炸的时代&#xff0c;数据可视化已成为数据分析的关键环节。Python 作为强大的编程语言&#xff0c;拥有众多用于数据可视化的库&#xff0c;而 pandas 库在其中扮演着重要角色。它不仅能高效处理和分析数据&#xff0c;还具备强大的数据可视化功能&#xff0c;让我们轻…...

私有云基础架构与运维(二)

二.私有云基础架构 【项目概述】 经过云计算基础知识及核心技术的学习后&#xff0c;希望进一步了解 IT 基础架构的演变过 程&#xff0c;通过学习传统架构、集群架构以及私有云基础架构的相关知识&#xff0c;认识企业从传统 IT 基 础架构到私有云基础架构转型的必要性。…...

Java Maven 项目问题:org.dom4j:dom4j:pom:2.1.3 failed to transfer from...

问题与处理策略 问题描述 IDEA 中打开一个 Java 项目&#xff0c;使用 Maven 构建时&#xff0c;报如下错误 org.dom4j:dom4j:pom:2.1.3 failed to transfer from https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local r…...

DeepSeek group-limited expert routing和负载均衡

Ref https://github.com/deepseek-ai/DeepSeek-V3/blob/main/inference/model.py GitHub - deepseek-ai/EPLB: Expert Parallelism Load Balancer DeepSeek-V3 Technical Report DeepSeek的路由方法 class Gate(nn.Module):def __init__(self, args: ModelArgs):super().__…...

nvidia驱动升级-ubuntu 1804

升级 1.从官网下载*.run驱动文件 2.卸载原始驱动 sudo /usr/bin/nvidia-uninstall sudo apt-get --purge remove nvidia-\* # 可能不需要加-\ sudo apt-get purge nvidia-\* # 可能不需要加-\ sudo apt-get purge libnvidia-\* # 可能不需要…...

金融合规测试:金融系统稳健运行的“定海神针“

一、什么是金融合规测试&#xff1f; 金融行业是受监管最严格的领域之一&#xff0c;各国政府和监管机构&#xff08;如中国人民银行、银保监会、证监会、美国SEC、欧盟ESMA等&#xff09;都制定了严格的法律法规&#xff0c;要求金融机构确保系统安全、交易透明、公平竞争&am…...

[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑

参考原文&#xff1a;[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑 还在为多台电脑需要多套键盘鼠标而烦恼吗&#xff1f;是不是在操控 Windows、macOS、Linux 不同系统电脑时手忙脚乱&#xff1f;现在&#xff0c;这些问题通通能解决&#xff01;Deskflow 软件闪亮登…...

vue3 组合式API:透传 Attributes(v-bing与:)—setup() 上下文对象ctx.attrs

一、概念及举例说明透传 attribute与模板语法中的Attribute(v-bind) 透传 attribute:传递给一个组件没有通过 props 与 emits 的attribute或者v-on事件监听(常见的:calss、style、id) 举例:当一个组件以单个元素为根元素渲染时,透传 attribute 会自动被添加到根元素上 …...

记录一次利用条件索引优化接口性能的实践

一、业务背景 某表数据量达到4000w&#xff0c;需要每天定时任务处理20w条。前2周内SQL执行无任何问题&#xff0c;非常快&#xff0c;效率比较高。随着处理完的数据量变大&#xff0c;处理完数据状态设置为1&#xff0c;SQL执行效率越来越差&#xff0c;已经达到了惊人的4.6秒…...

Anaconda 部署 DeepSeek

可以通过 Anaconda 环境部署 DeepSeek 模型&#xff0c;但需结合 PyTorch 或 TensorFlow 等深度学习框架&#xff0c;并手动配置依赖项。 一、Anaconda 部署 DeepSeek 1. 创建并激活 Conda 环境 conda create -n deepseek python3.10 # 推荐 Python 3.8-3.10 conda activate…...

MATLAB中lookAheadBoundary函数用法

目录 语法 说明 示例 匹配指定模式之前的位置 匹配指定模式之前的边界以外的边界 lookAheadBoundary函数的功能是匹配指定模式之前的边界。 语法 newpat lookAheadBoundary(pat) 说明 newpat lookAheadBoundary(pat) 创建匹配 pat 的开头的模式。结果中不包含 pat 匹…...

Unity HDR颜色、基础颜色、强度强度、HDR面板Intensity之间的相互转换

目录 前言&#xff1a; 一、UnityHDR面板的规律 二、HDR与基础颜色转换&#xff0c;HDR强度获取&#xff0c;输入设置强度获取 1.基础色->HDR颜色 2.HDR颜色->基础色 3.获取HDR颜色在面板中的强度 4.获取HDR颜色在面板设置输入时的强度 前言&#xff1a; HDR&#…...

nvm 让 Node.js 版本切换更灵活

有很多小伙伴前端开发进程中&#xff0c;我们常常会遇到不同项目依赖不同版本 Node.js 的情况。我们不可能去卸载重新安装适应的版本去安装依赖或者启动项目。为了避免版本冲突带来的一系列麻烦&#xff0c;在这里给大家推荐一款Node.js 版本管理工具——nvm&#xff08;Node V…...

微机惊魂记

春天午后的阳光懒洋洋地洒在教学楼的走廊上&#xff0c;我跟着同学们排着队往四楼的微机教室走去。楼梯间的窗户开着&#xff0c;飘进来阵阵樱花的香气&#xff0c;让人昏昏欲睡。 微机教室在一栋普通的五层教学楼里&#xff0c;墙壁刷着淡绿色的漆&#xff0c;墙角还有些剥落…...

Windows下安装VMware Workstation 17并设置支持MacOS

VMware Workstation 17 介绍 VMware Workstation 17 是 VMware 公司推出的一款强大的桌面虚拟化软件&#xff0c;适用于 Windows 、 Linux 和FreeBSD等操作系统。它允许用户在单一物理计算机上创建、运行和管理多个虚拟机&#xff08;VM&#xff09;&#xff0c;每个虚拟机都可…...

[MySQL初阶]MySQL(5)内置函数详解

标题&#xff1a;[MySQL初阶]MySQL&#xff08;5&#xff09;内置函数详解 水墨不写bug 文章目录 一、日期函数1. current_date()2. current_time()3. current_timestamp()4. date(datetime)5. date_add(date, interval expr unit)6. date_sub(date, interval expr unit)7. dat…...

Linux下安装elasticsearch(Elasticsearch 7.17.23)

Elasticsearch 是一个分布式的搜索和分析引擎&#xff0c;能够以近乎实时的速度存储、搜索和分析大量数据。它被广泛应用于日志分析、全文搜索、应用程序监控等场景。 本文将带你一步步在 Linux 系统上安装 Elasticsearch 7.17.23 版本&#xff0c;并完成基本的配置&#xff0…...

华为云 | 快速搭建DeepSeek推理系统

DeepSeek&#xff08;深度求索&#xff09;作为一款国产AI大模型&#xff0c;凭借其高性能、低成本和多模态融合能力&#xff0c;在人工智能领域崛起&#xff0c;并在多个行业中展现出广泛的应用潜力。 如上所示&#xff0c;在华为云解决方案实践中&#xff0c;华为云提供的快速…...

宠物医院台账怎么做,兽医电子处方单模板打印样式,佳易王兽医兽药开方宠物病历填写打印操作教程

一、概述 本实例以佳易王兽医宠物电子处方开单系统版本为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a; 多场景处方兼容性针对宠物医…...

STM32之DMA

Flash是主闪存&#xff0c;下载程序的地方&#xff0c;系统存储器出厂自动写入&#xff0c;不许修改。系统存储器是存储Bootloader&#xff0c;选项字节存的是flash的读保护&#xff0c;写保护&#xff0c;还有看门狗等。运行内存SRAM存的临时变量&#xff0c;也就是程序中定义…...

用低代码平台集成人工智能:无需专业开发也能实现智能化

引言&#xff1a;人工智能的普及与企业需求 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;越来越多的企业开始意识到其在提升运营效率、优化客户体验和推动业务创新方面的巨大潜力。从智能客服到自动化决策支持&#xff0c;从数据分析到个性化推荐&#x…...

UI自动化:利用百度ocr识别解决图形验证码登录问题

相信大家在做自动化测试过程中都遇到过图形验证码的问题&#xff0c;最近我也是遇到了&#xff0c;网上搜了很多方法&#xff0c;最简单的方法无非就是去掉图形验证码或者设置一个万能验证码&#xff0c;但是这个都需要开发来帮忙解决&#xff0c;对于我们这种自学的人来说就不…...

1236 - 二分查找

题目描述 请在一个有序递增数组中&#xff08;不存在相同元素&#xff09;&#xff0c;采用二分查找&#xff0c;找出值 xx 的位置&#xff0c;如果 xx 在数组中不存在&#xff0c;请输出 -1 &#xff01; 输入 第一行&#xff0c;一个整数 nn &#xff0c;代表数组元素个数…...

MARL零样本协调之Fictitious Co-Play学习笔记

下列引用来自知乎作者Algernon 知乎link FCP作为ZSC领域两阶段训练方法的开创者 论文《Collaborating with Humans without Human Data》来自 NeurIPS 2021。这篇论文提出 Fictitious Co-Play (FCP) 来解决 ZSC 问题。论文认为&#xff0c;ZSC 的第一个重要问题是对称性&#x…...

设计模式 + java8方法引用 实现任意表的过滤器

会用到下面2个依赖&#xff0c;原因是在今天的案例中&#xff0c;我想在我代码中使用上Entity::getFieldName 这种形式 LambdaQueryWrapper<ApplicationDashboard> queryWrapper new LambdaQueryWrapper<>(); queryWrapper.eq(ApplicationDashboard::getAppCode,…...

thingsboard edge 在windows 环境下的配置

按照官方文档&#xff1a;Installing ThingsBoard Edge on Windows | ThingsBoard Edge&#xff0c;配置好java环境和PostgreSQL。 下载对应的windows 环境下的tb-edge安装包。下载附件 接下来操作具体如下 步骤1&#xff0c;需要先在thingsboard 服务上开启edge 权限 步骤2…...

OpenAI Whisper:开启语音转文本的智能时代

在人工智能技术飞速发展的今天,OpenAI推出的Whisper语音识别系统正悄然改变着人类与机器的交互方式。作为一款开源的AI驱动语音转文本工具,Whisper凭借其跨语言能力、高精度识别和灵活的生态系统,成为开发者和普通用户共同追捧的技术标杆。 核心技术与突破 Whisper基于深度…...

OpenHarmony4.0_Linux环境搭建

查看链接&#xff1a;OpenHarmony4.0_Linux环境搭建https://www.yuque.com/xinzaigeek/jishu/fs9msruqhd5nhw4i...

道可云人工智能每日资讯|亚马逊云业务部门成立智能体人工智能团队

道可云元宇宙每日简报&#xff08;2025年3月6日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 《杭州市富阳区未来产业培育行动计划(2025-2026年)》发布 3月3日&#xff0c;杭州市富阳区经信局正式发布了《杭州市富阳区未来产业培育行动计划(2025-2026年)》&…...

Java-servlet(四)详细讲解Servlet类层次结构与生命周期

Java-servlet&#xff08;四&#xff09;详细讲解Servlet和生命周期 前言一、Servlet类层次结构1.Servlet包2.Servlet 与 ServletConfig 与 Serializable 的关系1. 三者分别是什么2. 三者之间的关系 3.如何让类具有 Servlet 功能 二、Servlet 生命周期1.初始化阶段2.服务阶段3.…...

python基础课程整理--字典的基础

字典的特点 定义&#xff1a;使用花括号 {} 包裹&#xff0c;存储键值对&#xff08;key-value pairs&#xff09;。特点&#xff1a; 无序&#xff1a;字典中的元素没有固定的顺序&#xff0c;但可以通过键来访问。可变&#xff1a;字典中的键值对可以被添加、修改或删除。键…...

doris: MySQL

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 MySQL 数据库。本文档介绍如何配置 MySQL 数据库连接。 使用须知​ 要连接到 MySQL 数据库&#xff0c;您需要 MySQL 5.7, 8.0 或更高版本 MySQL 数据库的 JDBC 驱动程序&#xff0c;您可以从 Maven 仓库下载最新或指定版本的…...

推荐一个基于Koin, Ktor Paging等组件的KMM Compose Multiplatform项目

Kotlin Multiplatform Mobile&#xff08;KMM&#xff09;已经从一个雄心勃勃的想法发展成为一个稳定而强大的框架&#xff0c;为开发人员提供了在多个平台上无缝共享代码的能力。通过最近的稳定版本里程碑&#xff0c;KMM已成为跨平台开发领域的改变者。 环境设置 带有Kotli…...

Tomcat 新手入门指南

Tomcat 新手入门指南 Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器&#xff0c;广泛用于部署和运行 Java Web 应用程序。以下是 Tomcat 的入门指南&#xff0c;帮助你快速上手。 1. 安装 Tomcat 步骤 1: 下载 Tomcat 访问 Apache Tomcat 官网。选择适合的版…...

游戏引擎学习第138天

仓库:https://gitee.com/mrxiao_com/2d_game_3 资产&#xff1a;game_hero_test_assets_003.zip 发布 我们的目标是展示游戏运行时的完整过程&#xff0c;从像素渲染到不使用GPU的方式&#xff0c;我们自己编写了渲染器并完成了所有的工作。今天我们开始了一些新的内容&#…...

c++ 类特殊成员函数的编译器隐式声明规则

c 类特殊成员函数的编译器隐式声明规则 特殊成员函数编译器隐式声明规则关键术语说明&#xff1a;核心规则总结&#xff1a;示例场景&#xff1a; 特殊成员函数 编译器隐式声明规则 用户声明的成员函数默认构造函数析构函数拷贝构造函数拷贝赋值移动构造函数移动赋值无声明默…...

综合使用pandas、numpy、matplotlib、seaborn库做数据分析、挖掘、可视化项目

目录 1.结构化数据挖掘 1.1依赖库导入和数据读取 1.2各品牌机型及售价统计 1.3视频录制规格与价格关联性分析 2.结构化数据预处理 2.1筛选特征 2.2特征标签归一化及编码 1.结构化数据挖掘 1.1依赖库导入和数据读取 导入必要的依赖库&#xff0c;读取 csv 格式数据集转化为 Data…...

day21-API(算法,lambda,练习)

常见的七种查找算法&#xff1a; ​ 数据结构是数据存储的方式&#xff0c;算法是数据计算的方式。所以在开发中&#xff0c;算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词&#xff0c;如果各位铁粉有疑惑&#xff0c;可以先看一下哥们后面录制的数据结构…...

Linux : 进程地址空间

目录 一 前言 二 进程地址空间是什么 1.现象 2.虚拟地址空间 3. 现象解释 4. 写时拷贝 三 为什么要存在进程地址空间 四 进程地址空间是如何实现的 1 操作系统如何管理进程地址空间 一 前言 进程地址空间图&#xff1a; 在学习C语言的内存管理的时候&#xff0c;我…...

wordpress鼠标特效笔记+npm问题解决

在WordPress网站上添加鼠标点击特效和网页背景特效_wordpress鼠标特效-CSDN博客 学习设置文章浏览量的插件超详细图解&#xff1a;如何使用 WordPress搭建一个个人博客&#xff1f;-CSDN博客 ------------------2025.03.06------------------------------- npm 运行时报错“因…...

大模型——使用 Embedding 模型和向量数据库的 Spring AI RAG

大模型——使用 Embedding 模型和向量数据库的 Spring AI RAG 本文主要介绍以下内容: 嵌入式模型简介。使用 DocumentReader 加载数据。在 VectorStore 中存储 Embedding。实现 RAG(Retrieval-Augmented Generation,检索增强生成),又名 Prompt Stuffing。你可以在 GitHub…...

Spring Boot 缓存最佳实践:从基础到生产的完整指南

Spring Boot 缓存最佳实践&#xff1a;从基础到生产的完整指南 引言 在现代分布式系统中&#xff0c;缓存是提升系统性能的银弹。Spring Boot 通过 spring-boot-starter-cache​ 模块提供了开箱即用的缓存抽象&#xff0c;但如何根据业务需求实现灵活、可靠的缓存方案&#xf…...

vue3,Element Plus中隐藏树el-tree滚动条

el-tree&#xff0c;节点过多&#xff0c;默认会出现垂直滚动条&#xff0c;显得不美观 可以使用隐藏组件 el-scrollbar 将 el-tree 包裹&#xff0c;就可以隐藏垂直滚动条 <el-scrollbar> <el-tree> ... </el-tree> </el-scrollbar> /* 滚动条禁用鼠…...

《机器学习数学基础》补充资料:过渡矩阵和坐标变换推导

尽管《机器学习数学基础》这本书&#xff0c;耗费了比较长的时间和精力&#xff0c;怎奈学识有限&#xff0c;错误难免。因此&#xff0c;除了在专门的网页&#xff08; 勘误和修订 &#xff09;中发布勘误和修订内容之外&#xff0c;对于重大错误&#xff0c;我还会以专题的形…...