ansible的安装和简单的块使用
目录
一、概述
二、安装
1、选择源
2、安装ansible
3、模块查看
三、实验
1、拓扑编辑
2、设置组、ping模块
3、hostname模块
4、file模块
编辑
5、stat模块
6、copy模块(本地拷贝到远程)
7、fetch模块与copy模块类似,但作用相反。用于把远程机器的文件拷贝到本地。
8、user模块
9、group模块
10、cron模块
四、yum_repository模块
五、yum模块
六、server模块
七、script模块
八、command与shell模块
九、playbook
YMAL格式
一、概述
Ansible是一种自动化工具,用于配置管理、应用程序部署和协调云部署。它是一个开源工具,使用Python编写,通过SSH协议与远程主机通信。
1. 相关介绍和同类平台:
- 相关介绍:Ansible是一种基于代理的自动化工具,它使用简单、轻量级的语法。它的主要目标是使自动化过程简单易用,同时提供强大的功能来管理大规模的基础架构。
- 同类平台:与Ansible类似的自动化工具包括Puppet、Chef和SaltStack等。这些工具都提供了类似的功能,但在语法、工作原理和部署模型上略有不同。
2. 为什么要用Ansible、它能做什么以及优点:
- 简单易用:Ansible使用基于YAML的语法,易于理解和编写,无需编程知识。它还具有良好的文档和活跃的社区支持。
- 无代理:Ansible使用SSH协议进行通信,无需在远程主机上安装任何代理程序,这使得部署和配置更加简单和安全。
- 基于剧本:Ansible使用基于剧本的方式来描述并执行自动化任务,使得任务的组织和管理更加灵活和可扩展。
- 高度可配置:Ansible支持各种平台和操作系统,并提供了丰富的模块和插件,可以管理各种类型的资源,包括服务器、网络设备、云平台等。
- 扩展性:Ansible具有强大的可扩展性,可以根据特定需求编写自定义模块和插件,或与现有工具和系统集成。
3. 工作原理:
- Ansible使用一个控制节点来管理多个远程主机。控制节点上的Ansible配置文件描述了需要执行的任务和相关主机的信息。
- 当控制节点执行Ansible命令时,它会通过SSH连接到远程主机,并在远程主机上执行相应的任务。
- Ansible使用基于模块的方式来管理和配置远程主机。它可以通过内置的模块执行各种操作,如文件管理、软件包安装、服务管理等。
- Ansible还支持使用剧本(Playbooks)来定义和组织多个任务,以及使用变量和条件来实现更复杂的自动化流程。
总的来说,Ansible是一个功能强大、易于使用和无代理的自动化工具,可以帮助简化配置管理和应用程序部署的过程,提高工作效率和可维护性。
核心组件:
• Inventory:Ansible 管理的主机信息,包括 IP 地址、 SSH 端口、账号、密码 等;
• Modules:任务均有模块完成,也可以自定义模块,例如经常用的脚本;
• Plugins:使用插件增加Ansible 核心功能,自身提供了很多插件, 也可以自
定义插件。例如 connection 插件, 用于连接目标主机。 callback 插件可以将 结果输出到其他地方。vars 插件将定义的比变量注入到Ansible 中运行。
• Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible 核心功能。
Ansible 可以在安装了 Python 2 (版本 2.6 或 2.7)或 Python 3 (版本 3.5 及更高版本) 的任何机器上运行(管理机器不支持 Windows)。
二、安装
在开始实验前我们先同步集群时间、进行ssh免密
##每台主机
ssh-keygen
ssh-copy-id 192.168.115.131
##在192.168.115.131
for i in 136 140 ;do scp /root/.ssh/authorized_keys 192.168.115.$i:/root/.ssh ;done
##同步集群时间
for i in 131 136 140 ;do ssh 192.168.115.$i yum -y install ntp;done
for i in 131 136 140 ;do ssh 192.168.115.$i systemctl restart ntpd;done
1、选择源
cd /etc/yum.repos.d
mkdir back
mv * bcak
yum clean all
yum makecache
yum update
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl-o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache frist
yum update
2、安装ansible
yum -y install epel-release.noarch
yum -y install ansible
3、模块查看
###模块列表
ansible-doc -l###模块用法查看
ansible-doc 模块名
三、实验
1、拓扑
2、设置组、ping模块
绿色成功、红色失败
方式1
vim /etc/ansible/hosts
###插入
[group]
192.168.115.131
192.168.115.136
192.168.115.140
###利用模块ping
ansible -m ping group
方式2
#如果主机数量太多就这样表示
[group]
192.168.115.[136:140]
方式3
##指定端口
[group]
192.168.115.136:22
方式4
###别名
[group]
192.168.115.136:22
hy ansible_ssh_host=192.168.115.140 ansible_ssh_port=22
方式5
##没有ssh免密的也可以
[group]
ansible_ssh_host=192.168.115.140 ansible_ssh_port=22 ansible_ssh_user=用户名 ansible_ssh_pass="密码"
方式6
###利用别名分组
[group]
192.168.115.136:22
hy ansible_ssh_host=192.168.115.136 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123.com"
nginx ansible_ssh_host=192.168.115.140 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123.com"
[nginx]
nginx
[hy]
hy
3、hostname模块
基本格式为: ansible 操作的机器名或组名 -m 模块名 -a “参数1=值1 参数2=值2” argment
黄色表示成功
###修改192.168.115.136的主机名hy
###修改192.168.115.140的主机名nginx
ansible hy -m hostname -a 'name=hy'
ansible nginx -m hostname -a 'name=nginx'
4、file模块
1、创建目录
##创建一个目录
ansible hy -m file -a "path=/opt/hy.txt state=directory"
2、创建文件
ansible hy -m file -a "path=/opt/hy.txt/test.tst state=touch"
3、修改属主属组、权限
####修改属主为hy,属组hy 权限777
ansible hy -m file -a "path=/opt/hy.txt recurse=yes owner=hy group=hy mode=777"
4、删除目录(包括目录中的文件)
###删除/opt/hy.txtansible hy -m file -a "path=/opt/hy.txt state=absent"
5、创建软、硬连接
#软
ansible hy -m file -a "src=/etc/fstab path=/opt/fstab2 state=link"
#硬
ansible hy -m file -a "src=/etc/fstab path=/opt/fstab1 state=hard"
5、stat模块
###用来获取文件的信息状态
ansible hy -m file -a "path=/opt/hy.txt state=touch"
ansible hy -m stat -a "path=/opt/hy.txt"
6、copy模块(本地拷贝到远程)
在ansible上准备一个文件拷贝到2台agent
echo 192.168.115.131 > 1.txt
ansible group -m copy -a "src=/root/1.txt dest=/opt"
使用content远程写入内容,并覆盖原内容
ansible group -m copy -a "content="hello\n" dest=/opt/1.txt"
使用force参数是否强制覆盖
##写入
echo 192.168.115.131 > 1.txt
ansible group -m copy -a "content="hello" dest=/opt/1.txt force=no"#如果目标文件存在,不覆盖
ansible group -m copy -a "content="hello" dest=/opt/1.txt force=yes"#如果目标文件存在,覆盖
使用backup模块备份,把本机文件备份到远端
###把本机的文件备份到远端
ansible group -m copy -a "src=/root/1.txt dest=/opt/2.txt backup=yes owner=root group=root mode=644"
拷贝时/与没有/的区别
ansible hy -m copy -a "src=/etc/yum.repos.d dest=/etc/yum.repos.d"
ansible nginx -m copy -a "src=/etc/yum.repos.d/ dest=/etc/yum.repos.d"
7、fetch模块与copy模块类似,但作用相反。用于把远程机器的文件拷贝到本地。
注意: fetch模块不能从远程拷贝目录到本地
##两台agent上创建同名、路径文件
echo 192.168.115.136 hy > test.txt
echo 192.168.115.140 nginx > test.txt
###ansible上操作
group -m fetch -a "src=/etc/yum.repos.d/test.txt dest=/etc/yum.repos.d"
8、user模块
user模块用于管理用户账号和用户属性。
##创建aaa用户,默认为普通用户,创建家目录
ansible hy -m user -a "name=aaa state=present"
###创建系统用户
ansible hy -m user -a'name=bbb state=present system=yes shell="/sbin/nologin"'
##创建ccc用户, 使用uid参数指定uid, 使用password参数传密码
echo 123.com |openssl passwd -stdin
ansible hy -m user -a 'name=ccc state=present uid=6666 password="密码"'
##创建一个普通用户叫ddd,并产生空密码 密钥对
ansible hy -m user -a 'name=ddd state=present generate_ssh_key=yes'
##删除aaa用户,但家目录默认没有删除
ansible hy -m user -a 'name=aaa state=absent'
##删除aaa用户、家目录
ansible hy -m user -a 'name=aaa state=absent remove=yes'
9、group模块
group模块用于管理用户组和用户组属性。
###创建组
ansible hy -m group -a 'name=web gid=2000 state=present'
##删除组(如果有用户的gid为此组,则删除不了)
ansible hy -m group -a 'name=web state=absent'
10、cron模块
cron模块用于管理周期性时间任务
##创建一个cron任务,不指定user的话,默认就是root(因为我这里是用root操作的)。
如果minute,hour,day,month,week不指定的话,默认都为*
ansible hy -m cron -a 'name="test1" user=root job="touch /etc/6666" minute=26'
删除cron任务
ansible hy -m cron -a 'name="test1" state=sbsent'
四、yum_repository模块
yum_repository模块用于配置yum仓库。
### yum_repository模块yum_repository模块用于配置yum仓库。
注意:此模块只帮助配置yum仓库,但如果仓库里没有软件包,安装一样会失败。所以可以手动去挂载光驱到/mnt目录ansible hy -m yum_repository -a "name=local description=localyum baseurl=file:///mnt/ enabled=yes gpgcheck=no"##删除/etc/yum.repos.d/local.repo配置文件
ansible hy -m yum_repository -a "name=local state=absent"
五、yum模块
yum模块用于使用yum命令来实现软件包的安装与卸载。 前提:group的机器上的yum配置都已经OK ,如果是使用本地源的就需要挂载
##安装http
ansible group -m yum -a 'name=httpd state=present'
######使用网络源
##在ansible上安安装网络源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
##copy到其他主机
使用yum安装httpd,httpd-devel软件,state=latest表示安装最新版本
ansible group1 -m yum -a 'name=httpd,httpd-devel state=latest'
使用yum卸载httpd,httpd-devel软件
ansible group1 -m yum -a 'name=httpd,httpd-devel state=absent'
六、server模块
### service模块(重点)service模块用于控制服务的启动,关闭,开机自启动等。
启动vsftpd服务,并设为开机自动启动
master# ansible group -m service -a 'name=vsftpd state=started enabled=on'关闭vsftpd服务,并设为开机不自动启动
master# ansible group -m service -a 'name=vsftpd state=stoped enabled=false'
我们安装一个mariadb服务,并设置为开机自启
ansible group -m yum -a 'name=mariadb,mariadb-server state=present'
ansible group -m service -a 'name=mariadb state=started enabled=yes'
七、script模块
script模块用于在远程机器上执行本地脚本。
在master上准备一个脚本
master# vim /tmp/1.sh
#!/bin/bash
mkdir /tmp/haha
touch /tmp/haha/{1..10}在group1的远程机器里都执行master上的/tmp/1.sh脚本(此脚本不用给执行权限)
master# ansible group1 -m script -a '/tmp/1.sh'
八、command与shell模块
两个模块都是用于执行linux命令的,这对于命令熟悉的工程师来说,用起来非常high。
shell模块与command模块差不多(command模块不能执行一些类似$HOME,>,<,|等符号,但shell可以)
ansible -m command group1 -a "useradd user2" ansible -m command group1 -a "id user2" ansible -m command group1 -a "cat /etc/passwd |wc -l" --报错 ansible -m shell group1 -a "cat /etc/passwd |wc -l" --成功 ansible -m command group1 -a "cd $HOME;pwd" --报错 ansible -m shell group1 -a "cd $HOME;pwd" --成功
注意: shell模块并不是百分之百任何命令都可以,比如vim或ll别名就不可以。不建议大家去记忆哪些命令不可以,大家只要养成任何在生产环境里的命令都要先在测试环境里测试一下的习惯就好。
九、playbook
playbook(剧本): 是ansible用于配置,部署,和管理被控节点的剧本。用于ansible操作的编排。
使用的格式为yaml格式(saltstack,elk,docker,docker-compose,kubernetes等也都会用到yaml格式)
YMAL格式
-
以.yaml或.yml结尾
-
文件的第一行以 "---"开始,表明YMAL文件的开始(可选的)
-
以#号开头为注释
-
列表中的所有成员都开始于相同的缩进级别, 并且使用一个
"- "
作为开头(一个横杠和一个空格) -
一个字典是由一个简单的
键: 值
的形式组成(这个冒号后面必须是一个空格) -
==注意: 写这种文件不要使用tab键,都使用空格==
## playbook实例先直接来看一个实例**第1步: 创建一个存放playbook的目录(路径自定义)**```powershell
master# mkdir /etc/ansible/playbook
```**第2步: 准备httpd配置文件,并修改成你想要的配置**```powershell
master# yum install httpd -y按需要修改你想要的配置(为了测试可以随意改动标记一下)
master# vim /etc/httpd/conf/httpd.conf
```**第3步: 写一个playbook文件(后缀为.yml或.yaml)**```powershell
# vim /etc/ansible/playbook/example.yaml
---
- hosts: group1remote_user: roottasks: - name: ensure apache is at the latest version yum: name=httpd,httpd-devel state=latest- name: write the apache config file copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.confnotify:- restart apache- name: ensure apache is running (and enable it at boot)service: name=httpd state=started enabled=yeshandlers: - name: restart apacheservice: name=httpd state=restarted
```第4步: 执行写好的palybook- 会显示出执行的过程,并且执行的每一步都有ok,changed,failed等标识
- 执行如果有错误(failed)会回滚,解决问题后,直接再执行这条命令即可,并会把failed改为changed(幂等性)```powershell
# ansible-playbook /etc/ansible/playbook/example.yaml
```## Playbook常见语法**hosts:** 用于指定要执行任务的主机,其可以是一个或多个由冒号分隔主机组.**remote_user:** 用于指定远程主机上的执行任务的用户.```powershell
- hosts: group1 remote_user: root
```**tasks:** 任务列表, 按顺序执行任务. - 如果一个host执行task失败, 整个tasks都会回滚, 修正playbook 中的错误, 然后重新执行即可.```powershelltasks:- name: ensure apache is at the latest version yum: name=httpd,httpd-devel state=latest- name: write the apache config file copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
```**handlers:** 类似task,但需要使用notify通知调用。- 不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次.
- handlers最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了.```powershellnotify: - restart apache- name: ensure apache is running (and enable it at boot)service: name=httpd state=started enabled=yeshandlers:- name: restart apacheservice: name=httpd state=restarted
```**练习:** 修改httpd的端口为8080,再执行playbook测试**variables:** 变量- 定义变量可以被多次方便调用```powershell
master# vim /etc/ansible/playbook/example2.yaml
---
- hosts: group1remote_user: rootvars:- user: test1tasks:- name: create useruser: name={{user}} state=present
~
``````powershell
master# ansible-playbook /etc/ansible/playbook/example2.yaml
```### 案例: playbook编排vsftpd写一个playbook实现 1. 配置yum
2. 安装vsftpd包
3. 修改配置文件(要求拒绝匿名用户登录)
4. 启动服务并实现vsftpd服务开机自动启动```powershell
---
- hosts: group1 remote_user: root tasks: - name: rm yum repository file: path=/etc/yum.repos.d/ state=absent- name: 同步master上的yum源到group1copy: src=/etc/yum.repos.d dest=/etc/- name: ensure vsftpd is at the latest version yum: name=vsftpd state=latest- name: write the apache config file copy: src=/etc/vsftpd/vsftpd.conf dest=/etc/vsftpd/vsftpd.conf notify: - restart vsftpd- name: ensure vsftpd is running (and enable it at boot)service: name=vsftpd state=started enabled=yeshandlers: - name: restart vsftpd service: name=vsftpd state=restarted
```## **playbook编排多个hosts任务**~~~powershell
--- # ---代表开始(可选项,不写也可以)
- hosts: 10.1.1.12remote_user: roottasks:- name: 创建/test1/目录file: path=/test1/ state=directory
# 这里不能用---分隔,会报语法错误(后面课程玩k8s编排也写YAML文件,是可以用---来分隔段落的)
- hosts: 10.1.1.13remote_user: roottasks:- name: 创建/test2/目录file: path=/test2/ state=directory
... # ...代表结束(可选项,不写也可以)
~~~### 案例: 编排nfs搭建与客户端挂载1, 在master上准备nfs配置文件~~~powershell
# vim /etc/exports
/share *(ro)
~~~2, 编写yaml编排文件~~~powershell
# vim /etc/ansible/playbook/nfs.yml
---
- hosts: 10.1.1.12remote_user: roottasks:- name: 安装nfs服务相关软件包yum: name=nfs-utils,rpcbind,setup state=latest- name: 创建共享目录file: path=/share/ state=directory- name: 同步nfs配置文件copy: src=/etc/exports dest=/etc/exportsnotify: restart nfs- name: 启动rpcbind服务,并设置为开机自启动service: name=rpcbind state=started enabled=on- name: 启动nfs服务,并设置为开机自启动service: name=nfs state=started enabled=onhandlers:- name: restart nfsservice: name=nfs state=restarted- hosts: 10.1.1.13remote_user: roottasks:- name: 安装nfs客户端软件包yum: name=nfs-utils state=latest- name: 挂载nfs服务器的共享shell: mount 10.1.1.12:/share /mnt
~~~3, 执行playbook~~~powershell
# ansible-playbook /etc/ansible/playbook/nfs.yaml
~~~
相关文章:
ansible的安装和简单的块使用
目录 一、概述 二、安装 1、选择源 2、安装ansible 3、模块查看 三、实验 1、拓扑编辑 2、设置组、ping模块 3、hostname模块 4、file模块 编辑 5、stat模块 6、copy模块(本地拷贝到远程) 7、fetch模块与copy模块类似,但作用…...
Android 状态栏显示运营商名称
Android 原生设计中在锁屏界面会显示运营商名称,用户界面中,大概是基于 icon 数量长度显示考虑,对运营商名称不作显示。但是国内基本都加上运营商名称。对图标显示长度优化基本都是:缩小运营商字体、限制字数长度、信号图标压缩上…...
10.Xaml ListBox控件
1.运行界面 2.运行源码 a.Xaml 源码 <Grid Name="Grid1"><!--IsSelected="True" 表示选中--><ListBox x:Name="listBo...
基于vue3和element-plus的省市区级联组件
git地址:https://github.com/ht-sauce/elui-china-area-dht 使用:npm i elui-china-area-dht 默认使用 使用方法 <template><div class"app"><!--默认使用--><elui-china-area-dht change"onChange"></elui-china…...
Paper: 利用RNN来提取恶意软件家族的API调用模式
论文 摘要 恶意软件家族分类是预测恶意软件特征的好方法,因为属于同一家族的恶意软件往往有相似的行为特征恶意软件检测或分类方法分静态分析和动态分析两种: 静态分析基于恶意软件中包含的特定签名进行分析,优点是分析的范围覆盖了整个代码…...
sdkman 安装以及 graalvm安装
sdkman安装以及graalvm安装全过程, (可能需要梯子) tiamTiam-Lenovo:~$ curl -s "https://get.sdkman.io" | bash-syyyyyyys:/yho: -yd./yh/ m..oho. hy ..sh/ :N -/…...
如何正确使用 WEB 接口的 HTTP 状态码和业务状态码?
当设计和开发 Web 接口时,必然会和 HTTP 状态码与业务状态码这两个概念打交道。很多同学可能没有注意过这两个概念或者两者的区别,做得稀里糊涂,接下来详细讲解下二者的定义、区别和使用方法。 HTTP 状态码 HTTP 状态码是由 HTTP 协议定义的…...
Spark【Spark SQL(三)DataSet】
DataSet DataFrame 的出现,让 Spark 可以更好地处理结构化数据的计算,但存在一个问题:编译时的类型安全问题,为了解决它,Spark 引入了 DataSet API(DataFrame API 的扩展)。DataSet 是分布式的数…...
制作立体图像实用软件:3DMasterKit 10.7 Crack
3DMasterKit 软件专为创建具有逼真 3D 和运动效果的光栅图片而设计:翻转、动画、变形和缩放。 打印机、广告工作室、摄影工作室和摄影师将发现 3DMasterKit 是一种有用且经济高效的解决方案,可将其业务扩展到新的维度,提高生成的 3D 图像和光…...
高校 Web 站点网络安全面临的主要的威胁
校园网 Web 站点的主要安全威胁来源于计算机病毒、内部用户恶意攻击和 破坏、内部用户非恶意的错误操作和网络黑客入侵等。 2.1 计算机病毒 计算机病毒是指编制者在计算机程序中插入的破坏计算机功能或者数据, 影响计算机使用并且能够自我复制的一组计算机指令或…...
vue前端解决跨域
1,首先 axios请求,看后端接口路径,http://122.226.146.110:25002/api/xx/ResxxList,所以baseURL地址改成 ‘/api’ let setAxios originAxios.create({baseURL: /api, //这里要改掉timeout: 20000 // request timeout}); export default s…...
【Cicadaplayer】解码线程及队列实现
4.4分支https://github.com/alibaba/CicadaPlayer/blob/release/0.4.4/framework/codec/ActiveDecoder.h对外:送入多个包,获取一个帧 int send_packet(std::unique_ptr<IAFPacket> &packet, uint64_t timeOut) override;int getFrame(std::u...
把文件上传到Gitee的详细步骤
目录 第一步:创建一个空仓库 第二步:找到你想上传的文件所在的地址,打开命令窗口,git init 第三步:git add 想上传的文件 ,git commit -m "给这次提交取个名字" 第四步:和咱们在第…...
基于keras中Lenet对于mnist的处理
文章目录 MNIST导入必要的包加载数据可视化数据集查看数据集的分布开始训练画出loss图画出accuracy图 使用数据外的图来测试图片可视化转化灰度图的可视化可视化卷积层的特征图第一层卷积 conv1 和 pool1第二层卷积 conv2 和 pool2 MNIST MNIST(Modified National …...
Python爬虫 教程:IP池的使用
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率…...
Ansible之playbook剧本
一、playbook概述1.1 playbook 介绍1.2 playbook 组成部分 二、playbook 示例2.1 playbook 启动及检测2.2 实例一2.3 vars 定义、引用变量2.4 指定远程主机sudo切换用户2.5 when条件判断2.6 迭代2.7 Templates 模块1.先准备一个以 .j2 为后缀的 template 模板文件,设…...
unique_ptr的大小探讨
unique_ptr大小和删除器有很大关系,具体区别看如下代码的分析。不要让unique_ptr占用的空间太大,否则不会达到裸指针同样的效果。 #include <iostream> #include <memory> using namespace std;class Widget {int m_x;int m_y;int m_z;publ…...
人工智能TensorFlow PyTorch物体分类和目标检测合集【持续更新】
1. 基于TensorFlow2.3.0的花卉识别 基于TensorFlow2.3.0的花卉识别Android APP设计_基于安卓的花卉识别_lilihewo的博客-CSDN博客 2. 基于TensorFlow2.3.0的垃圾分类 基于TensorFlow2.3.0的垃圾分类Android APP设计_def model_load(img_shape(224, 224, 3)_lilihewo的博客-CS…...
ElementPlus·面包屑导航实现
面包屑导航 使用vue3中的UI框架elementPlus的 <el-breadcrumb> 实现面包屑导航 <template><!-- 面包屑 --><div class"bread-container" ><el-breadcrumb separator">"><el-breadcrumb-item :to"{ path:/ }&quo…...
【项目管理】PM vs PMO 18点区别
导读:项目经理跟PMO主要有哪些区别?首先从定义上了解,然后根据其他维度进行对比分析,基本可以了解这二者的区别,文中罗列18点区别供各位参考。 目录 1、定义 1.1 PMO 1.2 PM 2、两者区别 2.1 ROI 2.2 项目成功率…...
13 Python使用Json
概述 在上一节,我们介绍了如何在Python中使用xml,包括:SAX、DOM、ElementTree等内容。在这一节,我们将介绍如何在Python中使用Json。Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法ÿ…...
PDFBOX和ASPOSE.PDF
一、aspose.pdf 文档 https://docs.aspose.com/pdf/java/ 1、按段落分段 /*** docx文本按段分段*/ public static void main(String[] args) {int i 1;try {// 打开文件流FileInputStream file new FileInputStream("I:\\范文.docx");// 创建 Word 文档对象XWPFDo…...
第51节:cesium 范围查询(含源码+视频)
结果示例: 完整源码: <template><div class="viewer"><el-button-group class="top_item"><el-button type=...
YOLOv5改进算法之添加CA注意力机制模块
目录 1.CA注意力机制 2.YOLOv5添加注意力机制 送书活动 1.CA注意力机制 CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地…...
Jmeter系列-阶梯加压线程组Stepping Thread Group详解(6)
前言 tepping Thread Group是第一个自定义线程组但,随着版本的迭代,已经有更好的线程组代替Stepping Thread Group了【Concurrency Thread Group】,所以说Stepping Thread Group已经是过去式了,但还是介绍一下 Stepping Thread …...
图像的几何变换(缩放、平移、旋转)
图像的几何变换 学习目标 掌握图像的缩放、平移、旋转等了解数字图像的仿射变换和透射变换 1 图像的缩放 缩放是对图像的大小进行调整,即 使图像放大或缩小 cv2.resize(src,dsize,fx0,fy0,interpolationcv2.INTER_LINEAR) 参数: src :输入图像dsize…...
计算机网络第四章——网络层(上)
提示:朝碧海而暮苍梧,睹青天而攀白日 文章目录 网络层是路由器的最高层次,通过网络层就可以将各个设备连接到一起,从而实现这两个主机的数据通信和资源共享,之前学的数据链路层和物理层也是将两端连接起来,但是却没有网…...
【MyBatis】一、MyBatis概述与基本使用
Mybatis概述 Mybatis是一个半自动化的框架,需要自己写sql语句,对比JDBC其有耦合性更低的SQL语句与Java代码,各司其职不相互冗杂,对比Hibernate与JPA其又有更灵活的SQL编写能力。 环境搭建 引入相关依赖并打jar包 <dependenc…...
Java事件机制简介 内含面试题
面试题分享 云数据解决事务回滚问题 点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮…...
springMVC基础技术使用
目录 1.常用注解 1.1RequestMapping 1.2.RequestParam 1.3.RequestBody 1.4.PathVariable 2.参数传递 2.1 slf4j-----日志 2.2基础类型 2.3复杂类型 2.4RequestParam 2.5PathVariable 2.6RequestBody 2.7请求方法(增删改查) 3.返回值 3.1void …...
广州招聘网/seo搜索引擎优化期末及答案
2019独角兽企业重金招聘Python工程师标准>>> 类别 比例承担方个人企业五险养老保险法定8%22%企业和个人共同承担医疗保险2%12%失业保险1%2%工伤保险00.5%企业承担生育保险00.8%一金住房公积金非法定12%12%企业和个人共同承担合计23%49.3%1、五险一金缴纳比例&#…...
朔城网站制作/百度seo排名优
解决办法: 代码中设置参数: path_wk r‘D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe‘ #wkhtmltopdf安装位置 config pdfkit.configuration(wkhtmltopdf path_wk) 最后执行转pdf操作 pdfkit.from_string("hello world","1.pd…...
用extjs做的网站/如何提高自己在百度的排名
斐讯N1盒子OpenWRT固件升级全记录2021-02-18 17:10:02178点赞1890收藏208评论前言hello~大家好!时隔一周的时间,我又来分享我的折腾日记了。过年这段时间一直在和家里人、朋友们出去玩耍,每天回家已经很晚了,就没有时间再来研究我…...
织梦网站图标路径/新网站推广方法
软件工程师笔试题笔试时间为60min 请在答题卡上作答,请勿在试卷上进行勾画,感谢您的配合第一部分:判断题1.Java语言是一种面向对象程序设计语言。( )2.在Java有布尔类型,该类型只能有两个值:1和…...
做网站需要学些什么软件/怎么查看网站的友情链接
燕雀安知鸿鹄之志?———《史记陈涉世家》 意思是燕雀怎么能知道鸿鹄的远大志向,比喻平凡的人哪里知道英雄人物的志向。 前文说了 Exectuor 的具体用法,却没有说到如何停止一个任务的执行。所以,本篇文章就来讲解一下 Executor 的生命周期管…...
dhl做运单的网站/企业网站分析报告
在ACE的5.5的版本中,如果在reactor中添加多余64个链接时,就导致core...