Ansible---自动化运维工具
一、Ansible概述
1.1 Ansible简介
Ansible是一款自动化运维工具,通过ssh对目标主机进行配置、应用部署、任务执行、编排调度等操作。它简化了复杂的环境管理和自动化任务,提高了工作效率和一致性,同时,Ansible的剧本(playbooks)可以使用YAML语言进行编写,易于维护和扩展。
- Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。
- Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。
- Ansible是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块, 比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。
- Ansible其中一个比较鲜明的特性是Agentless,即无Agent的存在,它就像普通命令一样,并非C/S软件,也只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。
- 使用者在使用时,在服务器终端输入命令或者playbooks,会通过预定好的规则将playbook拆解为play,再组织成ansible可以识别的任务,调用模块和插件,根据主机清单通过SSH将临时文件发给远程的客户端执行并返回结果,执行结束后自动删除
- Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性,指的是多次操作或多次执行对系统资源的影响是一致的。比如执行 systemctl stop xxx 命令来停止服务,当发现要停止的目标服务已经处于停止状态, 它什么也不会做,所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,而 systemctl restart xxx 是非幂等的。
- Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。
1.2 Ansible的特点
- 部署简单,只需在主控端部署Ansible环境, 被控端无需做任何操作
- 默认使用SSH协议设备进行管理;
- 主从集中化管理
- 配置简单、功能强大、扩张性强;
- 支持API及自定义模块,可以通过Pyhton轻松扩展
- 通过playbooks 来定制强大的配置、状态管理
- 对云计算平台、大数据都有很好的支持
1.3 Ansible自动运维管理工具的优点
- 轻量级,更新时,只需要在操作机上进行一次更新即可;
- 采用 SSH 协议;
- 不需要去客户端安装 agent;
- 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
- 使用 python 编写的,维护更简单;
- 支持 sudo 普通用户命令;
- 去中心化管理。
二、Ansible的数据流向(工作机制)
2.1 内部

加载自己的配置文件,默认/etc/ansible/ansible.cfg
查找对应的主机配置文件,找到要执行的主机或组
加载自己对应的模块文件,如command yum ping
通过ansible将模块命令生成对应临时py文件(pyhton),并将该文件传输至远程服务器上
对应执行用户的家目录的.ansible/tmp/xxx/xxxx.py文件
给文件+执行权限
执行并返回结果,删除临时文件,sleep 0 退出
2.2 外部

三、安装Ansible
3.1安装准备
[root@localhost ~]#setenforce 0 ##关闭核心防护
[root@localhost ~]#systemctl stop firewalld #关闭防火墙
3.2 修改主机名
[root@localhost ~]#hostnamectl set-hostname ansible01
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname ansible02
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname ansible03
[root@localhost ~]#bash


3.3 给每台机器添加域名
echo "192.168.10.100 ansible01" >> /etc/hosts
echo "192.168.10.101 ansible02" >> /etc/hosts
echo "192.168.10.102 ansible03" >> /etc/hosts
cat /etc/hosts



3.4 Ansible控制端安装epel源
[root@localhost ~]#yum install epel-release.noarch -y

3.5 Ansible控制端安装Ansible
[root@ansible01 ~]#yum -y install ansible


3.6 Ansible控制端安装tree
yum -y install tree

3.7 查看ansible目录结构
ls /etc/ansible/
或是
tree /etc/ansible/

3.8 配置Ansible主机清单
[root@ansible01 ~]#cd /etc/ansible/
[root@ansible01 ansible]#ls
ansible.cfg hosts roles
[root@ansible01 ansible]#cp hosts{,.bak} ##做备份
[root@ansible01 ansible]#ls
ansible.cfg hosts hosts.bak roles
[root@ansible01 ansible]#vim hosts ##修改配置文件


3.9 设置免密登录
[root@ansible01 ansible]#ssh-keygen -t rsa

##第一次设置免密的时候是失败的
[root@ansible01 ansible]#sshpass -p '123' ssh-copy-id root@192.168.10.101[root@ansible01 ansible]#ssh root@192.168.10.101##此次设置免密成功
[root@ansible01 ansible]#sshpass -p '123' ssh-copy-id root@192.168.10.101

##第一次设置免密的时候是失败的
[root@ansible01 ansible]#sshpass -p '123' ssh-copy-id root@192.168.10.102[root@ansible01 ansible]#ssh root@192.168.10.102##此次设置免密成功
[root@ansible01 ansible]#sshpass -p '123' ssh-copy-id root@192.168.10.102

四、Ansible相关工具
- /usr/bin/ansible 主程序,临时命令执行工具
- /usr/bin/ansible-doc 查看配置文档,模块功能查看工具,相当于man ansible-doc -l |grep 关键字 具体模块名字
- /usr/bin/ansible-playbook 定制自动化任务,编排剧本工具,相当于脚本
- /usr/bin/ansible-pull 远程执行命令的工具
- /usr/bin/ansible-vault 文件加密工具
- /usr/bin/ansible-console 基于Console界面与用户交互的执行工具
- /usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
4.1 ansible
格式:
ansible <host-pattern> [-m module_name] [-a args]
命令 主机或者清单中的组 -m 指定模块 -a 执行的任务
选项:
--version #显示版本
-m module #指定模块,默认为command
-v #详细过程 -vv -vvv更详细
--list-hosts #显示主机列表,可简写 --list
-C, --check #检查,并不执行 (检查的是脚本,不是配置文件)
-T, --timeout=TIMEOUT #执行命令的超时时间,默认10s
-k, --ask-pass #提示输入ssh连接密码,默认Key验证
-u, --user=REMOTE_USER #执行远程执行的用户,默认root
-b, --become #代替旧版的sudo 切换
--become-user=USERNAME #指定sudo的runas用户,默认为root vim /etc/sudoers 用户权限
-K, --ask-become-pass #提示输入sudo时的口令
-f FORKS, --forks FORKS #指定并发同时执行ansible任务的主机数
-v #详细过程 -vv -vvv更详细
[root@ansible01 ansible]#ansible nginx -a "touch /opt/kgc" -vv

去被管理的那两主机查看

--list-hosts #显示主机列表,可简写 --list
[root@ansible01 ansible]#ansible nginx --list[root@ansible01 ansible]#ansible tomcat --list[root@ansible01 ansible]#ansible all --list

[root@ansible01 ansible]#ansible 'nginx:tomcat' --list-hosts[root@ansible01 ansible]#ansible 'nginx:&tomcat' --list-hosts[root@ansible01 ansible]#ansible 'nginx:!tomcat' --list-hosts

4.2 ansible-doc
格式:
ansible-doc 模块 #可以看模块的详细信息
[root@ansible01 ansible]#ansible-doc

ansible-doc -l #列出所有已安装的模块,按q退出

[root@ansible01 ansible]#ansible-doc -l | wc -l
3387
[root@ansible01 ansible]#ansible-doc -s ping ##显示模块的简单信息[root@ansible01 ansible]#ansible-doc ping ##该模块的详细信息

[root@zzzcentos1 ~]#ansible-doc file
#幂等性,安全性,自己写脚本 按q退出

4.3 ansible-console
#此工具可交互执行命令,支持tab,ansible 2.0+新增
提示符格式
执行用户@当前操作的主机组 (当前组的主机数量)[f:并发数]$常用子命令:
设置并发数: forks n 例如: forks 10
切换组: cd 主机组 例如: cd web
列出当前组主机列表: list
列出所有的内置命令: ?或helproot@all (4)[f:5]$ cd nginx
root@nginx (2)[f:5]$
root@nginx (2)[f:5]$ forks 1
root@nginx (2)[f:1]$ [root@ansible01 ~]#ansible-console
Welcome to the ansible console.
Type help or ? to list commands.root@all (4)[f:5]$ ping
#直接使用模块
4.4 playbook
此工具用于执行编写好的 playbook 任务
范例
ansible-playbook hello.yml
cat hello.yml
---
#hello world yml file
- hosts: websrvsremote_user: rootgather_facts: notasks:- name: hello worldcommand: /usr/bin/wall hello world
五、Ansible 模块
常用模块帮助文档参考:
https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.htmlhttps://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html
https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
用法:
ansible <host-pattern> [-m module_name] [-a args]
命令 主机或者清单中的组 -m 指定模块 -a 执行的任务
5.1 Command 模块
在远程主机执行命令,不支持管道,重定向等shell的特性。
ansible-doc -s command #-s 列出指定模块的描述信息和操作动作
command模块是ansible的默认模块
vim /etc/ansible/ansible.cfg
功能:在远程主机执行命令,此为默认模块,可忽略 -m 选项
注意:此命令不支持 $VARNAME < > | ; & 等,可能用shell模块实现
< >(重定向) |(管道符) ;(并行执行) & (后台执行)
注意:此模块不具有幂等性
[root@ansible01 ansible]#ansible nginx -m command -a "cp /etc/passwd /opt/"

验证:

注意:此命令不支持 $VARNAME < > | ; & 等,可能用shell模块实现
[root@ansible01 ansible]#ansible nginx -a "echo hello > /opt/haha"[root@ansible01 ansible]#ansible nginx -m shell -a "echo hello > /opt/haha"


5.2 shell 模块
功能:和command相似,用shell执行命令,支持各种符号,比如:*,$, >
shell 可以用特殊符号,可以用的命令更多
注意:此模块不具有幂等性
在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)
ansible-doc -s shell

chdir:在远程主机上运行命令的前提进入目录
creates: 判断指定文件是否存在 如果存在 不执行后面的操作
removes: 判断指定文件知否存在 如果存在 执行后面的操作
[root@ansible01 ansible]#ansible nginx -m shell -a "echo hahahaha > /opt/test1"

验证:

[root@ansible01 ansible]#ansible web -m shell -a "ifconfig ens33|awk 'NR==2{print}'"
提取出ip地址行

5.3 cron 模块
在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。
ansible-doc -s cron #按 q 退出
5.3.1 制作计划任务
##制作计划任务
[root@ansible01 ansible]#ansible nginx -m cron -a 'minute="*/5" job="/bin/echo this is kysw" name="kysw crontab"'[root@ansible01 ansible]#ansible nginx -a 'crontab -l'

验证:
[root@ansible02 ~]#crontab -l

5.3.2 移除计划任务
[root@ansible01 ansible]#ansible nginx -m cron -a 'name="kysw crontab" state=absent'[root@ansible01 ansible]#ansible nginx -a 'crontab -l'

5.4 user 模块
用户管理的模块
ansible-doc -s user
5.4.1 创建用户
[root@ansible01 ansible]#ansible nginx -m user -a 'name="lisan"'[root@ansible01 ansible]#ansible nginx -m user -a 'name="lisi"'


5.4.2 查看创建的用户
[root@ansible01 ansible]#ansible nginx -a 'tail /etc/passwd'[root@ansible02 ~]#tail -n3 /etc/passwd



5.4.3 删除创建的用户
[root@ansible01 ansible]#ansible nginx -m user -a 'name="lisan" state=absent'


[root@ansible01 ansible]#ansible nginx -m user -a 'name="lisi" state=absent remove=yes'

[root@ansible02 ~]#tail -n3 /etc/passwd[root@ansible02 ~]#ls /home/

5.5 group 模块
用户组管理的模块
ansible-doc -s group

5.5.1 创建myzh组
[root@ansible01 ansible]#ansible nginx -m group -a 'name=myzh gid=305 system=yes'

5.5.2 查看组
[root@ansible02 ~]#tail -n5 /etc/group

5.5.3 将用户添加到组中
[root@ansible01 ansible]#ansible nginx -m user -a 'name="wangwu" uid=305 system=yes group=myzh'

5.5.4 查看用户是否加入到组中
[root@ansible02 ~]#id wangwu

5.6 copy 模块
用于复制指定主机文件到远程主机的
ansible-doc -s copy

复制到指定的路径下,并添加权限

验证:


验证:

5.7 file模块
设置文件属性
ansible-doc -s file

5.7.1 创建文件
[root@ansible01 ansible]#ansible nginx -m file -a "path=/opt/ceshi.txt state=touch"


5.7.2 删除文件
[root@ansible01 ansible]#ansible nginx -m file -a "path=/opt/ceshi.txt state=absent"


5.7.3 创建软链接
[root@ansible01 ansible]#ansible nginx -m file -a "path=/opt/fstab.link src=/opt/fstab.bak state=link"


5.8 hostname模块
用于管理远程主机上的主机名
ansible-doc -s hostname

[root@ansible01 ansible]#ansible tomcat -m hostname -a 'name=kysw'




5.9 ping 模块
检测远程主机的连通性
ansible-doc -s ping

[root@ansible01 ansible]#ansible nginx -m ping[root@ansible01 ansible]#ansible tomcat -m ping[root@ansible01 ansible]#ansible all -m ping

[root@ansible01 ansible]#ansible 192.168.10.101 -m ping[root@ansible01 ansible]#ansible 192.168.10.102 -m ping[root@ansible01 ansible]#ansible 192.168.10.103 -m ping

5.10 yum 模块
在远程主机上安装与卸载软件包
ansible-doc -s yum

5.10.1 安装tree
[root@ansible01 ansible]#ansible tomcat -m yum -a 'name=tree'

验证:

5.10.2 卸载tree
[root@ansible01 ansible]#ansible tomcat -m yum -a 'name=tree state=absent'

验证:

5.11 service/systemd 模块
用于管理远程主机上的管理服务的运行状态
ansible-doc -s service

5.11.1 安装httpd服务
[root@ansible01 ansible]#ansible tomcat -m yum -a 'name=httpd'

5.11.2开启httpd服务
[root@ansible01 ansible]#ansible tomcat -m service -a 'name=httpd enabled=true state=started'

验证:

5.11.3用Ansible查看服务状态
[root@ansible01 ansible]#ansible tomcat -a 'systemctl status httpd'

5.12 script 模块
实现远程批量运行本地的 shell 脚本
ansible-doc -s script

5.12.1 创建一个本地的shell脚本
[root@ansible01 ansible]#cd /opt/
[root@ansible01 opt]#ls
rh
[root@ansible01 opt]#vim test.sh#!/bin/bash
echo "hello ansible from script" > /opt/script.txt[root@ansible01 opt]#ls[root@ansible01 opt]#chmod +x test.sh


5.12.2 给脚本添加执行权限

5.12.3 远程批量运行本地脚本
[root@ansible01 opt]#ansible tomcat -m script -a 'test.sh'

验证:

5.12.4 远程查看脚本运行后的文档
[root@ansible01 opt]#ansible tomcat -a ' cat /opt/script.txt'

5.13 setup 模块
facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息
ansible-doc -s setup

5.13.1 获取mysql组主机的facts信息
[root@ansible01 opt]#ansible tomcat -m setup

5.13.2 使用filter可以筛选指定的facts信息
[root@ansible01 opt]#ansible nginx -m setup -a 'filter=ipv4'[root@ansible01 opt]#ansible nginx -m setup -a 'filter=*ipv4'


正在加载...
总结:
1、ansible模块
1.1 ansible命令格式
## ansible命令格式
ansible <组名> -m <模块> -a <参数列表>
ansible-doc -l 列出所有已安装的模块 按q退出
ansible-doc -s 模块名 指导模块使用方法
1.2 ansible操作模式
command ## 在远程主机执行命令,不支持管道,重定向等shell的特性。
##常用的参数
chdir: 在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作shell ## 在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)
cron ## 在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。
user ## 用户管理的模块
group ## 用户组管理的模块
copy ## 用于复制指定主机文件到远程主机的
file ## 设置文件属性
hostname ## 用于管理远程主机上的主机名
ping ## 检测远程主机的连通性
yum ## 在远程主机上安装与卸载软件包
systemd/service ## 用于管理远程主机上的管理服务的运行状态
script ## 实现远程批量运行本地的 shell 脚本
setup ## facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息相关文章:
Ansible---自动化运维工具
一、Ansible概述 1.1 Ansible简介 Ansible是一款自动化运维工具,通过ssh对目标主机进行配置、应用部署、任务执行、编排调度等操作。它简化了复杂的环境管理和自动化任务,提高了工作效率和一致性,同时,Ansible的剧本(playbooks)…...
5.Git
Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html文件等)。通过Git仓库来存储和管理这些文件,Git仓库分为两种 本地仓库:开发人员自己电脑上的Git仓库远程仓库:远程…...
探索中位数快速排序算法:高效寻找数据集的中间值
在计算机科学领域,寻找数据集的中位数是一个常见而重要的问题。而快速排序算法作为一种高效的排序算法,可以被巧妙地利用来解决中位数查找的问题。本文将深入探讨中位数快速排序算法的原理、实现方法以及应用场景,带你领略这一寻找中间值的高…...
密码学《图解密码技术》 记录学习 第十五章
目录 十五章 15.1本章学习的内容 15.2 密码技术小结 15.2.1 密码学家的工具箱 15.2.2 密码与认证 15.2.3 密码技术的框架化 15.2.4 密码技术与压缩技术 15.3 虚拟货币——比特币 15.3.1 什么是比特币 15.3.2 P2P 网络 15.3.3地址 15.3.4 钱包 15.3.5 区块链 15.3.…...
如何在 Ubuntu 16.04 上为 Nginx 创建自签名 SSL 证书
简介 TLS,即传输层安全协议,及其前身SSL,即安全套接字层,是用于将普通流量包装在受保护的加密包装中的网络协议。 使用这项技术,服务器可以在服务器和客户端之间安全地发送流量,而不会被外部方拦截。证书…...
5.协议的编解码
本章内容其实没有多大难度,主要考察大家的细心程度.计算数据长度然后截取相应字节数组并按照协议进行解码,编码则反之。 1.基础消息的编解码 Override public BasicMessage decode(byte[] bytes) {int dataLength ByteUtil.bytesToInt(ByteUtil.extra…...
数据结构基础| 线性表
线性表 定义 没有元素则为空表 例子: 稀疏多项式的运算 图书信息管理系统 特点 线性结构 同类型 线性表的类型定义 1.基本操作: InitList(&L) 操作结果:构造空的线性表L DestroyList(&L) 初始化条件:线性表L存在 操作结果:销毁线性表L(线性表L不存在) Cle…...
嵌入式学习
笔记 作业 有如下结构体 struct Student{ char name[16]; int age; double math_score; double chinese_score; double english_score; double physics_score; double chemistry…...
sass-loader和node-sass与node版本的依赖问题
sass-loader和node-sass与node版本的依赖问题 没有人会陪你走到最后,碰到了便是有缘,即使到了要下车的时候,也要心存感激地告别,在心里留下空白的一隅之地,多年后想起时依然心存甘味。——林清玄 报错截图 报错信息 np…...
基于BP神经网络的QPSK解调算法matlab性能仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................................................ for ij 1:leng…...
Linux服务器常用巡检命令
在Linux服务器上进行常规巡检是确保服务器稳定性和安全性的重要措施之一。以下是一些常用的巡检命令和技巧: 1. 查看系统信息 1.1 系统信息显示 命令:uname -a [rootlinux100 ~]# uname -a Linux linux100 4.15.0-70-generic #79-Ubuntu SMP…...
VSCode 配置 CMake
VSCode 配置 C/C 环境的详细过程可参考:VSCode 配置 C/C 环境 1 配置C/C编译环境 如果是 Windows 环境,需要安装 MingW。 方案一 可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows she…...
《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制德国每日风能和太阳能产量3D线图
在MATLAB中,要绘制3D线图,可以使用 plot3 函数。 在《MATLAB科研绘图与学术图表绘制从入门到精通》书中通过绘制德国每日风能和太阳能产量3D线图解释了如何在MATLAB中绘制3D线图。 购书地址:https://item.jd.com/14102657.html...
【信息系统项目管理师知识点速记】质量管理:控制质量
控制质量是为了评估绩效,确保项目输出完整、正确且满足客户期望,而监督和记录质量管理活动执行结果的过程。控制质量过程需要在整个项目期间开展,其目的是测量产品或服务的完整性、合规性和适用性,以确保项目达到主要干系人的质量要求。 12.5.1 输入 项目管理计划 质量管理…...
【云原生】Pod 的生命周期(一)
【云原生】Pod 的生命周期(一)【云原生】Pod 的生命周期(二) Pod 的生命周期(一) 1.Pod 生命期2.Pod 阶段3.容器状态3.1 Waiting (等待)3.2 Running(运行中)3…...
Golang | Leetcode Golang题解之第71题简化路径
题目: 题解: func simplifyPath(path string) string {stack : []string{}for _, name : range strings.Split(path, "/") {if name ".." {if len(stack) > 0 {stack stack[:len(stack)-1]}} else if name ! "" &am…...
Unreal游戏GPU性能优化检测模式全新上线
UWA已经在去年推出了针对于Unity项目的GPU性能优化工具,通过对GPU渲染性能、带宽性能以及各种下探指标,帮助Unity项目研发团队定位由GPU导致的发热耗电问题。这个需求在Unreal团队中也极为强烈,因此UWA将该功能移植到针对Unreal项目的GOT Onl…...
设计网页用什么软件
在设计网页时,可以使用多种软件来完成不同的任务。以下是一些常用的网页设计软件,以及它们的特点和用途。 1. Adobe Photoshop: Adobe Photoshop 是一款功能强大的图像编辑软件。在网页设计中,它常用于创建和编辑网页所需的图像、…...
⑪ - 测试工程师通识指南
📖 该文隶属 程序员:职场关键角色通识宝典✍️ 作者:哈哥撩编程(视频号同名) 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者🏆 推荐专栏: 🏅 程序员:职场关键角色通识宝典🏅...
RabbitMQ知识点总结和复习
之前项目中用到RabbitMQ的场景主要是订单信息的传递,还有就是利用RabbitMQ的死信队列属性设置,实现延迟队列效果,实现超时支付取消功能,以及在两个不同项目中传递数据等场景。 最近几年的工作中都是一直用的RabbitMQ,…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

