【Ansible】01

自动化运维

Ansible

  • Ansible首发于2012年 , 2015年被收购

  • Ansible是一款自动化运维工具 , 基于 Python 开发

  • 基于ssh进行管理 , 不需要在被管理端安装任何软件

  • Ansible主要是通过各种模块进行操作

    • 批量系统配置

    • 批量程序部署

    • 批量运行命令等功能

环境准备

  • 控制节点主机 : 192.168.88.240
  • 被控制节点主机 : 192.168.88.{11,12,13}
配置网络yum源

/var/ftp/dvd 挂载

创建 /var/ftp/rpms 放新包

# 在192.168.88.240上配置yum源# 将/linux-soft/s2/目录下的ansible目录中rpm包拷贝到yum服务器的rpms目录[root@myhost ~]# scp /linux-soft/s2/zzg/ansible_soft/* 192.168.88.240:/var/ftp/rpms# 更新yum服务器仓库源[root@pubserver ~]# createrepo /var/ftp/rpms/# 4台主机的yum全为以下配置[root@pubserver ~]# vim /etc/yum.repos.d/local.repo[BaseOS]
name = BaseOS
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0
[AppStream]
name = AppStream
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0
[rpms]
name = rpms
baseurl = ftp://192.168.88.240/rpms
enabled = 1
gpgcheck = 0
安装 Ansible
yum install -y ansible
  • 配置名称解析 , 能够通过名字访问所有节点
  • 配置可以通过ssh到所有节点免密登录
# 配置名称解析[root@pubserver ~]# echo -e "192.168.88.240\tpubserver" >> /etc/hosts[root@pubserver ~]# for i in 1 2
> do
> echo -e "192.168.88.1$i\tweb$i" >> /etc/hosts
> done[root@pubserver ~]# echo -e "192.168.88.13\tdb1" >> /etc/hosts[root@pubserver ~]# tail -4 /etc/hosts192.168.88.240   pubserver
192.168.88.11    web1
192.168.88.12    web2
192.168.88.13    db1# 配置免密登陆[root@pubserver ~]# ssh-keygen   # 三个问题都直接回车,使用默认值# 执行以下命令时,可能需要回答yes和远程用户的密码,请按提示操作[root@pubserver ~]# for i in web{1..2} db1
> do
> ssh-copy-id $i
> done
配置Ansible管理环境
  • 使用一套ansible软件 , 可能需要管理多种环境.
  • 通过创建不同的工作目录 , 来实现响应的管理需求
  • 将某一环境下的主机写入到对应工作目录的主机清单文件
  • 进入对应的工作目录执行管理任务 , 就可以管理相应环境的主机
# 创建ansible工作目录,目录名自己定义,不是固定的。
[root@pubserver ~]# mkdir ansible
[root@pubserver ~]# cd ansible
[root@pubserver ansible]# touch ansible.cfg inventory# 创建配置文件。默认的配置文件是/etc/ansible/ansible.cfg,但是一般不使用它,而是在工作目录下创建自己的配置文件
[root@pubserver ansible]# vim ansible.cfg    #文件名必须是ansible.cfg
[defaults]
host_key_checking = false   # 不检查主机密钥,=号两边空格可有可无。
inventory = inventory       # 定义主机清单文件为当前目录的inventory# 创建主机清单文件。写在[]里的是组名,[]下面的是组内的主机名[root@pubserver ansible]# vim inventory
[webservers]
web[1:2]   # web1和web2的简化写法,表示从1到2[dbs]
db1# cluster是组名,自定义的;:children是固定写法,表示下面的组名是cluster的子组。
[cluster:children]
webservers
dbs# 查看被管理的所有的主机。注意,一定在工作目录下执行命令。
[root@pubserver ansible]# ansible all --list-hostshosts (3):web1web2db1# 查看webservers组中所有的主机
[root@pubserver ansible]# ansible webservers --list-hostshosts (2):web1web2

Ansible 管理( adhoc )

  • ansible 进行远程管理的方法有两个
    • adhoc临时命令
      • 在命令行上执行管理命令
    • playbook剧本
      • 把管理任务用特定格式写到文件中
  • 无论哪种方式 , 都是通过模块加参数进行管理
adhoc 临时命令
1. ansible 语法

ansible 主机或组列表 -m 模块 -a “参数” # -a 是可选的

例:

所有输出hello ansible all -a “echo hello”

通过ping模块测试到远程主机的连通性 ansible all -m ping
#该命令检查是否可以管理远程主机。如果结果为绿色的SUCCESS,则表示成功。
#如果是红色的UNREACHABLE,则检查网络是否可通,是否已经可以免密登陆

2. ansible 模块
  • 在ansible中 , 通过模块来完成某一特定任务

  • 模块的使用方式都一样 , 主要是查看该模块的参数

1) 查看模块
# 列出全部可用模块,按空格键向下翻页,按q退出
[root@pubserver ansible]# ansible-doc -l# 列出模块数量
[root@pubserver ansible]# ansible-doc -l | wc -l  # 如有WARNING提示,可忽略
7214# 查看包含yum的模块名
[root@pubserver ansible]# ansible-doc -l | grep yum# 查看yum模块的帮助文档,按空格键向下翻页,按q退出
[root@pubserver ansible]# ansible-doc yum
2) command 模块
  • ansible 默认模块 , 用于在远程主机上执行任意命令
  • command 不支持shell特性 , 如管道 , 重定向
# 在所有被管主机上创建目录/tmp/demo
[root@pubserver ansible]# ansible all -a "mkdir /tmp/demo"# 查看we1的ip地址
[root@pubserver ansible]# ansible web1 -a "ip a s"
[root@pubserver ansible]# ansible web1 -m command -a "ip a s"
[root@pubserver ansible]# ansible web1 -a "ip a s | head"  # 报错
3) shell模块
  • 与 command 模块类似 , 但支持 shell 特性 , 如管道 , 重定向
# 查看web1的ip地址,只显示前10行
[root@pubserver ansible]# ansible web1 -m shell -a "ip a s | head"
4) script 模块
  • 用于在远程主机上执行脚本
# 在控制端创建脚本即可[root@pubserver ansible]# vim test.sh
#!/bin/bash
for user in user{1..5}
douseradd $userecho '123456' | passwd --stdin $user
done# 在webservers组的主机上执行脚本
[root@pubserver ansible]# ansible webservers -m script -a "test.sh"
5) file 模块
  • 可以创建文件 , 目录 , 链接 等 , 还可以修改权限 , 属性 等
  • 选项
    • path # 指定文件路径
    • owner # 设置文件所有者
    • group # 设置文件所属组
    • state # 状态
      • touch # 创建文件
      • directory # 表示创建目录
      • link # 创建软连接
      • hard # 创建硬连接
      • absent # 表示删除
    • mode # 设置权限
    • src # source的简写 , 源
    • dest # destination的简写 , 目标
# 查看使用帮助[root@pubserver ansible]# ansible-doc file
... ...
EXAMPLES:
- name: Change file ownership, group and permissions  # 忽略ansible.builtin.file:           # 模块名。以下是它的各种参数path: /etc/foo.conf           # 要修改的文件的路径owner: foo                    # 文件所有者group: foo                    # 文件的所有组mode: '0644'                  # 权限
... ...# 根据上面的example,-m file -a的内容就是doc中把各参数的冒号换成=号# 在webservers组的主机上创建/tmp/file.txt
[root@pubserver ansible]# ansible webservers -m file -a "path=/tmp/file.txt state=touch"  
# touch是指如果文件不存在,则创建;如果存在则改变它的时间戳# 在webservers组的主机上创建/tmp/demo目录
[root@pubserver ansible]# ansible webservers -m file -a "path=/tmp/demo state=directory"# 将webservers组的主机上/tmp/file.txt的属主改为sshd,属组改为adm,权限改为0777
[root@pubserver ansible]# ansible webservers -m file -a "path=/tmp/file.txt owner=sshd group=adm mode='0777'"
[root@pubserver ansible]# ansible webservers -a "ls -l /tmp/file.txt"# 删除webservers组的主机上/tmp/file.txt
[root@pubserver ansible]# ansible webservers -m file -a "path=/tmp/file.txt state=absent"    # absent英文缺席的、不存在的# 删除webservers组的主机上/tmp/demo
[root@pubserver ansible]# ansible webservers -m file -a "path=/tmp/demo state=absent"# 在webservers组的主机上创建/etc/hosts的软链接,目标是/tmp/hosts.txt
[root@pubserver ansible]# ansible webservers -m file -a "src=/etc/hosts dest=/tmp/hosts.txt state=link"
6) copy 模块
  • 控制端 ---------------> 被控制端
  • 用于将文件从控制端拷贝到被控制端
  • 上传
  • 选项
    • src # 源 , 控制端的文件路径
    • dest # 目标 , 被控制端的文件路径
    • contest # 内容 , 需要写到文件中的内容
[root@pubserver ansible]# echo "AAA" > a3.txt# 将a3.txt拷贝到webservers主机的/root/
[root@pubserver ansible]# ansible webservers -m copy -a "src=a3.txt dest=/root/"# 在目标主机上创建/tmp/mytest.txt,内容是Hello World
[root@pubserver ansible]# ansible webservers -m copy -a "content='Hello World' dest=/tmp/mytest.txt"
7) fetch 模块
  • 被控制端 -------------> 控制端
  • 下载
  • 选项
    • src # 源 , 被控制端文件路径
    • dest # 目标 , 控制端的文件路径
# 将webservers主机上的/etc/hostname下载到本地用户的家目录下
[root@pubserver ansible]# ansible webservers -m fetch -a "src=/etc/hostname dest=~/"[root@pubserver ansible]# ls /root/web1/etc/   
hostname
[root@pubserver ansible]# ls /root/web2/etc/
hostname
8) lineinfile 模块
  • 用于确保目标文件中有某一行内容
  • 选项
    • path # 待修改的文件路径
    • line # 写入文件的一行内容
    • regexp # 正则表达 , 用于查找文件中的内容
# webservers组中的主机,/etc/issue中一定要有一行Hello World。如果该行不存在,则默认添加到文件结尾
[root@pubserver ansible]# ansible webservers -m lineinfile -a "path=/etc/issue line='Hello World'"# webservers组中的主机,把/etc/issue中有Hello的行,替换成chi le ma
[root@pubserver ansible]# ansible webservers -m lineinfile -a "path=/etc/issue line='chi le ma' regexp='Hello'"
# 替换整行
9) replace 模块
  • replace替换单词
  • 选项
    • path # 文件路径
    • replace # 将查找到的内容替换
    • regexp # 正则 , 查找文件中的内容
# 把webservers组中主机上/etc/issue文件中的chi,替换成he
[root@pubserver ansible]# ansible webservers -m replace -a "path=/etc/issue regexp='chi' replace='he'"
10) user模块
  • 实现Linux用户管理
  • 选项
    • name # 待创建用户名
    • uid # 用户ID
    • group # 设置主组
    • groups # 设置附加组
    • home # 设置家目录
    • password # 设置用户密码
    • state #状态
      • present # 创建 , 默认选项
      • absent # 删除
    • remove # 删除家目录, 邮箱等. 值为 yes 或 true 都可以
# 在webservers组中的主机上,创建zhangsan用户
[root@pubserver ansible]# ansible webservers -m user -a "name=zhangsan"# 在webservers组中的主机上,创建lisi用户。设置其uid为1010,主组是adm,附加组是daemon和root,家目录是/home/lisi
[root@pubserver ansible]# ansible webservers -m user -a "name=lisi uid=1010 group=adm groups=daemon,root home=/home/lisi"# 设置zhangsan的密码是123456
# {{}}是固定格式,表示执行命令。password_hash是函数,sha512是加密算法,则password_hash函数将会把123456通过sha512加密变成zhangsan的密码
[root@pubserver ansible]# ansible webservers -m user -a "name=zhangsan password={{'123456'|password_hash('sha512')}}"# 删除zhangsan用户,不删除家目录
[root@pubserver ansible]# ansible webservers -m user -a "name=zhangsan state=absent"# 删除lisi用户,同时删除家目录
[root@pubserver ansible]# ansible webservers -m user -a "name=lisi state=absent remove=yes"
11) group 模块
  • 创建 , 删除组
  • 选项
    • name # 待创建的组名
    • gid # 组的ID号
    • state # 状态
      • present # 创建 , 默认选项
      • absent # 删除
# 在webservers组中的主机上创建名为devops的组
[root@pubserver ansible]# ansible webservers -m group -a "name=devops"# 在webservers组中的主机上删除名为devops的组  
[root@pubserver ansible]# ansible webservers -m group -a "name=devops state=absent"
12) yum_repository
  • 用于配置yum

  • 选项

    • file # 指定文件名
    • name # yum内配置名
    • description #name=
    • baseurl # baseurl
    • gpgcheck # yes/no
    • enabled #yes
[root@pubserver ansible]# ansible webservers -m yum_repository -a "file=myrepo \
name=myApp \
description='My App' \
baseurl=ftp://192.168.88.240/dvd/AppStream \
gpgcheck=no \
enabled=yes"[root@web1 ~]# cat /etc/yum.repos.d/myrepo.repo 
[myApp]
async = 1
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0
name = My App
13) yum模块
  • 用于rpm软件包的管理 , 安装 , 升级 , 卸载
  • 选项
    • name # 包名
    • state # 状态
      • present # 安装
      • latest # 安装或升级到最新版本
      • absent # 卸载
# 在webservers组中的主机上安装tar
[root@pubserver ansible]# ansible webservers -m yum -a "name=tar state=present"# 在webservers组中的主机上安装wget、net-tools
[root@pubserver ansible]# ansible webservers -m yum -a "name=wget,net-tools"# 在webservers组中的主机上卸载wget
[root@pubserver ansible]# ansible webservers -m yum -a "name=wget state=absent"
14) service 模块
  • 用于控制服务.启动 , 关闭 , 重启 , 开机自启
  • 常用选项:
    • name # 控制的服务名
    • state # 状态
      • started # 启动
      • stopped # 关闭
      • restarted # 重启
    • enabled # yes 开机自启 , no 开机不自启
# 在test主机上安装nginx
[root@pubserver ansible]# ansible webservers -m yum -a "name=nginx state=latest"#  在test主机上启动nginx,并设置它开机自启
[root@pubserver ansible]# ansible webservers -m service -a "name=nginx state=started enabled=yes"
15) lvg模块
  • 创建 , 删除卷组 , 修改卷组大小
  • 选项
    • vg # 定义卷组名
    • pvs # 由哪些物理卷构成
# 在web1上安装lvm2,state不写,默认是present
[root@pubserver ansible]# ansible web1 -m yum -a "name=lvm2"# 手工在web1上对vdb进行分区
[root@web1 ~]# fdisk /dev/vdb
Command (m for help): g    # 创建GPT分区表
Command (m for help): n    # 新建分区
Partition number (1-128, default 1):    # 回车,使用1号分区
First sector (2048-41943006, default 2048):   # 起始位置,回车
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006, default 41943006): +5G   # 结束位置+5G
Command (m for help): n   # 新建分区
Partition number (2-128, default 2):   # 回车,使用2号分区
First sector (10487808-41943006, default 10487808): # 起始位置,回车
Last sector, +sectors or +size{K,M,G,T,P} (10487808-41943006, default 41943006): # 结束位置,回车,分区到结尾
Command (m for help): w   # 存盘[root@web1 ~]# lsblk    # vdb被分出来了两个分区
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   30G  0 disk 
`-vda1 253:1    0   20G  0 part /
vdb    253:16   0   20G  0 disk 
|-vdb1 253:17   0    5G  0 part 
`-vdb2 253:18   0   15G  0 part 
vdc    253:32   0   20G  0 disk # 在web1上创建名为myvg的卷组,该卷组由/dev/vdb1组成
[root@pubserver ansible]# ansible web1 -m lvg -a "vg=myvg pvs=/dev/vdb1"# 在web1上查看卷组
[root@web1 ~]# vgsVG   #PV #LV #SN Attr   VSize  VFree myvg   1   0   0 wz--n- <5.00g <5.00g# 扩容卷组。卷组由PV构成,只要向卷组中加入新的PV,即可实现扩容
[root@pubserver ansible]# ansible web1 -m lvg -a "vg=myvg pvs=/dev/vdb1,/dev/vdb2"[root@web1 ~]# vgs  # 在web1上查看卷组VG   #PV #LV #SN Attr   VSize  VFree myvg   2   0   0 wz--n- 19.99g 19.99g
16) lvol 模块
  • 创建 , 删除逻辑卷 , 修改逻辑卷大小
  • 选项
    • vg # 指定在哪个卷组上创建逻辑卷
    • lv # 创建的逻辑卷名
    • size # 逻辑卷大小 , 不写单位 , 以M为单位
# 在web1上创建名为mylv的逻辑卷,大小为2GB
[root@pubserver ansible]# ansible web1 -m lvol -a "vg=myvg lv=mylv size=2G"# 在web1上查看逻辑卷
[root@web1 ~]# lvsLV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertmylv myvg -wi-a----- 2.00g   # mylv扩容至4GB
[root@pubserver ansible]# ansible web1 -m lvol -a "vg=myvg lv=mylv size=4G"[root@web1 ~]# lvs  # 在web1上查看逻辑卷LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertmylv myvg -wi-a----- 4.00g   
17) filesystem模块
  • 格式化 , 创建文件系统
  • 选项
    • fstype # 指定文件系统类型
    • dev # 指定要格式化的设备 , 可以是分区 , 可以是逻辑卷
#  在web1上,把/dev/myvg/mylv格式化为xfs
[root@pubserver ansible]# ansible web1 -m filesystem -a "fstype=xfs dev=/dev/myvg/mylv"# 在web1上查看格式化结果
[root@web1 ~]# blkid /dev/myvg/mylv
/dev/myvg/mylv: UUID="46c0af72-e517-4b15-9e53-ec72fbe1d96e" TYPE="xfs"
18) mount 模块
  • 用于挂载文件系统

  • 选项

    • path # 挂载点 , 可自动创建
    • src # 待挂载的设备
    • fstype # 文件系统类型
    • state # 状态
      • mounted # 表永久挂载
# 在web1上,把/dev/myvg/mylv永久挂载到/data
[root@pubserver ansible]# ansible web1 -m mount -a "path=/data src=/dev/myvg/mylv state=mounted fstype=xfs"# 在web1上查看
[root@web1 ~]# tail -1 /etc/fstab 
/dev/myvg/mylv /data xfs defaults 0 0
[root@web1 ~]# df -h /data/
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv  4.0G   61M  4.0G   2% /data# 在web1上,卸载/dev/myvg/mylv
[root@pubserver ansible]# ansible web1 -m mount -a "path=/data state=absent"# 在web1上,强制删除/dev/myvg/mylv
[root@pubserver ansible]# ansible web1 -m lvol -a "lv=mylv state=absent vg=myvg force=yes"   # force是强制# 在web1上,删除myvg卷组
[root@pubserver ansible]# ansible web1 -m lvg -a "vg=myvg state=absent"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCB走线宽度、PCB走线宽度计算、PCB走线宽度和电流

目录 一、什么是PCB走线宽度&#xff1f; 二、什么是走线&#xff1f; 三、哪些因素对走线宽度至关重要&#xff1f; 1、信号走线 2、电源走线 3、直线宽度和信号反射 四、怎么计算PCB走线宽度&#xff1f; 1、使用PCB走线宽度计算器 2、使用方程式 五、怎么计算PCB 走…

UGUI父对象自适应子元素布局解决方案

问题描述 在UI开发中&#xff0c;难免会遇到需要父对象自适应子元素尺寸的问题&#xff0c;这通常是为了解决不同屏幕分辨率的UI自适应问题。实际上我们去仔细了解UGUI的布局组件的原理就能够合理配置组件来解决这个问题。 案例问题&#xff1a;例如我现在有一个背景面板&#…

25计算机考研院校数据分析 | 上海交通大学

上海交通大学电子信息与电气工程学院成立于2001年12月&#xff0c;其前身可湖源至百年前的电机专科&#xff0c;具有中国电气工程师“摇篮”之美称。50年代根据学科发展需要分为电工与计算机科学系(三系)和电子工程系(四系)。1985年&#xff0c;三系和四系合并&#xff0c;成立…

Abaqus2024 安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到Abaqus2024”。 鼠标右击“此电脑”&#xff0c;选择“属性”。 点击“高级系统设置”。 点击“环境变量”。 点击“新建”。 变量名输入&#xff1a;NOLICENSECHECK 变量值输入&#xff1a;true 然后点击“确定”。 点击“确定”。…

【大模型系列】预训练

数据 数据预处理 预处理流程&#xff1a; 原始语料库—>质量过滤&#xff08;语种过滤、统计过滤、关键词过滤、分类器过滤&#xff09;—>敏感内容过滤&#xff08;有毒内容、隐私内容PII&#xff09;—>数据去重&#xff08;句子级别、文档级别、数据集级别&#…

【vue】el-tree的新增/编辑/删除节点

1、概述 关于树形结构的新增同级节点&#xff0c;新增子级节点&#xff0c;修改节点名称&#xff0c;删除节点等四种操作&#xff0c;各种参数配置完全继承el-tree&#xff0c;本篇使用vue2 element-ui 2、效果图展示 3、调用方式 <template><Tree:data"tree…

2024-04-22(AJAX)

1.什么是Ajax 使用浏览器的XMLHttpRequest对象和服务器进行通信 浏览器网页中&#xff0c;使用Ajax技术&#xff08;XMLHttpRequest对象&#xff09;发起获取服务器数据的请求&#xff0c;服务器将数据给前端&#xff0c;前端拿到数据后&#xff0c;展示到网页。 2.为什么学…

椋鸟数据结构笔记#11:排序·下

文章目录 外排序&#xff08;外部排序&#xff09;文件拆分并排序归并文件两个文件归并多文件归并优化 萌新的学习笔记&#xff0c;写错了恳请斧正。 外排序&#xff08;外部排序&#xff09; 当数据量非常庞大以至于无法全部写入内存时&#xff0c;我们应该怎么排序这些数据呢…

Route Discovery Route Repair

1. Route Discovery 当单播消息从一台设备发送到另一台设备&#xff0c;并且没有预先存在的路由时&#xff0c;会发起路由发现。 我们假设没有现有的路由&#xff0c;因此网络软件将开始路由发现过程。为简单起见&#xff0c;假设所有设备的路由表都为空。 以设备A向设备C发送…

Java对象在什么时候被销毁?

在Java中&#xff0c;对对象的销毁主要是由Java 的垃圾回收机制&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;管理的&#xff0c;开发者一般无需显式地进行对象销毁。 当一个对象在内存中不再被任何地方引用的时候&#xff0c;它就会被视为“垃圾”&#xff0c…

[lesson49]多态的概念和意义

多态的概念和意义 函数重写回顾 父类中被重写的函数依然会继承给子类 子类中重写的函数将覆盖父类中的函数 通过作用域分辨符(::)访问父类中的同名成员 多态的概念和意义 面向对象中期望的行为 根据实际的对象类型判断如何调用重写函数父类指针(引用)指向 父类对象则调用…

【LeetCode】---118.杨辉三角

一、题目解析&#xff1a; 二、知识回顾&#xff1a; 1.二维数组&#xff1a; 2. C语言中的二维数组访问方式和vector二维数组的访问&#xff0c; 不同区别&#xff1a; &#xff08;1&#xff09;表面是一样的&#xff0c;但底层不同&#xff01; &#xff08;2&#xff09;静…

JAVA 项目<果园之窗>_2

上节主要是理论流程&#xff0c;这次直接用实际例子过一遍整个流程 目标是向数据库添加一个员工 上述是前端页面&#xff0c;点击保存 浏览器向我后端发送http请求 后端这一部分专门接收employee请求 在这里对http post请求进行转换成JAVA数据&#xff0c;并处理数据&#xff…

在linux系统中启动pycharm

1.找到pycharm的安装路径&#xff0c;一般在下载文件夹中 2.进入pycharm的安装路径&#xff0c;进入bin目录 3.右击&#xff0c;打开终端&#xff0c;输入./pycharm.sh

奇妙的探索——偶然发现的bug

今天想在腾讯招聘官网找几个前端的岗位投一下&#xff0c;最近自己也在找工作&#xff0c;结果简历还没有投出去&#xff0c;就发现了腾旭招聘官网的3个前端bug。 1.有时候鼠标hover还没有滑倒下拉选框的菜单上&#xff0c;就消失了&#xff0c;消失的太快了&#xff0c;根本点…

为智算产业高质量发展探寻路径,又一重要生态合作启动

4月22日&#xff0c;由中国工业经济联合会主办的“2024中国工业经济高峰论坛智能算力产业高质量发展论坛”落幕。院士专家、研究机构、以及来自智能算力产业上下游企业代表近180人出席&#xff0c;围绕完善算力基础设施、深化算力赋能行业应用、推动区域数字化发展等热点议题展…

信息物理系统技术概述_2.信息物理系统的建设和应用

1.CPS应用场景概览 目前&#xff0c;CPS受到工业领域的广泛关注&#xff0c;并已在多个环节得到应用和体现。通过对目前CPS在工业领域中的应用程度、重要性、代表性进行筛选和考量&#xff0c;本文选择从智能设计、智能生产、智能服务、智能应用这四个方面&#xff0c;结合CPS的…

Linux加强篇-Vim编辑器

目录 ⛳️推荐 Vim文本编辑器 编写简单文档 配置主机名称 配置网卡信息 配置软件仓库 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 Vim文本编辑器 在Linux系统中一切都…

重磅发布 | 《网络安全专用产品指南》(第一版)

2017年6月1日&#xff0c;《中华人民共和国网络安全法》正式实施&#xff0c;明确规定“网络关键设备和网络安全专用产品应当按照相关国家标准的强制性要求&#xff0c;由具备资格的机构安全认证合格或者安全检测符合要求后&#xff0c;方可销售或者提供。国家网信部门会同国务…

MySQL 基础语法(3)

文章目录 SELECT 语句WHERE 语句ORDER BYLIMIT 语句UPDATAE 语句DELETE 语句TRUNCATE插入查询结果聚合函数 本文内容主要是表数据查询的基本语法 库结构基础语法 表结构基础语法 SELECT 语句 全列查询 SELECT * FROM 表名;生产情况下几乎不能用&#xff0c;会导致MySQL服务器…