Jenkins基础教程
Jenkins介绍
Jenkins 是一款开源的持续集成(CI)和持续交付(CD)工具,在软件开发和自动化部署流程中发挥着关键作用。
1.背景和起源
它最初是由 Sun Microsystems 公司的一名工程师开发的 Hudson 项目,后来由于商标问题,这个项目的分支被命名为 Jenkins。随着软件开发流程的不断演变,对于自动化构建、测试和部署的需求日益增长,Jenkins 应运而生并得到了广泛的应用。
2.核心功能
持续集成(CI)
Jenkins 能够自动化软件构建过程。例如,当开发团队成员将代码提交到版本控制系统(如 Git)时,Jenkins 可以自动检测到代码的变更,并触发构建任务。它会按照预先配置的步骤,如编译代码、运行单元测试等。如果构建过程中出现错误,开发人员会立即收到通知,这样可以快速定位和解决问题,确保代码的质量。
假设一个 Java 项目,开发人员每次提交代码后,Jenkins 可以自动从代码仓库拉取最新代码,使用 Maven 或 Gradle 等构建工具进行编译,生成可执行的 JAR 文件。同时运行 JUnit 测试用例来检查代码功能是否正确。
持续交付 / 部署(CD)
除了构建,Jenkins 还支持将软件部署到不同的环境。它可以将经过测试的软件部署到测试服务器、预生产服务器,甚至是生产环境。通过自动化部署流程,减少了人工操作可能带来的错误,提高了部署的速度和可靠性。
比如,对于一个 Web 应用程序,Jenkins 可以将构建好的 WAR 文件自动部署到 Tomcat 服务器上。在部署到生产环境之前,它还可以先部署到一个模拟生产环境的测试环境中进行最后的验证。
插件系统
Jenkins 拥有丰富的插件生态系统。这些插件可以扩展 Jenkins 的功能,以满足不同用户和项目的需求。例如,有用于与各种版本控制系统集成的插件(如 Git、Subversion 等),用于代码质量检查的插件(如 SonarQube),以及用于自动化测试的插件(如 Selenium)等。
如果要对代码进行静态代码分析,就可以安装和配置 SonarQube 插件。这个插件可以在构建过程中对代码进行扫描,检查代码是否符合编码规范、是否存在潜在的安全漏洞等,并生成详细的报告。
3.工作原理
主从架构
Jenkins 可以采用主从架构。主节点负责调度和管理构建任务,从节点则执行实际的构建工作。这种架构在处理大量构建任务或者构建任务比较复杂、资源消耗大的情况下非常有用。例如,一个大型的软件开发项目,可能有多个不同的模块需要构建,主节点可以将这些构建任务分配到多个从节点上同时进行,提高构建效率。
构建触发机制
构建任务可以通过多种方式触发。除了前面提到的代码提交触发外,还可以通过定时触发(例如每天晚上自动构建项目,进行全量测试)、远程触发(通过 API 调用,在其他系统需要的时候触发构建)等方式。
假设一个项目需要每天晚上对当天开发的所有功能进行一次集成测试,就可以在 Jenkins 中设置定时任务,在指定的时间触发构建,运行所有的测试用例。
4.使用场景
软件开发项目
在各种规模的软件开发团队中,Jenkins 可以帮助实现高效的开发流程。无论是小型的创业公司开发移动应用,还是大型企业开发复杂的企业级软件,都可以利用 Jenkins 进行持续集成和交付。
DevOps 实践
它是 DevOps 文化的重要工具。通过自动化软件的构建、测试和部署流程,促进开发团队和运维团队之间的协作,打破传统的开发和运维之间的壁垒。
Jenkins安装和配置
安装:
Jenkins基于java环境开发的,所以需要配置java环境
直接使用wget工具下载jdk的rpm包,然后使用yum命令安装
wget https://download.oracle.com/java/17/archive/jdk-17.0.6_linux-x64_bin.rpm
yum install -y jdk-17.0.6_linux-x64_bin.rpm
使用命令查看当前jdk的版本
java -version
版本如图所示
接下来进行yum仓库配置
使用wget工具下载yum仓库
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
导入密钥
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
接下来安装Jenkins
yum install -y Jenkins
注:导入密钥时可能会出现报错,可能是CA证书版本过低,更新CA证书即可
yum install -y ca-certificates
此时Jenkins安装完成,使用命令启动Jenkins
systemctl start jenkins
查看此时Jenkins的状态
可以看到启动成功。
注:若是启动失败,查看是否是jdk版本过低。
此时关闭防火墙,然后再浏览器输入: 当前服务器ip:8080 即可打开Jenkins
配置:
打开浏览器,首先看到如图所示
根据提示,再服务器上查看密码
cat /var/lib/jenkins/secrets/initialAdminPassword
将查询到的密码输入进去,点击右下角的继续
点击安装推荐的插件即可
然后就会自动进行插件的安装,过程较慢,需要耐心等待
部署完成就是以下的界面
此处全部自定义,完成后点击右下角保存并完成
点击保存并完成
如图所示就是配置完成的界面。
Jenkins远程部署
安装插件:
首先确保Publish Over SSH插件和Git plugin插件存在,可以按照如下操作寻找插件
首先点开Manage Jenkins
找到插件
在此处搜索
安装好插件重启Jenkins服务,再次登录即可
测试连通:
准备另外一台机器用作测试
点击此处的系统
将页面翻到最下方,可以看到如下
此处进行配置
配置成如图所示
名字可以自定义
主机名就是被远程部署的机器
远程目录就是需要部署的目录
点击右下角的测试配置,查看是否可以连通
这里显示成功,代表着可以连通
案例部署:
点击此处的“新建Item”
选择自由项目
在此处选择git,git的内容用作示范
https://gitee.com/g1395310898/jenkins_test
git的分支为master
在构建步骤中选择“通过SSH发送文件或执行命令”
配置如图所示
名字的地方就是测试连通时定义的远程服务器
源文件“ **/** ”表示全部代码都要进行发送
远程目录表示把代码发送到远程机器的位置
其余设置默认即可
设置完成后即可保存退出
点击“ Build Now ”对项目进行运行操作
可以看到运行成功
在远程服务器上查看是否部署成功
可以看到部署成功。
Jenkins邮件配置
安装插件:
确保“Email Extension Plugin”插件存在,可以去插件内查看是否已经安装,如下
配置邮箱:
此处使用网易邮箱进行演示,可以自行注册
点开如图所示 POP3/SMTP/IMAP
此处默认关闭,打开服务,获取授权码
获取之后打开Jenkins,找到如下配置
由于此处是网易邮箱,所以设置成如下
用户名填写自己的网易邮箱
密码则是授权码
测试是否可以使用,点击测试
可以看到邮件发送成功
此处用到远程部署的案例,再次对上面的案例进行配置
在构建后操作中添加“ 电子邮件通知 ”
保存
现在运行案例
这种邮件发送方式只能收到部署失败的邮件,所以将我将git的分支进行了修改,此处发送的邮件就是报错的邮件。
若是想要无论成功还是失败都发送邮件,那么上面安装的插件就起到了作用
现在将配置的邮件通知内容全部删掉
找到“ 扩展电子邮件通知 ”
进行如下设置
由于最新的Jenkins版本不能在这直接输入用户和密码,所以需要设置凭证
找到凭证
点击system
在此处添加凭证“ Add credentials ”
对以下内容进行设置
用户名就是邮箱的地址
密码就是邮箱的授权码
触发器进行如下设置
再次对案例进行配置
点击“ 可编辑的电子邮件通知 ”
一切进行默认配置即可
此时运行案例,在邮箱中查看
可以看到成功的邮件发了过来。
Jenkins管理员密码修改
进入如下目录
cd /var/lib/jenkins/users
可以看到如下
进入第一个目录,这是管理员目录,再其中找到config.xml文件,进入编辑,找到如下
<passwordHash>#jbcrypt:$2a$10$cINXWkeT2FFPlecnk5rsteLonjc44PR7jWdC6oIRsqqBpc/SuDZfq</passwordHash>
找到该行,Jenkins 的密码是使用 Java 加密工具 jBCrypt 生成的,所以可以随便生成一个密码来替换掉之前的密码,例如使用加密后的 123456 来替换,123456 加密后为:
$2a$10$SRqhubr8eaDYxjgTcNjlOeJQJBpIVEYaJmMK2v5dgTqYpD09hMaAi (生成的加密字符串并不是唯一的,但是都可用)
此时就可用123456这个密码登录Jenkins。
也可手动设置其他密码,可自行编辑。
Jenkins部署java服务
下载jdk
远程机器上下载:
由于部署的是java服务,所以需要再远程机器上面安装java环境,使用21版本的jdk
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
下载之后解压至/usr/local/目录中
tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local
解压之后配置环境变量
再/etc/profile文件的最后一行添加如下内容
export JAVA_HOME=/usr/local/jdk-21.0.5
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
使环境变量立刻生效
source /etc/profile
查看jdk版本,看看是否配置完成
在本地服务器上下载jdk
此处也使用21版本
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
解压
tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local
此处不需要配置环境变量
进入Jenkins网页,找到工具
配置jdk如下
路径填写解压到的目录
远程机下载tomcat
下载tomcat
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.91/bin/apache-tomcat-9.0.91.tar.gz
解压至/usr/local目录下
tar -zxvf apache-tomcat-9.0.98.tar.gz -C /usr/local
将文件名修改为tomcat
mv apache-tomcat-9.0.98 tomcat
启动tomcat
进入bin目录
cd /usr/local/tomcat/bin
./startup.sh
关闭防火墙打开网页,网页地址为
Ip地址/8080
如图表示安装完成
点击manager webapp,出现如下界面
进入该服务器的如下目录进行修改
在context.xml文件中添加如下内容
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
进入如下目录进行配置
在tomcat-users.xml文件中的最后添加如下内容
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="admin" password="123456" roles="admin-gui,manager-gui,manager-jmx, manager-script,manager-status"/>
此时就可以在网页中进行登录,账号是admin,密码是123456
登录之后显示如下
本地服务器在线Maven
下载Maven
Wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz
解压至/usr/local目录中
tar -zxvf apache-maven-3.9.8-bin.tar.gz -C /usr/local
将文件名修改为maven398
mv apache-maven-3.9.8 maven398
进入Jenkins网页,找到工具,对maven进行配置
此时配置完成。
获取gitee仓库
进入gitee官网注册一个账号,发布一个仓库,在本地服务器中创建一个test目录,将其作为远程仓库
在本地服务器下载zrlog
wget https://codeload.github.com/94fzb/zrlog/zip/master
解压
unzip master
将解压的内容全部移动至test目录中
mv zrlog-master/* test/
将文件内容上传至gitee仓库
git push -u origin master
在gitee上面查看是否上传成功
可以看到上传成功。
部署项目
安装插件:
打开Jenkins,确保Maven Integration(用来创建一个maven的项目)和Deploy to container(用来将war包,发布到远程去)插件存在
不存在则进行安装
创建maven项目:
配置git仓库
使用maven编译源码生成的包,pom.xml文件需要自己仔细寻找
clean install –D maven.test.skip=true 表示在编译之前先清理,跳过测试
邮件插件可自行选择
验证:
运行项目,如下表示运行成功
相关文章:
Jenkins基础教程
Jenkins介绍 Jenkins 是一款开源的持续集成(CI)和持续交付(CD)工具,在软件开发和自动化部署流程中发挥着关键作用。 1.背景和起源 它最初是由 Sun Microsystems 公司的一名工程师开发的 Hudson 项目,后来…...
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
目录 一、什么是 Java 环境变量? 二、配置 Java 环境变量 1. 下载并安装 JDK 2. 配置 JAVA_HOME Windows 系统 Linux / macOS 系统 3. 配置 PATH Windows 系统 Linux / macOS 系统 4. 验证配置 三、常见问题与解决方案 1. 无法识别 java 或 javac 命令 …...
深入解析 Pytest 钩子函数及二次开发过程
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 在 Pytest 测试框架中,钩子函数(Hooks)是一种强…...
http 请求总结get
关于get请求传递body的问题 错误代码 有400 , 415 等情况 <!doctype html><html lang"zh"><head><title>HTTP Status 400 – 错误的请求</title><style type"text/css">body {font-family:Tahoma,Arial,sans-seri…...
漏洞扫描:网络安全的 “体检” 与 “防护指南”
在当今数字化时代,网络安全如同守护城堡的坚固城墙,而漏洞扫描则是检查城墙是否存在缝隙与薄弱环节的重要手段。那么,究竟什么是漏洞扫描?又该如何进行呢? 什么是漏洞扫描? 漏洞扫描是一种安全检测过程&a…...
《Vue进阶教程》第二十七课:实现侦听对象
往期内容: 《Vue进阶教程》第十六课:深入完善响应式系统之单例模式 《Vue进阶教程》第十七课:支持分支切换 《Vue进阶教程》第十八课:避免死循环 《Vue进阶教程》第十九课:computed初步实现 《Vue进阶教程》第二十…...
【Linux 网络 (五)】Tcp/Udp协议
Linux 网络 一前言二、Udp协议1)、Udp协议特点2)、Udp协议格式3)、Udp报文封装和解包过程4)、UDP的缓冲区 三、TCP协议1)、TCP协议特点2)、TCP协议格式1、4位首部长度、源端口、目的端口2、16位窗口大小3、…...
算法工程化工程师
算法工程化工程师是一种结合算法研究与工程开发能力的技术职位,主要职责是将算法从理论研究到实际落地,应用到各种工业或商业场景中。以下是关于这个职位的一些核心内容: 核心职责: 算法实现与优化: 将数学模型或算法…...
信息系统管理师试题-转型升级
1.3.转型升级 战略转型升级是对组织的长期发展方向、运行模式、组织战略、组织方式、资源配置方式、祖师文化等进行全方位升级变革。下列对战略转型升级的描述错误的是() A大多数组织的转型主要是战略转型 B组织转型升级首先要解决的是战略选择问题 C组织…...
mysql三种读取模式(普通、流式、游标)
在与MySQL数据库交互时,数据的读取方式有多种选择,包括流式读取、游标读取和普通读取。每种方式都有其独特的原理、优势和劣势。本文将对这三种读取方式进行详细介绍, 1. 普通读取 介绍 普通读取是指通过JDBC的Statement或PreparedStateme…...
月子会所ERP管理云平台 GetData.ashx SQL注入致RCE漏洞复现
0x01 产品简介 月子会所ERP管理云平台是武汉金同方科技有限公司专为为母婴服务行业提供信息化解决方案,是结合行业顶级月子中心相关企业需求开发的一套综合性管理软件。该系统全面管控月子中心经营过程中的各个环节,提高总店及分店月子中心管理水平,规范月子中心从业人员操作…...
Ubuntu22.10/22.04 autoinstall--OK
第一步:建立ubuntu22.04 jammy apt本地源(见本博主对应栏) --------------------------------------------------------------------------------------- ubuntu22.04 grub配置: menuentry Ubuntu22.04-autoinstall(UEFI) --id UBUNTU22.04-autoinstall { echo "…...
操作系统之同步与互斥的基本概念
1. 同步的基本概念 定义:同步是指在多个并发执行的进程或线程之间协调其行为,以使它们能够正确地相互合作。在计算机科学中,同步通常指对共享资源进行访问控制,以避免竞争条件和死锁等问题。 实现方式:为了实现同步&a…...
【ANGULAR网站开发】初始环境搭建
1. 初始化angular项目 1.1 创建angular项目 需要安装npm和nodejs,这边不在重新安装 直接安装最新版本的angular npm install -g angular/cli安装指定大版本的angular npm install -g angular/cli181.2 启动angular 使用idea启动 控制台启动 ng serve启动成功…...
[青少年CTF练习平台]Lihua‘s for
下载附件之后直接IDA启动 查看dword_403040指向的内容,全是数据,提取出来 分析完成写脚本 flag "" temdata [0x00000066, 0x0000006D, 0x00000063, 0x00000064, 0x0000007F, 0x00000064, 0x00000032, 0x00000036, 0x0000006A, 0x000000…...
WebRTC服务质量(12)- Pacer机制(04) 向Pacer中插入数据
WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…...
css文字折行以及双端对齐实现方式
使用flex布局后,文字超出容器部分不会自动折行了。实现代码如下: <el-row><el-col :span"24"><span class"label">姓名</span><span class"content">{{name}}</span></el-col>…...
AI智能养站神器-SEO助理原创文章批量生成发布工具
很多站长最头疼的就是网站每天的内容更新,因为不知道写什么,采集被人的文章又会被定义为抄袭,而且现在伪原创已经没有多大的效果了,所以今天给大家分享的就是一款AI智能养战神器-SEO助理原创文章批量生成发布工具。 这款工具支持…...
python数据分析之爬虫基础:selenium详细讲解
目录 1、selenium介绍 2、selenium的作用: 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 (1…...
使用 ECharts 与 Vue 构建数据可视化组件
在前端开发中,数据可视化是非常重要的一部分。ECharts 作为一个功能强大且易于使用的开源数据可视化库,被广泛应用于各种图表展示需求中。而 Vue.js 是当下流行的前端框架之一,它的数据驱动和组件化开发模式让我们能轻松地将 ECharts 集成到 …...
KAFKA 权威指南笔记(一)究竟应该配置多少个BROKER?
一个KAFKA集群需要多少个BROKER? 一个单独的Kafka服务器被叫做BROKER,BROKER可以处理数千个分区以及每秒百万级别的消息量。由BROKER组成了“集群”(其中由集群控制器角色的BROKER是从成员中选举出来的,负责控制管理工作…...
练习题:20
目录 Python题目 题目 题目分析 1. 类与变量、属性设计分析 2. Value 属性的实现分析 3. 转换函数分析 4. 整体代码结构与编程规范考虑 代码实现 代码解释 1. 类定义部分 2. 对象创建与功能测试部分 运行思路 1. 类定义阶段 2. 对象创建阶段 3. 获取 Value 属性…...
【时时三省】(C语言基础)动态内存函数malloc
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 malloc 开辟内存块 使用格式 void *malloc(size_t sie); 示例 10*sizeof(int)就是开辟空间的大小 如果p是void指针的话 p不能解引用 m…...
大数据学习之Redis 缓存数据库二,Scala分布式语言一
一.Redis 缓存数据库二 26.Redis数据安全_AOF持久化机制 27.Redis数据安全_企业中该如何选择持久化机制 28.Redis集群_主从复制概念 29.Redis集群_主从复制搭建 30.Redis集群_主从复制原理剖析 31.Redis集群_哨兵监控概述 32.Redis集群_配置哨兵监控 33.Redis集群_哨兵监控原理…...
第23天:信息收集-APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围
#知识点 1、信息收集-APP应用-公开信息-知识产权&开发者定位 2、信息收集-APP应用-资产信息-抓包&静态提取&动态调试 一、APP渗透测试的范围->应涵盖APP所有功能和组件,包括但不限于以下几个方面: 1、前端安全:包括界面交互、…...
每日一练 | DHCP 客户端续约过程
01 真题题目 在 DHCP 运行过程中,如果客户端 IP 地址在租约过去 87.5%还没有完成续约的话,客户端将发送什么报文进行再次续约? A. DHCPdiscover 广播报文 B. DHCP release 单播报文 C. DHCPrequest 广播报文 D. DHCPrequest 单播报文 02 真题…...
存储块的获取与释放
目录 获取存储块 释放存储块 设计实现 获取存储块 有空闲存储块,直接取出空闲块; 无空闲存储块,任务进入等待队列。 释放存储块 无任务等待,插入到空闲链表; 有任务等待,释放等待队列头部的任务。 设计实现…...
定位方式:css
使用相对路径 div ul #div下的所有ul,空格表示相对路径(这个实际中用的多一些) 绝对路径-一般不用绝对路径 html>head>div,“>”表示根路径 使用class名称定位 使用.表示 使用id定位 使用#表示 使用属性定位 [属性名…...
主从复制架构介绍和主从复制配置案例
每一个数据库的业务都对应着一个前端的业务, 主从复制架构的必要性? 第一点是两个服务器如果有一台服务器出现故障,那么另一台服务器可以正常工作,以保障前端业务可以被正常访问,第二点是两个服务器可以共同去处理数据ÿ…...
零跑汽车一路狂飙
新能源汽车市场潮起潮落,只有潮水退去,才能看清谁在裸泳。十年前,一批新能源汽车新势力带着创新的理念和先进的技术,如雨后春笋般涌入中国汽车市场,掀起一场新旧势力的角逐。 经历市场的激烈洗礼与投资泡沫的挤压&…...
固态硬盘SSD
目录 1、固态硬盘结构 2、访问和读取策略 3、固态硬盘 VS SSD固态硬盘 (1)速度 (2)性能 (3)使用寿命 4、磨损均衡技术 (1)动态磨损均衡 (2)静态磨损…...
MTEB文本向量化评估基准:Massive Text Embedding Benchmark
Massive Text Embedding Benchmark 文本向量化评估基准 Bitext mining is the task of finding parallel sentences in two languages. 双语文本挖掘是识别两种语言中语义等价句子对的任务。 Classification is the task of assigning a label to a text. 文本分类是为文本分配…...
【Compose multiplatform教程09】【组件】Image组件
查看全部组件 Image 功能说明:能够加载并显示图片,支持本地资源和网络资源,可对图片的大小、缩放方式、裁剪等属性进行设置,使图片以合适的方式展示在界面中,增强界面的视觉效果。示例场景:在应用的启动页…...
android jetpack compose Model对象更新变量 UI不更新、不刷新问题
以前是搞老本行Android原生开发的,因为工作原因,一直在用vue小程序;因为一些工作需要,又需要用到Android原生开发,建了个项目,打开源码一看,天塌了!!!我以前的…...
Java抽象工厂+单例模式
在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…...
React 第十九节 useLayoutEffect 用途使用技巧注意事项详解
1、概述 useLayoutEffect 是useEffect 的一个衍生版本,只是他们的执行时机不同 useLayoutEffect 用于在DOM更新执行完成之后,浏览器渲染绘制之前执行,这会阻塞浏览器的渲染; useEffect 的执行时机是在组件首次渲染和更新渲染之后…...
以太网协议实现——FPGA学习笔记23
一、简介 FPGA千兆网口数据传输MDIO接口——FPGA学习笔记3_yt8531sh原理图-CSDN博客 1、以太网帧类型 2、以太网帧格式 3、以太网MAC帧格式 二、以太网报文 目的IP :ff ff ff ff ff ff(广播IP地址) 类型:ARP (0806) 源MAC地址:74 7d 24 92 fb df 单播 …...
docker 实践与应用举例
docker 实践与应用举例 Docker是一个开源的容器化平台,它允许开发人员将应用程序及其依赖项打包为一个轻量级、可移植的容器,并在不同的环境中运行。Docker的基本概念包括以下几点: 1. 容器:Docker通过使用Linux容器技术&#x…...
双指针——有效三角形的个数
一.题目描述 611. 有效三角形的个数 - 力扣(LeetCode) 二.题目解析 题目其实很简单就是让我们在数组中找到可能构成三角形的所有可能。构成三角形的前提是:任意两边之和大于第三边。所以我们要满足让下面三条同时成立才可以构成三角形&am…...
【ES6复习笔记】函数参数的默认值(6)
在ES6中,函数参数默认值是一个非常有用的特性,它允许你在定义函数时为参数指定一个默认值。如果在调用函数时没有提供相应的参数值,那么函数将使用默认值。 1. 形参初始值 具有默认值的参数,一般位置要靠后。这是一个潜规则&…...
tryhackme-Cyber Security 101-Linux Shells(linux命令框)
目的:了解脚本和不同类型的 Linux shell。 任务1:Introduction to Linux Shells(Linux Shell 简介) 作为操作系统的常规用户,我们都广泛使用图形用户界面 (GUI) 来执行大多数操作。只需点击几…...
【Go】-限流器的四种实现方法
目录 关于限流和限流器 固定窗口限流器 滑动窗口限流器 漏桶限流器 令牌桶限流器 总结 关于限流和限流器 限流(Rate Limiting)是一种控制资源使用率的机制,通常用于防止系统过载和滥用。 限流器(Rate Limiter)是…...
精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
精准检测花生豆:基于EfficientNet的深度学习分类项目 在现代农业生产中,作物的质量检测和分类是确保产品质量的重要环节。针对花生豆的检测与分类需求,我们开发了一套基于深度学习的解决方案,利用EfficientNetB0模型实现高效、准…...
【信息系统项目管理师】第11章:项目成本管理过程详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、规划成本管理1、输入2、工具与技术3、输出二、估算成本1、输入2、工具与技术3、输出三、制定预算1、输入2、工具与技术3、输出四、控制成本1、输入2、工具与技术3、输出一、规划成本管理 定义:规划成本管…...
微信流量主挑战:用户破16!新增文档转换(新纪元3)
朋友们,报告好消息!我的小程序用户数量已经涨到16个了!没错,真没拉朋友圈亲戚好友来撑场子,全靠实力(和一点点运气)吸引了16位陌生小伙伴光临!这波进步,连我自己都感动了…...
DFS【东北大学oj数据结构11-2】C++
题面 深度优先搜索(DFS)是一种基于尽可能多地访问相邻顶点策略的图搜索算法。如果顶点 v 有未搜索的顶点则递归搜索直至 v 的最后一条边。在搜索了 v 的所有边之后,搜索继续返回到找到 v 时经过的边。 搜索从原来的起点开始,直到…...
运维项目部署的环境准备
这里用的安装工具是yum,yum作为一个安装工具,用起来比较方便 用yum安装以下软件,组成项目的可运行环境 yum 先更新 yum update -y 安装一个外置仓库 yum install epel-release 安装redis yum install redis 安装nginx yum install nginx 安装vim yum install vim…...
URDF文件中inertial数据的描述坐标系说明
这件事的来源是这样的:结构手动把连杆坐标系下描述的惯性张量数据写入了urdf中,给我到以后发现有问题,给我搞懵了,以为我错了这么多年,于是有了本次的深度调研,先上结论,感兴趣的可以参考后文。…...
OpenCV-Python实战(5)——图形绘制基础
一、直线 cv2.line(img*,pt1*,pt2*,color*,thickness*,lineTypeLINE_8) img:绘图的背景(画布)。 pt1、pt2:始/终点坐标,格式为元组()。 color:直线颜色,BGR格式。 t…...
科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
科技云报到原创。 就像自行车、手表和缝纫机是工业时代的“三大件”。生成式AI、数据、云服务正在成为智能时代的“新三大件”。加之全球人工智能新基建加速建设,成为了人类社会数字化迁徙的助推剂,让新三大件之间的耦合越来越紧密。从物理世界到数字世…...