ansible自动化运维工具学习笔记
目录
ansible环境部署
控制端准备
被控制端准备
ansible批量管理主机的方式主要有两种
配置准备:
ssh密码认证方式管理机器
密码登录,需要各主机密码相同
配置免密登录
ssh密钥方式批量管理主机
ansible实现批量化主机管理的模式
ansible-doc命令
command模块
shell模块
script模块
copy模块
yum_repository模块
yum模块
systemd模块
group模块
user模块
date命令:
File模块
cron模块
debug模块
template模块
lineinfile模块
PlayBook
YMAL
Play
ansible变量
全局变量
剧本变量
资产变量
Facts变量
注册变量
变量优先级
任务控制
条件
循环
handlers属性:
JinJa2模板
介绍:Jinja2是基于Python书写的模板引擎。
命名:1.jinja2 文件以 .j2 为后缀,也可以不写后缀,
定界符:
判断控制:
循环控制(不可使用break,countinue):
Role
循环方法创建main.yml
role执行:
Galaxy平台
实战:
优化ansible执行速度
1.ssh长连接:
2.开启pipelining:
3.Facts缓存到redis:
自由执行策略
异步执行
插件
回调插件
主输出插件
启用其他内置的回调插件
回调类型
日志回调插件
开发回调插件
ansible基于python编写,主要由python的两个ssh处理模块,paramiko以及pyYAML模块。
ansible环境部署
控制端准备
可使用yum安装方式
yum -y install epel-release # 安装扩展源
yum install -y ansible libselinux-python #安装ansible及其所需的系统模块
被控制端准备
yum -y install epel-release # 安装扩展源
yum install -y libselinux-python #安装ansible所需的系统模块
ansible批量管理主机的方式主要有两种
传统的输入ssh密码验证,密钥管理
配置准备:
配置好ansible的配置文件,添加被管理机器的ip地址,或者主机名
1.备份现有的配置文件
cp /etc/ansible/hosts{,.ori} # 将hosts文件复制到hosts.ori文件中
2.添加ansible需要管理的机器地址
vim /etc/ansible/hosts
# 添加内容
[主机列表模块]
被控制主机的IP
注意:多台网络号相同的主机可以使用X.X.X.[S:E]格式
ssh密码认证方式管理机器
密码登录,需要各主机密码相同
ansible是直接利用linux本地的ssh服务,以及一些远程操作,一般情况下客户端的ssh服务默认开启,无须额外管理
1, 查看ssh是否开启(一般默认开启)
systemctl status sshd
2, 在控制端主机上,告诉其他被管理的机器,你要执行什么命令,以及那些用户去执行
ansible 主机列表模块 -m 功能 -a "命令" -k -u 用户
注意:①,主机列表模块不加[]
②,当使用all时,所有主机列表模块被选中
③,当使用多模块时用‘’括起来,模块之间:
并集 :
交集 :&
差集 :!
④,如果不想使用默认的库存文件位置(通常是/etc/ansible/hosts),可以在/etc/ansible/ansible.cfg中修改,
在使用ansible时可以通过-i指定自定义的库存文件路径(资产)
常用参数
# -m 指定功能模块,默认就是command,command模块它用于在远程主机上执行命令,除了command模块,还有ping等模块。
# -a 告诉模块需要执行的参数
# -k 询问密码验证
# -u 指定运行的用户
# -i指定自定义的库存文件路径
3,如上操作,一般默认情况下会有错误提示,需要执行手动ssh对主机进行连接,及可使用ansible命令操作了
# 远程连接例如
ssh root@192.168.47.132
# 可查看
cat ~/.ssh/know_hosts
4,此时可以再次执行ansible命令
配置免密登录
当主机密码不同时,可以使用免密登录
在/etc/ansible/hosts文件中,定义好密码即可,即可实现快速的认证和远程管理主机
1, 修改hosts文件·
[主机列表模块]
被控制主机的ip ansible_user=用户名 ansible_ssh_pass=密码
参数
# absible_host 主机地址
# ansible_port 端口,默认是22
# ansible_user 认证的用户
# ansible_ssh_pass 用户认证的密码
2,此时可以不需要输入密码,既可以自动ssh验证通过了
ansible 主机列表模块 -m 功能 -a “命令”
ssh密钥方式批量管理主机
这种方式比配置host文件的密码参数更安全
1.在控制机上创建ssh密钥对
ssh-keygen -f ~/.ssh/id_rsa -P "" >/dev/null 2>&1
参数
# f :用于指定生成的密钥对文件的文件名
# P :用于指定密钥对的密码(口令)。这里设置为空字符串(""),意味着生成的密钥对在使用时不需要输入密码就能被访问和使用
# &1:表示将标准错误输出重定向到和标准输出相同的地方(也就是/dev/null)
2.此时到“cd ~/.ssh/”下检查公私钥文件:id_rsa id_ras.pub
3.编写公钥分发脚本
#!/bin/bash
rm -rf ~/.ssh/id_ras*
ssh-keygen -f ~/.ssh/id_rsa -P "" >/dev/null 2>&1
SSH_Pass=密码
Key_Path=~/.ssh/id_rsa.pub
for ip in 132 133 # 这里的132,133是我的管理主机的最后主机号
do
# 非交互式分发公钥命令需要用sshpass指定SSH密码,通过-o StrictHostKeyChecking=no跳过SSH连接确认信息
sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" 192.168.47.$ip
done
4.运行脚本,使用ansible工具
ansible实现批量化主机管理的模式
主要有两种:
利用ansible的纯命令行实现的批量管理,ad-hoc模式——好比简单的shell命令管理
利用ansible的playbook剧本来实现批量管理,playbook剧本模式——好比复杂的shell脚本
Ad-hoc模式
ansible的ad-hoc模式是ansible的命令行形式,处理一些临时的,简单的任务,可以直接使用ansible的命令行来操作
playbook模式
ansible地playbook莫事是针对比较具体,且比较大的任务,需要写好剧本来实现,比如一键部署rsync备份服务器,lnmp环境。
ansible-doc命令
列出所有的ansible-hoc支持的模块
ansible-doc -l
查看某个模块的具体的用法参数
ansible-doc -s command
command模块
作用:在远程节点上执行一个命令
ansible-doc -s command # 查看该模块支持的参数
常用参数:
chdir:在执行命令之前,通过cd进入该参数指定的目录

creates:在创建一个文件之前,判断该文件是否存在,如果存在了则跳过前面的东西,如果不存在则执行前面的动作

free_form:该参数可以输入任何的系统命令,实现远程执行和管理
removes:定义了一个文件是否存在,如果存在则执行前面的动作,如果不存在则跳过动作
warn:是否提供告警信息
注意:
command模块是ansible的默认基本模块,可以省略不写,使用command模块,不得出现shell变量$name,也不得出现特殊符号>< | ; &这些符号command模块都不认识,如果需要使用特殊符号,可以使用shell模块。
shell模块
作用:在远程机器上执行复杂的命令
ansible-doc -s shell # 查看该模块支持的参数
![]()
注意:语句之间用;进行分割
script模块
功能:将控制端的脚本远程传输到被控制主机上运行
对比shell模块。script模块功能更强大
ansible-doc -s script # 查看该模块支持的参数
![]()
注意:直接传送脚本名即可
copy模块
功能:主要用于管理节点和被管理节点之间的文件拷贝
常用参数:
src 指定拷贝文件的源地址
dest 指定拷贝文件的目的地址

backup 拷贝文件前,若被控制主机源文件发生变化,则对目标文件进行备份

woner 指定新拷贝文件的所有者
group 指定新拷贝文件的所有组
mode 指定新拷贝文件的权限

yum_repository模块
功能:添加yum库
常用参数:
name 仓库名称,就是仓库文件中的第一行的中括号中名称,必须的参数
description 自定义仓库描述信息,必须的参数
baseurl yum存储库‘repodata’目录所在目录的url,必须的参数,它可以是多个url的列表
file 仓库文件保存到被控制主机的文件名,不包含.repo。默认是name的值
state preset确认添加仓库文件,absent确认删除仓库文件
gpgcheck 是否检查gpg yes|no ,没有默认值,使用/etc/yum.conf进行配置
yum模块
等同于Linux上的yum命令,对远程服务器上的rpm包进行管理。
常用参数:
name 要安装的软件包名,多个软件包以逗号隔开
state 对当前指定的软件安装,移除操作(present installed latest absent removed)
支持的参数
present 确认已经安装,但不升级

installed 确认已经安装
latest 确保安装,且升级为最新
absent 和removed 确认已移除
安装软件包组
ansible 列表主机模块 -m yum -a ”name='@Development tools' state=present“
注意:@Development tools是要安装的软件包组的名称。在基于 RPM 的 Linux 系统中,软件包可以分组,Development tools是一个包含了许多开发相关工具(如编译器、调试工具等)的软件包组。
systemd模块
功能:管理远程主机上的systemd服务,就是由systend所管理的服务
常用参数:
daemon_reload 重新载入systemd,扫描新的/变动的单元
enabled 是否开机自启动yes|no
name 必选项,服务名称,比如httpd vsftpd
state 对当前服务执行启动,停止,重启,重新加载等操作(started,stopped,restarted,reloaded)
group模块
功能:对被控制主机进行组的管理
常用参数:
name 组名称,必选项
system 是否为系统组,yes|no,默认为no
state 删除或者创建,present/absent,默认是present
user模块
功能:用于管理被管理结点上的用户
常用参数:
name:必选项,指定用户名
password:设置用户密码,接受的是一个加密的值,会直接存到shadow,默认不设置密码
update_password:更新密码
home:指定用户家目录
shell:设置用户的shell
comment:用户的描述信息
create_home:在创建用户时,是否创建其家目录,默认创建,不创建设置为no
group:设置用户的主组
groups:将用户加入到其他组,逗号分开,默认会把用户从原组删除
append:与groups配合使用,yes时,不会将用户从原组删除
system:设置为yes时,将会创建一个系统账号
expires:设置用户的过期时间,值为时间戳,会转为天数后放在shadow的最后第8个字段里
generate_ssh_key:设置为yes将会为用户生成密钥。不会覆盖原来密钥
ssh_key_type:指定用户的密钥类型,默认为rsa,具体的类型取决于被管理结点
state:删除或添加用户,yes为添加,absent为删除,默认为yes
remove:当与state=absent一起使用,删除一个用户及关联目录,可选值为yes/no
date命令:
// 计算 3 小时之后是几点几分
# date +%T -d '3 hours'
//任意日期的前 N天,后 N 天的具体日期
# date +%F -d"20190910 1 day"
# date +%F -d"20190910 -1 day
//计算两个日期相差天数,比如计算生日距离现在还有多少天
# d1=$(date +%s -d 20180728)
#d2=$(date +%s -d 20180726)
#echo s(((d1-d2)/86400))
File模块
功能:用于远程主机上的文件操作
常用参数:
owner:定义文件/目录的属主
group:定义文件/目录的属组
mode:定义文件/目录的权限
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:链接(软/硬)文件的源文件路径,只应用于state=link的情况
dest:链接文件的路径,只应用于state=link的情况
state:
directory:如果目录不存在,创建目录
file:文件不存在,则不会被创建,存在则返回文件的信息,常用于检查文件是否存在。
link:创建软连接
hard:创建硬连接
touch:文件不存在,则会创建一个新的文件,文件或目录存在,则更新其最后修改时间
absent:删除目录,文件或者取消链接文件
cron模块
功能:管理远程节点的cron服务,等同于Linux中的计划任务
注意:使用Ansible创建的计划任务,是不可使用本地的crontab -e去编辑,否则Ansible无法再次操作次计划任务
常用参数:
name:指定一个cron job名字,便于删除
minute:指定分钟,可以设置(0-59,*,*/2等),默认是*。表示每分钟。
hour:每小时。可设置(0-23,*,*/2等),默认是*,表示每天。
month:指定月份,可设置(1-12,*,*/2等),默认是*,每周
weekday:指定月份,可设置(0-6 for Sunday-Saturday,*等),默认*,每星期
job:指定要执行的内容,通常可以写脚本或内容。
state:指定job状态,新增present/删除absent,默认present。
验证cron:
crontab -l
debug模块
功能:debug模块主要用于调试时使用,通常的作用是将一个变量的值给打印出来
常用参数:
var:直接打印一个指定的变量值,变量不用加双引号。
msg:打印一段可以格式化的字符串
template模块
功能:加强版copy,可以进行文档内变量的替换
常用参数:
src:指定ansible控制端的文件路径
dest:指定ansible被控端的文件路径
owner:指定文件属主
group:指定文件属组
mode:指定文件的权限
backup:创建一个包含时间戳信息的备份文件,yes/no
lineinfile模块
功能:在被管理节点上,用正则匹配对目标文件的一行内容修改删除等操作
常用参数:
path:目标文件路径,必须项。
state:可选值absent删除|present替换(默认值)
regexp:在文件的每一行查找的正则表达式,对于state=present,仅找到的最后一行被替换
line:要在文件中插入/替换的行,需要state=present
create:文件不存在时,是否要创建文件并添加内容,yes/no。
# ansible all -m lineinfile -a 'path=/etc/selinux/config regexp="^SELINUX=" line="SELINUX=disabled" state=present'
PlayBook
YMAL
PlayBook遵循YAML的语法格式。
yaml特点
Yaml 文件以 # 为注释符
Yaml 文件以 .yml 或者 .yaml结尾
Yaml 文件以 --- 开始,以 …结束,开始和结束标志都是可选的
yaml基本语法
区分大小写
使用缩进表示层级关系
缩进时,使用tab键或者空格键一定要达到统一
相同层级的元素必须左侧对齐即可
yaml支持的数据结构有三种
字符串 YAML中的字符串可以不使用引号,语句为表述完可进行折行
列表 格式 ‘以短横线开头+空格+具体的值’,一个短横线是一个列表元素
字典 格式:‘key+冒号(:)+空格+值(value),即key:value’
yaml语法测试
python3 -c 'import yaml,sys;print(yaml.safe_load(sys.stdin))' < yml文件

Play
定义Play
每个Play都是以短横杠开始的
每个Play都是一个YAML字典格式
常用属性
name: 每个play的名字
hosts: 每个play涉及的被管理服务器,同ad-hoc中的资产选择器
tasks: 每个play中具体要完成的任务,以列表的形式表达
become:如果需要提权,则加上become相关属性
becom_user: 若提权的话,提权到哪个用户上
remote_user: 在远程服务器上执行具体操作的用户。若不指定,则默认使用当前执行ansible Playbook的用户
一个完整的playbook

对Playbook进行语法校验
下面校验的方法,只能校验PlayBook是否正确,而不能校验YAML文件是否语法正确
ansible-playbook playbook文件名 --syntax-check
可以安装yamllint进行校验YAML语法
pip3 install yamllint
yamlint 文件名
运行PlayBook
ansible-playbook playbook文件名
单步跟从调试PlayBook
//执行task中的任务,需要手动确认是否往下执行
ansible-playbook playbook文件名 --step
测试运行PlayBook
会在本机上模拟执行所有过程
ansible-playbook playbook文件名 -C
ansible变量
在ansible中,使用双花括号 {{ }} 来引用变量
全局变量
通过命令行参数,使用-e参数在执行ansible命令时传递全局变量
剧本变量
通过play属性vars/vars_files定义
在play使用{{变量名}}引用变量,当为字典中的vlaue值时需要加上双引号(与字典进行区分)。
资产变量
主机变量和主机组变量
主机变量优先级高于主机组变量
Facts变量
它的声明和赋值完全由ansible中的setup模块帮助我们完成,收集了有关被管理服务器的操作系统版本,服务器IP地址,主机名,磁盘的使用情况,
cpu个数,内存大小等有关被管理服务器的私有信息。
语法:ansible 主机列表 -m setup
可以通过Facts模块中的filter参数去过滤我们想要的信息。
例如过滤内存信息

在PlayBook运行的时候都会发现在PlayBook执行前都会有一个Gathering Facts的过程,这个过程就是收集被管理服务器的Facts信息过程。
例如获取地址

注意:获取Facts信息时,需要先获取最外层一般以ansible开头,内部值引用若为列表则".下标",字典则“.key”
若在整个PlayBook的执行过程中,完全未使用过Facts变量,此时可以将其关闭以加快PlayBook的执行速度。
# 关闭facts变量收集功能
gather_facts: no
注册变量
将此次task任务的结果作为条件,去判断是否去执行其他task任务;
注册变量在PlayBook中通过register关键字去实现。

变量优先级
全局变量>剧本变量>资产变量
任务控制
条件
用when实现条件判断
when支持如下运算符:
==,!=,>/<,>=/<=,is defined,is not defined,true,flase,and,or
循环
在PlayBook中使用with_items/loop去实现循环控制,且循环时的中间变量(shell循环中的$i变量)只能是关键字item(每次循环的值由item接受),不能随意自定义。

tags属性
解决的问题:对某些具体的任务执行,而不用执行整个PlayBook剧本,降低变更风险和范围

使用:
在playbook具体任务下一定要指定tags属性,这样在执行的过程中只执行task任务上打上tags标记的任务
执行语法:ansible-playbook 剧本名 -t tags标记名
handlers属性:
解决问题:与notify配合使用,当某任务发生改变,通过notify通知去触发handlers(与tasks平级)下的任务。
JinJa2模板
介绍:Jinja2是基于Python书写的模板引擎。

命名:1.jinja2 文件以 .j2 为后缀,也可以不写后缀,
定界符:
注释: {# 注释内容 #}
变量引用: {{ var }}
逻辑表达: {% %}
判断控制:
{%if%}
{%else if%}
{%end if%}
循环控制(不可使用break,countinue):
{%for ….in…%}
{%end for%}
Role
role就是一个目录,将一个PlayBook拆分成不同子目录,目录名就是role名,role下会有子目录,每个子目录包含一个‘main.yml’文件,
循环方法创建main.yml
for d in `ls` ; do ; touch ${d}/main.yml ; done
这个文件应该包含以下名称对应的内容:
tasks -包含角色要执行的任务的主要列表
handlers-包含处理程序,此角色甚至该角色之外的任何地方都可以使用这些处理程序。
defaults-角色的默认变量。
vars-角色的其他变量,
files -包含可以通过此角色部署的文件
templates -包含可以通过此角色部署的模板。
meta -为此角色定义一些元数据
角色必须至少包含这些目录之一,但是最好排除任何未使用的目录
role执行:
role 本身不能被直接执行,需要借助playBook进行间接的调用。
- name: a playbook used role
hosts: all
roles :
- 角色名
Galaxy平台
功能:获取需要的role。https://galaxy.ansible.com/
常用指令
//在galaxy 上搜索共享的ROLE
# ansible-galaxy search 名称
//安装 galaxy 上共享的 ROLE
# ansible-galaxy install 名称
//列举已经通过 ansible-galaxy 工具安装的ROLE#
ansible-galaxy list
//创建一个ROLE 的空目录架构,这样我们在开发一个ROLE的时候,就不需要手动创建目录了。
# ansible-galaxy init --offline
实战:
优化ansible执行速度
1.ssh长连接:
进/etc/ansible/ansible.cfg修改ControlPersist时间,使用ss -natp | grep -E 'ESTAB.*ssh'查看连接情况
2.开启pipelining:
进/etc/ansible/ansible.cfg修改pipelining = True,执行剧本时-vvv发现无put操作
3.Facts缓存到redis:
安装redis,安装 Redis Python 客户端pip install redis
进/etc/ansible/ansible.cfg
修改收集类型gathering = smart(缓存后不再收集),
设置缓存后端为 fact_caching = redis,
修改fact_caching_connection= 服务器ip:6379:0(参考注释修改),
fact_caching_timeout=缓存过期时间
进/etc/redis.conf中bind=0.0.0.0(允许所有 IP 访问),重启redis
自由执行策略
允许 Ansible 同时在所有目标主机上独立执行任务(并行)。每台主机完成一个任务后,会立即开始执行下一个任务,而不必等待其他主机完成当前任务。
适用场景:适用于任务之间相互独立,且希望尽快完成所有主机上任务的场景,例如批量安装软件包。运行时,加-f 选项用于控制并行执行的进程数量
配置:进入ansible.cfg修改strategy = free
异步执行
当执行耗时较长的任务时,无需等待任务完成,ansible可以继续处理其他事务。
参数:
async:用于指定任务的最大执行时间(以秒为单位)。如果任务在这个时间内没有完成,ansible 会将其标记为失败。
poll:用于指定 ansible 检查任务状态的间隔时间(以秒为单位)。如果设置为 0,表示不主动检查任务状态,而是让任务在后台异步运行,之后可以通过 async_status 模块手动检查任务状态

插件
回调插件
查看回调插件:ansible-doc -t callback -l
查看json回调插件:ansible-doc -t callback json
主输出插件
同时只能有一个回调插件作为主输出插件,如果想替换,在 ansible.cfg 中配置 stdout 插件(标准输出)。
stdout_callback = json #以JSON的格式输出结果,也可其他
或使用自定义的回调 stdout_callback = mycallback
默认情况下仅对playbook生效,若让ad-hoc方式生效在ansible.cfg种修改bin_ansible_callbacks = True
启用其他内置的回调插件
大部分情况下,无论是内置的回调插件还是自定义的回调插件,都需要在ansible.cfg 中添加到白名单中,才能启用。
callback_whitelist=timer,mail,profile roles,custom callback
timer :计算整个 playbook 的运行时间
mail: 实现发送邮件的功能
profile_roles :统计任务执行时间
custom callback是自定义的插件
注意:profiles_roles总时间超过timer总时间可能是由于并行机制的影响,profile_roles中时间是任务的时间累加,而实际执行会并行。
回调类型
不同的回调类型对于 playbook 的输出有不一样的效果
stdout 标准输出类型,用在回调的主管理者
aggregate聚合类型,把此类型插件处理的结果和stdout 类型插件合并一起输出到标准输出。比如:timer,profile_tasks 等。
notification 通知类型,不参与标准输出,也不影响标准输出插件的正常输出,只是会把执行 playbook的返回值写的指定的媒介中。
比如:log_plays,mail。假如自定义把执行playbook 的结果输出到数据库中就可以使用此类型。
日志回调插件
内置的回调查看log_plays会将playbook的返回信息到默认路径/var/log/ansible/hosts目录中。
以下方法可通过ansible-doc -t callback log_plays进行查看
方法1:使用系统变量指定日志路径 export ANSIBLE_LOG_FOLDER=日志存储路径,并加入白名单
方法2:在ansible.cfg中进行配置,并加入白名单
[callback_log_plays]
log_folder = 日志存储路径
查看文档:

开发回调插件
规则
1,使用兼容的python版本进行编写
2,遇到问题,主动抛出异常
3,返回以unicode编码的字符串,主要是兼容JinJa2
4,符合ansible的配置和文档标准,可以通过ansible.cfg进行配置
开发mysql_plays插件
数据库准备:
create database if not exists ansible default charset utf8mb4 collate utf8mb4_general_ci;
create user 'ansible'@'%' identified with mysql_native_password by 'Aa!123456';
grant all on ansible.* to 'ansible'@'%';
mysql> create table if not exists playsresult(
-> id int auto_increment primary key,
-> user varchar(16) not null,
-> host varchar(32) not null,
-> category varchar(11) not null,
-> result text,
-> create_time datetime not null default current_timestamp
-> );
log_plays文档改写:
1.获取文档:按上述日志回调插件查看文档方法获取文档
2.进行改写,改option选项,通过异常判断pymsql还是MySQL库,定义mysql连接函数,定义execute_sql函数
3.改写完成保存到/root/.ansible/plugins/callback/目录下
ansible.cfg配置:
将插件写入白名单,并将ini写入
验证:
ansible-doc -t callback mysql_plays
相关文章:
ansible自动化运维工具学习笔记
目录 ansible环境部署 控制端准备 被控制端准备 ansible批量管理主机的方式主要有两种 配置准备: ssh密码认证方式管理机器 密码登录,需要各主机密码相同 配置免密登录 ssh密钥方式批量管理主机 ansible实现批量化主机管理的模式 ansible-doc命令 comman…...
零基础deep seek+剪映,如何制作高品质的视频短片
以下是专为零基础学习者设计的 剪映专业版详细教程+Deep seek配合制 ,包含从入门到精通的系统化教学,配合具体操作步骤与实用技巧: 基于DeepSeek与剪映协同制作高品质视频短片的专业流程指南(2025年最新实践版&#x…...
网络空间安全(4)web应用程序安全要点
前言 Web应用程序安全是确保Web应用程序、服务和服务器免受网络攻击和威胁的关键环节。 一、编写安全的代码 输入验证与过滤:确保所有的用户输入都被正确验证和过滤,以防止注入攻击等安全漏洞。开发者应对URL、查询关键字、HTTP头、POST数据等进行严格的…...
【word】保存重开题注/交叉引用消失,全局更新域问题
目录 一、更新域是什么二、更新域常见问题及解决方法(一)更新域后内容未变化(二)域代码显示异常(三)交叉引用无法更新(四)全选更新域出现错误 三、交叉引用与题注的关系及操作&#…...
大语言模型中的 Token:它们是什么,如何工作?
引言 如果你使用过 ChatGPT 这样的 AI 工具,你可能会好奇:它是如何理解并生成文字的?大语言模型(LLM,Large Language Model)并不是直接处理整个句子或文章,而是拆分成一个个 Token(…...
DeepSeek的无限可能
DeepSeek的无限可能 DeepSeek简介DeepSeek定义DeepSeek的发展历程DeepSeek的核心功能 如何使用DeepSeek注册与安装模型使用原则提示语的使用 人机共生 DeepSeek简介 DeepSeek定义 DeepSeek(中文名:深度求索)是一款由杭州深度求索人工智能基…...
【wordpress】服务器已有LNMP环境(已运行WordPress),如何配置文档访问功能?
效果如图步骤确定文件存放目录404.html修改配置文件重启nginx服务 接下来是从win向linux云服务器上传文件使用Samba服务(没成功)使用xshell上传文件(大文件上传一堆乱码)winscp(好用) 效果如图 如果url不对…...
Ollama 的庐山真面目
Ollama 运行方式分析 本地推理条件(GPU/CPU/RAM):Ollama 支持在本地电脑进行大模型推理,但需要满足一定的硬件条件。一般来说,GPU 有助于加速推理,特别是显存较大的 GPU 能够加载更大的模型;如果…...
行为型模式 - 观察者模式 (Publish/Subscribe)
行为型模式 - 观察者模式 (Publish/Subscribe) 又称作为订阅发布模式(Publish-Subscribe Pattern)是一种消息传递模式,在该模式中,发送者(发布者)不会直接将消息发送给特定的接收者(订阅者&…...
C++编程指南21 - 线程detach后其注意变量的生命周期
一:概述 如果一个线程被 detach() 了,那么它的生命周期将独立于创建它的作用域。因此,该线程只能安全地访问: 全局变量(global/static objects)堆上分配的对象(free-store allocated objects&a…...
Hadoop之01:HDFS分布式文件系统
HDFS分布式文件系统 1.目标 理解分布式思想学会使用HDFS的常用命令掌握如何使用java api操作HDFS能独立描述HDFS三大组件namenode、secondarynamenode、datanode的作用理解并独立描述HDFS读写流程HDFS如何解决大量小文件存储问题 2. HDFS 2.1 HDFS是什么 HDFS是Hadoop中的一…...
Redis学习笔记系列(一)——Redis简介及安装
1. Redis介绍 Redis是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行…...
【考试大纲】初级信息处理技术员考试大纲
目录 引言一、考试说明1.考试要求2.考试目标二、考试范围科目一:信息处理基础知识科目二:信息处理应用技术引言 最新的信息处理技术员考试大纲出版于 2018 年 6 月,本考试大纲基于此版本整理。 一、考试说明 1.考试要求 (1)了解信息技术的基本概念; (2)熟悉计…...
LabVIEW正弦信号处理:FFT与最小二乘拟合的参数提取
问题一:LabVIEW能否对采集的正弦力信号进行快速傅里叶变换(FFT),并得到幅值和相位结果? 答案: 可以。LabVIEW通过内置信号处理工具包提供完整的FFT分析功能,具体实现如下: FFT分析流…...
【计算机网络入门】初学计算机网络(五)
目录 1.编码&解码、调制&解调 2.常用编码方法 2.1 不归零编码(NRZ) 2.2 归零编码(RZ) 2.3 反向非归零编码(NRZI) 2.4 曼彻斯特编码 2.5 差分曼彻斯特编码 3. 各种编码的特点 4.调制 5.有线传输介质 5.1 双绞线 5.2 同轴电缆 5.3 光…...
YOLO在PiscTrace上检测到数据分析
在现代计算机视觉领域,实时视频数据的检测与分析对于安全监控、交通管理以及智能制造等领域具有重要意义。YOLO(You Only Look Once)作为一种高效的目标检测算法,能够在保持高精度的同时实现实时检测。而PiscTrace作为一款集成了O…...
【漫话机器学习系列】112.逻辑回归(Logistic Regression)
逻辑回归(Logistic Regression)详解 1. 逻辑回归简介 逻辑回归(Logistic Regression)是一种广泛用于二分类任务的统计和机器学习方法,尽管它的名字中带有“回归”,但它实际上是一种分类算法。 在逻辑回归…...
【计算机网络入门】初学计算机网络(六)
目录 1.回忆数据链路层作用 2. 组帧 2.1 四种组帧方法 2.1.1 字符计数法 2.1.2 字节填充法 2.1.3 零比特填充法 2.1.4 违规编码法 3. 差错控制 3.1 检错编码 3.1.1 奇偶校验码 3.1.2 CRC(循环冗余校验)校验码 3.2 纠错编码 3.2.1 海明校验码…...
DeepSeek 与云原生后端:AI 赋能现代应用架构
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 在当今快速发展的互联网时代,云原生(Cloud Native)架构已成为后端开发的主流趋势。云…...
leetcode第17题求电话号码组合
原题出于leetcode第17题https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/题目如下: 题目稍微有点复杂,初看会感觉特别复杂,首先我们需要理清思路: 最后的结果是字母组合,因此遍历的是…...
DeepSeek-R1 论文笔记:通过强化学习提升大语言模型的推理能力
论文标题:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 作者团队:DeepSeek-AI 发表时间:2025 前置知识 & 术语 模型蒸馏 语言模型蒸馏的目标是将大型教师模型的知识(如语义理解、上…...
PDF文档中表格以及形状解析
我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析(使用pdfium库)。 表格解析: 在pdfium库…...
深入理解并实现自定义 unordered_map 和 unordered_set
亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 C 的标准模板库(STL)中,unorder…...
228页PPT丨制造业核心业务流程优化咨询全案(战略营销计划生产研发质量),附核心系统集成架构技术支撑体系,2月26日资料已更新
一、订单全生命周期管理优化 1. 智能订单承诺(CTP)系统 ●集成ERP/APS/MES数据,实时计算产能可视性 ●应用蒙特卡洛模拟评估订单交付风险 ●建立动态插单评估模型(基于边际贡献与产能占用系数) 2. 跨部门协同机制…...
6.6.5 SQL访问控制
文章目录 GRANT授予权限REVOKE回收权限 GRANT授予权限 GRANT语句可以给用户授予权限,基本格式是GRANT 权限 TO 用户。在授权时,WITH GRANT OPTION是可选项,有此句话,被授予权限的用户还能把权限赋给其他用户。 REVOKE回收权限 RE…...
PhyloSuite v1.2.3安装与使用-生信工具049
PhyloSuite 一个好用的win集成建树平台,官方相关文档视频等做的可好了PhyloSuite (jushengwu.com) 官网 https://github.com/dongzhang0725/PhyloSuite/releases #官网 http://phylosuite.jushengwu.com/dongzhang0725.github.io/installation/ #官方说明文档…...
【语法】C++中string类中的两个问题及解答
贴主在学习string类时遇到过两个困扰我的问题,今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中,调用的是这个string对象的容量(可以存多少个有效字符),而size()是调用的string对象现在有…...
智慧校园平台在学生学习与生活中的应用
随着科技的发展,教育领域也在不断探索新的模式与方法。智慧校园平台作为教育信息化的重要组成部分,正逐渐成为推动教育改革、提高教学质量的关键工具。 一.智慧校园平台概述 智慧校园平台是一种集成了教学管理、资源服务、数据分析等多功能于一体的数字…...
AtCoder Beginner Contest 001(A - 積雪深差、B - 視程の通報、C - 風力観測、D - 感雨時刻の整理)题解
由于我发现网上很少有人会发很久之前AtCoder Beginner Contes的题,所以我打算从AtCoder Beginner Contest 001开始写。大约两周一更,需要的可以订阅专栏,感谢支持Thanks♪(・ω・)ノ →题目翻译 A - 積雪深差…...
Windows本地Docker+Open-WebUI部署DeepSeek
最近想在自己的电脑本地部署一下DeepSeek试试,由于不希望污染电脑的Windows环境,所以在wsl中安装了ollama,使用ollama拉取DeepSeek模型。然后在Windows中安装了Docker Desktop,在Docker中部署了Open-WebUI,最后再在Ope…...
