docker部署jenkins,安装使用一条龙教程
Jenkins + k8s 实现CI/CD
一、简介
1. JenKins是什么?
- Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
2. 什么是CI / CD?
-
CI/CD 是持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)与持续部署(Continuous Deployment,CD)的简称。
-
为什么会有集成地狱这个“雅称”呢?我们一个项目部署的过程,
拉取代码->构建->测试->打包->部署
,如果我们经常需要部署项目,特别是在微服务时代,服务特别多的情况下,不停的测试打包部署,那估计得有个人一整天专门做这事了,而这事又是繁琐的重复无意义的。 -
CI/CD是实现敏捷开发和Devops理念的一种方法,具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试,到交付和部署)。这些关联的事务通常被统称为CI/CD 管道(Pipeline),由开发(RD)、测试(QA)、运维(OP)团队以敏捷方式协同支持。
-
持续集成:重点是将开发者的工作集中到代码仓库,一般情况每天都会有更新,持续集成可以更快的进行集成,更快的得到响应。
-
持续部署:是一种更高程度的自动化,可以根据需求进行持续的自动的部署项目。
二、docker方式安装JenKins(推荐)
1、拉取docker镜像
-
此处最好拉最新的lts版本,老版本下插件各种报错,都是泪…
docker pull jenkins/jenkins:lts
2、创建宿主机目录
mkdir -p /mydata/jenkins/jenkins_home
mkdir -p /mydata/jenkins/logs
mkdir -p /mydata/jenkins/docker
chmod 777 /mydata/jenkins
-
遇到权限问题
docker run -it --rm --volumes-from jenkins -u root ubuntu chmod -R 777 /var/jenkins_home
3、创建hudson.model.UpdateCenter.xml文件(修改清华镜像源下载插件用)
vim /mydata/jenkins/jenkins_home/hudson.model.UpdateCenter.xml
-
内部输入如下内容
<?xml version='1.1' encoding='UTF-8'?> <sites><site><id>default</id><url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url></site> </sites>
4、构造并启动docker容器
docker run -d -p 8099:8080 -p 50099:50000 \
--name jenkins \
--restart=always \
--privileged=true \
-v /mydata/jenkins/jenkins_home:/var/jenkins_home \
-v /mydata/jenkins/logs:/var/log/jenkins \
-v /etc/localtime:/etc/localtime:ro \
jenkins/jenkins:lts
-
查看日志
docker logs -f jenkins
-
复制保存密码 2e2bc3258f0c41deab36bb716a6ae930
-
出现这个就是启动成功了
-
三、Jenkins配置
-
在浏览器访问
http://ip(jenkins 所在主机):8099
(云服务器需要在安全组开放8099端口),出现如下界面需要等待些时间。
1、首页输入初始密码进入
2、选择安装社区插件(较慢,耐心等待)
3. 安装jdk和maven
-
进入容器
docker exec -u root -it jenkins bash
-
更新包管理器
apt update
-
安装openjdk java17 (jenkins lts版本已放弃java8)
apt install -y openjdk-17-jdk# 验证安装 java -version
-
下载并解压 Maven
apt install -y wget apt install -y vimwget https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gztar -xzvf apache-maven-3.8.8-bin.tar.gz -C /opt/mv /opt/apache-maven-3.8.8 /opt/maven# 编辑settings.xml 里面的mirror标签的maven镜像地址为阿里云的 vim /opt/maven/apache-maven-3.8.8/conf/settings.xml<mirror><id>nexus-aliyun</id><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
-
配置Maven的环境变量
echo "export M2_HOME=/opt/maven/apache-maven-3.8.8" >> ~/.bashrc echo "export PATH=\$M2_HOME/bin:\$PATH" >> ~/.bashrc source ~/.bashrc# 验证安装 mvn -version
-
安装git
apt install git
4. jenkins配置jdk,maven,git路径
-
安装gitee插件
-
安装maven插件
-
安装远程连接服务插件:Publish Over SSH
-
安装发布插件:Deploy to container Plugin
-
进入配置页
-
jdk配置
-
maven 配置
-
git配置
-
配置完点击保存
5.配置需要发布部署的远程服务器
-
找到系统管理 -> 系统配置进入页面,找到publish over SSH
四.配置项目自动构建
-
选择构建maven项目
五、自动部署(命令行方式,使用Deploy to container Plugin插件的话不需要看)
1、配置服务器间免密登录
-
生成公私钥
docker exec -u root -it jenkins bash cd /root/.ssh/# 执行生成秘钥,输入后一路回车 ssh-keygen -t rsa -C "root" cat id_rsa.pub cat id_rsa# 接下来需要将公钥导入到认证文件中 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys# 给对应文件授权 chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys# 将authorized_keys 文件拷贝到应用服务器的admin用户.ssh目录下. 首次需要输入密码scp -p /root/.ssh/id_rsa.pub root@111.229.7.217:/root/.ssh/authorized_keys
-
在jenkins容器内进行免密连接测试.
# 在jenkins服务器的/home/admin目录下创建filetest文件,并拷贝到应用服务器 cd ~/ touch filetest scp -p filetest root@111.229.7.217:/root/ # 进入到应用服务器(111.229.7.217),检查/root目录下是否出现filetest# 在jenkins服务器上使用ssh进行免密连接测试,成功后会出现Last Login的提示 ssh root@111.229.7.217 Last login: Fri Feb 14 21:57:33 2025 from 223.80.70.133 exit
-
复制密钥给jenkins用户用
sudo mkdir -p /var/jenkins_home/.ssh sudo chown jenkins:jenkins /var/jenkins_home/.ssh sudo chmod 700 /var/jenkins_home/.sshsudo cp /root/.ssh/id_rsa /var/jenkins_home/.ssh sudo chown jenkins:jenkins /var/jenkins_home/.ssh/id_rsa sudo chown jenkins:jenkins /var/jenkins_home/.ssh/id_rsa.pub sudo chmod 600 /var/jenkins_home/.ssh/id_rsa
2、编写jenins发布脚本
#!/bin/bashecho "部署的目录和项目名称"
DIR="/data/app" #部署路径
projectName="springboot" #项目名称echo "待部署的应用服务器,可多台"
server_ips="111.229.7.217" #多台用,号隔开
for server_ip in ${server_ips[@]}
doecho "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}# 如果存在则备份
if [ -f "$DIR/${projectName}/${projectName}.jar" ];thenmv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
EOFecho "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jarecho "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar# 程序启停脚本
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.shEOFdoneecho "部署success"
3、 编写应用启动脚本放在程序服务器上 start.sh
#!/bin/bash
set -e #任何命令出错就退出
set -o pipefailAPP_ID=it235-boot
APP_DIR="/data/app"nohup java -Dspring.profiles.active=dev -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];thensleep 3tail -n 10 release_out.logsleep 5tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];thenecho "Application started ok"exit 0
elseecho "Application started error"exit 1
fi
4、编写应用停止脚本放在程序服务器上 stop.sh
#!/bin/bashAPP_ID=it235-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
5、添加构建成功时后续部署动作
#!/bin/bash
set -e # 任何命令失败时立即退出echo "部署的目录和项目名称"
DIR="/data/app" # 部署路径
projectName="springboot" # 项目名称echo "待部署的应用服务器"
server_ips="111.229.7.217" # 多台用逗号隔开for server_ip in $(echo $server_ips | tr ',' ' '); doecho "操作服务器: $server_ip"echo "1. 备份旧版本"ssh -T -o StrictHostKeyChecking=no root@${server_ip} <<EOFmkdir -p $DIR/backup/${projectName}mkdir -p $DIR/${projectName}if [ -f "$DIR/${projectName}/${projectName}.jar" ]; thenmv $DIR/${projectName}/${projectName}.jar \\$DIR/backup/${projectName}/${projectName}-\$(date "+%Y%m%d_%H%M%S").jar# 保留最近5个备份ls -t $DIR/backup/${projectName}/*.jar | tail -n +6 | xargs rm -ffi
EOFecho "2. 拷贝新版本到临时目录"jar_source="${WORKSPACE}/target/${projectName}.jar"if [ ! -f "$jar_source" ]; thenecho "错误:构建产物不存在 - $jar_source"exit 1fi# scp命令scp -o StrictHostKeyChecking=no "$jar_source" "root@${server_ip}:/tmp/${projectName}.jar"echo "3. 发布新版本"ssh -T -o StrictHostKeyChecking=no root@${server_ip} <<EOFmv -f /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar# 检查启停脚本是否存在if [ ! -f $DIR/${projectName}/stop.sh ] || [ ! -f $DIR/${projectName}/start.sh ]; thenecho "错误:启停脚本缺失!"exit 1fi# 重启应用sh $DIR/${projectName}/stop.shsh $DIR/${projectName}/start.sh
EOFdoneecho "部署成功!"
六、构建成功发送钉钉通知
1. jenkins添加钉钉插件
-
DingTalk
2.系统管理>钉钉 添加钉钉提醒
- 前往钉钉添加机器人
3.配置好后点击测试
4.构建测试
-
构建配置添加钉钉机器人
-
-
自定义内容(玩法很多,还没研究)
- 构建编号: 第${BUILD_NUMBER}次构建 - 测试报告: ${BUILD_URL}allure - 构建日志地址: ${BUILD_URL}console ${GIT_BRANCH}
-
-
成功提醒
-
失败提醒
-
邮箱提醒(太麻烦,没写教程,很多参数没研究明白)
七、Jenkins API控制
1、Jenkins API 文档
- http://你的jenkins地址:8099/api 可以看到当前Jenkins版本支持的api
2、创建访问key
- 此后的所有请求都需要在header中携带此token
- Authorization : Basic eWQ6Mxxxxxxxxxxxxxxx
- 此处eWQ6Mxxxxxxxxxxxxxxx 为创建token的base64编码!
- Authorization : Basic eWQ6Mxxxxxxxxxxxxxxx
3、获取Jenkins工作列表
- url:http://jenkins地址:8099/api/json
4、触发构建
-
url:http://jenkins地址:8099/job/工作名称/build
- 注意,此处工作名称中文字符需要使用 URL 编码 如:“测试构建” 编码后是 %E6%B5%8B%E8%AF%95%E6%9E%84%E5%BB%BA。
-
触发构建
5、其余api有需要自己翻阅文档!
相关文章:
docker部署jenkins,安装使用一条龙教程
Jenkins k8s 实现CI/CD 一、简介 1. JenKins是什么? Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 2. 什么是CI / CD…...
图像识别技术与应用-YOLO
1 YOLO-V1 YOLO-V1它是经典的one-stage方法,You Only Look Once,名字就已经说明了一切!把检测问题转化成回归问题,一个CNN就搞定了!也可以对视频进行实时检测,应用领域非常广! YOLO-V1诞生与2…...
【网络通信安全】子专栏链接及简介
目录 操作系统安全:筑牢网络安全根基 网络协议安全:守护数据传输通道 Web 站点安全开发:打造安全的网络交互平台 在数字化浪潮席卷的当下,网络通信已深度融入生活与工作的方方面面,从日常的线上购物、社交互动…...
Oracle比较好的几本书籍
1.《Oracle专家高级编程》 2.《Oracle高效设计》 3.《Oracle9i&10g&11g编程艺术深入数据库体系结构》 4.《让Oracle跑的更快》(1/2) ....... n.《Oracle官方文档的阅读》下面包括这几个部分,可以跟进研读一下: (1)《…...
忘记dedecms后台超级管理员账号和密码的解决方案
解决方案: 方案一、数据库修改: 1、前提是您能登录到数据库后台,登录MySQL数据库管理工具(如phpMyAdmin) 2、打开数据库中的 dede_admin 表,找到管理员记录,将 pwd 字段的值改成 f297a57a5a7…...
处理动态分页:自动翻页与增量数据抓取策略-数据议事厅
一、案例场景 Lily(挥舞着数据报表):“用户反馈我们的股票舆情分析总是缺失最新跟帖!这些动态分页像狡猾的狐狸,每次抓取都漏掉关键数据!” 小王(调试着爬虫代码):“传…...
微服务新手入门
一、微服务概念 微服务是一种软件架构风格,ta是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务 - 服务拆分 - 远程调用 - 服务治理 - 请求路由 - 身份认证 - 配置管理 - 服务保护 - 分布式事务 - 异步通信 - 消息可靠性 - 延迟消…...
antd浏览器引入的问题
1,在使用ant design vue的4.1.2版本通过浏览器引入的方式遇到的问题,遇到的问题(不确定其他版本有没有问题),通过在页面使用下面的代码 <a-modal v-model:open"apiOpen" title"修改秘钥" ok&q…...
STM32-Unix时间戳
一:什么是时间戳 Unix时间戳(Unix Timestamp)是一个计数器数值,这个数值表示的是一个从1970年1月1日0时0分0秒开始到现在所经过的秒数,不考虑闰秒。 时间戳存储在一个秒计数器里,秒计数器为32位/64位的整…...
【性能测试】Jmeter如何做一份测试报告(3)
本篇文章主要介绍Jmeter中下载插件(Jmeter Plugins) 如何使用监听器插件,线程组插件,梯度压测线程组 测试报告需要去关注的数据,怎么看测试报告图表 目录 一:插件下载 1:下载地址 2ÿ…...
游戏引擎学习第153天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 目前正在进行的是一个比较大的系统调整,原本预计今天会继续深入这个改动,但实际上在昨天的开发中,我们已经完成了大部分的代码编写,并且运行之后几乎一切都能正常工作&#x…...
CentOS7下安装MongoDB
步骤 1:创建 MongoDB Yum 仓库文件 你需要创建一个 MongoDB 的 Yum 仓库配置文件,以便从官方源下载 MongoDB。打开终端并使用以下命令创建并编辑该文件: sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo 在打开的文件中,输入以下…...
Elasticsearch-07-Elasticsearch Java API Client-Elasticsearch 8.0 的高阶api
文章目录 es8 API基础配置和bean注入高阶使用1:引入elasticsearchClient2:查询所有索引3:查询某个索引4:创建索引5:删除指定索引6:查询索引的映射7:创建索引指定映射8:创建文档使用HashMap作为数据存储容器使用自定义类作为数据存储容器使用外…...
【性能优化】MySQL 生产环境 SQL 性能优化实战案例
🚀 MySQL 生产环境 SQL 性能优化实战案例 🏗️ 背景介绍 最近在处理一个项目时,发现在生产环境的工作流相关接口中,某些查询的执行时间异常缓慢,尽管数据量仅为 2 万条。经过分析,发现以下 SQL 语句执行非…...
Docker容器安装软件(完整版)
文章目录 一、安装Docker1.1 docker 相关的命令1.2 配置镜像加速 二. 安装es2.1 创建网络2.2 拉取镜像2.3 创建挂载点目录2.4 部署单点es,创建es容器2.5 编写elasticsearch.yml2.6 重启es容器2.7 测试Elasticsearch是否安装成功 三. 基于Docker安装Kibana3.1 拉取镜…...
DeepSeek-进阶版部署(Linux+GPU)
前面几个小节讲解的Win和Linux部署DeepSeek的比较简单的方法,而且采用的模型也是最小的,作为测试体验使用是没问题的。如果要在生产环境使用还是需要用到GPU来实现,下面我将以有一台带上GPU显卡的Linux机器来部署DeepSeek。这里还只是先体验单…...
11. Pandas :操作Excel文件(Excel报表的案例研究)
从一个装有各种 Excel 文件的文件夹开始,这些文件需要被整合到 Excel 报表中。 它们包含了虚构的电信运营商在全美各营业厅的套餐(金、银、铜)销售情况。每个月有两个文件,子文件夹 new 中的是新用户,子文件夹 existin…...
Qt开源控件库(qt-material-widgets)的编译及使用
项目简介 qt-material-widgets是一个基于 Qt 小部件的 Material Design 规范实现。 项目地址 项目地址:qt-material-widgets 本地构建环境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地构建流程 克隆后的目录结构如图: 直接使用Qt Crea…...
freeswitch(多台服务器级联)
亲测版本centos 7.9系统–》 freeswitch1.10.9本人freeswitch安装路径(根据自己的路径进入)/usr/local/freeswitch/etc/freeswitch使用场景: 使用服务器级联需要双方网络可以ping通,也就是类似局域网内,比如A服务器IP 192.168.1.100 B服务器 192.168.1.101,通过C设备注册…...
【大模型统一集成项目】让 AI 聊天更丝滑:WebSocket 实现流式对话!
🌟 在这系列文章中,我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程,从 架构设计 到 代码实战,逐步搭建一个支持 多种大模型(GPT-4、DeepSeek 等) 的 一站式大模型集成与管理平台ÿ…...
qt 多进程使用共享内存 ,加速数据读写,进程间通信 共享内存
Summary: 项目中我们有时需要使用共享内存共享数据,这样,数据不用进程IO读写,加进数据加载和落地; 程序退出时,再保存到本地;速度提升数十倍; Part1:QSharedMemory Windows平台下进程间通信…...
OpenHarmony-分布式硬件关键技术
前言: OpenHarmony是一款面向未来万物互联场景的操作系统,其设计采用了分布式架构。那么OpenHarmony相比于传统操作系统有哪些关键的分布式技术,本文主要介绍分布式硬件设计理念、跨端分布式硬件核心挑战、以及OpenHarmony分布式硬件平台关键…...
idea超级AI插件,让 AI 为 Java 工程师
引言 用户可在界面中直接通过输入自然语言的形式描述接口的需求,系统通过输入的需求自动分析关键的功能点有哪些,并对不确定方案的需求提供多种选择,以及对需求上下文进行补充,用户修改确定需求后,系统会根据需求设…...
深入Flink运行时架构:JobManager与TaskManager协作全解析
深入Flink运行时架构:JobManager与TaskManager协作全解析 一、Flink分布式执行模型剖析 1.1 运行时架构全景视图 核心组件交互关系: #mermaid-svg-tMSqMSsKP6vwUZi3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...
OSPF-单区域的配置
一、单区域概念: 单区域OSPF中,整个网络被视为一个区域,区域ID通常为0(骨干区域)。所有的路由器都在这个区域内交换链路状态信息。 补充知识点: OSPF为何需要loopback接口: 1.Loopback接口的…...
每日OJ_牛客_过桥_贪心+BFS_C++_Java
目录 牛客_过桥_贪心BFS 题目解析 C代码 Java代码 牛客_过桥_贪心BFS 过桥 描述: dd被困在了一个迷幻森林,现在她面前有一条凶险的大河,河中央有n个神奇的浮块,浮块按1∼n1顺序标号,但两两并不相接&…...
K8S学习之基础二十七:k8s中daemonset控制器
k8s中DaemonSet控制器 DaemonSet控制器确保k8s集群中,所有节点都运行一个相同的pod,当node节点增加时,新节点也会自动创建一个pod,当node节点从集群移除,对应的pod也会自动删除。删除DaemonSet也会删除创建的pod。…...
79.ScottPlot的MVVM实现 C#例子 WPF例子
如何通过数据绑定在 WPF 中实现动态图像显示 在 WPF 应用程序中,通过数据绑定实现动态图像显示是一种高效且优雅的方式。以下是一个简单的教程,展示如何使用 ScottPlot.WPF 库和 MVVM 模式来实现这一功能。 第一步:安装必要的 NuGet 包 首…...
第44天:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式
时间轴: 44天知识点总结: 1.mysql的增删改查功能 2.根据源码sql语句的三种sql注入:布尔盲注(必须要有回显) 延时判断(都可以) 报错回显(必须要有报错处理机制) 3.两个cms…...
说说人工智能
1. 人工智能与机器学习 核心进展 人工智能(AI)与机器学习(ML)已从理论研究全面渗透到实际应用中。深度学习模型如Transformer架构在自然语言处理(NLP)和计算机视觉(CV)领域实现突破…...
懒加载(Lazy Loading):原理、实现与优化策略
懒加载(Lazy Loading) 是一种优化网页性能的技术,主要用于延迟加载非关键资源(如图片、视频、脚本等),直到它们真正需要被使用时才加载。懒加载可以显著减少页面初始加载时间,降低带宽消耗&…...
HTML5(Web前端开发笔记第一期)
p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解 目录 三件套标签标题标签段落标签文本格式化标签图像标签超链接标签锚点链接默认链接地址 音频标签视频标签 HTML基本骨架综合案例->个人简介列表表格表单input标签单选框radio上传…...
Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))
故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…...
SVN 拉取,文件冲突 解决办法
情景 svn 在拉取代码时 提示 已跳过,其余有冲突 ,警告至少还有一个的文件处于冲突状态 导致文件拉取失败 一、原因 版本库和本地工作副本之间存在文件冲突,导致文件无法正常拉取。 二、 Terminal 窗口解决办法 1.查看冲突文件 在 Termin…...
【实战ES】实战 Elasticsearch:快速上手与深度实践-8.1.1基于ES的语义搜索(BERT嵌入向量)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 基于Elasticsearch与BERT的语义搜索架构设计与实战1. 传统搜索的局限性与语义搜索的崛起1.1 关键词搜索 vs 语义搜索1.2 Elasticsearch向量检索演进历程关键版本特性对比 2.…...
【Node.js】--- win11安装 Node.js
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Node.js】--- win11安装 Node.js 开发环…...
【技海登峰】Kafka漫谈系列(九)SpringBoot整合Kafka多数据源配置
【技海登峰】Kafka漫谈系列(九)SpringBoot整合Kafka多数据源配置 Kafka官方提供了基于Java实现的客户端kafka-clients,用于提供生产者和消费者的基本能力。在此基础上,Spring for Apache Kafka(spring-kafka)项目对该原生客户端进行了基于Spring特性的抽象与封装,实现了基…...
【MySQL篇】基本查询实战OJ
本篇是基于上篇mysql基本查询的一些OJ题 MySQL基本查询传送门:【MySQL篇】MySQL基本查询详解-CSDN博客 批量插入数据_牛客题霸_牛客网 insert语句 insert into actor values (1,PENELOPE,GUINESS,2006-02-15 12:34:33); insert into actor values (2,NICK,WAHLBER…...
侯捷 C++ 课程学习笔记:C++内存管理机制
内存管理从平地到万丈高楼 内存管理入门(Memory Management 101) 需要具有动态分配并使用memory(存储(器),(计算机的)内存),使用过C标准库的容器࿰…...
java后端开发day31--集合进阶(一)-----Collection集合List集合数据结构1
(以下内容全部来自上述课程) 1.集合体系结构 List系列集合:添加的元素是有序、可重复、有索引。 Set系列集合:添加的元素是无序、不重复、无索引。 2.Collection集合 Collection是单列集合的祖宗接口(不可直接创建…...
TA学习之路——1.4 MVP矩阵运算
1.变换矩阵的意义 1.将3D物体转化到2D平面 2.为各个空间的运用做准备 2.MVP矩阵代表什么 MVP矩阵分别是模型(Model)、观察(View)、投影(Projecttion)三个矩阵。我们顶点坐标起始于局部空间(Local Space)…...
Java数据结构第二十期:解构排序算法的艺术与科学(二)
专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、常见排序算法的实现 1.1. 直接选择排序 1.2. 堆排序 1.3. 冒泡排序 1.4. 快速排序 一、常见排序算法的实现 1.1. 直接选择排序 每⼀次从待排序的数据元素中选出最小的⼀个元素,存放在…...
【机器学习】主成分分析法(PCA)
【机器学习】主成分分析法(PCA) 一、摘要二、主成分分析的基本概念三、主成分分析的数学模型五、主成分分析法目标函数公式推导(梯度上升法求解目标函数)六、梯度上升法求解目标函数第一个主成分七、求解前n个主成分及PCA在数据预…...
perl、python、tcl语法中读写Excel的模块
perl、python、tcl语法中读写Excel的模块 perl、python、tcl语法中存在读写xls和xlsx格式的模块分别有: python 读取 Excel xlrd:支持传统 .xls 格式的读取 pandas:通过 read_excel() 方法支持 .xls 和 .xlsx 格式 写入 …...
libwebsockets实现异步websocket客户端,服务端异常断开可重连
libwebsockets websocket客户端基本流程网上都有,我只额外优化了重连机制。 在服务器异常断开时不触发LWS_CALLBACK_CLOSED或LWS_CALLBACK_CLIENT_CONNECTION_ERROR,导致无法自动重连 通过定时检查链接是否可写入判断链接是否有效 // 判断wsi是否可用if …...
CAD球体密堆积3D插件V2.0
插件介绍 CAD球体密堆积3D插件V2.0版本可在AutoCAD内建立球体堆积模型,插件采取模拟球体在重力作用下的堆积行为,可生成超密堆积的几何模型及进行堆积过程的动态展示。 插件优化重力堆积物理引擎,新增堆积可视化界面,可直观查看…...
【Linux】线程池、单例模式、死锁
线程池 一.线程池1.日志和策略模式2.线程池1.Task.hpp2.Thread.hpp3.ThreadPool.hpp4.ThreadPool.cc 二.线程安全与重入问题三.线程安全的单例模式1.饿汉模式2.懒汉模式3.懒汉模式线程池1.ThreadPool.hpp2.ThreadPool.cc 四.死锁的概念1.死锁2.死锁的四个必要条件3.避免死锁 五…...
AI+视频监控电力巡检:EasyCVR视频中台方案如何赋能电力行业智能化转型
随着电力行业的快速发展,电力设施的安全性、稳定性和运维效率变得至关重要。传统视频监控系统在实时性、智能化及多系统协同等方面面临严峻挑战。EasyCVR视频中台解决方案作为一种先进的技术手段,在电力行业中得到了广泛应用,为电力设施的监控…...
centos8.0系统部署zabbix6.0监控
centos8.0系统部署zabbix6.0监控 一、部署过程1、确认系统版本2、主机基础环境设置3、安装MySQL 8.0数据库3.1 安装MySQL 8.0仓库3.2 安装软件3.3 设置root用户密码3.4 创建zabbix数据库,授权用户 4、配置zabbix6.0仓库5、安装zabbix服务端软件6、导入zabbix数据表7…...
江科大51单片机笔记【12】AT24C02(I2C总线)
写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…...