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

Git+Jenkins 基本使用(Basic Usage of Git+Jenkins)

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

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

自动化运维之Git+Jenkins 基本使用
技能目标:
- 了解 Jenkins 持续集成工具
- 学会安装 Jenkins 持续集成工具
- 学会利用Jenkins实现源码自动打包部署

2.1 案例分析

2.1.1 案例概述

随着软件开发复杂度的不断提高,团队成员之间如何更好地协同工作以确保软件开发的
质量,已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、
部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代
码变更的信息,从而可以更早的进入测试阶段;并且能够更早的发现问题,这样解决问题的
成本就会显著下降。持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也缩
短了中间出现的等待时间。持续集成也意味着开发、集成、测试、部署得以持续。所以,当
配置完 Jenkins 持续集成持续交付环境后,就可以把发布的任务交给集成服务器去处理了。
本章将使用 Maven(Ant) 等来实现 Java 项目自动化构建发布部署。这些工具可以帮助在构
建过程中实现自动化发布、回滚等动作。

2.1.2 案例前置知识点

1. 什么是 Jenkins

Jenkins 原名 Hudson2011 年改为现在的名字,它是一个开源的实现持续集成的软件
工具。官方网站网址:https://jenkins.io/
Jenkins 能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,
还能通过图表的形式,形象地展示项目构建的趋势和稳定性。
Jenkins 包含以下几个特点:
易安装:从官网仅需要下载一个 jenkins.war 文件后,直接运行,无需额外的安装,更
无需安装数据库;
易配置:提供友好的 GUI 配置界面;
变更支持:Jenkins 能从代码仓库(SVN /Git)中获取并产生代码更新列表,并显示到
编译输出信息中;
支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 页面的链接地址都是
永久链接地址,可以在各种文档中直接使用该链接;
集成 E-Mail/RSS/IM:当完成一次集成后,可通过这些工具实时收取集成结果(构建一
次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
JUnit/TestNG 测试报告:是以图表等形式提供详细的测试报表功能;
支持分布式构建:Jenkins 可以把集成构建等工作分发到多台计算机中完成;
文件指纹信息:Jenkins 会保存构建集成所产生的 jars 文件、集成构建使用了哪个版本
jars 文件等构建记录;
支持第三方插件:Jenkins 支持第三方插件,这使得 Jenkins 功能变得越来越强大。

2. 持续集成的作用

持续集成(Continuous Integration,简写为 CI)可以保证团队开发人员提交代码的质量,
减轻软件发布的时间压力。在持续集成过程中任何一个环节都是自动完成的,无需太多的人
工干预,这样有利于减少重复过程,从而可以节省时间、费用和工作量。

3. 持续集成的特点

持续集成是一个自动化的、周期性的集成测试过程,检出代码、编译构建、运行测试、
结果记录、测试统计等过程都是自动完成的,无需人工干预。持续集成需要有专门的集成服
务器来执行集成构建操作,同时需要有代码托管工具的支持。

4. 持续集成的工作原理

Jenkins 的工作原理是先将源代码从 SVN/Git 版本控制系统中拷贝一份到本地,然后根
据设置的脚本进行 build(构建)。整个系统的关键就是 build 脚本,build 脚本告诉 Jenkins
在一次集成中需要执行的任务,如图 2.1 所示。 2.1 持续集成工作原理

5. Maven 介绍

Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文
档的软件项目管理工具。
Maven 除了程序构建能力出色之外,还提供高级项目管理工具。由于 Maven 的缺省构
建规则有较高的可重用性,所以常常用两三行 Maven 脚本就可以构建简单的项目。由于
Maven 是面向项目的方法,许多 Apache Jakarta 项目发布时都使用 Maven,而且公司企业
项目采用 Maven 的比例也在持续增长。
Maven 这个单词意为知识的积累,最初在 Jakata Turbine 项目中用来简化构建过程。
当时,有一些项目(有各自 Ant build 文件)仅有细微的差别,而 JAR 文件都由 CVS 维护。
于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式
发布项目的信息,以及一种简单的方式在多个项目中共享 JARs,因此 Maven 就这样诞生
了。

2.1.3 案例环境

1. 本案例环境

本案例共使用三台服务器,每台服务器划分不同的服务角色,最后通过配置 Jenkins
现自动打包部署 Java 项目。本案例具体实验环境如表 2-1 所示。
2-1 Git+Jenkins 基本环境
主机操作系统 主机名/IP 地址主要软件
服务器CentOS 7.3-x86_64Jenkins/192.168.8.91Jenkins
服务器CentOS 7.3-x86_64Docker/192.168.8.92Docker
服务器CentOS 7.3-x86_64Git/192.168.8.93Git/SVN

2. 案例拓扑

本章案例拓扑图,如图 2.2 所示。
2.2 案例拓扑

3. 案例需求

1)从 GitHub 下载开源的博客系统到本地,然后将开源的博客系统源码提交到 Git
地代码版本控制系统。
2)配置 Jenkins 持续集成持续交付工具,完成 Java 项目自动打包部署等工作。

4. 案例实现思路

1)准备 Jenkins 基础环境。
2Jenkins 基本配置。
3)实现 Jenkins 自动打包。

2.2 案例实施

2.2.1 准备 Jenkins 基础环境

1. 准备系统环境

三台主机都执行以下操作,主机名根据不同主机做调整。
[root@localhost ~]# hostnamectl set-hostname jenkins
[root@localhost ~]# bash
[root@jenkins ~]# systemctl stop firewalld && systemctl disable firewalld
[root@jenkins ~]# systemctl stop NetworkManager && systemctl disable NetworkManager
[root@jenkins ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
[root@jenkins ~]# setenforce 0

2. 使用 YUM 安装并配置 Git

[root@git ~]# yum install -y git
//jenkins 主机也需执行此条命令
[root@git ~]# useradd git
[root@git ~]# passwd git
更改用户 git 的密码 。
新的 密码:
//输入 git 用户的密码,密码可自行设定
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@git ~]# su - git
[git@git ~]$ mkdir tale.git
//创建 Git 版本仓库,一般以.git 为后缀
[git@git tale.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/tale.git/
[git@git tale.git]$ ll
total 12
drwxrwxr-x. 2 git git
6 Jul 1 17:10 branches
-rw-rw-r--. 1 git git 66 Jul 1 17:10 config
-rw-rw-r--. 1 git git 73 Jul 1 17:10 description
-rw-rw-r--. 1 git git 23 Jul 1 17:10 HEAD
drwxrwxr-x. 2 git git 242 Jul 1 17:10 hooks
drwxrwxr-x. 2 git git 21 Jul 1 17:10 info
drwxrwxr-x. 4 git git 30 Jul 1 17:10 objects
drwxrwxr-x. 4 git git 31 Jul 1 17:10 refs
此时,Git 服务器就已经部署完成。但是,用户还不能向服务器推送数据,也不能克隆
Git 版本仓库。因为要在服务器上开放至少一种支持 Git 的协议,比如:HTTP/HTTPS/SSH
协议等,现在使用最多的就是 HTTPS SSH 协议。切换至 Git 客户机(192.168.8.91)生
成免交互 SSH 密钥认证。
[root@jenkins ~]# ssh-keygen
//一路回车
[root@jenkins ~]# ssh-copy-id git@192.168.8.93
//将客户机的公钥传递给 Git 服务器
这样,就可以从 Git 服务器中克隆版本仓库了(此时目录内没有文件是正常的)。[root@jenkins ~]# git clone git@192.168.8.93:/home/git/tale.git
正克隆到 'tale'...
warning: 您似乎克隆了一个空版本库。

3. 下载开源博客系统

将开源博客系统源码克隆到本地 Git 仓库目录,然后添加注释“all tale”,并提交到 Git
版本仓库中。
[root@jenkins ~]# mkdir tale-test
[root@jenkins ~]# cd tale-test/
[root@jenkins table-test]# git clone https://github.com/otale/tale.git
[root@jenkins table-test]# cd
[root@jenkins ~]# cp -rf tale-test/tale/* tale/
[root@jenkins ~]# cd tale
[root@jenkins tale]# git add .
[root@jenkins tale]# git commit -m "all tale"
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@Jenkins.(none)')
[root@jenkins tale]# git config --global user.email "admin@example.com"
[root@jenkins tale]# git config --global user.name "admin"
[root@jenkins tale]# git commit -m "all tale"
[root@jenkins tale]# git push origin master
//默认 push master 主干
Counting objects: 349, done.
Compressing objects: 100% (302/302), done.
Writing objects: 100% (349/349), 5.29 MiB | 5.54 MiB/s, done.
Total 349 (delta 37), reused 0 (delta 0)
To git@192.168.8.93:/home/git/tale.git
* [new branch]
master -> master

4. 安装部署 Jenkins

(1)部署 Tomcat

提前下载好 JDK Tomcat 软件包,用于部署 Tomcat 服务。
[root@jenkins ~]# tar zxvf jdk-8u202-linux-x64.tar.gz
//先上传 JDK 安装包
[root@jenkins ~]# mv jdk1.8.0_202/ /usr/local/java/
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport PATH=$JAVA_HOME/bin:$PATH
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
[root@jenkins ~]# tar zxvf apache-tomcat-8.5.56.tar.gz
[root@jenkins ~]# mv apache-tomcat-8.5.56 /usr/local/tomcat
[root@jenkins ~]# tar zxvf apache-maven-3.6.0-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.6.0 /usr/local/maven
[root@jenkins ~]# cd /usr/local/tomcat/bin/
[root@jenkins bin]# sh startup.sh

(2)部署 Jenkins

从官网 http://mirrors.jenkins.io/war,下载 jenkins.war 软件包,尽量下载较新版本的
Jenkins,旧版本在实验中可能会出现默认插件不支持安装。将 jenkins.war 文件保存到
Tomcat 服务的 /usr/local/tomcat/webapps 目录下。启动 Tomcat 就会自动部署 Jenkins
jenkins.war 软件包上传到 Tomcat 服务的对应目录后,在浏览器的地址栏中输入
http://192.168.8.91:8080/jenkins 便可开始部署 Jenkins,如图 2.3 所示。
2.3 解锁 Jenkins
从图 2.3 中可以看出 Tomcat 方式启动 Jenkins 已经成功。初次部署 Jenkins,会生成
一个初始登录密码。
[root@jenkins ~]# cat /root/.jenkins/secrets/initialAdminPassword
909ce9e5e72440d2b90ea891ef8148d9
//每个人的密码不同
复制这段密码到浏览器的管理员密码框中,并单击继续登录 Jenkins,然后选择
装推荐插件,如图 2.4 所示。在实际生产环境下,可以根据需求安装 Jenkins 插件。 2.4 安装推荐插件
在安装插件的过程中,个别插件可能因为网络问题会出现安装失败现象。如果出现插件
安装失败现象,可暂时忽略,之后可到插件管理内安装对应插件。
插件安装完后,会出现创建第一个管理员用户的提示,本案例中创建的用户、密码与
邮件地址,如图 2.5 所示。
2.5 创建管理员用户
创建完管理员用户后单击保存并完成”→“开始使用 Jenkins”,可进入 Jenkins 首页,如
2.6 所示。
2.6 Jenkins 首页
至此,Jenkins 已经部署完毕。
2.2.2 Jenkins 配置
在部署完 Jenkins 工具后,就可以对 Jenkins 进行配置。本案例的配置主要包括以下几
个步骤。
(1) 安装 Jenkins 必要插件;
(2) 添加验证凭据;
(3) 添加 Publish Over SSH 远程主机;
(4) 配置 MavenJDKGit 环境;
(5) 构建 tale 基础镜像;
(6) 构建新的工程项目;
(7) 验证 Jenkins 持续集成持续交付。
1. 安装 Jenkins 必要插件
Jenkins 首页中,单击左侧的“Manage Jenkins”→“Manage Plugins”→“可选插件
进入如图 2.7 所示插件安装界面,在搜索框中,输入要安装的 Publish Over SSH Maven
Integration 插件,并勾选其左侧的复选框,单击直接安装按钮,开始插件安装操作。
2.7 可选插件页面
2. 添加 Publish Over SSH 远程主机
Docker 主机上创建远程目录。
[root@docker ~]# mkdir /data
Jenkins 首页中,单击“Manage Jenkins”→“Configure System”→“Publish over
SSH”→“SSH Servers”→“新增选项,添加 SSH 远程主机,如图 2.8 所示。输入 Name
HostnameUsername 必要信息后,单击高级选项勾选“Use Password authentication,or
use a different key”选项输入远程主机登录密码”→“Test Configuration”测试远程主机配
置。测试远程主机配置成功后,单击保存按钮。
2.8 SSH Servers 配置
3. 配置 Maven、JDK、Git 环境
Jenkins 首页中,单击“Manage Jenkins”→“Global Tool Configuration”→“JDK”→“
JDK”“JDK 别名设置为“JDK1.8”,去掉自动安装选项,“JAVA_HOME”设置为本案例
JDK 实际安装路径“/usr/local/java”,如图 2.9 所示。
2.9 JDK 配置
“Global Tool Configuration”配置界面中,找到“Maven”配置选项,然后单击新增
Maven”,并设置别名为“Maven3.6”MAVEN_HOME “/usr/local/maven”,如图 2.10
示。
2.10 Maven 配置
Git 配置保持默认即可,以上各项配置完毕后,推荐重启下 Jenkins 服务,重启命令如
下所示。
[root@jenkins ~]# cd /usr/local/tomcat/bin
[root@jenkins bin]# sh shutdown.sh
[root@jenkins bin]# sh startup.sh
4. 构建 tale 基础镜像
Docker 主机(192.168.8.92)上,构建 tale 基础镜像。在构建基础镜像之前需要先
安装 Docker JDK
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum-config-manager --add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]# yum makecache fast
[root@docker ~]# yum -y install docker-ce
[root@docker ~]# mkdir /etc/docker
[root@docker ~]# cat << EOF >> /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
[root@docker ~]# systemctl start docker && systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to
/usr/lib/systemd/system/docker.service.
[root@docker ~]# tar zxvf jdk-8u202-linux-x64.tar.gz
[root@docker ~]# mv jdk1.8.0_202/ /usr/local/java/
[root@docker ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@docker ~]# source /etc/profile
[root@docker ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
构建 tale 基础镜像时依赖 Dockerfile 等相关文件,所以需要先创建 tale 基础镜像所用
到的文件。
[root@docker ~]# mkdir /git
[root@docker ~]# cd /git
[root@docker git]# ll
//上传并查看构建 tale 基础镜像所需文件
总用量 186696
-rw-r--r-- 1 root root 366 8 31 18:45 Dockerfile
-rw-r--r-- 1 root root 98 8 31 18:45 run.sh
[root@docker git]# docker build -t 192.168.8.92:5000/tale:v1 .
5. 构建一个新的工程项目
在以上配置完成后,回到 Jenkins 首页,选择新建任务,输入一个任务名称“tale-test”
并选择构建一个 maven 项目配置项,单击当前页面下方的确定按钮,如图 2.11 所示。 2.11 新建任务
在任务配置页面中,选择源码管理并选中“Git”,设置“Repository URL”地址为
“git@192.168.8.93:/home/git/tale.git”,如图 2.12 所示。
2.12 源码管理
之后,选择“Build”模块,“Goals and options”填写“clean package”,如图 2.13 所示。
2.13 Build 设置
选择构建后操作中的“Send build artfacts over SSH”选项,并进行配置,如图 2.14
示。
2.14 构建后操作
Exec command 执行命令如下所示:
cd /data/tale && tar zxf *.tar.gz
docker run -itd --name kgc-tale-test -p 9000:9000 -v /usr/local/java:/usr/local/jdk -v /data/tale:/tale
192.168.8.92:5000/tale:v1
以上全部配置完成后,单击保存即可。然后单击左侧的立即构建,就开始 tale 项目
的编译构建,直至任务构建完成。在构建过程中可以单击进度条查看控制台输出,如图 2.15
所示。
2.15 控制台输出
如图 2.16 所示,可以看到此工程任务已构建成功,并且在构建后,用于创建 tale 项目
Docker Web 环境命令也执行成功。
2.16 构建成功
2.2.3 验证 Jenkins 自动打包部署结果
1. 验证拷贝目录内容
在 Docker 主机上查看 tale 目录是否拷贝到/data 目录下,查询结果如下所示。
[root@docker ]# cd /data/tale/
[root@docker tale]# ll
总用量 6296
drwxr-xr-x 2 root root
4096 9
4 11:19 lib
drwxr-xr-x 5 root root
118 9
4 11:19 resources
-rw-r--r-- 1 root root 6371965 9
4 11:19 tale-latest.jar
-rw-r--r-- 1 root root 23706933 9
4 11:19 tale.tar.gz
-rw-r--r-- 1 root root
3409 9
4 11:19 tool
从结果可知,Jenkins 已经将打好的 jar 包拷贝过来了。
2. 验证 tale 项目 Docker Web 环境
[root@docker ~]# docker ps -a
CONTAINER ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
9ce60aff10e5
192.168.8.92:5000/tale:v1
"/run.sh"
4 minutes ago
Up
4 minutes
0.0.0.0:9000->9000/tcp
kgc-tale-test
从上述结果可以得知,Web 容器已经创建成功,可以通过浏览器访问 tale 开源博客系
统,在浏览器中输入 http://192.168.8.92:9000 即可访问,访问结果如图 2.17 所示。2.17 tale 博客安装首页
至此,Jenkins 自动打包部署完毕。

相关文章:

Git+Jenkins 基本使用(Basic Usage of Git+Jenkins)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...

智谱清言:智能语音交互的引领者,解锁高效沟通新体验

哪个编程工具让你的工作效率翻倍&#xff1f; 在日益繁忙的工作环境中&#xff0c;选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度&#xff0c;甚至让团队协作更加顺畅。那么&#xff0c;哪款编程工具让你…...

前端组件库

vant2现在的地址 Vant 2 - Mobile UI Components built on Vue...

后端常用的mybatis-plus方法以及配合querywapper使用

目录 一、插入数据 save方法 二、删除操作 removeById方法 三、更新操作 updateById方法 四、查询操作 selectById方法 五、条件构造器QueryWrapper的更多用法 1.比较操作符 2.逻辑操作符 3.模糊查询 4.空值判断 一、插入数据 save方法 save(T entity):向数据库中插入…...

【设计模式】万字详解:深入掌握五大基础行为模式

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 【设计模式】&#xf…...

C++ 9.19

练习&#xff1a;要求在堆区申请5个double类型的空间&#xff0c;用于存储5名学生的成绩。请自行封装函数完成 1> 空间的申请 2> 学生成绩的录入 3> 学生成绩的输出 4> 学生成绩进行降序排序 5> 释放申请的空间 主程序中用于测试上述函数 #include<ios…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第五集:再制作更多的敌人

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作敌人另个爬虫Crawler 1.公式化导入制作另个爬虫Crawler素材2.制作另个爬虫Crawler的Crawler.cs状态机3.制作敌人另个爬虫Crawler的playmaker状态机二、…...

怎么把excel翻译成英文?这些翻译技巧记得收藏

在处理Excel数据时&#xff0c;我们常常会遇到多语言的数据集&#xff0c;这无疑给数据分析和整理带来了不小的挑战。 幸运的是&#xff0c;随着技术的发展&#xff0c;现在有多种工具可以帮助我们进行Excel中的批量翻译&#xff0c;这些工具以其强大的翻译功能和便捷的操作方…...

信息技术引领的智能化未来

信息技术引领的智能化未来 随着信息技术的飞速发展&#xff0c;社会各个领域正在加速迈入智能化的新时代。信息技术的广泛应用&#xff0c;尤其是人工智能、大数据、物联网等前沿技术的创新与融合&#xff0c;正在从根本上改变着人们的生产和生活方式。本文将探讨信息技术在智…...

【QT开发-Pyside】使用Pycharm与conda配置Pyside环境并新建工程

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能&#xff0c;以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…...

vue选项式写法项目案例(购物车)

一、初始化项目结构 1.初始化vite项目 npm create vite cd vite-project npm install 2.清理项目结构 清空App.vue 删除components目录下的HelloWorld.vue组件 3.为组件的样式启用sacc或less组件 npm i sass4.初始化index.css全局样式 :root{font-size:12px } 二、封装…...

[Linux][进程] 认识进程

基本概念 进程是一个操作系统术语,用来管理与操作程序.在windows下打开任务管理器即可查看目前打开的所有进程 PCB 进程控制块,从代码层面来说 PCB 是进程所有属性的一个结构体,在Linux源码中PCB指的是struct task_struct. Linux环境下: 进程 task_struct 代码 …...

如何安装和注册 GitLab Runner

如何安装和注册 GitLab Runner GitLab Runner 是一个用于运行 GitLab CI/CD (Continuous Integration/Continuous Deployment) 作业。它是一个与 GitLab 配合使用的应用程序&#xff0c;可以在本地或云中运行。Runner 可以执行不同类型的作业&#xff0c;例如编译代码、运行测…...

专业学习|动态规划(概念、模型特征、解题步骤及例题)

一、引言 &#xff08;一&#xff09;从斐波那契数列引入自底向上算法 &#xff08;1&#xff09;知识讲解 &#xff08;2&#xff09;matlap实现递归 &#xff08;3&#xff09;带有备忘录的遗传算法 &#xff08;4&#xff09;matlap实现带有备忘录的递归算法 “&#xff1…...

数据结构与算法 #时间复杂度 #空间复杂度

文章目录 前言 一、算法的复杂度 二、时间复杂度 三、空间复杂度 四、例题 1、例1&#xff1a;冒泡排序 2、例2&#xff1a; 3、例3&#xff1a; 4、例4: 二分查找 5、例5: 阶乘 6、例6: 斐波那契 五、常见算法复杂度 总结 前言 路漫漫其修远兮&#xff0c;吾将上下而求索&…...

【多机器人轨迹规划最优解问题】

此类应用场景通常很难有严格意义上的最优解&#xff0c;一般只能得到较优解。限制其获得最优解的主要因素如下&#xff1a; 一、问题的复杂性 多机器人系统的高维度性&#xff1a;每台机器人都有自己的位置、速度、任务等多个状态变量&#xff0c;多台机器人组合在一起使得问…...

机器学习及其应用领域【金融领域】

机器学习及其应用领域【金融领域】 一、智能投顾与资产配置二、信贷审批与风险评估三、支付与交易安全四、金融欺诈检测五、市场预测与情绪分析六、客户服务与个性化推荐七、面临的挑战与未来趋势八、总结 一、智能投顾与资产配置 智能投顾&#xff1a;通过机器学习技术&#…...

【实战教程】PHP与七牛云的完美对接,你值得拥有!

前言&#xff1a; 随着互联网的迅速发展&#xff0c;越来越多的网站和应用程序需要处理大量的图片、视频和其他文件。为了有效地存储和管理这些文件&#xff0c;并提供快速的内容分发服务&#xff0c;开发者们常常依赖于云存储和CDN服务提供商。 七牛云是一家领先的云存储和CD…...

2024网易低代码大赛 | 想参赛但不知道搭什么?灵感就这么水灵灵地来了!

9月6日-10月15日&#xff0c;报名进行时&#xff01;戳我即可报名&#xff01; 如果你还没想好要开发什么作品来参赛&#xff0c;那就必须往下 我们采访了n位网易内部人士&#xff0c;搜罗了他们的建议&#xff0c;给你多一些灵感&#xff01; 注意&#xff1a;下文仅为本次比赛…...

(附源码)基于django的电力工程作业现场物资管理系统的设计与实现-计算机毕设 22067

基于django的电力工程作业现场物资管理系统的设计与实现 摘 要 随着电力工程的快速发展&#xff0c;作业现场物资管理成为保障工程进度和质量的关键环节。本文旨在设计并实现一个基于Django框架的电力工程作业现场物资管理系统&#xff0c;以提高物资管理的效率和准确性。该系统…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...