【DevOps】Jenkins项目发布
Jenkins项目发布
文章目录
- Jenkins项目发布
- 前言
- 资源列表
- 基础环境
- 一、Jenkins发布静态网站
- 1.1、项目介绍
- 1.2、部署Web
- 1.3、准备gitlab
- 1.4、配置gitlab
- 1.5、创建项目
- 1.6、推送代码
- 二、Jenkins中创建gitlab凭据
- 2.1、创建凭据
- 2.2、在Jenkins中添加远程主机
- 2.3、获取gitlab项目的URL地址
- 2.4、在Jenkins中创建webtest项目
- 2.5、配置源码管理
- 2.6、配置构建过程
- 2.7、构建项目
- 2.8、访问验证
- 三、Jenkins发布带有参数的项目
- 3.1、修改General参数
- 3.2、修改源码管理
- 3.3、构建项目
- 四、Jenkins项目实时自动触发
- 4.1、设置触发器
- 4.2、生成token
- 4.3、gitlab触发
- 4.4、Outbound requests
- 4.5、设置项目的webhook
- 4.6、触发测试
- 4.7、手动触发测试
- 五、Jenkins+ansible+gitlab实现项目发布
- 5.1、安装Ansible
- 5.2、配置ansible主机清单
- 5.3、Jenkins创建webansible项目
- 5.4、配置General
- 5.5、配置源码管理
- 5.6、配置Build Steps
- 5.7、增加构建步骤
- 5.8、构建项目
- 5.9、验证
前言
- 随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好的协同工作以确保软件开发的质量已经慢慢成为开发过程各种不可回避的问题。Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降;持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、测试、部署得以持续。所以当配置完Jenkins持续集成持续交付环境后,可以把发布的任务交给集成服务器去打理了。使用Maven(Ant)等来实现自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等工作。
- 本次课程我们来学习Jenkins代码发布的各个基础操作,为Jenkins的更高阶学习提供基础。
拓扑图
资源列表
操作系统 | 主机名 | 配置 | IP |
---|---|---|---|
CentOS 7.9 | jenkins | 2C4G | 192.168.93.101 |
CentOS 7.9 | gitlab | 2C4G | 192.168.93.102 |
CentOS 7.9 | web01 | 2C4G | 192.168.93.103 |
CentOS 7.9 | web02 | 2C4G | 192.168.93.104 |
CentOS 7.9 | dev | 2C4G | 192.168.93.105 |
基础环境
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭selinux
setenforce 0
sed -i "s/.*SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
- 修改主机名
hostnamectl set-hostname jenkins
hostnamectl set-hostname gitlab
hostnamectl set-hostname web01
hostnamectl set-hostname web02
hostnamectl set-hostname dev
一、Jenkins发布静态网站
1.1、项目介绍
- 本案例部署了一个简单的静态网站,通过此操作过程,主要掌握代码发布的基本流程,以及在这个过程中我们需要注意的重点环节,也就是掌握Jenkins项目发布的入门级操作。在这些操作中,进一步学习Jenkins持续集成、持续部署流程。
1.2、部署Web
- 两台web节点都要操作
yum -y install httpd
systemctl start httpd
systemctl enable httpd
1.3、准备gitlab
- 在gitlab节点操作
[root@gitlab ~]# cat > /etc/yum.repos.d/gitlab-ce.repo << 'EOF'
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
EOF
[root@gitlab ~]# yum -y install gitlab-ce-16.7.0-ce.0.el7
1.4、配置gitlab
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
# IP地址替换为自己的IP地址,然后保存退出即可
external_url 'http://192.168.93.102'# 加载gitlab
[root@gitlab ~]# gitlab-ctl reconfigure# 查看密码,然后更改密码,此次省略
[root@gitlab ~]# grep "Password:" /etc/gitlab/initial_root_password
1.5、创建项目
- 访问gitlab地址:http://192.168.93.102
1.6、推送代码
- dev节点操作
# 安装git命令
[root@dev ~]# yum -y install git# 解压源代码
[root@dev ~]# tar -zxvf BlueLight.git.tar.gz # 拉取代码仓库
[root@dev ~]# git clone http://192.168.93.102/root/demo.git# 复制源代码到代码仓库
[root@dev ~]# mv -f BlueLight/* demo/
[root@dev ~]# cd demo/# 往main分支进行第一次推送
[root@dev demo]# git config --global user.email "you@example.com"
[root@dev demo]# git config --global user.name "Your Name"
[root@dev demo]# git add .
[root@dev demo]# git commit -m "first commit"
[root@dev demo]# git push -u origin main# 设置一个tag为v1.0并且推送
# v1.0没有index.html页面
[root@dev demo]# git tag v1.0
[root@dev demo]# git push -u origin v1.0# 设置一个tag为v2.0并且推送
# v2.0没有index.html页面
[root@dev demo]# cp bl-first-index.html index.html
[root@dev demo]# git add .
[root@dev demo]# git commit -m "first v2.0"
[root@dev demo]# git tag v2.0
[root@dev demo]# git push -u origin v2.0
二、Jenkins中创建gitlab凭据
2.1、创建凭据
- 详细步骤省略
2.2、在Jenkins中添加远程主机
- “Manage Jenkins”——>“System”——>“Publish over SSH”,点击SSH Servers的新增按钮。须填写的信息如下:
- Name:为远程主机的起的名字
- Hostname:远程主机的IP地址或域名
- Username:远程主机的登录账号
- Remote Directory:远程同步路径(如果要拷贝文件,此处添加远程主机接口文件的目录)
- 点击高级按钮,并勾选“Use password authentication,or use different key”
- 在Passphrase/Password中输入密码
- 其他保持默认,并点击test按钮进行连接测试,测试结果为Success表示参数设置成功
- 最后保存设置
- 可以用同样的方式添加更多的主机
2.3、获取gitlab项目的URL地址
2.4、在Jenkins中创建webtest项目
2.5、配置源码管理
- 在源码管理中选择Git,并且把gitlab中获取的仓库URL填写进去。注意在“指定分支”的地方,将分支名称修改为“*/main”。在git中我们创建一个新项目的时候,项目的分支由早期的“master”,修改为现在的“main“,使用的时候注意这个变化。
[root@jenkins ~]# yum -y install git
2.6、配置构建过程
- 在本案例中,我们需要将web网站的代码文件同步到web01主机,需要同步文件,需要一个发送文件的构建步骤,具体操作如下:
- 增加构建步骤”Send files or execute commands over SSH“需要设置的关键参数如下:
- Name:在下拉菜单中选择目标主机
- Source files:选择源文件位置,注意这里是工作目录的相对路径,不要些解决路径。如果要同步此目录下所有内容,就填写”*/“;如果要同步工作目录下的img目录下的所有文件,就填写”img/”
- Remove prefix:该操作是针对上面的source files目录,会移除匹配的目录。通常留空
- Remote directory:远程主机的同步目录,注意这里也是相对路径。是相对于远程主机的同步目录的,我们在前面的远程主机中设置同步的目录是“/var/www/html”,此处就直接些“/”,代表将文件同步到远程主机的“/var/www/html”目录下
- 如果需要将文件批量同步到更多的主机,可以继续增加构建步骤。
2.7、构建项目
- 点击Jenkins项目,点“Build Now”或“立即构建”,如果成功将会在左下角看到绿色的标识
2.8、访问验证
- 访问地址:http://192.168.93.103/bl-first-index.html
三、Jenkins发布带有参数的项目
- 在刚才的案例中,我们掌握了项目发布的基本步骤,在实际工作过程中,程序员往往要对代码进行不断的升级,这时就出现了不同的版本,如果针对不同的项目版本进行发布,这也是Jenkins的一项基本功能。不仅能帮助管理员灵活的、有针对性的版本发布,同时在新版本出现bug的时候,又能快速的将项目回退到之前的版本。
3.1、修改General参数
- 勾选“This project js parameterized”,并点击“添加参数”,添加“Git Parameter”参数。设置的参数如下:名称:Tag 默认值:origin/main
3.2、修改源码管理
3.3、构建项目
- 点击“Build Now”立即构建。额可以看到此处需要选择对应的标签版本
- v1.0没有index.html页面,v2.0有index.html页面
四、Jenkins项目实时自动触发
- 在配置Jenkins实现前端自动化构建的过程中,Git如何通知Jenkins对应Job的工作区实时构建呢?web开发过程中的webhook,是一种通过通常的callback,去增加或者改变web page或者web app行为的方法。这些callback可以由第三方用户和开发维持当前,修改,管理,而这些使用者与网站或者应用的原始开发并没有关联。
- webhook这个词是由Jeff Lindsay在2007年计算机科学hook项目第一次提出的。Webhooks是“user-defined HTTP回调”。它们通常由一些事件触发,例如“push”代码到repo,或者“post一个评论道博客”。因此,我们可以将Jenkins的某个项目的webhook放置到gitbal,当gitlab中对应的项目代码有更新时,就会向jenkins触发一个构建的事件,这样就完成了一个项目自动触发的流程。
4.1、设置触发器
- 项目——>“配置”——>“构建触发器”,勾选项目的webhook
- 复制出里面的webhook URL
4.2、生成token
- 在“构建触发器”中生成一个Token,并且把这个Token复制出来
4.3、gitlab触发
- 单击Menu——>“Admin”
4.4、Outbound requests
- 在这里要设置gitlab允许利用钩子(webhook)发送请求到本地网络
- 设置如下:Menu——>”Admin“——>“Settings”——>”Network“——>”Outbound requests“
4.5、设置项目的webhook
- 打开自己创建的项目,Settings——>”Webhooks“
- 粘贴前面步骤中生成的webhook的URL和Token
- 最后点击页面底部的Add Webhook按钮
4.6、触发测试
4.7、手动触发测试
- 也可以手动测试,修改代码以后,提交上去
# 把默认dev主机存在的demo目录删除,重新拉取一个
[root@dev ~]# rm -rf demo/# 拉取代码仓库
[root@dev ~]# git clone http://192.168.93.102/root/demo.git[root@dev ~]# cd demo/
[root@dev demo]# date > time.log
[root@dev demo]# git config --global user.email "you@example.com"
[root@dev demo]# git config --global user.name "Your Name"
[root@dev demo]# git add .
[root@dev demo]# git commit -m "测试自动触发Jenkins"
[root@dev demo]# git push -u origin main
五、Jenkins+ansible+gitlab实现项目发布
-
在此案例中,我们将进一步学习Jenkins较为复杂一点的应用,本案例将ansible集成到了jenkins中,让jenkins利用ansible插件,向远程主机推送文件和指令,完成自动化的项目部署。
-
在web集群中,我们可能有很多后端需要发布,这时候我们可以利用ansible批量进行发布
5.1、安装Ansible
- Jenkins节点操作
[root@jenkins ~]# yum -y install epel-release.noarch
[root@jenkins ~]# yum -y install ansible# 取消/etc/ansible/anibsle.cfg文件host_key_checking = False的注释
[root@jenkins ~]# vim /etc/ansible/ansible.cfg
host_key_checking = False
5.2、配置ansible主机清单
[root@jenkins ~]# cat >> /etc/ansible/hosts << EOF
[webservers]
# web01
192.168.93.103 ansible_ssh_user=root ansible_ssh_pass=wzh.2005
# web02
192.168.93.104 ansible_ssh_user=root ansible_ssh_pass=wzh.2005
EOF
5.3、Jenkins创建webansible项目
5.4、配置General
5.5、配置源码管理
5.6、配置Build Steps
- 在”Build Steps“中,点”增加构建步骤“——>”Invoke Ansible Ad-Hoc Command“,在这里设置的主要参数如下:
- Host pattern:设置ansible中的主机组的名字,本案例中我们用的是”webservers“
- Inventory:选择File or host list,添加的文件是ansible的主机清单/etc/ansible/hosts
- Moundle:设置同步方式,此处使用”synchronize“的方式,表示使用rsync同步
- Module arguments or command to execute:填写ansible的同步命令:命令如下
src=./ dest=/var/www/html rsync_opts=--exclude=.git delete=yes# 备注:ansible命令解释
rsync_opts=--exclude=.git:同步时将.git文件除外,该文件不同步
delete=yes:使两边的内容一样(即以推送方为主)
5.7、增加构建步骤
# 使用ansible给web节点的网页重新授权
ansible webservers -m shell -a "chmod -R 755 /var/www/html"
# 安装所需同步软件
[root@jenkins ~]# yum -y install rsync
[root@web01 ~]# yum -y install rsync
[root@web02 ~]# yum -y install rsync
5.8、构建项目
5.9、验证
- 可以查看web01和web02节点的网页是否存在
[root@web01 ~]# ls /var/www/html/
aos bl-aritical.html bootstrap highlight LICENSE
bl-about2.html bl-aritical-list.html css img README.md
bl-about.html bl-first-index.html font-awesome jquery screenshots
[root@web02 ~]# ls /var/www/html/
aos bl-aritical.html bootstrap highlight LICENSE
bl-about2.html bl-aritical-list.html css img README.md
bl-about.html bl-first-index.html font-awesome jquery screenshots
- 也可以浏览器进行访问,两个网站内容一样
相关文章:
【DevOps】Jenkins项目发布
Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…...
Lua迭代器如何使用?
在Lua中,迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法,对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 12.1.1 迭代器介绍 迭代器是一种设计模式,它提供了一种访问集合元素的方法,而不需要…...
cesium小知识:3D tiles 概述、特点、示例
Cesium 的 3D Tiles 是一种高效的、流式传输的三维地理空间数据格式,专为在Web浏览器中快速渲染大规模三维场景而设计。3D Tiles 支持多种几何类型,包括点云、多边形、模型等,并且可以包含丰富的属性信息和层次细节(LOD, Level of Detail)结构,以确保不同设备和网络条件下…...
PTA DS 基础实验3-2.1 一元多项式求导
基础实验3-2.1 一元多项式求导 分数 20 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 注意:…...
【玩转全栈】----用户管理案例
目录 案例需求: 成果显示: 源码展示: 部分源码解释及注意 1、info_list.html文件 2、info_add.html文件 3、models.py文件 4、views.py文件 经过前面的学习,相信您对Django、MySQL,以及他们之间的连接已经非常熟悉了&a…...
文件上传漏洞利用与绕过姿势总结
文章目录 攻击与绕过方式一、条件竞争二、二次渲染结合文件包含绕过1、gif2、png3、jpg 三、.htaccess解析绕过四、文件后缀名绕过1、文件特殊后缀名大小写绕过2、::$DATA绕过3、双后缀名绕过4、点绕过5、空格绕过 五、文件头绕过六、短标签绕过七、MIME(Content-Type)绕过八、…...
Java十六
2-9-1Request和Response介绍 Request继承体系 ServletRequest————Java提供的请求对象根接口 Http ServletRequest————Java提供的对Http协议封装的请求对象接口 RequestFacade————Tomcat定义的实现类 1.Tomcat需要解析请求数据,封装为request对象,并且创建requ…...
人工智能在事件管理中的应用
随着科技的不断发展,人工智能(AI)正在深入到各行各业,运维领域也不例外。在事件管理中,AI通过其强大的数据分析和自动化能力,帮助团队更高效地处理系统事件,提升业务的稳定性和用户体验。 什么是事件管理? 事件管理是IT运维的重要组成部分,其核心目标是快速响应和处…...
Launcher3版本确定
Launcher3有几个不同的版本,引入的代码和资源文件有所不同,我们需要确认当前设备中使用的是哪个 查看bp脚本可以看到会生成四个app /packages/apps/Launcher3$ grep -nr -E "android\_app\ \{" -A 1 ./Android.bp 184:android_app { 185- …...
算法题(25):只出现一次的数字(三)
审题: 该题中有两个元素只出现一次并且其他元素都出现两次,需要返回这两个只出现一次的数,并且不要求返回顺序 思路: 由于对空间复杂度有要求,我们这里不考虑哈希表。我们采用位运算的方法解题 方法:位运算 首先&#…...
atrust异常导致ERR_NETWORK_CHANGED
首先因为工作需要不断安装卸载不同版本深信服的atrust。那么可能遇到和我一样的问题。 深信服的这种东西有点毛病,以前只是偶尔导致我局域网无法访问,我停止atrust后,他还有后台程序在后台不断更改我的适配器,在我局域网需要固定…...
【Infineon AURIX】AURIX缓存(CACHE)变量访问指南
AURIX缓存变量访问指南 引言 本文分析Infineon AURIX控制器在调试过程中访问缓存内存变量的问题及解决方案重点探讨了变量缓存对调试的影响以及多种解决方法的优劣第1部分:问题描述与成因分析 主要症状 变量值发生变化,但实时内存访问显示初始值Watch窗口和Memory窗口中的变…...
轻量级通信协议 JSON-RPC 2.0 详解
目录 JSON-RPC 2.0 简介 请求对象 响应对象 通知 批量请求 错误码 使用场景 文档和版本控制 社区和支持 小结 参考资料 JSON-RPC 2.0 简介 JSON-RPC (JavaScript Object Notation - Remote Procedure Call) 是一种轻量级的远程过程调用协议,使用 JSON&am…...
[读书日志]从零开始学习Chisel 第一篇:书籍介绍,Scala与Chisel概述,Scala安装运行(敏捷硬件开发语言Chisel与数字系统设计)
简介:从20世纪90年代开始,利用硬件描述语言和综合技术设计实现复杂数字系统的方法已经在集成电路设计领域得到普及。随着集成电路集成度的不断提高,传统硬件描述语言和设计方法的开发效率低下的问题越来越明显。近年来逐渐崭露头角的敏捷化设…...
深入了解 StarRocks 表类型:解锁高效数据分析的密码
在当今数字化浪潮下,大数据分析成为企业决策、优化业务流程的关键利器。StarRocks 作为一款备受瞩目的高性能分析型数据库,其多样化的表类型为复杂的数据处理需求提供了精准解决方案。今天,就让我们一同深入探索 StarRocks 中的主键表、明细表…...
spring mvc源码学习笔记之四
pom.xml 内容如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...
Spring Boot + Redis + Sa-Token
参考文献 Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)-腾讯云开发者社区-腾讯云 介绍 StpInterface 是 Sa-Token 框架中的一个接口,属于 Sa-Token 身份认证与授权框架的一部分。该接口提供了一些方法来实现自定义的身份认证和授权管…...
【顶刊TPAMI 2025】多头编码(MHE)之Part 6:极限分类无需预处理
目录 1 标签分解方法的消融研究2 标签分解对泛化的影响3 讨论4 结论 论文:Multi-Head Encoding for Extreme Label Classification 作者:Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位:山东大学 代码:https:…...
Spring Certified Professional 2024 (2V0-72.22)
关于认证 Spring Certified Professional (2V0-72.22) 认证可证明您在 Spring Framework 方面的专业知识,Spring Framework 是构建企业级 Java 应用程序的领先平台。此认证在全球范围内得到认可,并证明您在 Spring 的各个方面都具有熟练程度,…...
asp.net core框架搭建4-部署IIS/Nginx/Docker
文章目录 系列文章一、Linux上部署Nginx1.1 Centos 安装配置环境1.2 使用Systemctl 控制Nginx 二、部署IIS三、部署Docker3.1 创建 Dockerfile 文件3.2 构建 Docker 镜像3.3 运行 Docker 容器3.4 检查容器运行情况 结束语 作者:xcLeigh 文章地址:https:/…...
改善 Kibana 中的 ES|QL 编辑器体验
作者:来自 Elastic Marco Liberati 随着新的 ES|QL 语言正式发布,Kibana 中开发了一种新的编辑器体验,以帮助用户编写更快、更好的查询。实时验证、改进的自动完成和快速修复等功能将简化 ES|QL 体验。 我们将介绍改进 Kibana 中 ES|QL 编辑器…...
webpack5基础(上篇)
一、基本配置 在开始使用 webpack 之前,我们需要对 webpack 的配置有一定的认识 1、5大核心概念 1)entry (入口) 指示 webpack 从哪个文件开始打包 2)output(输出) 制视 webpack 打包完的…...
C#设计模式(行为型模式):观察者模式
C#设计模式:观察者模式,让对象间通信更优雅 在软件开发中,我们经常会遇到一个对象的状态发生改变,其他对象需要自动更新或做出相应反应的场景。例如: GUI事件处理: 当用户点击按钮时,按钮需要…...
pg_wal 目录下 wal 日志文件异常累积过大
文章目录 背景当前配置分析解决过程1. 活动事务未完成2. 备份滞后或归档未完成3. 保留了过多的 WAL 文件4. 逻辑复制槽未释放5. 文件系统问题6. 强制触发 WAL 清理结果lsof D 是啥意思检查进程从名字来看, 该 wal 文件是最小的文件(一般也是最老的 wal 文件)pg_archivecleanup …...
【人工智能】用Python实现深度卷积生成对抗网络(DCGAN):原理、实现与优化
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 深度卷积生成对抗网络(DCGAN)是一种结合了卷积神经网络(CNN)和生成对抗网络(GAN)的深度学习模型,广泛应用于图像生成、图像增强、以…...
领域驱动设计(4)—绑定模型与实现
(4)—绑定模型与实现 模式:MODEL-DRIVEN DESIGN为什么模型对用户至关重要?模式:HANDS-ON MODELER 很多项目设计之初只考虑到模型如何设计,没有将模型如何实现、数据关系如何存储这些实现考虑在内,往往设计…...
logback日志框架源码分析
目录 (一)入口:slf4j选择日志框架 (二)日志框架初始化 (1)logback的3种配置方式 a、BasicConfigurator默认配置 b、SPI方式配置的Configurator实现类 c、通过配置文件初始化 (2)xml配置文件初始化 (三)Logger的创建 (四)打印日志 本文源码基于:logback版…...
Airflow:HttpSensor实现API驱动数据流程
数据管道工作流通常依赖于api来访问、获取和处理来自外部系统的数据。为了处理这些场景,Apache Airflow提供了HttpSensor,这是一个内置的Sensor,用于监视HTTP请求的状态,并在满足指定条件时触发后续任务。在这篇博文中,…...
在Mac电脑上搭建Gradle
1. 检查是否已安装Homebrew 打开终端,输入以下命令检查Homebrew是否已安装: brew -v如果显示版本号,则表示已安装。如果未安装,请运行以下命令安装Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubus…...
登录的几种方式
使用Session完成登录 1. 手机号发送验证码 逻辑步骤: 校验手机号格式是否正确。生成验证码(例如使用Hutool工具类)。将手机号和验证码存入Session。返回验证码发送成功的响应。 2. 用户登录逻辑 逻辑步骤: 从Session中获取存…...
Python学习(5):数据结构
1 列表 1.1 列表方法 列表数据类型支持很多方法,列表对象的所有方法所示如下: list.append(x):在列表末尾添加一项。 类似于 a[len(a):] [x]。list.extend(iterable):通过添加来自 iterable 的所有项来扩展列表。 类似于 a[len…...
第五届电网系统与绿色能源国际学术会议(PGSGE 2025)
2025年第五届电网系统与绿色能源国际学术会议(PGSGE 2025) 定于2025年01月10-12日在吉隆坡召开。 第五届电网系统与绿色能源国际学术会议(PGSGE 2025) 基本信息 会议官网:www.pgsge.org【点击投稿/了解会议详情】 会议时间:202…...
【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 1:背景动机
目录 1 简单概括2 几个重要发现3 主要贡献4 背景知识5 方法简介 论文:Multi-Head Encoding for Extreme Label Classification 作者:Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位:山东大学 代码:https://gi…...
ruckus R510升级到Unleashe后不能访问
ruckus R510 是IPQ4019,升级到Unleashe,它弹窗提示 但是这个IP没办法用,访问不了AP。 必应了一下,官方提示用advance ip scanner扫描。 扫描持续好久,发现IP竟然是从主路由获得。 9090的端口不用填,甚至不…...
初学stm32 --- FSMC驱动LCD屏
目录 FSMC简介 FSMC框图介绍 FSMC通信引脚介绍 FSMC_NWE 的作用 FSMC_NWE 的时序关系 FSMC_NOE 的含义 FSMC_NOE 的典型用途 FSMC_NOE 的时序关系 使用FSMC驱动LCD FSMC时序介绍 时序特性中的 OE ILI9341重点时序: FSMC地址映射 HADDR与FSMC_A关系 LCD的…...
【2025最新计算机毕业设计】基于Spring Boot+Vue影院购票系统(高质量源码,提供文档,免费部署到本地)
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...
Java 内存溢出(OOM)问题的排查与解决
在 Java 开发中,内存溢出(OutOfMemoryError,简称 OOM)是一个常见且棘手的问题。相比于数组越界、空指针等业务异常,OOM 问题通常更难定位和解决。本文将通过一次线上内存溢出问题的排查过程,分享从问题表现…...
Android14 CTS-R6和GTS-12-R2不能同时测试的解决方法
背景 Android14 CTS r6和GTS 12-r1之后,tf-console默认会带起OLC Server,看起来olc server可能是想适配ATS(android-test-station),一种网页版可视化、可配置的跑XTS的方式。这种网页版ATS对测试人员是比较友好的,网页上简单配置下…...
周末总结(2024/01/04)
工作 人际关系核心实践: 要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以外 职场的人际关系在面对利…...
《Rust权威指南》学习笔记(二)
枚举enum 1.枚举的定义和使用如下图所示: 定义时还可以给枚举的成员指定数据类型,例如:enum IpAddr{V4(u8, u8, u8, u8),V6(String),}。枚举的变体都位于标识符的命名空间下,使用::进行分隔。 2.一个特殊的枚举Option࿰…...
Docker 远程访问完整配置教程以及核心参数理解
Docker 远程访问完整配置教程 以下是配置 Docker 支持远程访问的完整教程,包括参数说明、配置修改、云服务器安全组设置、主机防火墙配置,以及验证远程访问的详细步骤。 1. 理解 -H fd:// 参数的作用(理解了以后容易理解后面的操作ÿ…...
在ros2 jazzy和gazebo harmonic下的建图导航(cartographer和navigation)实现(基本)
我的github分支!!! 你可以在这里找到相对应的源码。 DWDROME的MOGI分支 来源于!! MOGI-ROS/Week-3-4-Gazebo-basics 学习分支整理日志 分支概述 这是一个用于个人学习的新分支,目的是扩展基本模型并添加…...
常见的显示器分辨率及其对应的像素数量
显示器的像素数量通常由其分辨率决定,分辨率表示为水平像素数乘以垂直像素数。 720P(1280720): 像素数量:约92.16万特点:这是高清标准的一个分辨率,通常用于手机、平板电脑或小型显示器。900P&…...
浅谈分布式共识算法
分布式共识算法 基础概念1、容错2、共识3、拜占庭将军问题4、多数派5、共识算法分类6、ACID&BASE&CAP Paxos1、相关概念2、三种角色3、运行阶段4、Multi Paxos5、总结6、演化 ZAB1、相关概念2、三种角色3、成员状态4、运行阶段5、ZooKeeper流程6、总结 Raft1、相关概念…...
[Linux]redis5.0.x升级至7.x完整操作流程
1. 从官网下载最新版redis: 官网地址:https://redis.io/download 注:下载需要的登录,如果选择使用github账号登录,那么需要提前在github账号中取消勾选“Keep my email addresses private”(隐藏我的邮箱…...
Vue项目中生成node_modules文件夹的两种常用方法及npm优势
在Vue项目中生成node_modules文件夹的过程非常简单,主要步骤如下: 1、使用 npm 安装依赖包; 2、使用 yarn 安装依赖包。其中,推荐使用npm安装依赖包,原因如下: 兼容性更广:npm是Node.js的默认包管理工具,具有更高的兼容性。社区支持:npm拥有更大的用户基础和社区支持,…...
(四)基于STM32通过Event Recoder实现时间测量功能
目录 1. 了解Event Recorder 2. 硬件和软件准备 硬件需求 软件需求 3. 配置STM32工程 使用STM32CubeMX初始化项目 配置Event Recorder 4. 实现时间记录功能 初始化Event Recorder 时间间隔计算 配置Debug选项 测量结果查看 5总结 在嵌入式系统开发中,精…...
【Linux】定时运行shell脚本
1、at命令 at命令允许指定Linux系统何时运行脚本,它会将作业提交到队列中,指定shell在什么时候运行该作业。 at 的守护进程 atd 在后台运行,在作业队列中检查待运行的作业。 at 守护进程会检查系统的一个特殊目录(一般位于/var/…...
ARM 汇编基础总结
GNU 汇编语法 编写汇编的过程中,其指令、寄存器名等可以全部使用大写,也可以全部使用小写,但是不能大小写混用。 1. 汇编语句的格式 label: instruction comment label即标号,表示地址位置,有些指令前面可能会有标…...
L27.【LeetCode笔记】2 的幂(五种解法)
目录 1.题目 2.自解 方法1:调用log函数 代码 提交结果 方法2:循环 提交结果 3.优解 方法3:位运算n & (n-1) 0 代码 提交结果 方法4:位运算lowbit 代码 提交结果 4.投机取巧的方法 代码 提交结果 1.题目 https://leetcode.cn/problems/power-of-two/?env…...