Ansible 实战:Roles,运维的 “魔法函数”
一、介绍
你现在已经学过tasks和handlers,那么,最好的playbook组织方式是什么呢?答案很简单:使用roles!roles基于一种已知的文件结构,能够自动加载特定的vars_files、tasks以及handlers。通过roles对内容进行分组,我们可以轻松地与其他用户共享roles。
二、作用解释
我可以预先构建出nginx、apache、mysql、redis等一系列的角色,当我要构建一个LNMP时,我可以去调用nginx和mysql角色,当我要构建一个LAMP时,我可以去调用apache和mysql角色,又或者说我要构建一个redis的哨兵集群或者分配集群,我可以去调用redis角色。角色就好比计算机语言里面的函数,当我需要的时候不需要再去重复的去构建,而是直接拿过来使用,这样简洁方便还不浪费时间。
三、使用方法
1.存放角色的位置
/etc/ansible/roles
2.角色目录子目录构成与功能
- files: 存放模块调用的文件(如:copy 和 script的文件,nginx/apache的html网页)。
- templates:存放模板文件(比如nginx/apache的配置文件)。
- tasks:任务存放的目录,至少包含一个main.yml的文件,该目录下也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来(类似 puppet)。
- handlers:存放相关触发执行器的目录,至少应该包含一个main.yml的文件,文件中定义了触发器的任务清单,该目录下也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来 。
- vars: 变量存放的目录,至少应该包含一个main.yml的文件,文件中定义了相关的变量及其值,该目录下也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来 。
- defaults: 默认变量存放的目录,至少应该包含一个main.yml的文件,文件中定义了此角色使用的默认变量,该目录下也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来 。
- meta: 用于存放此角色元数据,至少应该包含一个main.yml的文件,文件中定义当前角色的特殊设定及其依赖关系, 该目录下也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来 。
(default和meta我们用到的很少,用的最多的就是files、templates、tasks、handlers、vars)
3.如何调用定义的角色?
(比如定义了一个apache的角色,下面是调用的方法)
- hosts: webserver
remote_user: root
roles:
- apache
四、创建一个roles
我们这里做一个nginx的角色,内容是nginx的源码包安装,只不过这一次不是打包到本机,编译好后再拷贝到被管控端,这一次是在被管控端直接下载nginx源码包然后编译安装。
1.创建角色的目录结构
[root@ansible ~]# mkdir -pv /etc/ansible/roles/nginx/{file,templates,tasks,handlers,vars,default,
meta} #创建一个nginx角色
(先写tasks,如果我们在写任务的时候需要用到文件了,就去file目录下准备文件,需要用到变量了,就去vars下准备变量)
2.定义任务
[root@ansible tasks]# cd /etc/ansible/roles/nginx/
[root@ansible nginx]# vim tasks/main.yaml
- name: remove yum sourceshell: rm -rf /etc/yum.repos.d/*
- name: update yum removeshell: curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- name: get wget infoshell: rpm -qa | grep wget | awk -F'-' '{print $1}'register: wgetinfo
- name: install wgetyum: name=wget state=presentwhen: wgetinfo != "wget"
- name: get nginx packageshell: wget https://nginx.org/download/nginx-1.27.4.tar.gz -P /tmp
- name: install dep nginxyum:name:- "gcc"- "gcc-c++"- "pcre-devel"- "zlib-devel"state: present
- name: unzip nginxshell: tar -xvf /tmp/nginx-1.27.4.tar.gz -C /usr/local/src
- name: get nginx infoshell: ls -d /usr/local/nginxregister: nginx_infoignore_errors: yes
- name: install nginxshell: cd /usr/local/src/nginx-1.27.4&&./configure --user=nginx --prefix=/usr/local/nginx&&make&&make installwhen: nginx_info.rc == 2
- name: remove yum source #移除被管控端的源
shell: rm -rf /etc/yum.repos.d/*
- name: update yum source #更新被管控端的源
shell: curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #因为不确定有没有wget工具,所以统一使用curl
- name: get wget info #获取wget的信息判断是否安装了wget
shell: rpm -qa | grep wget | awk -F'-' '{print $1}'
register: wgetinfo
- name: install wget #wget安装:根据获取的wget信息判断是否安装
yum: name=wget state=present
when: wgetinfo != "wget"
- name: get nginx package #在nginx官网获取nginx源码包
shell: wget https://nginx.org/download/nginx-1.27.4.tar.gz -P /tmp
- name: install dep nginx #安装nginx的依赖
yum:
name:
- "gcc"
- "gcc-c++"
- "pcre-devel"
- "zlib-devel"
state: present
- name: unzip nginx #解压nginx源码包到/usr/local/src目录下
shell: tar -xvf /tmp/nginx-1.27.4.tar.gz -C /usr/local/src
- name: get nginx info #获取nginx信息判断被管控端是否安装了nginx
shell: ls -d /usr/local/nginx
register: nginx_info
ignore_errors: yes #跳过错误,继续执行任务
- name: install nginx #编译安装nginx:根据获取的nginx信息判断是否安装
shell: cd /usr/local/src/nginx-1.27.4&&./configure --user=nginx --prefix=/usr/local/nginx&&make&&make install
when: nginx_info.rc == 2
3.测试
[root@ansible nginx]# vim /playbook/roles_test.yaml #调用nginx角色
- hosts: webserversremote_user: rootroles:- nginx
[root@ansible tasks]# ansible-playbook /playbook/roles_test.yaml
(测试成功!)
五、files目录的使用
1.修改角色使用files
[root@ansible nginx]# vim files/test.html #在file文件创建网页测试文件
<h1>Ansibel Nginx test</h1>
(files目录下的文件可以直接src = test.html使用,集中管理这些文件)
[root@ansible nginx]# vim tasks/main.yaml
- name: copy test pagecopy: src = test.html dest=/usr/local/nginx/html
(在之前写的角色最后加上这几行)
2.测试
[root@ansible nginx]# ansible-playbook /playbook/roles_test.yaml
(访问成功!)
六、handlers目录的使用
1.修改角色使用handler
当nginx的配置文件发生改动时重启nginx服务
[root@ansible nginx]# cp /usr/local/nginx/conf/nginx.conf /etc/ansible/roles/nginx/files/
(其实是应该放到templates目录下的,这里放到files目录下是为了做展示,后面会介绍templates目录的相关使用)
#准备一份配置文件
[root@ansible nginx]# vim tasks/main.yaml #修改角色
- name: copy configcopy: src=nginx.conf dest=/usr/local/nginx/confnotify:- restart nginx
(在之前写的角色最后加上这几行)
[root@ansible nginx]# vim handlers/main.yaml #编写handlers
- name: restart nginxshell: /usr/local/nginx/sbin/nginx -s reload
2.测试
[root@client-1 ~]# /usr/local/nginx/sbin/nginx #启动被管控端的nginx服务
[root@client-2 ~]# /usr/local/nginx/sbin/nginx
[root@client-3 ~]# /usr/local/nginx/sbin/nginx
配置文件没有发生改变
[root@ansible nginx]# ansible-playbook /playbook/roles_test.yaml
(服务没有被重启)
当配置文件发生了改变
[root@ansible nginx]# vim file/nginx.conf #修改端口为8080
listen 8080;
[root@ansible nginx]# ansible-playbook /playbook/roles_test.yaml
(服务被重启)
七、templates目录的使用
1.解释
nginx的配置文件里面有这样的一条参数用于设置nginx服务器工作进程的数量,这是需要根据服务器的硬件配置(如 CPU 核心数、内存大小)来配置的,假如我有的nginx服务器有2个CPU核心,有的服务器有4个CPU核心,而我files目录下的nginx配置文件设置worker_processes为4,那对于只有两个CPU核心的服务器来说就不支持了,这时候templates目录的作用就体现出来了,将nginx的配置文件放到templates目录下面,templates可以根据ansible webserver -m setup查到的变量来设置参数,拿上面的例子来说吧,查到被控端主机有2个cup核心,templates就可以把worker_processes设置成2,查到4个就可以设置成4,所以templates目录的功能还是很重要的。
2.修改角色使用templates
[root@ansible nginx]# mv files/nginx.conf templates/nginx.conf.j2
[root@ansible nginx]# vim templates/nginx.conf.j2
worker_processes {{ ansible_processor_vcpus }};
[root@ansible nginx]# vim tasks/main.yaml
- name: copy configtemplate: src=nginx.conf.j2 dest=/usr/local/nginx/conf/nginx.confnotify:- restart nginx
3.测试
[root@client-1 ~]# lscpu | grep CPU\(s\):
(每台主机的CPU核心数量为4)
[root@client-1 ~]# cat /usr/local/nginx/conf/nginx.conf | grep worker_processes
(没有修改之前 )
[root@ansible nginx]# ansible-playbook /playbook/roles_test.yaml
(执行剧本)
[root@client-1 ~]# cat /usr/local/nginx/conf/nginx.conf | grep worker_processes
(修改后,核心的数量发生改变且等于当前的CPU核心数量)
ansible自动化运维工具的介绍-CSDN博客
深度剖析 ansible:从部署基础到模块运用及剧本编写-CSDN博客
Ansible Playbook 进阶探秘:Handlers、变量、循环及条件判断全解析-CSDN博客
相关文章:
Ansible 实战:Roles,运维的 “魔法函数”
一、介绍 你现在已经学过tasks和handlers,那么,最好的playbook组织方式是什么呢?答案很简单:使用roles!roles基于一种已知的文件结构,能够自动加载特定的vars_files、tasks以及handlers。通过roles对内容进…...
GO简单开发grpc
什么是grpc 首先我们需要了解,什么是grpc gRPC(全称:google remote procedure call)是由Google开发的一个高性能、开源的远程过程调用(RPC)框架。它基于 HTTP/2 协议,并且使用 Protocol Buffer…...
强引用,弱引用,软引用,虚引用,自旋锁,读写锁
强引用:强引用GC不会回收 软引用:内存够的话不回收,内存不够的话回收 弱引用:不管内存够不够,只要有GC就回收 虚引用:点get是null,但是GC后他会把引用放到引用队列里边 自旋锁:是指尝…...
C++异常处理 throw try catch
C 异常处理概述 C 异常处理机制提供了一种在程序运行时捕获错误或异常情况的方式。异常处理的目的是使得程序在遇到错误时能够优雅地终止或恢复,并防止程序出现崩溃。C 使用 try, throw, 和 catch 关键字来实现异常处理。 异常处理的基本结构: throw: …...
优化 Web 性能:管理第三方资源(Third-Party Summary)
在现代 Web 开发中,第三方资源(如分析工具、广告脚本、字体服务)为网站提供了丰富的功能,但也可能成为性能瓶颈。Google 的 Lighthouse 工具在性能审计中提供了“第三方资源概要”(Third-Party Summary)&am…...
第六章、 系统级 I/O
真题考点 考点一:Unix I/O 所有的 I/O 设备(例如网络、磁盘和终端)都被模型化为文件,而所有的输入和输出都被当作对相应文件的读和写来执行。这种将设备优雅地映射为文件的方式,允许 Linux 内核引出一个简单、低级的应用接口,称为…...
Jetpack Compose 自定义标题栏终极指南:从基础到高级实战
Jetpack Compose 自定义标题栏终极指南:从基础到高级实战 本文将带你彻底掌握 Compose 标题栏开发,涵盖 5 种专业级实现方案 性能优化技巧 完整可运行代码。 📚 核心方案对比 方案特点适用场景复杂度基础Row布局完全自定义,灵…...
晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包
晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包 线刷方法:(新手参考借鉴一下) 刷机工具版本请用2.2.0以上,导入固件后,刷机工具右侧两个擦除打勾,然后点开始。插上刷机神器…...
tkiner模块的初步学习
文章目录 一、前言二、概念2.1 安装2.2 窗口 三、小部件3.1 概述3.2 常用小部件3.2.1 Label3.2.2 Button3.2.3 Entry3.2.4 Text3.2.5 Listbox3.2.6 Checkbutton3.2.7 Radiobutton3.2.8 Scrollbar 3.3 更多小部件3.3.1 Scale3.3.2 Spinbox3.3.3. Progressbar 3.4 主题小部件 四、…...
Java常用数据结构操作方法全面总结
目录 一、List接口及其实现类二、Set接口及其实现类三、Map接口及其实现类四、Queue/Deque队列五、Stack栈六、树形结构七、注意事项与最佳实践总结 一、List接口及其实现类 核心实现类 ArrayList:基于动态数组LinkedList:基于双向链表 常用操作方法…...
Java的Selenium的特殊元素操作与定位之select下拉框
如果页面元素是一个下拉框,我们可以将此web元素封装为Select对象 Select selectnew Select(WebElement element); Select对象常用api select.getOptions();//获取所有选项select.selectBylndex(index);//根据索引选中对应的元素select.selectByValue(value);//选…...
STM32单片机入门学习——第15节: [6-3] TIM输出比较
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.05 STM32开发板学习——第15节: [6-3] TIM输出比较 前言开发板说明引用解答和科普一…...
力扣经典算法篇-9-跳跃游戏(贪心算法,反向递推)
题干: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 …...
java面向对象 - 封装、继承和多态
1.封装 定义 封装是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。通过访问控制修饰符(如private、protected、public)对属性和方法的访问进行限制,以此提升代码的安全性与可维护性。 要点 访问控制:运用private修饰属性,防止外部直…...
铁电液晶(FLC)与反铁电液晶(AFLC)
### **铁电液晶(FLC)与反铁电液晶(AFLC)的原理、区别及应用** --- ## **1. 基本原理** ### **(1)铁电液晶(Ferroelectric Liquid Crystal, FLC)** - **分子结构**: …...
经典算法 a^b
原题目链接 问题描述 求 a 的 b 次方对 p 取模的值,即计算: a^b mod p输入格式 输入一行,包含三个整数 a、b 和 p,中间用空格隔开。 输出格式 输出一个整数,表示 a^b mod p 的值。 数据范围 0 ≤ a, b ≤ 10^91 …...
Python解决“组成字符串ku的最大次数”问题
Python解决“组成字符串ku的最大次数”问题 问题描述测试样例解题思路代码 问题描述 给定一个字符串 s,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 “ku”。每次可以随机从字符串中选一个字符,并且选中的字符不能再使…...
ubuntu22使用TrinityCore搭建魔兽世界服务器
目录 一、Ubuntu22工具下载二、服务端编译配置1. 从 git 上拉取服务端代码2. 编译客户端3. 修改配置文件4. 加载sql语句5. 下载客户端6. 下载必要sql文件 三、客户端连接配置四、游戏启动 一、Ubuntu22工具下载 下载所有需要的工具 sudo apt-get update sudo apt-get install…...
LeetCode - 739.每日温度问题单调栈解法
目录 问题描述 方法思路:单调栈 核心思想 为什么用单调栈? 算法步骤 代码实现与逐行解析 示例解析 复杂度分析 总结 问题描述 给定一个整数数组 temperatures,表示每天的温度,返回一个数组 answer,其中 answe…...
GESP:2025-3月等级8-T1-上学
时间限制 : 1 秒 内存限制 : 128 MB C 城可以视为由 n个结点与 m条边组成的无向图。这些结点依次以1,2,....n标号,边依次以 1,2...m标号。第i条边(1<i<m )连接编号为ui 与vi的结点,长度为li米。 小 A 的学校坐落在 C 城中…...
宏碁笔记本电脑擎7PRO搭载的 NVIDIA RTX 5080 显卡安装pytorch
宏碁笔记本电脑擎7PRO搭载的 NVIDIA RTX 5080 显卡是一款高性能移动 GPU,基于 NVIDIA 最新的 Blackwell 架构设计,通过修正架构(Blackwell)、显存类型与带宽(GDDR7、960GB/s)、Tensor Core 与 RT Core 全面…...
Qwen-7B-Chat 本地化部署使用
通义千问 简介 通义千问是阿里云推出的超大规模语言模型,以下是其优缺点: 优点 强大的基础能力:具备语义理解与抽取、闲聊、上下文对话、生成与创作、知识与百科、代码、逻辑与推理、计算、角色扮演等多种能力。可以续写小说、编写邮件、解…...
数据结构,顺序存储线性表
//线性表顺序存储 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 #define ElemType int //定义结构体 typedef struct LinearList{ElemType elem[MAXSIZE];int last; }LinearList; //初始化链表 void InitList(LinearList &L){L.last-1; };…...
Matlab轴承故障信号仿真与故障分析
1.摘要 本文介绍了一个基于Matlab的轴承故障信号仿真与分析程序,旨在模拟和分析轴承内圈故障信号的特征。程序首先通过生成故障信号、共振信号和调制信号,添加噪声和离散化处理,构建模拟的振动信号,并保存相关数据。通过快速傅里…...
Git三剑客:工作区、暂存区、版本库深度解析
一、引言:为什么需要理解Git的核心区域? 作为开发者,Git是日常必备的版本控制工具。但你是否曾因以下问题感到困惑? 修改了文件,但 git status 显示一片混乱? git add 和 git commit 到底做了什么&#x…...
stack和queue
1.stack的使用 函数说明接口说明 stack() 构造空的栈 empty 检测stack是否为空 size 返回stack中元素的个数 top 返回栈顶元素的引用 push 将元素val压入stack中 pop 将stack中尾部的元素弹出 void test_stack() {stack<int> st;st.push(1);st.push(2);st.push(3);s…...
【补题】Codeforces Round 1011 (Div. 2) C. Serval and The Formula
题意:给两个数,问你存不存在k使nmn异或m 思路: 为了让nmn异或m成功,很明显有两个数在同一位上最多只能有1个1。因为如果有两个就会导致数字变小,很明显nm是不可能成功的,因为你怎么搞都会有至少一个一模一…...
基于javaweb的SpringBoot汉服文化bbs系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
Vision_Robot
import time import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk import socket import threading from datetime import datetime import logging import subprocess # 确保导入 subprocess 库 import os import pyautogu…...
爬虫练习案例
案例1: 爬取菜鸟教程左侧导航栏的分类内容: 在pycharm中书写代码。 先倒入相关模块。 import requests from bs4 import BeautifulSoup import lxml.etree as le这个案例写两种写法。 第一种: urlhttps://www.runoob.com/html/html-tuto…...
大数据时代的隐私保护:区块链技术的创新应用
一、引言 在当今数字化时代,大数据已经成为推动社会发展的关键力量。从商业决策到社会治理,从医疗健康到金融服务,数据的价值日益凸显。然而,随着数据的大量收集和广泛使用,隐私保护问题也日益突出。如何在充分利用大…...
力扣刷题-热题100题-第31题(c++、python)
25. K 个一组翻转链表 - 力扣(LeetCode)https://leetcode.cn/problems/reverse-nodes-in-k-group/?envTypestudy-plan-v2&envIdtop-100-liked 常规模拟 根据翻转的长度找到头和尾,进入函数进行翻转 主程序里有循环不断找到头和尾并拼…...
(四)数据检索与增强生成——让对话系统更智能、更高效
上一篇:(三)链式工作流构建——打造智能对话的强大引擎 在前三个阶段,我们已经搭建了一个基础的智能对话,并深入探讨了输入输出处理和链式工作流构建的细节。今天,我们将进入智能对话系统的高级阶段——数…...
Turtle图形化编程知识点汇总:让编程更有趣
友情提示:本文内容由银河易创AI(https://ai.eaigx.com)创作平台gpt-4-turbo模型生成,仅供参考! 在学习编程的过程中,许多初学者会接触到Python的turtle图形库,它是一种图形化编程工具,通过简单的…...
Social GAN(CVPR2018)
文章目录 AbstractIntroductionRelated WorkHuman-Human InteractionRNNs for Sequence PredictionGenerative Modeling MethodProblem DefinitionGenerative Adversarial NetworksSocially-Aware GANPooling ModuleEncouraging Diverse Sample Generation Conclusion paper Ab…...
0201线性回归-机器学习-人工智能
文章目录 1 程序目标2 代码实现3 关键步骤解释4 示例输出5 注意事项结语 以下是一个使用 scikit-learn、pandas和 matplotlib 实现线性回归的完整程序示例。程序包含数据加载、模型训练、预测和可视化。 1 程序目标 加载数据(使用 pandas)数据预处理&am…...
2-Visual Studio 2022 NET开发Windows桌面软件并连接SQL Server数据库
引言 今天尝试Visual Studio 2022 NET开发一个NET桌面软件,并尝试连接SQL Server的数据库,此文章为开发笔记。 --------------------------------------------------------------------------------------------------------------------------------- …...
OpenGL学习笔记(简介、三角形、着色器、纹理、坐标系统、摄像机)
目录 简介核心模式与立即渲染模式状态机对象GLFW和GLAD Hello OpenGLTriangle 三角形顶点缓冲对象 VBO顶点数组对象 VAO元素缓冲对象 EBO/ 索引缓冲对象 IEO 着色器GLSL数据类型输入输出Uniform 纹理纹理过滤Mipmap 多级渐远纹理实际使用方式纹理单元 坐标系统裁剪空间 摄像机自…...
第二十九章:Python-mahotas库:图像处理的高效工具
一、mahotas库简介 mahotas是一个功能强大的Python图像处理库,提供了丰富的图像处理算法和工具,包括图像分割、特征提取、滤波、形态学操作等。它以简洁的API和高效的性能著称,特别适合处理大型图像。资源绑定附上完整资料供读者参考学习&…...
【网络安全】 防火墙技术
防火墙是网络安全防御的重要组成部分,它的主要任务是阻止或限制不安全的网络通信。在这篇文章中,我们将详细介绍防火墙的工作原理,类型以及如何配置和使用防火墙。我们将尽可能使用简单的语言和实例,以便于初学者理解。 一、什么…...
关于Linux系统安装和优化的教程
书籍教程 《Linux 就该这么学》:涵盖多种 Linux 发行版的安装知识,从安装前硬件检测(如硬盘容量需至少 10GB、内存至少 2GB )、软件源选择,到安装步骤(如镜像烧录、启动设置、分区操作 )都有详…...
还是主题混合程序设计
以下是针对您现有代码的完整主题化改造方案,实现跨QML/Qt Widgets的阴影主题系统: 一、主题管理系统核心 // thememanager.h #pragma once #include <QObject> #include <QColor> #include <QMap> #include <QQmlEngine>class…...
【FPGA开发】利用状态机思想点亮流水灯/初学hdlbitsFPGA教程网站
一、状态机思想介绍 状态机是一种用于描述系统行为的形式化模型,它将系统抽象为有限的状态,并通过状态转移来响应外部输入或事件。其核心思想是:系统在任何时刻只处于一个确定的状态,且在不同状态之间按规则切换。状态机是处理明…...
洛谷 P3214 [HNOI2011] 卡农
题目传送门 前言 再次败在 d p dp dp 手下,但是数据范围这么小应该是可以看出是 d p dp dp 的(毕竟对于其他组合数的问题数据范围都是 1 0 9 10^9 109 起步)。 思路 题意简化 现有 1 , 2 , 3 , . . . , n − 1 , n 1, 2, 3, ... , n -…...
智能体和RPA都需要程序思维,如何使用影刀的变量?
欢迎来到涛涛聊AI, 不管AI还是RPA,都需要用到编程思想才能完成批量工作。今天研究了下影刀的变量。 变量类型 根据变量值选择相应的类型,可选择任意一种影刀所支持的数据类型 变量值 指定变量中保存的值,会根据不同的类型设置…...
使用OpenFeign实现服务远程调用
在微服务架构中,由于业务功能的分工不同,我们把项目拆分为多个独立的服务,并常常将其部署在不同的服务器上,这个时候如果服务A的某个功能需要借助服务B来实现,那么这个时候如何去调用就成了问题,目前有一种…...
【移动计算】:AndroidStudio安装和项目搭建【2019:版本3.5.2】
文章目录 1. 下载安装包2. 安装包安装2.1 运行完exe进行安装选择Cancel: Unable SdkInstall Type选择Custom可以选择更新最新版本:这里不选择点击Next勾选 Android Sdk Platform API 虚拟设备选项显示已安装否则也需要勾选设置自定义安装地址:…...
泡棉压缩对显示模组漏光的定位分析及论述
■背景 液晶LCD受到外力或者挤压后,比较容易出现漏光现象即显示mura。一般从结构设计的角度会做如下措施进行整改 1>控制背光和上铁框平整度 ; 2>合理设计液晶模组的厚度和边框大小 ; 3>承载液晶面板的泡棉选取 ; 4>FPC单双层区的设计 ; 5>合理…...
当AI助理接管云计算-走向智能运维的新时代
目录 时代背景 AI在云计算运维上的帮助 新时代产物:WatchAlert 新时代思考 时代背景 代理人工智能:自主决策的未来--Gartner2025十大顶级科技预测第一名 Gartner将代理人工智能列为2025年的顶级技术趋势。该技术通过快速分析用于药物发现的海量数据…...
Day2:前端项目uniapp壁纸实战
先来做一个轮番图。 效果如下: common-style.css view,swiper,swiper-item{box-sizing: border-box; } index.vue <template><view class"homeLayout"><view class"banner"><swiper circular indicator-dots autoplay…...