ansible 管理工具以及常用模块
一、前期准备
1、安装
yum install ansible
如果yum源没有ansible,需要提前配置yum源:
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache# 可以使用以下三种方式查看ansible包的信息
yum info ansible
yum list ansible
yum list | grep ansible# 安装ansible
yum -y install ansible
ansible --version
2、配置免密登录
- 1、生成公钥
ssh-keygen -t rsa
- 2、编写脚本分发公钥
public=(
172.16.17.10
172.16.17.11
172.16.16.61
)for i in ${public[*]}
dosshpass -p '登陆密码' ssh-copy-id -i /root/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ${i}
done
二、常用模块
1、查看模块说明
#查看所有模块:
ansible-doc -l
#查看具体模块,比如查看 setup 模块:
ansible-doc setup
#查看 setup 模块的示例输出:
ansible-doc -s setup
2、ansible命令运行方式及常用参数
ansible +清单 +-m+ 模块+ -a +模块参数
-m module 指定模块,默认为command模块
-v ##详细过程 -vv -vvv更详细过程
--list ##显示主机列表,也可以用--list-hosts
ansible westos --list
-k ##提示输入ssh连接密码,默认key认证
-C ##预执行检测
ansible westos -m shell -a 'touch /mnt/file{1..4}' -C
-T ##执行命令的超时时间,默认10s
-u ##指定远程执行的用户
-b ##执行sudo切换身份操作
-become-user=USERNAME ##指定sudo的用户
-K ##提示输入sudo密码
3.ansible的基本颜色代表
绿色 ##执行成功但为对远程主机做任何改变
黄色 ##执行成功并对远程主机做改变
红色 ##执行失败
4、assert模块
Ansible assert 模块用于在任务执行期间对变量或表达式进行断言。如果断言失败,则任务将失败并停止执行。它可以用于确保在任务执行期间满足某些条件,以避免出现意外的结果。
assert 模块的语法:
- name: Ensure that a variable is set to a specific valueassert:that:- variable_name == expected_value
that 参数是一个列表,包含要断言的变量或者表达式。列表中的任一一个断言失败,则任务失败
assert 模块还有其他比较运算符,比如大于、小于、包含等,还可以用于检查变量是否存在、是否为真/假。
下面示例使用 assert 模块检查变量m_var 是否为字符串类型:
- name: Ensure that a variable is a stringassert:that:- m_var is string
如果 m_var 不是字符串类型,则任务将失败。
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
fail_msg | string | 用于失败断言的自定义消息 | |
success_msg | string | 用于成功断言的自定义消息 | |
that | list | 可以传递给when语句的相同形式的字符串表达式列表 | |
quiet | boolean | false | 将此设置为true以避免冗长的输出 |
5、authorized_key模块
authorized_key模块是Ansible中用于管理SSH授权密钥的模块。它可以将公钥添加到远程主机的授权密钥列表中,也可以从远程主机的授权密钥列表中删除公钥。
以下是一些常见的用法:
添加公钥到远程主机的授权密钥列表中:
- name: Add SSH key to authorized_keysauthorized_key:user: usernamekey: "{{ lookup('file', '/path/to/public/key') }}"
从远程主机的授权密钥列表中删除公钥:
- name: Remove SSH key from authorized_keysauthorized_key:user: usernamekey: "{{ lookup('file', '/path/to/public/key') }}"state: absent
从远程主机的授权密钥列表中删除所有公钥:
- name: Remove all SSH keys from authorized_keysauthorized_key:user: usernamestate: absent
注意:在使用authorized_key模块之前,需要确保远程主机上已经安装了SSH服务,并且已经启用了SSH密钥认证。
6、at模块
##at 模块示例:
- name: remove tempuserat:command: userdel -r tempusercount: 20units: minutesunique: yes
参数 | 选项 | 注释 |
command | Null | 计划运行的命令 |
count | Null | 单位数。(必须和units一起运行) |
script_file | Null | 要在将来执行的现有脚本文件 |
state | absent、present | 添加或删除命令或脚本的状态 |
unique | yes、no | 如果作业已经在运行,则不会再次执行 |
units | minutes/hours/days/weeks | 时间名称 |
7、blockinfile模块
ansible blockinfile模块用于在文件中添加或修改一个块(block)的内容。它可以在文件中查找一个特定的标记(marker),然后在该标记之前或之后添加或修改一个块的内容。
该模块的常用参数包括:
path:要修改的文件路径。
block:要添加或修改的块的内容。
marker:标记,用于定位要修改的块的位置。
state:状态,可选值为present(添加或修改)或absent(删除)。
例如,以下是一个使用blockinfile模块添加一个块的示例:
- name: Add a block to a fileblockinfile:path: /etc/nginx/nginx.confblock: |server {listen 80;server_name example.com;location / {proxy_pass http://localhost:8000;}}marker: "# BEGIN NGINX BLOCK"state: present
这个任务会在/etc/nginx/nginx.conf文件中查找标记# BEGIN NGINX BLOCK,如果找到了该标记,则在该标记之前添加一个块。如果没有找到该标记,则在文件末尾添加该块。
8、command、shell、raw、script模块
-
command模块
Ansible command 模块是用于在远程主机上执行命令的模块。它可以在远程主机上执行任何命令,就像在本地终端上一样。使用 Ansible command 模块可以轻松地在远程主机上执行命令,而无需在远程主机上安装任何额外的软件。
ansible all -m command -a 'tail /etc/passwd' -i inventory
chdir ##执行命令前先进入到指定目录
ansible all -m command -a 'chdir=/data pwd'
creates ##如果文件存在将不运行
ansible all -m command -a 'creates=/data/file touch /data/file'
removes ##如果文件存在再将运行
ansible all -m command -a 'removes=/data/file rm -rf /data/file'
-
shell模块
chdir ##执行命令前先进入到指定目录
cmd ##运行命令指定
creates ##如果文件存在将不运行
removes ##如果文件存在在将运行
free_form ##在远程主机中执行的命令,此参数不需要加
executable ##指定执行环境,默认为sh
-
raw模块
raw模块用于在远程主机上执行命令,其支持管道符与重定向
ansible all -m raw -a 'echo "hello world"> /tmp/test';ansible 192.168.160.137 -m raw -a 'cat /tmp/test|grep -Eo hello'
-
script模块
ansible执行本地脚本到目标服务器执行,注意脚本需要+x 权限
ansible demo -m script -a demo.sh
- 不同点
command:
可以在受管主机上执行 shell 命令,但是不支持环境变量和操作符(例如 '|', '<', '>', '&')
shell 模块调用的/bin/sh指令执行。
raw 模块不需要受管主机上安装Python,直接使用远程shell运行命令,通常用于无法安装Python的系统(例如网络设备等)。
9、copy模块
举例:
ansible all -m copy -a 'content="this server is managed by ansible\n" dest=/etc/motd' --become
Ansible的copy模块用于将文件或目录从控制节点复制到远程主机。它可以复制本地文件到远程主机,也可以复制远程主机上的文件到本地。
copy模块的基本语法如下:
- name: Copy file from local to remotecopy:src: /path/to/local/filedest: /path/to/remote/fileowner: usergroup: groupmode: 0644
其中,src表示源文件路径,dest表示目标文件路径。owner、group和mode是可选参数,用于设置文件的所有者、组和权限。
如果要复制目录,可以使用递归选项:
- name: Copy directory from local to remotecopy:src: /path/to/local/directory/dest: /path/to/remote/directory/owner: usergroup: groupmode: 0755recurse: yes
在复制文件或目录之前,Ansible会检查目标文件是否存在。如果存在,它会根据md5校验和检查文件是否相同。如果不同,Ansible会覆盖目标文件。如果相同,Ansible会跳过复制操作。
ansible copy模块常用参数:
src:指定源文件路径,可以是绝对路径或相对路径。
dest:指定目标文件路径,可以是绝对路径或相对路径。
backup:指定备份文件路径,可以是绝对路径或相对路径。
force:如果目标文件已经存在,是否强制覆盖。
mode:指定目标文件的权限模式,可以是数字或字符串形式。
owner:指定目标文件的所有者。
group:指定目标文件的所属组。
validate:指定一个命令或脚本,用于验证复制的文件是否正确。
content:指定要复制的文件内容,可以是字符串或文件路径。
remote_src:如果源文件在远程主机上,是否使用远程主机上的文件进行复制。
follow:如果源文件是符号链接,是否跟随符号链接进行复制。
selevel:指定目标文件的安全级别。
serole:指定目标文件的安全角色。
setype:指定目标文件的安全类型。
seuser:指定目标文件的安全用户。
group 指定文件所有组
ansible test -m copy -a 'src=./test.sh dest=/mnt owner=westos group=westos'
mode 指定目的地文件权限
ansible test -m copy -a 'src=./test.sh dest=/mnt owner=westos group=westos mode=755'
backup=yes 当受控主机中存在文件时备份原文件
ansible test -m copy -a 'src=./test.sh dest=/mnt owner=westos group=westos mode=755 backup=yes'
content 指定文本内容直接在受控主机中生成文件
ansible test -m copy -a 'dest=/mnt/file owner=westos group=westos mode=755 content="hellolinux"'
10、cron模块
job :任务脚本或命令
disabled :yes 禁用计划任务 ,no 启动计划任务
state :absent 删除计划任务
ansible test -m cron -a 'job="echo test" name=lee minute=*/2'
##job:要做的动作
##name:cron的名字
## */2:每隔两分钟执行一次
ansible test -m cron -a 'job="echo test" name=lee disabled=yes'
disabled=yes:禁用
disabled=no:启用
ansible test -m cron -a 'job="echo test" name=lee disabled=no state=absent'
state:删除任务
ansible test -m cron -a 'job="echo test" name=lee minute=*/2 day=1.5 user=westos'
## user=westos 指定用户身份
- cron:name: "Flush Bolt"user: "root"minute: 45hour: 11job: "php ./app/nut cache:clear"
此play在情况bolt缓存后立即使用公司的chche:clear 命令,在每天上午11:45 删除缓存的文件以及CMS 服务器的 directories.flushes 缓存。
nsible 将使用用户声明的正确语法将 play 写入到crontab 中。
通过检查 crontbab 来验证是否已经添加。
cron 模块的一些常用参数有:
参数 | 选项 | 注释 |
slecial_time | reboot、yearly、annually、monthly | 一系列重复出现时间 |
state | absent、present | present创建;absent删除 |
cron_file | Null | 如果有大量的服务器要维护,那么最好预先写好crontab文件 |
backup | yes、no | 在编辑之前备份crontab文件 |
11、fetch模块
从受控主机把文件复制到ansible主机,但不支持目录
src 受控主机的源文件 dest 本机目录
ansible test -m fetch -a 'src=/mnt/test.sh dest=/tmp'
flat 复制文件时,不复制文件的路径,只复制文件本身
ansible test -m fetch -a 'src=/mnt/test.sh dest=/tmp flat=yes'
12、unarchive:解压缩
常用参数
copy :默认为yes 从ansible主机复制文件到受控主机
设定为no 从受控主机中寻找src源文件
mode 加压后文件权限 <copy=yes>
src :包路径,可以是ansible主机也可以是受控主机
dest :受控主机目录
ansible all -m unarchive -a 'src=/data/aaa.bz2 dest=/data copy=no'
13、archive:压缩
path 打包目录名称
dest 打包文件名称
format 打包格式
owner 指定文件所属
mode 指定文件权限
ansible all -m archive -a 'path=/data dest=/data/test/test.tar.gz2 format=bz2 owner=test mode=755'
14、hostname
管理主机名称
ansible 192.168.0.1 -m hostname -a 'name=test.com'
15、yum_repository
配置系统软件仓库源文件
name | 指定仓库名称 |
baseurl | 指定源路径 |
description | 指定仓库描述 |
file | 指定仓库文件名称 |
enabled | 仓库是否启用 |
gpgcheck | 仓库是否检测gpgkey |
state | 默认值present建立 |
absent | 为删除 |
ansible all -m yum.repository -a 'file=/testos name=baseOS baseurl=http://192.168.0.1/xxx/baseOS description="test baseOS" gpgcheck=no enabled=yes'
16、dnf
管理系统中的dnf仓库及管理软件
name | 指定包 |
state | 指定动作 |
present安装 | |
latest更新 | |
absent删除 | |
list | 列出指定信息 |
httpd | |
installed | |
all | |
available | |
disable_gpg_check | 禁用gpgkey检测 |
enablerepo | 指定安装包来源 |
disablerepo | 禁用安装包来源 |
# 列出httpd
ansible test -m dnf -a 'list=httpd'# 安装httpd
ansible test -m dnf -a 'name=httpd state=present'# 卸载httpd
ansible test -m dnf -a 'name=httpd state=absent'# 卸载的时候依赖也卸载
ansible test -m dnf -a 'name=httpd state=absent autoremove=yes'
17、service
管理系统服务状态
name | 指定服务名称 |
state | 指定对服务的动作 |
started | |
stopped | |
restarted | |
reloaded | |
enabled | 设定服务开机是否启动 |
yes开启启动 | |
no开机不启动 |
# 开启httpd
ansible test -m service -a 'name=httpd state=started enabled=yes'# 查看是否开启
ansible test -m shell -a 'systemctl status httpd'# 关闭httpd
ansible test -m service -a 'name=httpd state=stopped enabled=no'
18、user
管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作
name 必须参数,用于指定要操作的用户名称
uid 指定用户的 uid 号。
group 指定用户所在的基本组。
gourps 指定用户所在的附加组。
append 指定添加附加组默认值为no。
comment 指定用户的注释信息。
state 用于指定用户是否存在于远程主机
present 建立
absent 删除
默认值为nopassword 此参数用于指定用户的密码。但密码为明文
可以用openssl password -6 '密码'生成加密字符
# 创建 test 用户
ansible test -m user -a 'name=test'# 删除 test 用户
ansible test -m user -a 'name=tesst state=absent'# 删除 test 用户一起删除家目录
ansible test -m user -a 'name=tesst state=absent remove=yes'# 指定 uid 创建用户
ansible test -m user -a 'name=test uid=1000 group=1000 groups=999'
19 、group
管理远程主机上的组
state 用于指定组的状态
present 建立
absent 删除
gid 用于指定组的gid。
ansible test -m group -a 'name=test gid=999'
20、lineinfile
功能类似sed,对文件替换、插入、删除
替换/插入:如果有重复的,都是匹配最后一个 , 如果不加backrefs项, 替换/插入如无匹配者,则将line所指定的行插入到文件的末尾
删除:如果有重复的,全部删除
path/dest: 目标文件绝对路径+文件名,必须参数
line: 替换/插入的内容
regexp: 待匹配内容
insertbefore: 匹配行前面插入
insertafter: 匹配行面插入
state: 删除匹配行,需要将值设为absent,默认值present。
backup: 是否在修改文件之前对文件进行备份。 yes/no
create: 当要操作的文件并不存在时,是否创建对应的文件。yes/no
backrefs:yes/no
1.backrefs为no时,如果没有匹配,则添加一行line。如果匹配了,则把匹配内容替被换为line内容。
2.backrefs为yes时,如果没有匹配,则文件保持不变。如果匹配了,把匹配内容替被换为line内容。
# 备份文件tasks:- name: 'backup file'lineinfile:path: /root/line.txtbackup: yesline: state=present# 替换行tasks:- name: 'replace'lineinfile:path: /root/line.txtregexp: 'ddddeeeee'line: '此行已被替换'# 在匹配行前面插入tasks:- name: '在匹配行前面插入'lineinfile:path: /root/line.txtinsertbefore: 'aaaavvvaaaaaaaa'line: '成功在匹配行前面插入一行'# 在匹配行后面插入tasks:- name: "在匹配行后面插入"lineinfile:dest: /root/line.txtinsertafter: 'aassssaaaaaaaa'line: 成功在匹配行后面插入一行# 删除匹配行tasks:- name: '删除匹配行'lineinfile:dest: /root/line.txtregexp: 's\+awc\_i\!t\@\#x'state: absent
# 注意,需要删除的是 s+awc_i!t@#x 匹配需要转义特殊符号# 新建文件tasks:- name: 'create'lineinfile:dest: /root/test.txtcreate: yesline: state=present
相关文章:
ansible 管理工具以及常用模块
一、前期准备 1、安装 yum install ansible 如果yum源没有ansible,需要提前配置yum源: mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup wget -O…...

javaSSM公司招聘管理系统IDEA开发mysql数据库web结构计算机java编程maven项目
一、源码特点 IDEA开发SSM公司招聘管理系统是一套完善的完整企业内部系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发)MAVEN方式加 载,系统具有完整的源代码和…...
蓝桥杯day11刷题日记
P8615 [蓝桥杯 2014 国 C] 拼接平方数 思路:先把数据范围内的平方数打上标记,然后就是遍历这个区间,转成字符串(好拆数据),用substr拆开数据,再强转成整数类型,最后查看拆开的数据是…...

IDEA, Pycharm, Goland控制台乱码
IDEA, Pycharm, Goland控制台乱码 问题描述: 控制台出现����等乱码 复现频率: 总是 解决方案: 以IDEA为例 添加 -Dfile.encodingUTF-8位置 idea64.exe.vmoptions 在安装idea的bin目录idea.vmoptions idea客户端 示意图...
JavaScript单元测试jasmine学习(一)
介绍: jasmine是用于测试JavaScript的一种测试框架,BDD(Behavior Driven Development)行为驱动开发。不依赖于任何其他JavaScript框架,也不需要DOM 准备工作: 1. 首先添加jasmine到自己的项目中 npm install --save-dev jasmine 2. 在项目…...

108、3D Gaussian Splatting for Real-Time Radiance Field Rendering
简介 官网 更少训练时间的同时实现最先进的视觉质量,能在1080p分辨率下实现高质量的实时(≥30 fps)新视图合成 NeRF使用隐式场景表示,体素,点云等属于显示建模方法,3DGS就是显示辐射场。它用3D高斯作为灵活高效的表示方法&…...
PHP之CURL和Socket
文章目录 一、CURL1.基本流程(1)初始化(2)向服务器发送请求(3)向服务器发送请求(4)关闭curl 2.CURLOPT参数记得写一个文件curl上传的例子记得写一个json上传的例子3.CURL批处理 二、…...

【Web】NKCTF 2024 个人wp(部分)
目录 my first cms 全世界最简单的CTF attack_tacooooo 属实太菜了,3/4 my first cms 一眼搜版本2.2.19 CVE -CVE-2024-27622 GitHub - capture0x/CMSMadeSimple 访问/admin/login.php 爆出弱口令,后台登录 admin Admin123 Extensions > User D…...

QT常见布局器使用
布局简介 为什么要布局?通过布局拖动不影响鼠标拖动窗口的效果等优点.QT设计器布局比较固定,不方便后期修改和维护;在Qt里面布局分为四个大类 : 盒子布局:QBoxLayout 网格布局:QGridLayout 表单布局&am…...

政安晨:【深度学习部署】—— TensorFlow Extended(TFX)介绍
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 前言 TensorFlow Extended(TFX&a…...
宝石与石头
宝石与石头 链接:https://leetcode.cn/problems/jewels-and-stones/description/ 给你⼀个字符串 jewels 代表石头中宝石的类型,另有⼀个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了⼀种你拥有的石头的类型,你想知道你拥有的石头中有多…...

【Vue3之computed属性(四)】
文章目录 前言一、computed属性有缓存二、使用方法三、修改全名 前言 理解computed属性,实现输入姓和名得出全名并双向绑定,区分单向绑定和双向绑定。测试computed属性和方法的区别 一、computed属性有缓存 先引入computed,写箭头函数定义并…...

生产力工具|安装更新R软件(R、studio)
内容介绍: 安装R软件: 下载 R X64 3.5.1: 访问官方R网站 https://cran.r-project.org/。选择适合Windows版本的安装包。将安装包下载到您的计算机。 本地安装: 运行下载的“R-3.5.1-win.exe”文件。按照安装向导,选择安装路径,取消…...

ffmpeg实现媒体流解码
本期主要讲解怎么将MP4媒体流的视频解码为yuv,音频解码为pcm数据;在此之前我们要先了解解复用和复用的概念; 解复用:像mp4是由音频和视频组成的(其他内容流除外);将MP4的流拆分成视频流(h264或h265等)和音频流(AAC或mp3等); 复用:就是将音频和视频打包成MP4或者fl…...

面试题 之 react
1.说说对react的理解 1️⃣是什么 React是用于构建用户界面的 JavaScript 库,遵循组件设计模式、声明式编程范式和函数式编程概念,更高效使用虚拟 DOM 来有效地操作 DOM ,遵循从高阶组件到低阶组件的单向数据流。 react 类组件使用一个名为 render() 的方…...

k8s笔记27--快速了解 k8s pod和cgroup的关系
k8s笔记27--快速了解 k8s pod和 cgroup 的关系 介绍pod & cgroup注意事项说明 介绍 随着云计算、云原生技术的成熟和广泛应用,K8S已经成为容器编排的事实标准,学习了解容器、K8S技术对于新时代的IT从业者显得极其重要了。 之前在文章 docker笔记13–…...

android Fragment 生命周期 方法调用顺序
文章目录 Introlog 及结论代码 Intro 界面设计:点击左侧按钮,会将右侧 青色的RightFragment 替换成 黄色的AnotherRightFragment,而这两个 Fragment 的生命周期方法都会打印日志。 所以只要看执行结果中的日志,就可以知道 Fragme…...

python写爬虫爬取京东商品信息
工具库 爬虫有两种方案: 第一种方式是使用request模拟请求,并使用bs4解析respond得到数据。第二种是使用selenium和无头浏览器,selenium自动化操作无头浏览器,由无头浏览器实现请求,对得到的数据进行解析。 第一种方…...
使用Linux别名简化命令输入
Linux定义命令别名,解决经常重复输入长命令 在Linux环境下工作时,我们经常需要输入长长的命令,这不仅耗时而且容易出错。Linux提供了一种名为“别名(alias)”的功能,可以让我们为这些长命令定义简短的名称…...

34.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-登录数据包的监视与模拟
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:33.游戏登录数据…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...