Ansible 的脚本 --- playbooks剧本
playbooks 本身由以下各部分组成
(1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行
(2)Vars:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色
ansible playbook(.yaml 文件) | 192.168.190.80 |
webservers | 192.168.190.60 |
dbservers | 192.168.190.70 |
1、tasks 任务列表
vim test01.yaml
--- #yaml文件以---开头,以表明这是一个yaml文件,可省略
- name: first play #定义一个play的名称,可省略
gather_facts: false #设置不进行facts信息收集,这可以加快执行速度,可省略
hosts: webservers #指定要执行任务的被管理主机组,如多个主机组用冒号分隔
remote_user: root #指定被管理主机上执行任务的用户
tasks: #定义任务列表,任务列表中的各任务按次序逐个在hosts中指定的主机上执行
- name: test connection #自定义任务名称
ping: #使用 module: [options] 格式来定义一个任务
- name: disable selinux
command: '/sbin/setenforce 0' #command模块和shell模块无需使用key=value格式
ignore_errors: True #如执行命令的返回值不为0,就会报错,tasks停止,可使用ignore_errors忽略失败的任务
- name: disable firewalld
service: name=firewalld state=stopped #使用 module: options 格式来定义任务,option使用key=value格式
- name: install httpd
yum: name=httpd state=latest
- name: install configuration file for httpd
copy: src=/opt/httpd.conf dest=/etc/httpd/conf/httpd.conf #将本地的/opt/httpd.conf
复制到远程主机的/etc/httpd/conf/httpd.conf
。这里需要一个事先准备/opt/httpd.conf文件。
notify: "restart httpd" #如以上操作后为changed的状态时,会通过notify指定的名称触发对应名称的handlers操作
- name: start httpd service
service: enabled=true name=httpd state=started
handlers: #handlers中定义的就是任务,此处handlers中的任务使用的是service模块
- name: restart httpd #notify和handlers中任务的名称必须一致
service: name=httpd state=restarted
##Ansible在执行完某个任务之后并不会立即去执行对应的handler,而是在当前play中所有普通任务都执行完后再去执行handler,这样的好处是可以多次触发notify,但最后只执行一次对应的handler,从而避免多次重启。
//运行playbook
ansible-playbook test01.yaml
//补充参数:
-k(–ask-pass):用来交互输入ssh密码
-K(-ask-become-pass):用来交互输入sudo密码
-u:指定用户
ansible-playbook test1.yaml --syntax-check #检查yaml文件的语法是否正确
ansible-playbook test1.yaml --list-task #检查tasks任务
ansible-playbook test1.yaml --list-hosts #检查生效的主机
ansible-playbook test1.yaml --start-at-task='install httpd' #指定从某个task开始运行
2、vars 定义、引用变量
vim test02.yaml
- name: play02 #定义playbook名称为play02
hosts: dbservers #针对dbservers主机组
remote_user: root #连接到主机时,用户名为root
vars: #定义变量groupname、username
- groupname: mysql #变量groupname,赋值为mysql #格式为 键值 key: value
- username: nginx #变量username赋值为nginx
tasks: #任务列表
- name: create group
group: name={{groupname}} system=yes gid=306 ##用group
模块创建一个名为{{groupname}}
(即mysql
)的组,GID 为 306。
- name: create user
user: name={{username}} uid=306 group={{groupname}} #用user
模块创建一个名为{{username}}
(即nginx
)的用户,UID 为 306,并将其添加到之前创建的组。
- name: copy file
copy: content="{{ansible_default_ipv4}}" dest=/opt/vars.txt #用copy
模块将目标主机的默认 IPv4 地址写入/opt/vars.txt
文件------------------------------------------------------------------------------------------------------------------------
ansible-playbook test02.yaml -e "username=nginx" #在命令行里定义变量
3、远程主机 sudo 切换用户
- hosts: dbservers
remote_user: zhangsan
become: yes #2.6版本以后的参数,之前是sudo,意思为切换用户运行
become_user: root #指定sudo用户为root--------------------------------------------------------------------------------------------------------------------------
[root@dbservers ~]# vim /etc/sudoers #切换到目标主机,配置SSH密钥认证
yss ALL=(root) NOPASSWD: ALL #G到行尾,添加
执行playbook时:ansible-playbook test1.yml -K -k
4、when 条件判断
在Ansible中,提供的唯一一个通用的条件判断是when指令,当when指令的值为true时,则该任务执行,否则不执行该任务。
//when一个比较常见的应用场景是实现跳过某个主机不执行任务或者只有满足条件的主机执行任务
vim test2.yaml
---
- hosts: all #这个playbook应该在所有匹配的主机上运行
remote_user: root #指定root
用户来执行任务
tasks: #任务列表
- name: shutdown host
command: /sbin/shutdown -r now #shut down -r now重启主机
when: ansible_default_ipv4.address == "192.168.190.60" #当ipv4为192.168.190.60时执行
或
when: inventory_hostname == "<主机名>"
ansible-playbook test2.yaml#192.168.190.60应该重启才正确
5、with_items 迭代
迭代:通常指持续的playbook剧本(一种使用YAML编写自动化的任务脚本)进行修改、更新、改进的过程
Ansible提供了很多种循环结构,一般都命名为with_items,作用等同于 loop 循环。
vim test05.yaml
---
- name: play1
hosts: dbservers
gather_facts: false
tasks: #任务列表
- name: create directories #用file模块创建目录
file:
path: "{{item}}"
state: directory
with_items: #等同于 loop:
- /tmp/test1
- /tmp/test2
- name: add users #用user模块添加用户
user: name={{item.name}} state=present groups={{item.groups}}
with_items:
- name: test1
groups: wheel
- name: test2
groups: root
或
with_items:
- {name:'test1', groups:'wheel'}
- {name:'test2', groups:'root'}--------------------------------------------------------------------------------------------------------------------------
ansible-playbook test3.yaml
6、Templates 模块
Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件,可以看作是一个编译过的模板文件,用来产生目标文本,传递Python的变量给模板去替换模板中的标记。
template:动态生成配置文件。会有数据经常动态改变,如IP地址、主机名(服务名)、端口、用户名等
1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量
cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2
vim /opt/httpd.conf.j2
Listen {{http_port}} #42行,修改
ServerName {{server_name}} #95行,修改
DocumentRoot "{{root_dir}}" #119行,修改
2.修改主机清单文件,使用主机变量定义一个变量名相同,而值不同的变量
vim /etc/ansible/hosts
[webservers]
192.168.190.60 http_port=192.168.190.60:80 server_name=www.accp.com:80 root_dir=/etc/httpd/htdocs[dbservers]
192.168.190.70 http_port=192.168.190.70:80 server_name=www.benet.com:80 root_dir=/etc/httpd/htdocs
3.编写 playbook
vim apache.yaml
---
- hosts: all #在所有主机(all
)上执行
remote_user: root #使用root
用户连接远程主机
vars: #定义变量
- package: httpd #定义了一个变量package
,其值为httpd
- service: httpd #定义了一个变量service
,其值也为httpd
tasks: #任务列表
- name: install httpd package #安装httpd包
yum: name={{package}} state=latest
- name: install configure file #安装配置文件
template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf #使用template模板安装一个模板文件httpd.conf
到/etc/httpd/conf/httpd.conf
notify: #如果这个任务改变了文件状态,那么将会触发名为restart httpd
的 handler
- restart httpd
- name: create root dir #用file
模块来创建目录/etc/httpd/htdocs
file: path=/etc/httpd/htdocs state=directory #directory目录
- name: start httpd server #用service
模块来启动httpd
服务,并设为开机自启
service: name={{service}} enabled=true state=started
handlers: #特殊的 task,它们不会自动执行,而是由notify
关键字触发
- name: restart httpd #定义了一个处理程序,用于重新启动httpd
服务
service: name={{service}} state=restarted----------------------------------------------------------------------------------------------------------------------
ansible-playbook apache.yaml
7、tags 模块
可以在一个playbook中为某个或某些任务定义“标签”,在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。
always:一个特殊的tags。作用就是当使用always当tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。
vim webhosts.yaml
---
- hosts: webservers #在webservers主机组上执行
remote_user: root #用户root执行
tasks: #任务列表
- name: Copy hosts file #使用copy模块,复制hosts文件
copy: src=/etc/hosts dest=/opt/hosts #源地址:/etc/hosts,目标地址/opt/hosts
tags:
- only #标签为only
,任务只有在指定--tags="only"
参数时才会执行
- name: touch file #使用file
模块,创建或更新/opt/testhost
文件
file: path=/opt/testhost state=touch
tags:
- always #标签为always,始终要运行的代码,无论是否指定标签ansible-playbook-----------------------------------------------------------------------------------------------------------------------
webhosts.yaml --tags="only"
#webservers主机组上的主机,创建了hosts和testhost
vim dbhosts.yaml
---
- hosts: dbservers #在dbservers主机组上执行
remote_user: root #用户root执行
tasks: #任务列表
- name: Copy hosts file #用copy模块,复制文件
copy: src=/etc/hosts dest=/opt/hosts #源地址:/etc/hosts,目标地址:/opt/hosts
tags: #标签为only
,任务只有在指定--tags="only"
参数时才会执行
- only
- name: touch file #使用file模块,创建或更新文件
file: path=/opt/testhost state=touch----------------------------------------------------------------------------------------------------------------------
ansible-playbook dbhosts.yaml --tags="only"
#dbservers主机组上的主机只生成了 hosts,没生成 testhost给 touch file 任务也加上
only
标签,才会生成 testhost
8、Roles 模块
可以将复杂的任务和逻辑划分成多个独立的单元
通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。
//roles 的目录结构:
cd /etc/ansible/
tree roles/
roles/
├── web/
│ ├── files/
│ ├── templates/
│ ├── tasks/
│ ├── handlers/
│ ├── vars/
│ ├── defaults/
│ └── meta/
└── db/
├── files/
├── templates/
├── tasks/
├── handlers/
├── vars/
├── defaults/
└── meta/
//roles 内各目录含义解释
1、任务(tasks):执行具体的操作步骤
2、变量(vars):角色中使用的变量
3、文件(files):需要复制到远程主机的文件
4、模版(templates):动态生成配置文件
5、处理器(handlers):任务完成后触发的操作,如重启服务等
6、默认变量(defaults):角色中的默认变量
7、依赖(meta):依赖其他角色
//ansible 角色的好处:
1、简化剧本的管理:将剧本分解成一个个小模块,每个角色处理特定的功能,管理更加清晰
2、模块化和重要性:不同的场景可以反复使用,减少编写任务
3、易于维护和扩展***:当某个部分的角色需要修改时,只需要修改对应角色,不用修改整个playbook剧本
//在一个 playbook 中使用 roles 的步骤:
(1)创建以 roles 命名的目录
mkdir /etc/ansible/roles/ -p #yum装完默认就有
(2)创建全局变量目录(可选)
mkdir /etc/ansible/group_vars/ -p
touch /etc/ansible/group_vars/all #文件名自己定义,引用的时候注意
(3)在 roles 目录中分别创建以各角色名称命令的目录,如 httpd、mysql
mkdir /etc/ansible/roles/httpd
mkdir /etc/ansible/roles/mysql
(4)在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}
(5)在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
(6)修改 site.yml 文件,针对不同主机去调用不同的角色
vim /etc/ansible/site.yml
---
- hosts: webservers
remote_user: root
roles:
- httpd
- hosts: dbservers
remote_user: root
roles:
- mysql
(7)运行 ansible-playbook
cd /etc/ansible
ansible-playbook site.yml
查看webservers主机组httpd安装情况,dbservers主机组mysql安装情况
示例:
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
------编写httpd(80)模块------
写一个简单的tasks/main.yml
vim /etc/ansible/roles/httpd/tasks/main.yml
- name: install apache
yum: name={{pkg}} state=latest
- name: start apache
service: enabled=true name={{svc}} state=started//定义变量:可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中
vim /etc/ansible/roles/httpd/vars/main.yml
pkg: httpd
svc: httpd
-------编写mysql(3306)模块-------
vim /etc/ansible/roles/mysql/tasks/main.yml
- name: install mysql
yum: name={{pkg}} state=latest
- name: start mysql
service: enabled=true name={{svc}} state=started
vim /etc/ansible/roles/mysql/vars/main.yml
pkg:
- mariadb
- mariadb-server
svc: mariadb
-------编写php(9000)模块-----
vim /etc/ansible/roles/php/tasks/main.yml
- name: install php
yum: name={{pkg}} state=latest
- name: start php-fpm
service: enabled=true name={{svc}} state=startedvim /etc/ansible/roles/php/vars/main.yml
pkg:
- php
- php-fpm
svc: php-fpm
-----编写roles示例-----
vim /etc/ansible/site.yml
---
- hosts: webservers
remote_user: root
roles:
- httpd
- mysql
- phpcd /etc/ansible
ansible-playbook site.yml
查看webservers主机组的apache、mysql、php安装情况
相关文章:
Ansible 的脚本 --- playbooks剧本
playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Vars:变量 (3)Templates:模板 &a…...
Windows 死机时 系统错误日志分析与故障排除
目录 前言正文 前言 对于服务器异常重启,推荐阅读:详细分析服务器自动重启原因(涉及Linux、Window) 以下主要做一个总结梳理 正文 查看系统事件日志: 可以查看系统事件日志,找出可能导致系统崩溃的错误…...
基于pytorch搭建CNN
先上代码 import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torchvision import datasets, transforms import matplotlib.pyplot as plt import numpy as np import pandas as pd import matplotlibmatplotlib.use(tkA…...
C#实现与Windows服务的交互与控制
在C#中,与Windows服务进行交互和控制通常涉及以下几个步骤: 创建Windows服务:首先,需要创建一个Windows服务项目。可以使用Visual Studio中的“Windows 服务 (.NET Framework)”项目模板来创建Windows服务。 配置服务控制事件&am…...
Java和Ts构造函数的区别
java中子类在使用有参构造创建对象的时候不必要必须调用父类有参构造 而js则必须用super()调用父类的有参构造,即使用不到也必须传递 Java 中的处理方式 可选择性参数: 在 Java 中,当子类使用父类的有参构造方法创建对象时,可以只传递需要的参数。如果父…...
植物健康,Spring Boot来助力
3系统分析 3.1可行性分析 通过对本植物健康系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本植物健康系统采用SSM框架,JAVA作为开发语言&#…...
百度文心一言接入流程-java版
百度文心一言接入流程-java版 一、准备工作二、API接口调用-java三、百度Prompt工程参考资料: 百度文心一言:https://yiyan.baidu.com/百度千帆大模型:https://qianfan.cloud.baidu.com/百度千帆大模型文档:https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html千tokens…...
Java 11 新特性深度解析与应用实践
Java 作为一种广泛应用的编程语言,不断演进以满足开发者日益增长的需求和适应技术的发展趋势。Java 11 带来了一系列重要的新特性和改进,这些变化不仅提升了语言的性能和功能,还为开发者提供了更好的开发体验和工具。本文将深入探讨 Java 11 …...
druid 连接池监控报错 Sorry, you are not permitted to view this page.本地可以,发布正式出错
简介: druid 连接池监控报错 Sorry, you are not permitted to view this page. 使用Druid连接池的时候,遇到一个奇怪的问题,在本地(localhost)可以直接打开Druid连接池监控,在其他机器上打开会报错&#…...
[RN与H5] 加载线上H5通信失败问题记录(启动本地H5服务OK)
RT: nextjs项目 在本地启动H5服务, 本地开发都OK 发布到线上后, 效果全无, 经排查发现, 写了基本配置的js脚本在挂载时机上的差异导致 根本原因是...
electron 打包
安装及配置 安装electron包以及electron-builder打包工具 # 安装 electron cnpm install --save-dev electron # 安装打包工具 cnpm install electron-builder -D 参考的package.json文件 其中description和author为必填项目 {"name": "appfile",&qu…...
ChatGLM-6B和Prompt搭建专业领域知识问答机器人应用方案(含完整代码)
目录 ChatGLM-6B部署 领域知识数据准备 领域知识数据读取 知识相关性匹配 Prompt提示工程 领域知识问答 完整代码 本文基于ChatGLM-6B大模型和Pompt提示工程搭建医疗领域知识问答机器人为例。 ChatGLM-6B部署 首先需要部署好ChatGLM-6B,参考 ChatGLM-6B中英双…...
虚拟机配置静态IP地址(人狠话不多简单粗暴)
1.先找到以下位置: 2. 虚拟机中执行vi /etc/sysconfig/network-scripts/ifcfg-ens33 根据上图信息修改配置文件内容: 静态IP地址设置不超过255就行,我这里弄得100,没毛病。 3.修改并保存文件后,重启网络执行&#…...
Android token JJWT
在Android开发领域,JJWT(Java JWT,即Java Json Web Token)库是一个流行的工具,用于处理JSON Web Tokens(JWTs)。JWT是一种轻量级的、自包含的、基于JSON的用于双方之间安全传输信息的简洁的、UR…...
动态规划<一>初识动态规划
目录 认识动态规划 LeetCodeOJ练习 斐波那契数列模型 认识动态规划 1.动态规划是一种用于解决优化问题的算法策略。 2.它的核心原理是把一个复杂的问题分解为一系列相互关联的子问题。通过先求解子问题,并且记录这些子问题的解(通常用一个表格之类的…...
【AIGC】ChatGPT提示词Prompt精确控制指南:Scott Guthrie的建议详解与普通用户实践解析
博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯斯科特古斯里(Scott Guthrie)的建议解读人机交互设计的重要性减轻用户认知负担提高Prompt的易用性结论 💯普通用户视角的分析普通用户…...
2024年10月24日随笔
1024程序员节啊,现在已经是晚上的十点半了,我还在实验室里没走,刚把力扣的每日一题写完,好忙啊,好忙啊,好忙啊,为什么都大三了我还不能做自己的事情,今天老师开会说要给互联网加大赛…...
怎么做系统性能优化
对于软件或系统的性能优化,可以采取多种措施来提高效率和响应速度。这里为您列举一些常见的方法: 1. 代码优化:检查并优化算法复杂度,减少不必要的计算。使用更高效的数据结构和算法。 2. 数据库优化: •索引优化&…...
负载均衡:四层与七层
负载均衡建立在现在网络基础之上,提供一种廉价透明有效的方式扩展网络设备和服务器带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡可分为七层负载与四层负载。 四层负载(目标地址与端口交换) 主要通过报文中…...
【Ubuntu】服务器系统重装SSHxrdpcuda
本文作者: slience_me Ubuntu系统重装操作合集 文章目录 Ubuntu系统重装操作合集1.1 系统安装:1.2 安装openssh-server更新系统包安装OpenSSH服务器检查SSH服务的状态配置防火墙以允许SSH测试SSH连接配置SSH(可选) 1.3 安装远程连…...
ChatGPT的模型训练入门级使用教程
ChatGPT 是由 OpenAI 开发的一种自然语言生成模型,基于 Transformer 架构的深度学习技术,能够流畅地进行对话并生成有意义的文本内容。它被广泛应用于聊天机器人、客户服务、内容创作、编程助手等多个领域。很多人对如何训练一个类似 ChatGPT 的语言模型…...
【OS】2.1.2 进程的状态与转换_进程的组织
✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 🔥 所属专栏:C深入学习笔记 💫 欢迎来到我的学习笔记! 一、进程的状态 1.1.创建态 ……的…...
和为 n 的完全平方数的最少数量
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示…...
Hallo2 长视频和高分辨率的音频驱动的肖像图像动画 (数字人技术)
HALLO2: LONG-DURATION AND HIGH-RESOLUTION AUDIO-DRIVEN PORTRAIT IMAGE ANIMATION 论文:https://arxiv.org/abs/2410.07718 代码:https://github.com/fudan-generative-vision/hallo2 模型:https://huggingface.co/fudan-generative-ai/h…...
如何在Debian 8上使用Let‘s Encrypt保护Apache
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 本教程将向您展示如何在运行 Apache 作为 Web 服务器的 Debian 8 服务器上设置来自 Let’s Encrypt 的 TLS/SSL 证书。我们还将介…...
百科知识|选购指南
百科知识||选购指南 百科知识选购指南茶叶分类茶叶的味道来源茶叶制作步骤名茶其他一些茶叶的知识 百科知识 选购指南 茶叶 分类 茶叶种类: 六大茶类完美分析介绍!茶友推荐收藏 (aboxtik.com) 1.绿茶(发酵率0%) 2.白茶(发酵率…...
Go 语言基础教程:4.常量的使用
在这篇教程中,我们将通过一个简单的 Go 语言程序来学习常量的声明和使用。以下是我们要分析的代码: package mainimport ("fmt""math" )const s string "constant"func main() {fmt.Println(s)const n 500000000const …...
centos服务器重启后,jar包自启动
第一种方法: systemctl服务自启动 在/usr/lib/systemd/system目录下,创建service:start_jar.servie [Unit] DescriptionYour Java Application as a Service Afternetwork.target[Service] Userroot Typesimple ExecStart/usr/bin/java -j…...
华为云实战杂记
配置nginx服务器 首先我们拿到一台服务器时,并不知道系统是否存在Nginx我们可以在Linux命令行执行如下命令查看 find / -name nginx* find / -name nginx* 查找所有名字以nginx开头的文件或者目录,我们看看系统里面都有哪些文件先,这样可以快…...
Lesson10---list
Lesson10—list 第10章 c的list的使用和实现 文章目录 Lesson10---list前言一、list的初始化二、list的遍历1.迭代器2.范围for 三、list常用的内置函数1.sort(慎用)2.unique3.reverse4.merge5.splice 四、模拟实现1.基本框架2.构造函数3.push_back4. 遍…...
上海网络做网站公司/b2b十大平台排名
为什么80%的码农都做不了架构师?>>> 通过Spring工具类获取classpath下的文件资源 1、资源文件不在jar中 File cfgFile ResourceUtils.getFile("classpath:test.txt"); 或者 org.springframework.core.io.Resource fileRource new ClassPat…...
什么网站做代购/百度下载安装 官方
昨天有dev人员找到了我说线上访问外网的一个接口,访问均正常,但是在测试环境时通时不通,很奇怪,我也挺好奇,就跟进排查了下,情况大概如下:测试机:l-qta20.h.beta.cn0访问外网接口地址…...
wordpress方正模板/天猫代运营
1.配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值 YAML(YAML Ain’t Markup Language) 既是一个标记语言,又不是…...
如何做网站的百科/富阳seo关键词优化
1)定义 json的定义(javascript object notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的…...
深圳大兴汽车集团网站建设/二级域名查询入口
小渣来说动态规划了: 首先说一说斐波拉契数列(1,1,2,3,5......),如图: 这些就是小渣理解的动态规划,欢迎大佬来补充。 这些是经典的动态规划题: h…...
兰亭集势的网站平台建设/域名解析查询工具
为了让jmeter的结果报告更有内容,往往需要提供测试时服务器端的性能数据 我知道的有几种方式1. jmeter的perfmon插件 我只知道它可以在GUI下运行,如果非GUI是什么效果?同时它也需要在服务器上安装agent2. nmon监控数据 运行…...