【ansible】实施任务控制
目录
实施任务控制
一,循环(迭代)--- loop
1,利用loop----item循环迭代任务
2,item---loop循环案例
1,定义item循环列表
2,通过变量应用列表格式
3,字典列表(迭代嵌套子变量)
4,register变量与loop
二,when条件任务语法
1, when条件测试案例
2,when条件表达语法
3, 多条件表达and or语法
4,组合循环和有条件判断任务
三,实施处理程序
1,Handlers和notify触发条件
四,处理任务失败
1,ignore_errors 忽略错误继续任务
2, force_handlers: yes
3, failed_when
4, change_when 满足条件输出change状态
5,block、rescue、always块和错误处理
实施任务控制
一,循环(迭代)--- loop
1,利用loop----item循环迭代任务
通过循环管理员不需要编写多个使用同一模块的任务。例:他们不需要编写五个任务来确保存在五个用户,而是只需要编写一个任务来对含有五个用户的列表迭代,从而确保他们都在。
ansible支持loop关键字对一组项目迭代任务,可以配置循环以利用各个项目、列表中各个文件的内容、生成数字序列化或更为复杂的结构来重复任务。
2,item---loop循环案例
loop关键字添加到任务中,将应对其迭代任务的项目列表取为值。 循环item保存每个迭代过程中使用的值。
确定多个服务运行
1,定义item循环列表
(1)查看node1主机上的httpd与named服务是否启动,发现没启动
[root@node1 ~]# systemctl status httpd 
[root@node1 ~]# systemctl status named 
(2)查看node2主机上的httpd与named服务是否启动,发现没启动
[root@node2 ~]# systemctl status httpd 
[root@node2 ~]# systemctl status named 
(3)编辑playbook4.yml文件
---
- name: play1
hosts: test
tasks:
- name: task1
service:
name: "{{ item }}"
state: started
loop:
- httpd //定义item循环列表
- named bind的服务名位named

(4)执行脚本文件playbook4.yml,使其启动httpd服务与bind服务
[root@server var_test]# ansible-playbook playbook4.yml 
(5)查看node1主机上的httpd与named服务是否启动,发现此时已经启动
[root@node1 ~]# systemctl status httpd 
[root@node1 ~]# systemctl status named 
(6)查看node2主机上的httpd与named服务是否启动,发现此时已经启动
[root@node2 ~]# systemctl status httpd 
[root@node2 ~]# systemctl status named 
2,通过变量应用列表格式
(1)此时node1上的httpd与named服务是关闭的
[root@node1 ~]# systemctl status httpd 
[root@node1 ~]# systemctl status named 
(2)此时node2上的httpd与named服务是关闭的
[root@node2 ~]# systemctl status httpd 
[root@node2 ~]# systemctl status named 
(3)编辑playbook4.yml文件
---
- name: play1
hosts: test
vars:
pkname:
- httpd
- named
tasks:
- name: task1
service:
name: "{{ item }}"
state: started
loop: "{{ pkname }}" //通过变量应用列表格式

(4)执行playbook4.yml剧本文件
[root@server var_test]# ansible-playbook playbook4.yml 
(5)查看node1主机上的httpd与named服务是否启动,发现此时已经启动
[root@node1 ~]# systemctl status httpd 
[root@node1 ~]# systemctl status named 
(6)查看node2主机上的httpd与named服务是否启动,发现此时已经启动
[root@node2 ~]# systemctl status httpd 
[root@node2 ~]# systemctl status named 
3,字典列表(迭代嵌套子变量)
(1)编辑剧本playbook4.yml
---
- name: play1
hosts: test
tasks:
- name: task1
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop:
- { name: 'jane',groups: 'wheel'}
- { name: 'joe', groups: 'root' }

(2)执行剧本playbook4.yml
[root@server var_test]# ansible-playbook playbook4.yml 
(3)在node1上可以查看到playbook4中创建的用户以及附加组
[root@node1 ~]# id jane
[root@node1 ~]# id joe 
(4)在node2上可以查看到playbook4中创建的用户以及附加组
[root@node2 ~]# id jane
[root@node2 ~]# id joe 
4,register变量与loop
(1)编写剧本文件playbook4.yml
- name: play1
gather_facts: no
hosts: localhost
tasks:
- name: task1
shell: "echo this is my item: {{ item }}"
loop:
- one
- two
register: echo_results //变量注册
- name: task2
debug:
var: echo_results //变量内容显示在屏幕上

(2)执行剧本文件
[root@server var_test]# ansible-playbook playbook4.yml 
二,when条件任务语法
when语句用于有条件运行任务。它取要测试的条件为值。如果条件满足,则运行任务。如果条件不满足则跳过任务。
1, when条件测试案例
案例一:可以测试当run_my_task 为true的时候执行否则不执行
(1)此时的node1主机上没有安装bind
[root@node1 ~]# rpm -q bind 
(2)编辑playbool4.yml文件,使得当my_task为true,在node1安装bind
---
- name: play1
hosts: node1
vars:
my_test: true
tasks:
- name: task1
yum:
name: bind
when: my_test

(3)执行剧本playbool4.yml
[root@server var_test]# ansible-playbook playbook4.yml 
(4)此时在node1主机上查看bind,发现已经被安装
[root@node1 ~]# rpm -q bind 
案例2: 判断my_service是否有值,若有值则用作安装的软件包名称,若没有定义变量则跳过任务不显示错误
(1)此时的node1主机上没有vsftpd包
[root@node1 ~]# rpm -q vsftpd 
(2)编辑playbook4.yml文件,在node1上安装vsftpd包
---
- name: play1
hosts: node1
vars:
my_package: vsftpd
tasks:
- name: task1
yum:
name: "{{ my_package }}"
when: my_package is defined

(3)执行剧本playbook4.yml
[root@server var_test]# ansible-playbook playbook4.yml 
(4)此时在node1主机上查看vsftpd,发现已经被安装
[root@node1 ~]# rpm -q vsftpd 
2,when条件表达语法
| 操作 | 示例 |
| 等于(值为字符串) | ansible_machine == "x86_64" |
| 等于(值为数字) | max_memory == 512 |
| 小于(小于等于) | Min_memory <128 min_memory <= 512 |
| 大于 (大于等于) | Min_memory > 256 max_memory >= 512 |
| 不等于 | Min_memory != 512 |
| 变量存在 | Min_memory is defined |
| 变量不存在 | Min_memory is not defined |
| 布尔值变量是true. 1、True 或yes 的求值为true 变量Memory_available值存在为true则执行 | Memory_available |
| 布尔值变量是false. 0、 False 或no的求值为false 变量Memory_available值存在为true则执行 | Not memory_available |
| 第一个变量的值存在,在第二个变量的列表中条件满足 (事实变量在变量列表中满足要求) | Ansible_distribution in supported_distros |
- name: Demonstrate the inkeyword
hosts: all
gather_facts: yes
Vars:
supperted_distros:
- Redhat
- Fedora
Tasks:
- name: Install httpd using yum, where supported
yum:
name: http
state: present
when: ansible_distribution in supperted_distros
注
When 语句的缩进,由于when语句不是模块变量,他必须通过缩进到任务的最高级别,放置在模块的外面。
任务是YAML散列/字典,when语句只是任务重的又一个键,就如任务的名称以及它所使用的模块一样。通常的惯例是将可能存在的任何when关键字放在任务名称和模块的后面。
3, 多条件表达and or语法
语法一:
when:ansible_distribution == "Redhat" or ansible_distribution == "Fedora"
When: ansible_distribution_version == "7.5" and ansible_kernel == "3.10.0-327.el7.x86_64"
语法二:
使用and语句时,则必须要所有条件为真时,才执行相应任务
when:
- ansible_distribution_version == "7.5"
- ansible_kernel == "3.10.0-327.el7.x86_64"
使用括号分组条件,可以更好的表达复制的条件语句
When: >
( ansible_distribution_version == "redhat" and
ansible_distribution_major_version == "7" )
or
( ansible_distribution_version == "fedora" and
ansible_distribution_major_version == "28" )
4,组合循环和有条件判断任务
对某类任务结合使用when和loop时,将对每项检查when语句
yum安装软件包,只要/上挂载的文件系统有超过300M的可用空间。 Ansible_mounts 事实是一组字典,各自代表一个已挂在文件系统的相关事实。循环迭代每个字典,只要找到了代表两个条件都为真的已挂载文件系统的字典时,条件语句才得到满足。
- name: install mariadb-server if enough space on root
yum:
name: mariadb-server
state: latest
loop: "{ ansible_mounts }" //字典循环
when: item.mount == "/" and item.size_available > 300000000 //当两个条件都满足则执行安装
三,实施处理程序
1,Handlers和notify触发条件
- notify (通知)此action可用于每个play最后被触发这样避免多次发生改变时都执行指定操作,仅在所有变化发生完成后一次性的执行操作。在notify中列出的操作作为handler及notify中调用handlers中定义的操作。(notify判断是否有发生改变一旦发生改变触发handlers执行指定操作)
- handlers (操作者)是task列表这些task和前述的task没有本质区别,用于当关注资源发生变化时才会采取一定的操作。
案例:实现只有修改了配置文件才会重启服务
(1)将/etc/httpd/conf/httpd.conf 复制到/目录下
[root@server var_test]# cp /etc/httpd/conf/httpd.conf / 
(2)编辑文件/httpd.conf,将端口改为10000
#Listen 80
Listen 10000

(3)在受控主机node1与node2上关闭防火墙,并设置selinux为permissive
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0 
[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# setenforce 0 
(4)创建playbook5.yml文件
- name: handlers test
hosts: all
tasks:
- name: install httpd service
yum:
name: httpd
state: installed
- name: copy config file
copy:
src: /httpd.conf
dest: /etc/httpd/conf/httpd.conf
notify:
- restart service
- name: start httpd service
service:
name: httpd
state: started
handlers:
- name: restart service
service:
name: httpd
state: restarted

(5)执行剧本playbook5.yml
因为控制端的端口号为10000,发生了修改,所以会重启服务
[root@server var_test]# ansible-playbook playbook5.yml 
(6)再次执行剧本文件playbook5.yml,此时的配置文件并未发生任何改变,所以服务并未重新启动
[root@server var_test]# ansible-playbook playbook5.yml 
(7)此时再将配置文件的端口号由10000改为80
Listen 80

(8)再次执行剧本playbook5.yml,发现又会重启服务,因为/etc/httpd文件发生改变
[root@server var_test]# ansible-playbook playbook5.yml 
注意:handlers写在notify模块之后
2, tags标签定义
tags标签: 通过此标签来指定playbook文件执行哪条命令
执行 :-t 标签名
案例:仅执行playbook5.yml中的安装httpd命令
(1)编辑playbook5.yml文件
- name: handlers test
hosts: all
tasks:
- name: install httpd service
yum:
name: httpd
state: installed
tags: yum_httpd
- name: copy config file
copy:
src: /httpd.conf
dest: /etc/httpd/conf/httpd.conf
notify:
- restart service
- name: start httpd service
service:
name: httpd
state: started
handlers:
- name: restart service
service:
name: httpd
state: restarted

(2)此时执行剧本文件playbook.yml会发现只执行了装包命令
[root@server var_test]# ansible-playbook -t yum_httpd playbook5.yml 
四,处理任务失败
1,ignore_errors 忽略错误继续任务
默认情况下任务失败时play会终止。可以通过ingnore乎略失败,其他任务可以继续执行。
案例:
(1)编辑剧本文件playbook6.yml
- name: restart httpd is postfix is running
hosts: all
tasks:
- name: get postfix server status
command: /usr/bin/systemctl is-active postfix
# ignore_errors: yes
register: result
- name: restart apache httpd based on postfix status
service:
name: httpd
state: restarted
when: result.rc == 0

(2)此时受控端主机并未安装postfix,所以任务执行会失败
[root@server var_test]# ansible-playbook playbook6.yml 
(3)编辑剧本文件playbook6.yml
- name: restart httpd is postfix is running
hosts: all
tasks:
- name: get postfix server status
command: /usr/bin/systemctl is-active postfix
ignore_errors: yes
register: result
- name: restart apache httpd based on postfix status
service:
name: httpd
state: restarted
when: result.rc == 3

(4)此时受控端主机虽然并未安装postfix,但是会跳过失败,继续执行下面的任务
[root@server var_test]# ansible-playbook playbook6.yml 
2, force_handlers: yes
如果任务失败并且play在该主机上终止,则收到play中早前任务通知的处理程序将不会运行。
(1)此时的/etc/http配置文件并未做任何改变,所以服务httpd不会自启
[root@server var_test]# ansible-playbook playbook5.yml 
(2)将/etc/httpd配置文件进行修改,notify触发成功,但是后面的服务名错误,force_handlers: yes 关键字还是会执行handlers中的命令
Listen 1004

(3)编辑playbook5.yml文件
- name: handlers test
force_handlers: yes
hosts: all
tasks:
- name: install httpd service
yum:
name: httpd
state: installed
- name: copy config file
copy:
src: /httpd.conf
dest: /etc/httpd/conf/httpd.conf
notify:
- restart service
- name: start httpd service
service:
name: http
state: started
handlers:
- name: restart service
service:
name: httpd
state: restarted

(4)此时执行剧本文件playbook5.yml;即使后面的服务名写错了,也能执行handlers
[root@server var_test]# ansible-playbook playbook5.yml 
3, failed_when
failed_when其实是ansible的一种错误处理机制,是由fail模块使用了when条件语句的组合效果。
我们也可以直接通过fail模块和when条件语句,写成如下:
- name: run user
shell: /usr/local/bin/create_users.sh
register: result
ignore_errors: yes
- name: fail the play if the previous command did not succeed
fail:
msg: "please create user"
when: "'not' in result.stdout"
4, change_when 满足条件输出change状态
当我们控制一些远程主机执行某些任务时,当任务在远程主机上成功执行,状态发生更改时,会返回changed状态响应,状态未发生更改时,会返回OK状态响应,当任务被跳过时,会返回skipped状态响应。我们可以通过changed_when来手动更改changed响应状态。
(1)Playbook5.yml案例中,如果配置文件/httpd.conf并未发生改变,执行显示ok
[root@server var_test]# ansible-playbook playbook5.yml 
(2)编辑playbook5.yml文件
- name: handlers test
hosts: all
tasks:
- name: install httpd service
yum:
name: httpd
state: installed
- name: copy config file
copy:
src: /httpd.conf
dest: /etc/httpd/conf/httpd.conf
register: cmd_v1
changed_when: not cmd_v1.changed
notify:
- restart service
- name: start httpd service
service:
name: httpd
state: started
handlers:
- name: restart service
service:
name: httpd
state: restarted

(3)修改后,此时来执行剧本文件playbook5.yml,已经由ok状态变为changed状态
[root@server var_test]# ansible-playbook playbook5.yml 
5,block、rescue、always块和错误处理
通过块,也可结合rescue和always语句来处理错误,如果块中的任何任务失败,则执行其rescue块中的任务来进行恢复。在block子句中的任务以及rescue子句中的任务(如果出现故障)运行之后,always子句中的任务运行。
总结:
- block: 定义要运行的主要的任务。
- rescue: 定义要在block子句中定义的任务失败时运行的任务。
- always:定义始终都独立运行的任务,不论block和rescue子句中定义的任务是否成功还是失败。
block有错才会执行rescue;always怎么都会执行
案例: 在playbook中实施块即使block子句中定义的任务失败,rescue和always子句中定义的任务也会执行。
创建目录文件和文本文件;注意如果默认路径下存在同名文件需要进一步处理才能创建该文件。
(1)编辑playbook7.yml文件
---
- name:
hosts: localhost
tasks:
- name: block module
block:
- name: create directory
file:
name: /aaa
state: directory
rescue:
- name: backup filenmae
shell: mv /aaa /aaa.backup
- name: create directory force
file:
name: /aaa
state: directory
force: yes
always:
- name: create file
file:
name: /newfile
state: touch

(2)执行剧本playbook7.yml文件
[root@server var_test]# ansible-playbook playbook7.yml 
(3)目录/aaa与文件/newfile已经被创建
[root@server var_test]# ls -l /aaa
[root@server var_test]# ls -l /newfile
[root@server var_test]# cd /aaa 
相关文章:
【ansible】实施任务控制
目录 实施任务控制 一,循环(迭代)--- loop 1,利用loop----item循环迭代任务 2,item---loop循环案例 1,定义item循环列表 2,通过变量应用列表格式 3,字典列表(迭代嵌套子…...
49天精通Java,第11天,java接口和抽象类的异同,default关键字
目录一、什么是接口二、接口的特点三、接口和类的区别四、接口和抽象类的区别五、接口的声明方式六、default默认方法大家好,我是哪吒。 一、什么是接口 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的…...
JAVA练习99-逆波兰表达式求值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-逆波兰表达式求值 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 4月5…...
恶意软件、恶意软件反杀技术以及反病毒技术的详细介绍
1.恶意软件简单介绍恶意软件是指在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马的程序,通过破坏软件进程来实施控制。腾讯移动安全实验室发布的数据显示,恶意软件由多种威胁组成,会不断弹出,所以需要采取多种方法和技术来进…...
【数据库运维】mysql备份恢复练习
目录 数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 5.直接将My…...
刷题30-对称的二叉树
对称的二叉树 思路:用递归,首先明白递归中止的条件是什么 搬用别人的看法: 做递归思考三步: 1.递归的函数要干什么? 函数的作用是判断传入的两个树是否镜像。 输入:TreeNode left, TreeNode right 输出…...
精选简历模板
1.应届生通用简历模板(.docx) 适用于应届生找工作的学生群体 https://download.csdn.net/download/weixin_43042683/87652099https://download.csdn.net/download/weixin_43042683/87652099 部分缩略图如下: 2.研究生通用简历模板(.docx)…...
蓝桥杯嵌入式第十三届客观题解析
文章目录 前言一、题目1二、题目2三、题目3四、题目4五、题目5六、题目6七、题目7八、题目8九、题目9十、题目10总结前言 本篇文章将带大家来学习蓝桥杯嵌入式的客观题了,蓝桥杯嵌入式的客观题涉及到模电,数电,单片机等知识,需要非常扎实的基础,客观题不能急于求成只能脚…...
【Redis】线程问题
文章目录单线程版本演化工作流程为什么逐渐又加入了多线程特性?影响Redis性能的主要因素->网络I/O多线程工作流程Unix网络编程中的五种I/O模型I/O多路复用工作原理:select、poll、epoll为什么Redis快单线程与多线程的比较配置文件开启多线程单线程 版本演化 Re…...
【算法题】2498. 青蛙过河 II
题目: 给你一个下标从 0 开始的整数数组 stones ,数组中的元素 严格递增 ,表示一条河中石头的位置。 一只青蛙一开始在第一块石头上,它想到达最后一块石头,然后回到第一块石头。同时每块石头 至多 到达 一次。 一次…...
【新2023Q2押题JAVA】华为OD机试 - 整理扑克牌
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:整理扑克牌 题目 给定一组数…...
【hello C语言】文件操作
目录 1. 什么是文件? 2. 程序文件 3. 数据文件 4. 文件名 5. 文件类型 5.1 二进制文件 5.2 文本文件 5.3 数据在内存中的存储 6. 文件缓冲区 7. 文件指针 8. 文件的打开和关闭 9. 文件的顺序读写 10. 文件的随机读写 10.1 fseek:根据文件指针的位置和偏移…...
OBCP第八章 OB运维、监控与异常处理-数据库监控
系统监控视图:系统视图 OceanBase 数据库为多租户架构,租户分为两种类型:普通租户以及 sys 租户。OceanBase 数据库系统表都存储在 sys 租户,且主键中存储租户号(tenant_id),区分每个租户的内容…...
已经提了离职,还有一周就走,公司突然把我移出企业微信,没法考勤打卡, 还要继续上班吗?...
黎明前的黑暗最容易出事,离职前的几天也最容易出幺蛾子,比如下面这位网友的遭遇:已经提了离职,还有一周就正式离职了,公司突然把我移出企业微信,没法考勤打卡了, 还要继续上班吗?该怎…...
Win11启用IE方法
呉師傅 Win11是微软目前的最新系统,尽管该系统非常不错,但是还是有很多不一样的地方,有的用户发现Win11没有了IE浏览器,那么Win11没有IE浏览器怎么办呢,有的旧网页需要IE浏览器才能进入,下面就给大家提供一…...
有人靠ChatGPT 狂赚200W !有人到现在,连账号都没开通......
作者| Mr.K 编辑| Emma来源| 技术领导力(ID:jishulingdaoli)互联网风水轮流转,当初元宇宙盛极一时之际,在一些知识付费平台上,任何一个关于元宇宙的课程或培训,都很热销,有一定号召力的博主,登…...
基于GD32F470的mbedtls 3DES算法测试
3DES加密算法介绍 3DES数据加密算法是一种可逆的对称加密算法,也称三重数据加密算法。3DES块加密算法的设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的密码算法,目前3DES作为DES…...
为什么一些人很瞧不起 Java?
前言 瞧不起Java的大概是因为: Java 被认为是一门“老”语言,过时了。事实上,Java 由于其稳定性和安全性,一直是企业级应用开发的首选语言。而且,Java 语言还在不断更新和发展,例如 Java 8 引入了很多新特…...
DropMAE: Masked Autoencoders with Spatial-Attention Dropout for Tracking Tasks
摘要 在本文中,我们研究了掩码自动编码器(MAE)预训练的视频基于匹配的下游任务,包括视觉目标跟踪(VOT)和视频对象分割(VOS)。MAE的一个简单扩展是在视频中随机掩码帧块并重建帧像…...
【shell 基础(11)循环之for】带列表:空格子串、换行子串、展开、命令替换、seq;不带列表:接受参数、类C
文章目录一. 带列表的for循环1. 语法2. 例子2.1. 循环字串2.2. 展开或命令替换:数字循环2.3 命令替换(输出换行)作为list二. 其他for循环1. 不带列表的循环2. 类C的for循环一. 带列表的for循环 1. 语法 for var in list do commanddone注意…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
