tomcat多实例部署jenkins
tomcat多实例部署jenkins
文章目录
- tomcat多实例部署jenkins
- 1.简介:
- 2.优缺点:
- 3.工作原理:
- 4.工作流程:
- 5.tomcat多实例部署jenkins流程
- 5.1.环境说明
- 5.2.部署前准备工作
- 5.3.多实例部署tomcat
- 5.4.部署jenkins
- 5.5.创建一个jenkins项目
- 5.6.配置jenkins自动拉取项目,进行打包(maven),并将包传输到tomcat的项目目录(webapps)中
1.简介:
Jenkins是一个可扩展的、基于Web的工具,用于自动化构建、测试和部署软件项目。它支持各种版本控制系统、构建工具和测试框架,并提供了丰富的插件生态系统来满足不同的需求。
2.优缺点:
优点:
- 灵活性:Jenkins可以与多种工具和平台集成,支持各种编程语言和技术栈,因此非常灵活适应不同的项目需求。
- 易用性:Jenkins具有用户友好的Web界面和可视化配置,使得配置和管理任务变得简单易上手。
- 扩展性:Jenkins拥有丰富的插件生态系统,可以通过插件来扩展其功能,满足特定项目需要。
- 社区支持:Jenkins拥有庞大的活跃社区,它提供了大量的文档、教程和支持,可以帮助解决常见问题和获取最新的功能和改进。
缺点:
- 配置复杂:有时,Jenkins的配置可能因其灵活性而变得复杂,特别是在处理复杂的构建和部署流程时。
- 学习曲线:对于新手来说,学习和理解Jenkins的概念和使用方式可能需要一些时间和努力。
3.工作原理:
Jenkins的工作原理基于事件驱动和插件系统。它通过不断监测源代码管理系统中的代码变更或预定的时间触发事件,然后根据预定义的构建配置和操作来执行构建、测试和部署任务。
- 事件驱动机制:
- 源代码变更事件:Jenkins可以监测源代码管理系统(如Git、SVN)中的代码变更事件。它通过轮询或钩子机制,检查源代码是否发生了变更。
- 时间触发器:Jenkins还可以按计划(定时触发器)执行构建任务。开发人员可以设置特定的时间或时间表,使Jenkins在指定时间触发构建。
- 项目配置:
- 用户通过Jenkins的Web界面创建或导入项目。在项目配置中,用户可以设置各种参数,如源代码管理、构建触发器、构建参数、构建步骤等。这些配置决定了Jenkins如何执行构建任务。
- 构建过程:
- Jenkins使用定义在项目配置中的构建过程来执行构建任务。构建过程包括一系列步骤,如代码拉取、构建、测试、部署等。每个步骤可以由用户指定或使用插件提供的工具和命令来执行。
- 执行构建任务:
- 当满足设定的构建触发条件(如源代码变更或时间触发)时,Jenkins将自动开始执行构建任务。它会根据项目配置中定义的构建过程逐步执行每个步骤。
- 结果和报告:
- 在构建过程中,Jenkins跟踪记录构建任务的执行状态和结果。它会生成构建日志、报告和统计信息,以供用户查看和分析构建结果。
- 插件系统:
- Jenkins拥有丰富的插件生态系统,用户可以根据项目需要选择并安装插件。这些插件提供了额外的功能和扩展,例如集成测试框架、静态代码分析工具、部署工具等。插件可以通过Jenkins的Web界面进行管理和配置。
4.工作流程:
- 配置Jenkins服务器:安装Jenkins并进行初始化配置,设置插件、环境变量、权限等。
- 创建或导入项目:在Jenkins中创建新项目或导入现有项目,并设置相关配置,如源代码管理、构建触发器等。
- 配置构建过程:定义构建过程,包括编译代码、运行测试、生成文档等。这可以通过脚本命令、构建步骤、构建脚本等方式来实现。
- 触发构建:Jenkins可以通过轮询源代码管理系统或根据时间计划来监测项目的变化,一旦有触发条件满足,就会触发构建过程。
- 构建执行:Jenkins根据配置的构建流程执行构建任务,包括代码拉取、构建、测试等操作。
- 构建结果和报告:Jenkins会记录构建的结果和日志,生成构建报告和统计信息,供团队查看和分析。
- 部署或集成:根据需要,Jenkins可以自动将构建的产物部署到目标环境,或与其他工具和平台集成,如持续部署工具、通知系统等。
5.tomcat多实例部署jenkins流程
5.1.环境说明
jenkins需部署在tomcat服务上
操作系统 | tomcat版本 | jenkins版本 |
---|---|---|
centos 8 | tomcat-9.0.80 | jenkins-2.414.2 |
5.2.部署前准备工作
//关闭防火墙和selinux
[root@tomcat ~]# systemctl disable --now firewalld
[root@tomcat ~]# setenforce 0
[root@tomcat ~]# vim /etc/selinux/config
[root@tomcat ~]# reboot //重启主机生效
[root@tomcat ~]# getenforce
Disabled //确保selinux状态为disabled//配置yum源,建议使用阿里云的centos8源
[root@tomcat ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 2495 100 2495 0 0 2338 0 0:00:01 0:00:01 --:--:-- 2338
[root@tomcat ~]# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
17 files removed
[root@tomcat ~]# yum makecache
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
CentOS-8.5.2111 - Base - mirrors.aliyun.com 410 kB/s | 4.6 MB 00:11
CentOS-8.5.2111 - Extras - mirrors.aliyun.com 19 kB/s | 10 kB 00:00
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com 757 kB/s | 8.4 MB 00:11
Metadata cache created.
5.3.多实例部署tomcat
//安装java环境
[root@tomcat ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel wget vim
[root@tomcat ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)//拉取tomcat软件包
[root@tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
--2023-10-10 13:41:29-- https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
Resolving archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
Connecting to archive.apache.org (archive.apache.org)|65.108.204.189|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11692853 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-9.0.80.tar.gz’apache-tomcat-9.0.80.tar.gz 100%[===============================================>] 11.15M 25.2KB/s in 5m 55s 2023-10-10 13:47:25 (32.1 KB/s) - ‘apache-tomcat-9.0.80.tar.gz’ saved [11692853/11692853][root@tomcat ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80.tar.gz//解压tomcat软件包
[root@tomcat ~]# tar xf apache-tomcat-9.0.80.tar.gz
[root@tomcat ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80 apache-tomcat-9.0.80.tar.gz jenkins.war//将解压后的目录复制两份放到/usr/local/目录下,一个用于运行jenkins,另一个用来运行tomcat中的项目
[root@tomcat ~]# cp -r apache-tomcat-9.0.80 /usr/local/jenkins
[root@tomcat ~]# cp -r apache-tomcat-9.0.80 /usr/local/tomcat
[root@tomcat ~]# ls /usr/local/ && cd /usr/local/
bin etc games include jenkins lib lib64 libexec sbin share src tomcat//更改tomcat中的端口号,与jenkins以示区分
[root@tomcat ~]# cd /usr/local/tomcat/conf/
[root@tomcat conf]# ls
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd
catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml
[root@tomcat conf]# vim server.xml
[root@tomcat conf]# grep -A1 '<Server port' server.xml
<Server port="8006" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" />
[root@tomcat conf]# grep -A3 '<Connector port' server.xml<Connector port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8444"maxParameterCount="1000"
//开启服务,查看端口
[root@tomcat conf]# ../bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@tomcat conf]# cd
[root@tomcat ~]# cd /usr/local/jenkins/
[root@tomcat jenkins]# bin/catalina.sh start
Using CATALINA_BASE: /usr/local/jenkins
Using CATALINA_HOME: /usr/local/jenkins
Using CATALINA_TMPDIR: /usr/local/jenkins/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@tomcat jenkins]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 1 [::ffff:127.0.0.1]:8006 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 100 *:8081 *:*
5.4.部署jenkins
Jenkins官网https://www.jenkins.io/download/
///安装Jenkins所需要的Java-17-openjdk
[root@tomcat local]# cd jenkins/
[root@tomcat jenkins]# yum -y install java-17-openjdk java-17-openjdk-devel//由于安装tomcat时安装的Java1.8,但是Jenkins需要Java17,为了防止版本冲突,需要配置jdk的优先级,从而能够同时使用这两个版本
[root@tomcat jenkins]# alternatives --config java //优先使用java-17-openjdkThere are 2 programs which provide 'java'.Selection Command
-----------------------------------------------1 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java)Enter to keep the current selection[+], or type selection number: 1
[root@tomcat ~]# bash //bash使其生效 //下载jenkins.war的包
[root@tomcat ~]# wget wget https://get.jenkins.io/war-stable/2.414.2/jenkins.war
[root@tomcat ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80 apache-tomcat-9.0.80.tar.gz jenkins.war////将Jenkins包复制到我们为其准备的其中一个tomcat的/usr/local/jenkins/webapps/目录中去,也就是我们前面复制的jenkins中去
[root@tomcat ~]# cp jenkins.war /usr/local/jenkins/webapps/
[root@tomcat ~]# cd /usr/local/jenkins/webapps/
[root@tomcat webapps]# ls
docs examples host-manager jenkins.war manager ROOT//重启服务后,则会自动解压jenkins.war
[root@tomcat webapps]# ../bin/catalina.sh stop
Using CATALINA_BASE: /usr/local/jenkins
Using CATALINA_HOME: /usr/local/jenkins
Using CATALINA_TMPDIR: /usr/local/jenkins/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@tomcat webapps]# ../bin/catalina.sh start
Using CATALINA_BASE: /usr/local/jenkins
Using CATALINA_HOME: /usr/local/jenkins
Using CATALINA_TMPDIR: /usr/local/jenkins/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@tomcat webapps]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 1 [::ffff:127.0.0.1]:8006 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 100 *:8081 *:*
[root@tomcat webapps]# ls //jenkins自动解压
docs examples host-manager jenkins jenkins.war manager ROOT
访问jenkins页面
[root@tomcat webapps]# cat /root/.jenkins/secrets/initialAdminPassword
3a5952875fdc4a4c91fc87d480f32338
安装推荐插件
创建一个用户
部署完成
5.5.创建一个jenkins项目
测试
5.6.配置jenkins自动拉取项目,进行打包(maven),并将包传输到tomcat的项目目录(webapps)中
安装所需的软件包
[root@tomcat ~]# yum -y install git maven
[root@tomcat ~]# which git
/usr/bin/git
[root@tomcat ~]# which mvn
/usr/bin/mvn
修改test项目的流水线脚本内容
脚本内容:
//在gitee网站上拉取一个项目目录,然后领用mvn命令压缩至我们想要的.war格式,再将压缩包放置到tomcat的项目目录中,重启tomcat服务后自动解压,从而能够通过tomcat服务端口号访问到我们拉取的项目网页
pipeline {agent anystages {stage('pull code and package') {steps {git 'https://gitee.com/forgotten/tomcat-java-demo.git'sh 'mvn clean package'}}stage('publish') {steps { sh 'cp /root/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ftx.war'sh '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'}}}
}
通过jenkins压缩的包存放位置
[root@tomcat target]# ls
classes ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver
generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status
[root@tomcat target]# pwd
/root/.jenkins/workspace/test/target
进入tomcat项目进行查看
[root@tomcat webapps]# pwd
/usr/local/tomcat/webapps
[root@tomcat webapps]# ls
docs examples ftx ftx.war host-manager manager ROOT
通过8081端口访问我们拉取的项目
generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status
[root@tomcat target]# pwd
/root/.jenkins/workspace/test/target
**进入tomcat项目进行查看**~~~powershell
[root@tomcat webapps]# pwd
/usr/local/tomcat/webapps
[root@tomcat webapps]# ls
docs examples ftx ftx.war host-manager manager ROOT
通过8081端口访问我们拉取的项目
访问成功
相关文章:

tomcat多实例部署jenkins
tomcat多实例部署jenkins 文章目录 tomcat多实例部署jenkins1.简介:2.优缺点:3.工作原理:4.工作流程:5.tomcat多实例部署jenkins流程5.1.环境说明5.2.部署前准备工作5.3.多实例部署tomcat5.4.部署jenkins5.5.创建一个jenkins项目5…...
强连通分量+缩点
[图论与代数结构 701] 强连通分量 题目描述 给定一张 n n n 个点 m m m 条边的有向图,求出其所有的强连通分量。 注意,本题可能存在重边和自环。 输入格式 第一行两个正整数 n n n , m m m ,表示图的点数和边数。 接下来…...
如何做系统架构设计
文章目录 1、如何进行架构设计体系架构需求体系架构设计体系架构文档化体系架构复审体系架构实现体系架构演化 2、架构设计注意事项分治原则服务自治拥抱变化可维护性考虑依赖和限制阅读代码注意事项 3、最后 系统架构应该如何设计,从自己做架构的经历来分享一些体…...

L14D6内核模块编译方法
一、内核模块基础代码解析 一个内核模块代码错误仍然会导致的内核崩溃。 GPL协议:开源规定,使用内核一些函数需要 1、单内核的缺点 单内核扩展性差的缺点减小内核镜像文件体积,一定程度上节省内存资源提高开发效率不能彻底解决稳定性低的缺…...

PyTorch入门教学——dir()函数和help()函数的应用
1、简介 已知PyTorch是一个工具包,其中包含许多功能函数。dir()函数和help()函数是学习PyTorch包的重要法宝。 dir():能让我们知道工具包以及工具包中的分隔区有什么东西。help():能让我们知道每个工具是如何使用的,即工具的使用…...

使用Elasticsearch来进行简单的DDL搜索数据
说明:Elasticsearch提供了多种多样的搜索方式来满足不同使用场景的需求,我们可以使用Elasticsearch来进行各种复制的查询,进行数据的检索。 1.1 精准查询 用来查询索引中某个类型为keyword的文本字段,类似于SQL的“”查询。 创…...

【软考】9.3 二叉树存储/遍历/线索/最优/查找/平衡
《树与二叉树》 二叉树的顺序存储结构 顺序存储只适用于完全二叉树和满二叉树,一般二叉树不适用i 2 的左孩子为 2i 4,右孩子为 2i 1 5 二叉树的链式存储结构 链式存储适用于二叉树;空结点用“∧”表示二叉链表:左孩子࿰…...

关于矿井地面电力综合自动化系统的研究与产品选型
安科瑞 崔丽洁 摘要:煤矿供电系统是煤矿生产的重要动力保障 , 一旦电力中断 , 生产将被迫停止 , 同时停电后容易发生瓦斯积聚爆炸、淹井等恶性事故,现有配电室采用不同厂商的保护装 置产品,没有形成有效的监控配电系统,不便于管…...

论文阅读:Offboard 3D Object Detection from Point Cloud Sequences
目录 概要 Motivation 整体架构流程 技术细节 3D Auto Labeling Pipeline The static object auto labeling model The dynamic object auto labeling model 小结 论文地址:[2103.05073] Offboard 3D Object Detection from Point Cloud Sequences (arxiv.o…...

Python学习基础笔记六十八——循环
循环是编程语言常见的流程控制。 Python语句要让计算机反复地做一些事情,就要用到循环语句。 有While和for循环。 while循环: command input("请输入命令:") while command ! exit:print(f输入的命令是{command})command input("请输…...

部署k8s dashboard(这里使用Kubepi)
9. 部署k8s dashboard(这里使用Kubepi) Kubepi是一个简单高效的k8s集群图形化管理工具,方便日常管理K8S集群,高效快速的查询日志定位问题的工具 部署KubePI(随便在哪个节点部署,我这里在主节点部署&#…...
Java Lambda表达式的使用
我们了解了 java Lambda 的概念并可以在匿名类的场合使用 Lambda 语法进行简单替换。本节主要介绍在 Java 中如何使用 Lambda 表达式。 作为参数使用Lambda表达式 Lambda 表达式一种常见的用途就是作为参数传递给方法,这需要声明参数的类型声明为函数式接口类型。…...

【初始C语言8】详细讲解初阶结构体的知识
前言 💓作者简介: 加油,旭杏,目前大二,正在学习C,数据结构等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏…...

<C++> IO流
C语言的输入与输出 在C语言当中,我们使用最频繁的输入输出方式就是scanf与printf: scanf: 从标准输入设备(键盘)读取数据,并将读取到的值存放到某一指定变量当中。printf: 将指定的数据输出到…...

基于单目相机的2D测量(工件尺寸和物体尺寸)
目录 1.简介 2.基于单目相机的2D测量 2.1 想法: 2.2 代码思路 2.2 主函数部分 1.简介 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2…...

23面向对象案例1
目录 1、计算连续表达式的一个过程 2、优化后的代码 为什么不能return resultn? 3、用面向对象的方法可以解决冗余的问题,但是还是不能解决result的值可以被随意修改的问题 4、解决不能被随意修改的问题,可以将类属性改成私有变量吗&…...
go语言基础之常量与itoa
视频学习地址:Go零基础入门_在线视频教程-CSDN程序员研修院 一. 常量 定义:常量是一个简单值的标识符,在程序运行时,不会被修改的量。注意:常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数…...

民宿酒店订房房态商城小程序的作用是什么
外出旅游出差,酒店民宿总是很好的选择,随着经济复苏,各地旅游及外出办公人次增多,酒店成绩随之增加,市场呈现多品牌酒店经营形式。 区别于以前,如今互联网深入各个行业,酒店经营也面临着困境。…...
acwing算法基础之数据结构--栈和队列
目录 1 知识点2 模板 1 知识点 栈:先进后出。先进的就是栈底,后进的就是栈顶。后进先出嘛,所以在栈顶弹出元素。 队列:先进先出。先进的就是队头,后进的就是队尾。先进先出嘛,所以在队头弹出元素。 单调…...

关于导出的Excel文件的本质
上篇文章中提到关于xlsx改造冻结窗格的代码,我是怎么知道要加pane的呢,加下来就把我的心路历程记录一下。 我改造之前也是没有头绪的,我网上查了很多,只告诉我如何使用,但源码里没有针对!freeze的处理,所以…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...