当前位置: 首页 > news >正文

培训第三十天(ansible模块的使用)

上午

ansible是⼀种由Python开发的⾃动化运维⼯具,集合了众多运维⼯ 具(puppet、cfengine、chef、func、fabric)的优点,实现了批量 系统配置、批量程序部署、批量运⾏命令等功能。

1、学习ansible的使用

ansible 主机ip|域名|组名|别名 -m ping|copy... ‘参数’

(1)下载ansible软件包
 [root@1 ~]# yum -y install ansible
(2)创建ansible组

ansible通过⼀个主机清单功能来实现服务器分组。

Ansible的默认主机清单配置⽂件为/etc/ansible/hosts.

 [root@1 ~]# vim /etc/ansible/hosts [group01]10.0.0.1210.0.0.1310.0.0.14[group02]10.0.0.1210.0.0.13

(3)执行ansible的ping命令

(测试网络连通性)

主机12和主机13都进行了免密,主机14未进行免密

 ssh-keygenssh-copy-id -i 10.0.0.12ssh-copy-id -i 10.0.0.13
 [root@1 ~]# ansible 10.0.0.12 -m ping10.0.0.12 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}[root@1 ~]# ansible group02 -m ping10.0.0.12 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}10.0.0.13 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}
 # 由于group01中的10.0.0.14主机未做免密操作,所以会产生报错[root@1 ~]# ansible group01 -m pingThe authenticity of host '10.0.0.14 (10.0.0.14)' can't be established.ECDSA key fingerprint is SHA256:/p0PnfBbtW2E/MOWaBziXwCBEnuznb+x1DiNgh1+qJw.ECDSA key fingerprint is MD5:62:73:f0:9f:e3:b5:f1:d2:d4:73:b3:2e:1b:14:16:d0.Are you sure you want to continue connecting (yes/no)? yes10.0.0.14 | UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '10.0.0.14' (ECDSA) to the list of known hosts.\r\nPermission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}
(4)为主机设置ansible别名(携带用户和密码)

没有做免密登录的服务器可以指定⽤户名与密码

 [root@1 ~]# vim /etc/ansible/hostsother ansible_ssh_host=10.0.0.14 ansible_ssh_port=22 ansible_ssh_user=root  ansible_ssh_pass=1[group01]10.0.0.1210.0.0.13other[root@1 ~]# ansible group01 -m ping10.0.0.13 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}10.0.0.12 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}other | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}[root@1 ~]# ansible other -m pingother | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}
(5)查看ansible帮助信息

查看所有⽀持的模块

 [root@1 ~]# ansible-doc -l
 如果要查看ping模块的⽤法,使⽤下⾯命令(其它模块以此类推)# ansible-doc ping
(6)ansible hostname模块的使用

使用ansible(hostname模块)批量修改主机名

(注意: 它不能修改/etc/hosts⽂件)

基本格式为: ansible 操作的机器名或组名 -m 模块名 -a "参数 1=值1 参数2=值2"

 [root@1 ~]# ansible group02 -m hostname -a 'name=ab.li'
(7)练习

不论你用哪种环境(免密或者不免密,端口是否22),请最终将两台被管理机器加入到group1组即可

 vim /etc/ansible/hostsweb01 ansible_ssh_host=10.0.0.12 ansible_ssh_user=root ansible_ssh_pass=1 ansible_ssh_port=22 web02 ansible_ssh_host=10.0.0.13 ansible_ssh_user=root ansible_ssh_pass=1 ansible_ssh_port=2222[group1]web01web02

下午

1、ansible介绍

ansible是基于模块⼯作的,本身没有批量部署的能⼒。真正具有批量部署的是ansible所运⾏的模块,ansible只是提供⼀种框架。

2、ansible file模块的使用

file模块⽤于对⽂件相关的操作(创建, 删除, 软硬链接等)

(1)创建目录
 创建目录[root@1 ~]# ansible group02 -m file -a 'path=/tmp/abc/def state=directory'
(2)创建文件
 [root@1 ~]# ansible group1 -m file -a 'path=/test/111 state=touch'
(3)递归修改owner,group,mode
 [root@1 ~]# ansible group02 -m file -a 'path=/tmp/abc recurse=yes owner=bin group=daemon mode=1777'[root@2 ~]# ll /tmp/总用量 0drwxrwxrwt. 3 bin  daemon 17 8月  16 14:09 abc[root@2 ~]# ll /tmp/abc/总用量 0drwxrwxrwt. 2 bin daemon 6 8月  16 14:09 def
(4)删除⽬录

(连同⽬录⾥的所有⽂件)

 [root@1 ~]# ansible group02 -m file -a 'path=/tmp/abc state=absent'
(5)创建⽂件并指定owner,group,mode等
 [root@1 ~]# ansible group02 -m file -a 'path=/tmp/aaa state=touch owner=bin group=daemon mode=1777'
(6)创建软链接⽂件

(软链接指向硬链接,硬链接指向文件)

 [root@1 ~]# ansible group02 -m file -a 'src=/etc/fstab path=/tmp/xxx state=link' [root@2 ~]# ll /tmp/lrwxrwxrwx. 1 root root 10 8月  16 14:30 xxx -> /etc/fstab
(7)创建硬链接⽂件
 [root@1 ~]# ansible group02 -m file -a 'src=/etc/fstab path=/tmp/xxx2 state=hard'[root@2 ~]# ll /tmp/-rw-r--r--. 2 root root 502 7月  23 03:23 xxx2

3、ansible stat模块的使用

stat模块类似linux的stat命令,⽤于获取⽂件的状态信息。

获取/etc/fstab⽂件的状态信息
 [root@1 ~]# ansible group02 -m stat -a 'path=/etc/fstab'

4、ansible copy模块的使用

copy模块⽤于对⽂件的远程拷⻉操作(如把本地的⽂件拷⻉到远程的机器上)

(1)拷贝文件

拷⻉mysql文件到10.0.0.12主机上

 [root@1 ~]# ansible 10.0.0.12 -m copy -a 'src=/root/mysql57.tar.gz dest=/root/'[root@1 ~]# ansible group02 -m copy -a 'src=/etc/fstab dest=/tmp/a.txt backup=yes owner=bin group=daemon mode=1777'
(2)远程向文件中写入数据

使⽤content参数(默认会覆盖原内容)

 [root@1 ~]# ansible group01 -m copy -a 'content="wo" dest=~/tst'# 注意:ansible中-a后⾯的参数⾥也有引号时,记得要单引双引交叉使⽤,如果都为双引会出现问题
(3)force参数的使用,是否强制覆盖执行命令

如果⽬标⽂件已经存在,则会强制覆盖(force=yes)

如果⽬标⽂件已经存在,则不覆盖(force=no)

 [root@1 ~]# touch tst[root@1 ~]# ansible group02 -m copy -a 'src=./tst dest=/root/ force=no'[root@1 ~]# dd if=/dev/zero of=tst1 bs=100M count=1[root@1 ~]# ansible group01 -m copy -a 'src=./tst1 dest=/root/ force=yes'[root@1 ~]# ansible group01 -m copy -a 'content="wo" dest=~/tst force=no'# 不执行写入操作,操作无意义
(4)backup参数控制是否备份⽂件
 [root@1 ~]# ansible group01 -m copy -a 'src=./tst dest=~ backup=yes owner=bin group=daemon mode=1777'# backup=yes表示如果拷⻉的⽂件内容与原内容不⼀样,则会备份⼀份(将原来的文件修改文件名变成备份文件)
(5)拷贝目录

copy模块拷⻉时要注意拷⻉⽬录后⾯是否带"/"符号

后⾯不带/符号,则表示把整个⽬录拷⻉过去

后⾯带/符号,则表示把⽬录⾥的所有⽂件拷⻉过去

 [root@1 ~]# ansible group01 -m copy -a 'src=/etc/yum.repos.d dest=/etc/yum.repos.d/ backup=yes'[root@2 ~]# ls /etc/yum.repos.d/CentOS-Base.repo  epel.repo  epel-testing.repo  hh.repo  repo.tar.gz  yum.repos.d

5、ansible template模块的使用

与copy模块功能⼏乎⼀样

template模块⾸先使⽤变量渲染jinja2模板⽂件成普通⽂件,然后再复制过去.⽽copy模块不⽀持.(jinja2是⼀个基于python的模板引擎)

ansible.builtin.template module – Template a file out to a target host — Ansible Community Documentation

 ansible -m template group01 -a "src=/etc/hosts dest=/tmp/hosts"

template模块不能拷⻉⽬录

 ansible -m template group01 -a "src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/"

6、ansible fatch模块的使用

fetch模块与copy模块类似,但作⽤相反。⽤于把远程机器的⽂件拷⻉到本地(收文件)。

注意: fetch模块不能从远程拷⻉⽬录到本地

 [root@1 ~]# ansible group01 -m fetch -a 'src=/etc/sysconfig/network-scripts/ifcfg-ens33 dest=/tmp'# 因为group01⾥有3台机器,为了避免同名⽂件⽂件冲突,它使⽤了不同的⽬录)[root@1 ~]# tree /tmp//tmp/├── 10.0.0.12│   └── etc│       └── sysconfig│           └── network-scripts│               └── ifcfg-ens33├── 10.0.0.13│   └── etc│       └── sysconfig│           └── network-scripts│               └── ifcfg-ens33├── other│   └── etc│       └── sysconfig│           └── network-scripts│               └── ifcfg-ens33​

7、ansible user模块的使用

user模块⽤于管理⽤户账号和⽤户属性。

(1)创建普通用户
 [root@1 ~]# ansible group02 -m user -a 'name=aaa state=present'
(2)创建系统用户,并设置shell环境为/sbin/nologin
 [root@1 ~]# ansible group01 -m user -a 'name=mysql state=present system=yes shell="/sbin/nologin"'
(3)创建mysql账户,并指定uid和密码
 # 创建mysql家目录[root@1 ~]# ansible group01 -m file -a 'path=/usr/local/mysql state=directory'# 创建mysql-files目录并修改文件的权限和所属主与组[root@1 ~]# ansible group01 -m file -a 'path=/usr/local/mysql/mysql-files state=directory owner=mysql group=mysql mode=750'
 [root@1 ~]# ansible group01 -m user -a 'name=abc state=present uid=1999 password=abc'

生成加密密码

 [root@1 ~]# echo 123456 | openssl passwd -1 -stdin$1$YxSnSopH$0t2l5RUA4m9JKlmjVZbta.
(4)创建普通用户,并产⽣空密码密钥对
 [root@1 ~]# ansible group01 -m user -a 'name=hadoop generate_ssh_key=yes'
(5)删除用户,默认不删除家目录
 [root@1 ~]# ansible group01 -m user -a 'name=hadoop state=absent'[root@2 ~]# ll /home/总用量 0drwx------. 2 aaa   aaa   62 8月  16 16:03 aaadrwx------. 2 abc   abc   62 8月  16 16:14 abcdrwx------. 3  2000  2000 74 8月  16 16:20 hadoopdrwx------. 2 mysql mysql 62 8月  16 16:06 mysql
(7)删除用户的同时删除家目录

使⽤remove=yes参数

 [root@1 ~]# ansible group01 -m user -a 'name=aaa state=absent remove=yes'

8、ansible group模块的使用

group模块⽤于管理⽤户组和⽤户组属性。

(1)创建组
 ansible group01 -m group -a 'name=groupa gid=3000 state=present'
(2)删除组

如果有⽤户的gid为此组,则删除不了

 ansible group01 -m group -a 'name=groupa state=absent'

9、ansible cron模块的使用

cron模块⽤于管理周期性时间任务

创建⼀个cron任务,不指定user的话,默认就是root(因为这⾥是⽤root用户操作的)。

如果minute,hour,day,month,week不指定的话,默认都为*

(1)添加计划任务
 [root@1 ~]# ansible group01 -m cron -a 'name="abc" user=root job="/usr/sbin/ntpdate cn.ntp.org.cn" hour=2'
(2)删除cron任务
 [root@1 ~]# ansible group01 -m cron -a 'name="abc" state=absent'

10、ansible yum_repository模块的使用

yum_repository模块⽤于配置yum仓库。

(1)增加⼀个/etc/yum.repos.d/local.repo配置⽂件

注意:此模块只帮助配置yum仓库,但如果仓库⾥没有软件包,安装⼀ 样会失败。

所以可以⼿动去挂载光驱到/mnt⽬录

mount /dev/cdrom /mnt

 ansible group01 -m yum_repository -a "name=local description=localyum baseurl=file:///mnt/ enabled=yes gpgcheck=no"
(2)删除/etc/yum.repos.d/local.repo配置⽂件
 ansible group01 -m yum_repository -a "name=local state=absent"

11、ansible yum模块的使用

yum模块⽤于使⽤yum命令来实现软件包的安装与卸载。

(1)安装软件
 [root@1 ~]# ansible group01 -m yum -a 'name=ntpdate state=present'

state=latest表示安装最新版本

 ansible group01 -m yum -a 'name=httpd,httpddevel state=latest'
(2)卸载软件
 ansible group1 -m yum -a 'name=httpd,httpddevel state=absent'

12、ansible service模块的使用

service模块⽤于控制服务的启动,关闭,开机⾃启动等。

(1)启动服务
 # 启动vsftpd服务,并设为开机⾃动启动ansible group01 -m service -a 'name=vsftpd state=started enabled=on'
(2)关闭服务
 # 关闭filewalld服务,并设为开机不⾃动启动[root@1 ~]# ansible group01 -m service -a 'name=firewalld state=stopped enabled=false'

13、ansible script模块的使用

script模块⽤于在远程机器上执⾏本地脚本。

(此脚本不⽤给执⾏权限)

 [root@1 ~]# vim /tmp/1.sh[root@1 ~]# ansible group01 -m script -a '/tmp/1.sh'

练习:使⽤shell脚本实现在group01的被管理机⾥的mariadb⾥创建⼀ 个abc库

 [root@1 ~]# vim /tmp/2.sh#!/bin/bashyum install mariadb-server -y  &> /dev/nullsystemctl start mariadbsystemctl enable mariadbmysql << EOFcreate database abc;quitEOF[root@1 ~]# ansible group01 -m script -a '/tmp/2.sh'

14、ansible command模块与shell模块的使用

两个模块都是⽤于执⾏linux命令的,这对于命令熟悉的⼯程师来说,⽤起来⾮常high。

shell模块与command模块差不多(command模块不能执⾏⼀些类似 $HOME,>,<,|等符号,但shell可以)

(1)使用command模块创建用户
 [root@1 ~]# ansible group01 -m command -a 'useradd user1'[root@1 ~]# ansible group01 -m command -a 'id user1'10.0.0.13 | CHANGED | rc=0 >>uid=2000(user1) gid=2000(user1) 组=2000(user1)10.0.0.12 | CHANGED | rc=0 >>uid=2000(user1) gid=2000(user1) 组=2000(user1)other | CHANGED | rc=0 >>uid=2000(user1) gid=2000(user1) 组=2000(user1)
(2)使用shell模块使用管道符进行统计查询信息
 [root@1 ~]# ansible group01 -m shell -a 'cat /etc/passwd | wc -l'10.0.0.13 | CHANGED | rc=0 >>2210.0.0.12 | CHANGED | rc=0 >>22other | CHANGED | rc=0 >>22
(3)使用shell模块使用$HOME变量
 [root@1 ~]# ansible -m shell  group01 -a "cd $HOME;pwd"10.0.0.13 | CHANGED | rc=0 >>/rootother | CHANGED | rc=0 >>/root10.0.0.12 | CHANGED | rc=0 >>/root
(4)使用command模块进行关机
 [root@1 ~]# ansible group01 -m command -a 'shutdown -h 0'10.0.0.12 | FAILED | rc=-1 >>Failed to connect to the host via ssh: ssh: connect to host 10.0.0.12 port 22: Connection refusedother | FAILED | rc=-1 >>Failed to connect to the host via ssh: ssh_exchange_identification: read: Connection reset by peer10.0.0.13 | CHANGED | rc=0 >>Shutdown scheduled for 五 2024-08-16 16:49:28 CST, use 'shutdown -c' to cancel.

注意: shell模块并不是百分之百任何命令都可以,⽐如vim或ll别名就不可以。

相关文章:

培训第三十天(ansible模块的使用)

上午 ansible是⼀种由Python开发的⾃动化运维⼯具&#xff0c;集合了众多运维⼯ 具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量 系统配置、批量程序部署、批量运⾏命令等功能。 1、学习ansible的使用 ansible 主机ip|域名|组…...

关于Log4net的使用记录——无法生成日志文件输出

关于Log4net的使用记录 前言遇到的问题具体使用总结前言 最近在使用log4net进行日志记录,保存一些需要的数据,以便后期使用需要。在使用的时候出现没有生成日志文件,针对这些问题,发现解决的办法! 遇到的问题 报错,提示没有找到对应的文件。 log4net:ERROR Failed to f…...

golang Kratos 概念

"Kratos"指的是一个开源的微服务框架&#xff0c;它用于构建高性能和可扩展的云原生应用。Kratos框架提供了一套丰富的工具和库&#xff0c;旨在简化微服务的开发和维护。下面是Kratos框架的一些基本概念&#xff1a; 服务构建与注册&#xff1a; gRPC与HTTP服务&…...

入门 MySQL 数据库:基础指南

简介 MySQL 是一个非常流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于 Web 应用、企业应用和数据仓库。本博客将引导你从零开始&#xff0c;学习 MySQL 数据库的基础知识。 什么是 MySQL&#xff1f; MySQL 是一个基于 SQL&#xff08;Str…...

【Hexo系列】【3】使用GitHub自带的自定义域名解析

上一期我们通过学习【Hexo系列】【2】使用Vercel加速Hexo博客访问使用Vercel进行GitHub同步与加速&#xff0c;有时候Vercel也不太稳定访问不了。本身GitHub也是支持自定义域名的&#xff0c;本次教程将讲解如何使用GitHub自带的自定义域名解析。 1. GitHub设置 1.1 登录GitH…...

智能监控,无忧仓储:EasyCVR视频汇聚+AI智能分享技术为药品仓库安全保驾护航

随着科技的飞速发展&#xff0c;药品仓库的安全管理正迎来前所未有的变革。药品作为直接关系到公众健康的重要物资&#xff0c;其安全存储和监管显得尤为重要。在这个背景下&#xff0c;视频汇聚平台EasyCVR视频智能管理系统的应用&#xff0c;为药品仓库的安全监管提供了强有力…...

本地创建PyPI镜像

背景: 在安装一些库时,经常需要反复下载包(有的体积比较大,所以会比较慢),所以考虑在本地创建一个pypi镜像,把常用的库缓存下来,这样安装就会很省事.比较从本地安装库和从服务器下载会快很多. 安装使用 安装:pip install devpi 初始化: devpi-init --serverdirF:\pypioutput…...

使用 Elasticsearch RestHighLevelClient 进行查询

Elasticsearch 提供了多种客户端库&#xff0c;以方便不同编程语言的用户进行操作。其中&#xff0c;Java 的 RestHighLevelClient 是 Elasticsearch 官方推荐的客户端之一&#xff0c;用于 Java 应用程序中。本文将介绍如何使用 Java 的 RestHighLevelClient 进行 Elasticsear…...

【jvm】符号引用

目录 1. 说明2. 特点3. 组成与格式4. 作用5. 过程 1. 说明 1.在Java虚拟机中&#xff0c;符号引用&#xff08;Symbolic Reference&#xff09;是一种重要的引用机制。2.它主要用于在编译阶段和类加载阶段之间建立对类、方法、字段等元素的引用关系。3.符号引用是指用一个符号…...

征服云端:Java微服务与Docker容器化之旅

引言 随着云计算技术的迅猛发展&#xff0c;越来越多的企业开始拥抱云原生技术。在这个过程中&#xff0c;微服务架构以其独特的魅力成为了众多开发者的首选方案。而Docker作为容器化领域的佼佼者&#xff0c;在微服务部署与管理方面扮演着不可或缺的角色。本文将带你深入了解…...

python 如何实现执行selenium自动化测试用例自动录屏?

做自动化测试已经好多年了&#xff0c;随着项目技术的正增长提升&#xff0c;我们也不断完善并提高自己的技术能力&#xff0c; 下面给大家分享一个 selenium 自动化执行测试用例的录屏功能。希望对大家有帮助&#xff01; 首先&#xff0c;我们为什么要执行自动化录屏功能呢…...

03 网络编程 TCP传输控制协议

目录 1、TCP基本特征 2、TCP通信流程基本原理 &#xff08;1&#xff09;基本原理 &#xff08;2&#xff09;TCP通信代码实现 &#xff08;3&#xff09;核心API解析 1&#xff09;地址绑定--bind 2)设置监听-listen 3)等待连接请求-accept-产生一个已连接套接字 4&a…...

1. 数据结构——顺序表的主要操作

1. 内容 顺序表的初始化、插入、删除、按值查找、输出以及其时间复杂度的计算。 2.代码 #include<stdio.h> #include<stdlib.h> //函数结果状态代码 #define OK 1 #define OVERFLOW -2 #define ERROR 0 #define MAXSIZE 100typedef int ElemType; //顺序表每个…...

[openSSL]TLS 1.3握手分析

文章目录 前言一、ECDHE密钥交换二、TLS单向身份认证三、TLS双向身份认证 前言 关于TLS握手网上资料很多&#xff0c;但是有一些写的很不清楚&#xff0c;导致学习时对概念和流程出现混淆&#xff0c;以下是我觉得写得比较清晰和准确的供学习参考。 浅析 TLS&#xff08;ECDHE…...

无人机之螺旋桨的安装与维护

一、安装&#xff1a;正确安装桨叶至关重要。请确保顺时针旋转的桨叶安装在对应的电机上&#xff0c;并使逆时针旋转的桨叶安装在相应的电机上。否则&#xff0c;无人机可能无法正常飞行或失去控制。 二、维护&#xff1a;为了确保无人机的安全及长久使用&#xff0c;请定期检…...

手机设备IP地址切换:方法、应用与注意事项

在当今数字化时代&#xff0c;手机已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;手机都扮演着重要角色。然而&#xff0c;随着网络环境的日益复杂&#xff0c;有时我们需要切换手机设备的IP地址以满足特定的需求&#xff0c;如保护隐私、绕过地…...

华为HCIP证书好考吗?详解HCIP证书考试难易程度及备考策略!

华为认证体系主要分为三个层次&#xff1a;HCIA(Huawei Certified ICT Associate)&#xff0c;HCIP(Huawei Certified ICT Professional)和HCIE(Huawei Certified Internetwork Expert)。作为中级认证&#xff0c;HCIP证书主要面向具备一定技术基础和项目实践能力的专业人士。在…...

《SPSS零基础入门教程》学习笔记——05.模型入门

文章目录 5.1 回归模型5.2 分类模型5.3 降维和刻度模型5.4 生存分析和时间序列模型 5.1 回归模型 线性回归&#xff08;分析 -> 回归 -> 线性&#xff09;曲线估计&#xff08;分析 -> 回归 -> 曲线估计&#xff09; 二元Logistic回归&#xff08;分析 -> 回归…...

如何用不到一分钟的时间将Excel电子表格转换为应用程序

我们大多数人对电子表格又爱又恨。当企业需要分析数据、为决策过程提供信息并可视化信息时&#xff0c;Excel和Google Sheets是首选。这些文档非常容易创建&#xff0c;它们帮助我们以直接的方式构建相关的想法和适用的数据。除此之外&#xff0c;事情可能会变得一团糟。 对于…...

WordPress 中 cURL 请求出现 504 网关超时错误的解决方法

错误原因 504网关超时错误通常发生在服务器作为网关或代理&#xff0c;不能在规定的时间内得到响应时。在WordPress中&#xff0c;这可能是因为目标服务器响应过慢&#xff0c;或请求的队列过长导致的。 解决方案 首先&#xff0c;您应该检查您的cURL请求是否设置了一个合理的…...

事件和委托的区别

在C#中&#xff0c;事件&#xff08;Event&#xff09;和委托&#xff08;Delegate&#xff09;是紧密相关但具有不同含义的概念。以下是它们的主要区别&#xff1a; 委托&#xff08;Delegate&#xff09;: 委托是一种类型&#xff0c;它表示一个方法的签名&#xff08;即方法…...

低功耗蓝牙协议栈如何学习?

目录 1. 基础知识 1.1 了解BLE基本概念 1.2 阅读BLE规范 2. 实践和开发工具 2.1 使用开发板 2.2 安装开发环境 3. 学习资源 3.1 官方文档和示例 3.2 在线课程和教程 4. 实践项目 4.1 简单项目 4.2 复杂项目 5. 深入理解协议栈 5.1 分析协议栈 5.2 调试和分析 6…...

ROS 2中,CMakeList.txt常见语法

在ROS 2中&#xff0c;CMakeList.txt 文件扮演着配置和管理构建过程的重要角色。这个文件遵循CMake的语法&#xff0c;用于定义如何编译和链接源代码。下面是一些在ROS 2项目CMakeList.txt文件中常见的语法和用法。 1. 基本结构和命令 cmake_minimum_required(VERSION )&…...

使用 prefetchComponents 进行组件预取

title: 使用 prefetchComponents 进行组件预取 date: 2024/8/17 updated: 2024/8/17 author: cmdragon excerpt: 摘要&#xff1a;本文介绍Nuxt.js中的prefetchComponents功能&#xff0c;用于预取组件以提高用户体验。通过在客户端后台下载和缓存组件&#xff0c;确保在用户…...

『 C++ 』IO流

文章目录 IO流概述iostream 的标准对象C流和C标准库I/O函数的同步 sync_with_stdiofstream 文件流文件流的打开标志二进制读写二进制读写的浅拷贝问题文本读写 字符串流注意 IO流概述 流是指数据的有序传输序列,路表示数据从一个地方流向另一个地方的过程,流可以是输入流也可以…...

enhanced Input Action IA_Look中Action value引脚没有分割结构体引脚的选项

UE5系列文章目录 文章目录 UE5系列文章目录前言二、使用步骤解决办法 前言 据说&#xff0c;unreal engine5中准备废弃“项目设置”中“输入”&#xff0c;操作映射&#xff0c;轴映射。取而代之的是&#xff1a; 使用增强的输入动作&#xff08;Enhanced Input Actions&#…...

C# NetworkStream、ConcurrentDictionary、Socket类、SerialPort、局域网IP 和广域网IP

一、NetworkStream 什么是NetworkStream&#xff1f; NetworkStream 是 .NET Framework 中用于在网络上进行数据传输的流类。它属于System.Net.Sockets 命名空间&#xff0c;并提供了通过网络连接进行读写操作的功能。NetworkStream 主要用于处理从网络套接字&#xff08;Soc…...

大模型--学习范式

1. 自监督学习&#xff08;Self-Supervised Learning&#xff09; 概念&#xff1a;自监督学习是一种特殊形式的监督学习&#xff0c;其中标签不是由人工标注的&#xff0c;而是从输入数据本身自动生成的。模型利用这些自动生成的标签进行训练。自监督学习通常用于预训练阶段&…...

Hadoop-yarn-unauthorized 未授权访问漏洞

一、漏洞描述&#xff1a; Hadoop是一款由Apache基金会推出的分布式系统框架&#xff0c;它通过著名的 MapReduce 算法进行分布式处理&#xff0c;Yarn是Hadoop集群的资源管理系统。YARN提供有默认开放在8088和8090的REST API&#xff08;默认前者&#xff09;允许用户直接通过…...

工作流调度系统(DolphinScheduler、Azkaban、Airflow、Oozie 和 XXL-JOB)

文章目录 1. DolphinScheduler1.1 DolphinScheduler介绍1.2 DolphinScheduler优点 2. Azkaban2.1 Azkaban介绍2.2 Azkaban优点 3. Airflow3.1 Airflow介绍3.1 Airflow优点 4. Oozie4.1 Oozie 介绍4.2 Oozie 优点 5. XXL-JOB5.1 XXL-JOB介绍5.2 XXL-JOB优点 6. 总结 1. DolphinS…...

PyTorch 基础学习(5)- 神经网络

系列文章&#xff1a; PyTorch 基础学习&#xff08;1&#xff09; - 快速入门 PyTorch 基础学习&#xff08;2&#xff09;- 张量 Tensors PyTorch 基础学习&#xff08;3&#xff09; - 张量的数学操作 PyTorch 基础学习&#xff08;4&#xff09;- 张量的类型 PyTorch 基础学…...

CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

单元训练10:定时器实现秒表功能-数组方式

蓝桥杯 小蜜蜂 单元训练10&#xff1a;定时器实现秒表功能-数组方式 /** Description:* Author: fdzhang* Email: zfdcqq.com* Date: 2024-08-15 21:58:53* LastEditTime: 2024-08-16 19:07:27* LastEditors: fdzhang*/#include "stc15f2k60s2.h"#define LED(x) …...

国外项目管理软件最佳实践:选型与应用

国内外主流的10款国外项目管理软件对比&#xff1a;PingCode、Worktile、Asana、Trello、Monday.com、ClickUp、Wrike、ProofHub、Zoho Projects、Hive。 在寻找适合的国外项目管理软件时&#xff0c;你是否感到不知从何选择&#xff1f;市场上琳琅满目的选项往往令人眼花缭乱&…...

Angular组件概念

Angular 是一个由 Google 维护的开源前端框架&#xff0c;用于构建单页面应用&#xff08;SPA&#xff09;和移动Web应用。Angular 应用由多个组件&#xff08;Components&#xff09;组成&#xff0c;这些组件是 Angular 应用构建块的基本单位。 1. Angular 组件的基本概念 …...

嵌入式人工智能ESP32(4-PWM呼吸灯)

1、PWM基本原理 PWM&#xff08;Pulse-width modulation&#xff09;是脉冲宽度调制的缩写。脉冲宽度调制是一种模拟信号电平数字编码方法。脉冲宽度调制PWM是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式。所以根据面积等效法则&#xff0c;…...

继承 (上)【C++】

文章目录 继承的定义继承的语法继承权限和继承到子类后父类成员的访问限定符的变化继承到子类后父类成员的访问限定符的变化 子类继承到了父类的什么&#xff1f;继承中的作用域子类和父类之间的赋值转换子类对象可以直接赋值给父类对象&#xff0c;但是父类对象不能直接赋值给…...

WPF打印控件内容

当我们想打印控件内容时&#xff0c;如一个Grid中的内容&#xff0c;可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下&#xff1a; XAML代码如下 <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width"300"…...

[C++][opencv]基于opencv实现photoshop算法图像剪切

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 //图像剪切 //参数&#xff1a;src为源图像&#xff0c; dst为结果图像, rect为剪切区域 //返回值&#xff1a;返回0表示成功&#xff0c;否则返回错误代码 int imageCrop(InputArray src, OutputArray dst,…...

四十、大数据技术之Kafka3.x(3)

&#x1f33b;&#x1f33b; 目录 一、Kafka Broker1.1 Kafka Broker工作流程1.1.1 Zookeeper 存储的Kafka信息1.1.2 Kafka Broker 总体工作流程1.1.3 Broker 重要参数 1.2 生产经验——节点服役和退役1.2.1 服役新节点1.2.2 退役旧节点 1.3 Kafka 副本1.3.1 副本基本信息1.3.2…...

redis——基本命令

什么是Reids&#xff08;REmote Dictionary Server&#xff09; Redis是现在主流的数据库之一&#xff0c;是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。 特性 1.速度快 &#xff1a;Redis的数据全部存储瑜内存中。 …...

pytorch实现单层线性回归模型

文章目录 简述代码重构要点 数学模型、运行结果数据构建与分批模型封装运行测试 简述 python使用 数值微分法 求梯度&#xff0c;实现单层线性回归-CSDN博客 python使用 计算图&#xff08;forward与backward&#xff09; 求梯度&#xff0c;实现单层线性回归-CSDN博客 数值微分…...

智能小家电能否利用亚马逊VC搭上跨境快车?——WAYLI威利跨境助力商家

智能小家电行业在全球化背景下&#xff0c;正迎来前所未有的发展机遇。亚马逊为品牌商和制造商提供的一站式服务平台&#xff0c;为智能小家电企业提供了搭乘跨境快车、拓展国际市场的绝佳机会。 首先&#xff0c;亚马逊VC平台能够帮助智能小家电企业简化与亚马逊的合作流程&am…...

顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评

Q&#xff1a;顺丰科技2025届校园招聘面向对象是&#xff1f; A&#xff1a;2025届应届毕业生&#xff0c;毕业时间段为2024年10月1日至2025年9月30日&#xff08;不满足以上毕业时间的同学可以关注顺丰科技社会招聘或实习生招聘&#xff09;。 Q&#xff1a;我可以投递几个岗…...

深入理解 Kibana 配置文件:一份详尽的指南

Kibana 是一个强大的数据可视化平台&#xff0c;它允许用户通过 Elasticsearch 轻松地探索和分析数据。Kibana 的配置文件 kibana.yml 是定制和优化 Kibana 行为的关键。在这篇博客中&#xff0c;我们将深入探讨 kibana.yml 文件中的各个配置项&#xff0c;并提供示例说明。 服…...

算法的学习笔记—链表中倒数第 K 个结点(牛客JZ22)

&#x1f600;前言 在编程过程中&#xff0c;链表是一种常见的数据结构&#xff0c;它能够高效地进行插入和删除操作。然而&#xff0c;遍历链表并找到特定节点是一个典型的挑战&#xff0c;尤其是当我们需要找到链表中倒数第 K 个节点时。本文将详细介绍如何使用双指针技术来解…...

聊聊场景及场景测试

在我们进行测试过程中&#xff0c;有一种黑盒测试叫场景测试&#xff0c;我们完全是从用户的角度去理解系统&#xff0c;从而可以挖掘用户的隐含需求。 场景是指用户会使用这个系统来完成预定目标的所有情况的集合。 场景本身也代表了用户的需求&#xff0c;所以我们可以认为…...

Spring Web MVC入门(中)

1. 请求 访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要 是学习如何传递参数到后端以及后端如何接收. 传递参数, 咱们主要是使⽤浏览器和Postman来模拟&#xff1b; 1.1 传递单个参数 接收单个参数&#xff0c;在Spring MV…...

Django后端架构开发:后台管理与会话技术详解

&#x1f31f; Django后端架构开发&#xff1a;后台管理与会话技术详解 &#x1f539; 后台管理&#xff1a;自定义模型类 Django的后台管理系统提供了强大的模型管理功能&#xff0c;你可以通过自定义模型类来控制模型在后台管理界面的显示和操作。自定义模型类通过继承admin…...

挑战Infiniband, 爆改Ethernet(2)

挑战Infiniband, 爆改Ethernet之物理层 前面说过UE为了挑战Infiniband在AI集群和HPC领域的优势地位&#xff0c;计划爆改以太网技术&#xff0c;以适应AI和HPC集群对高性能、可扩展网络的需求。正如UE联盟关于愿景的说明中宣称的&#xff1a;”提供一个完整的架构&#xff0c;通…...