当前位置: 首页 > news >正文

day30(8/16)——ansible

目录

一、回顾

1、mysql和python

        1. mysql5.7

        2. 可以使用pymysql非交互的管理mysql

2、mycat中间件

        1. 独属于mysql主从的负载均衡策略

        2.配置写主读从

        3. 步骤

                3.1 安装jdk

                3.2 mycat

                3.3 配置

                3.4 启动和调试

二、运维自动化(ansible)

1、任务背景

2、任务拆解

3、学习目标

三、认识自动化运维

1、问题:

 2、自动化运维主要关注的方面

3、常见的开源自动化运维工具比较

1. puppet(拓展)

2. saltstack(拓展)

3. ansible

四、ansible

1、坏境

2、在m0安装ansible(搭建四台机器 m0 s0 s1 s2)

3、实现master对agent的免密登录,(s0 和s1)

4、在master上定义主机组,并测试连接

练习:

五、ansible模块

1、查看所有支持模块

2、查看所有ping模块

3、hostname模块(用于修改主机名)

4、file模块(重点)

 5、stat模块(了解) 

6、copy模块

(1)copy模块

(2)使用content参数远程给文件里写入内容(会覆盖原内容)

(3)使用force参数控制是否强制覆盖

(4)使用backup参数控制是否备份文件

(5)copy模块拷贝时要注意拷贝目录后面是否带"/"符号

7、 fetch模块

8、user模块

9、group模块

10、cron模块

11、yum_repository模块

12、yum模块(重点)

13、service模块(重点)

14、command与shell模块


一、回顾
1、mysql和python
        1. mysql5.7

                1.1 不需要执行mysql_ssl_rsa_setup

                1.2 Change_master_to. 不需要get public key

        2. 可以使用pymysql非交互的管理mysql


                2.1 conn=pymysql.connect(host,user,password,database,port)

                2.2 cursor=conn.cursor()

                2.3 cursor.execute("create user...")

                2.4 cursor.execute("grant 权限 on 库.表 to 用户")

                2.5 conn.commit()

                2.6 cursor.fetchall()

2、mycat中间件
        1. 独属于mysql主从的负载均衡策略
        2.配置写主读从
        3. 步骤
                3.1 安装jdk

                tar -xf jdk_8u192.tar.gz

                cp jdk/ /usr/local/jdk

                sed -i '$aexport JAVA_HOME=/usr/local/jdk' /etc/profile

                sed -i '$aexport PATH=$PATH:$JAVA_HOME:/bin' /etc/profile

                source /etc/profile

                javac -version

                3.2 mycat


                tar -xf MyCat.tar.gz

                cp -r mycat/ /usr/local/

                 #测试启动

                /usr/local/mycat/bin/mycat console       //用控制台打印

                3.3 配置

                        (1) server.xml  

 <user name="blt" defaultAccount="true"><property name="password">blt</property><property name="schemas">test</property><!--<user name="user"><property name="password">user</property><property name="schemas">TESTDB</property><property name="readOnly">true</property></user>
-->

                        (2) schema.xml

        <schema name="test" dataNode="dn1" checkSQLschema="false" sqlMaxLimit="100"></schema><dataNode name="dn1" dataHost="localhost1" database="test" /><writeHost host="hostM1" url="192.168.8.150:3306" user="blt"password="blt"><readHost host="hostS2" url="192.168.8.151:3310" user="blt" password="blt" /></writeHost>
                3.4 启动和调试


                        (1)/usr/local/mycat/bin/mycat start

                          (2) netstat -lnput | grep 8066

                          (3) mysql -hmycat的ip或者域名 -P8066 -userver.xml中填入账号 -p在service.xml中填入的密码

                        (4) cat /usr/local/mysql/logs/wrapper.log

                                1. cause by.... 

二、运维自动化(ansible)
1、任务背景

公司的服务器越来越多,维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行,服务器多了之后,shell脚本无法实现高效率运维。这种情况下,我们需要引入自动化运维工具,对多台服务器实现高效运维。

2、任务拆解

1. 需要一台服务器做管理端,来连接管理所有的应用服务器

2. 考虑如果只针对一部分应用服务器进行运维操作如何实现(服务器分组)

3. 学会将平台烂熟于心的linux操作命令转化为自动化运维的方式(常见模块的学习)

4. 如果操作非常的冗长,学会使用playbook和role的方式来管理

3、学习目标

能够安装ansible服务器和客户端

能够定义ansible主机清单进行服务器分组

能够使用hostname模块修改主机名

能够使用file模块做基本的文件操作

能够使用copy模块把文件拷贝到远程机器

能够使用fetch模块把文件从远程拷贝到本地

能够使用user模块管理用户

能够使用group模块管理用户组

能够使用cron模块管理时间任务

能够使用yum_repository模块配置yum

能够使用yum模块安装软件包

能够使用service模块控制服务的启动,关闭,开机自启动

能够使用script模块在远程机器上执行本地脚本

能够使用command与shell模块远程执行命令

能够编写playbook实现httpd

三、认识自动化运维
1、问题:

假设我要去1000台服务上做一个操作(如nginx服务器修改配置文件里的某一个参数),下面两种方法缺点明显:

1. 按传统的方法,一台连着一台服务器的ssh上去手动操作。

        缺点: 效率太低。

2. 写个shell脚本来做。

        缺点:

                1. 管理的机器平台不一致,脚本可能不具备通用性。

                2. 传密码麻烦(在非免密登录的环境下,需要expect来传密码)

                3. 效率较低,循环1000次也需要一个一个的完成,如果用&符放到后台执行,则会产生1000个进程。

自动化运维:将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”的IT运维。

 2、自动化运维主要关注的方面

假如管理很多台服务器,主要关注以下几个方面:

1. 管理机与被管理机的连接(管理机如何将管理指令发送给被管理机)

2. 服务器信息收集(如果被管理的服务器有centos7.5外还有其它
linux发行版,如suse,ubuntu等。当你要做的事情在不同OS上有所
不同,你需要收集信息,并将其分开处理)

3. 服务器分组(因为有些时候我要做的事情不是针对所有服务器,可
能只针对某一个分组)

4. 管理内容的主要分类

        4.1 文件目录管理(包括文件的创建,删除,修改,查看状态,远程拷贝等)

        4.2 用户和组管理

        4.3 cron时间任务管理

        4.4 yum源配置与通过yum管理软件包

        4.5 服务管理

        4.6 远程执行脚本

        4.7 远程执行命令

3、常见的开源自动化运维工具比较
1. puppet(拓展)

基于ruby语言,成熟稳定。适合于大型架构,相对于ansible和saltstack会复杂些。

2. saltstack(拓展)

基于python语言。相对简单,大并发能力比ansible要好,需要维护被管理端的服务。如果服务断开,连接就会出问题。

3. ansible

基于python语言。简单快捷,被管理端不需要启服务。直接走ssh协议,需要验证所以机器多的话速度会较慢。

四、ansible
1、坏境

m0           192.168.1.67    管理机
s1             192.168.1.68    被管理
s2             192.168.1.69    被管理
s3             192.168.1.70    被管理

2、在m0安装ansible(搭建四台机器 m0 s0 s1 s2)

[root@m0 ~]# yum -y install epel-release
[root@m0 ~]# yum -y install ansible

[root@m0 ~]# ansible --version
ansible 2.9.27
[root@m0 ~]# find /etc/ -name "*ansible*"
/etc/ansible
/etc/ansible/ansible.cfg

3、实现master对agent的免密登录,(s0 和s1)

[root@m0 ~]# ssh -keygen
[root@m0 ~]# ls ./.ssh/
id_rsa  id_rsa.pub
[root@m0 ~]# cat ./.ssh/id_rsa.pub
[root@m0 ~]# ssh-copy-id -i 192.168.8.157
[root@m0 ~]# ssh-copy-id -i 192.168.8.158

4、在master上定义主机组,并测试连接

[root@m0 ~]# vim /etc/ansible/hosts    //写两个组,01组两个都是做免密的,02组两个免密,一个没做免密

[group01]
192.168.1.68
192.168.1.69[group02]
192.168.1.68
192.168.1.69
192.168.1.70

[root@m0 ~]# ansible 192.168.1.68 -m ping    //ping1.68主机

192.168.1.68 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}

[root@m0 ~]# ansible group01 -m ping       //ping  group01组(1.68,1.69)

192.168.1.68 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
192.168.1.69 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}

[root@m0 ~]# ansible group02 -m ping     //pinggroup02组,没有做免密的s3没有成功

The authenticity of host '192.168.1.70 (192.168.1.70)' can't be established.
ECDSA key fingerprint is SHA256:vcks5uGmemwyxNBSF54XWNYY0tCzHAh/OP4IJPQeSFI.
ECDSA key fingerprint is MD5:83:fe:4f:99:f8:7a:a1:9c:fb:94:c4:e3:81:3c:e2:a8.
Are you sure you want to continue connecting (yes/no)? yes
192.168.1.68 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
192.168.1.69 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
192.168.1.70 | UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '192.168.1.70' (ECDSA) to the list of known hosts.\r\nPermission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true
}

没有免密登陆的用户可以指定用户名和密码可以利用别名来传递端口密码

[root@m0 ~]# vim /etc/ansible/hosts 

[group01]
192.168.1.68
192.168.1.69other ansible_ssh_host=192.168.1.70 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q[group02]
192.168.1.68
192.168.1.69
other

[root@m0 ~]# ansible group02 -m ping     //三台都ping成功了

192.168.1.69 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
192.168.1.68 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
other | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}

可以直接ping别名

[root@m0 ~]# ansible other -m ping     //单独ping  other(1.70)也是可以成功的

other | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
练习:

不论你⽤哪种环境(免密或不免密,端⼝是否22), 请最终将两台被管理机器加⼊到group1组即可

[root@m0 ~]# vim /etc/ansible/hosts 

web01 ansible_ssh_host=192.168.1.68 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q
web02 ansible_ssh_host=192.168.1.69 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q
[group01]
web01
web02

[root@m0 ~]# ansible group01 -m ping

web02 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
web01 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
五、ansible模块

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

ansible支持的模块非常的多,我们并不需要把每个模块都记住,而只需要熟悉一些常见的模块,其它的模块在需要用到时再查询即可。

1、查看所有支持模块

[root@m0 ~]# ansible-doc -l  

官⽹模块⽂档地址: https://docs.ansible.com/ansible/latest/modules
/list_of_all_modules.html

2、查看所有ping模块

[root@m0 ~]# ansible-doc ping

3、hostname模块(用于修改主机名)

[root@m0 ~]# ansible group02 -m hostname -a 'name=ab.tdr.tds'    //三台主机的名字都被改成了ab.tdr.tds

4、file模块(重点)

                       ——用于对文件相关的操作(创建,删除,软硬钟接等)

# path        文件的地址
# state        方法
# directory 创建目录
# touch         创建文件

# absent         删除文件
# link                创建软链接
# hard        创建硬链接

# recurse        允许递归操作

# src        文件源

 [root@m0 ~]# ansible group01 -m file -a 'path=/tmp/abc state=directory'     //三台主机都被创建了abc目录
[root@m0 ~]# ansible group02 -m file -a 'path=/tmp/abc recurse=yes owner=bin group=daemon mode=1777'       //给属性
[root@m0 ~]# ansible group02 -m file -a 'path=/tmp/abc state=absent'  //删除这三台机子的/tmp/abc目录
[root@m0 ~]# ansible group02 -m file -a 'path=/tmp/aaa state=touch owner=bin group=daemon mode=1777'   //创建文件并给属性
[root@m0 ~]# ansible group02 -m file -a 'src=/etc/fstab path=/tmp/xxx state=link'        //创建一个软链接
[root@m0 ~]# ansible group02 -m file -a 'src=/etc/fstab path=/tmp/xxx2 state=hard'          //创建一个硬链接

 5、stat模块(了解) 

[root@m0 ~]# ansible group02 -m stat -a 'path=/etc/fstab'

6、copy模块

copy模块用于对文件的远程拷贝操作(如把本地的文件拷贝到远程的机器上)

(1)copy模块

[root@m0 ~]# ls
mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
[root@m0 ~]# mv mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz my57.tar.gz
[root@m0 ~]# ls
my57.tar.gz

[root@m0 ~]# ansible group02 -m copy -a 'src=./mysql57.tar.gz dest=~'    

                                                          //把文件mysql57.tar.gz传到另外三台主机的家(~)目录下

[root@s0 ~]# ls
my57.tar.gz

(2)使用content参数远程给文件里写入内容(会覆盖原内容)

[root@m0 ~]# ansible group02 -m copy -a 'content="wo ha ha ha" dest=~/a.sh'  

注意:ansible中-a后⾯的参数⾥也有引号时,记得要单引双引交叉使⽤,如果都为双引或单引会出现问题

[root@s0 ~]# ls 
test
[root@s0 ~]# cat test
wo ha ha ha

(3)使用force参数控制是否强制覆盖

如果目标文件已经存在,则不覆盖
[root@m0 ~]# ansible group1 -m copy -a 'src=/tmp/222 dest=/tmp/333 force=no'
如果目标文件已经存在,则会强制覆盖
[root@m0 ~]# ansible group1 -m copy -a 'src=/tmp/222 dest=/tmp/333 force=yes'

(4)使用backup参数控制是否备份文件

[root@m0 ~]# ansible group02 -m copy -a 'content="wo ha ha ha" dest=~/a.sh backup=yes'                      //backup=yes表示如果拷⻉的⽂件内容与原内容不⼀样,则会备份⼀份,group1的机器上会将~/a.sh备份⼀份(备份⽂件命名加上时间),再远程拷⻉新的⽂件为~/a.sh

[root@ab ~]# ls
anaconda-ks.cfg  a.sh  a.sh.14315.2024-08-16@15:29:28~  mysql57.tar.gz  s.sh  x.sh
[root@ab ~]# cat a.sh
wo ha ha ha[root@ab ~]# cat a.sh.14315.2024-08-16@15\:29\:28~ 
wo ha ha ha[root@ab ~]# 

(5)copy模块拷贝时要注意拷贝目录后面是否带"/"符号

[root@m0 ~]# ansible group02 -m copy -a 'src=/etc/yum.repos.d dest=/etc/yum.repos.d/ backup=yes'        

                                                                                   //同步整个目录——/etc/yum.repos.d后⾯不带/符号,则表示把/etc/yum.repos.d整个⽬录拷⻉到/tmp/⽬录下

[root@m0 ~]# ansible group02 -m copy -a 'src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/ backup=yes'        

                                                                            //同步目录下的内容——/etc/yum.repos.d/后⾯带/符号,则表示把/etc/yum.repos.d/⽬录⾥的所有⽂件拷⻉到/tmp/⽬录下

7、 fetch模块

fetch模块与copy模块类似,但作⽤相反。⽤于把远程机器的⽂件拷贝到本地。

[root@m0 ~]# ansible group02 -m fetch -a 'src=/etc/sysconfig/network-scripts/ifcfg-ens33 dest=/tmp'
[root@m0 ~]# tree /tmp                            //树状查看
/tmp
├── 192.168.1.68
│   └── etc
│       └── sysconfig
│           └── network-scripts
│               └── ifcfg-ens33
├── 192.168.1.69
│   └── etc
│       └── sysconfig
│           └── network-scripts
│               └── ifcfg-ens33
├── other
│   └── etc
│       └── sysconfig
│           └── network-scripts
│               └── ifcfg-ens33

8、user模块

user模块⽤于管理⽤户账号和⽤户属性。

[root@m0 ~]# ansible group02 -m user -a 'name=aaaa state=present'        

                                                                              //创建aaa⽤户,默认为普通⽤户,创建家⽬录
[root@m0 ~]# ansible group02 -m user -a 'name=mysql state=present system=yes shell="/sbin/nologin"'      

                                                           //创建mysql系统⽤户,并且登录shell环境为/sbin/nologin
[root@m0 ~]# ansible group02 -m file -a 'path=/usr/local/mysql state=directory'                

                                                                                                                                 //创建目录
[root@m0 ~]# ansible group02 -m file -a 'path=/usr/locall/mysql/mysql-file state=touch owner=mysql group=mysql mode=1777 '                      

                                                                                      //创建文件,并指定它的属主属组权限
[root@m0 ~]# ansible group02 -m user -a 'name=abc state=present uid=1999 password=abc'      

                                                                                                     //创建abc用户指定uid和密码
[root@m0 ~]# ansible group2 -m user -a 'name=hadoop generate_ssh_key=yes'      

                                                                //创建⼀个普通⽤户叫hadoop,并产⽣空密码密钥对
[root@m0 ~]# ansible group02 -m user -a 'name=aaaa state=absent'            

                                                                                 //删除aaaa⽤户,但家⽬录默认没有删除
[root@m0 ~]# ansible group02 -m user -a 'name=bbbb state=absent remove=yes'          

                                 //删除bbb⽤户,使⽤remove=yes参数让其删除⽤户的同时也删除家⽬录

9、group模块

group模块⽤于管理⽤户组和⽤户组属性。

[root@m0 ~]# ansible group1 -m group -a 'name=groupa gid=3000 state=present'    //创建组
[root@m0 ~]# ansible group1 -m group -a 'name=groupa state=absent             //删除组(如果有⽤户的gid为此组,则删除不了)

10、cron模块

cron模块⽤于管理周期性时间任务

[root@m0 ~]# ansible group1 -m cron -a 'name="test cron1" user=root job="touch /tmp/111" minute=*/2'      //创建⼀个cron任务,不指定user的话,默认就是root,如果minute,hour,day,month,week不指定的话,默认都为*
[root@m0 ~]# ansible group1 -m cron -a 'name="test cron1" state=absent          //删除cron任务

11、yum_repository模块

⽤于配置yum仓库

[root@m0 ~]# ansible group1 -m yum_repository -a "name=local description=localyum baseurl=file:///mnt/ enabled=yes gpgcheck=no"                  //增加⼀个/etc/yum.repos.d/local.repo配置⽂件
[root@m0 ~]# ansible group1 -m yum_repository -a "name=local state=absent"        //删除/etc/yum.repos.d/local.repo配置⽂件

12、yum模块(重点)

yum模块⽤于使⽤yum命令来实现软件包的安装与卸载。

[root@m0 ~]# ansible group1 -m yum -a 'name=vsftpd state=present'         //使⽤yum安装⼀个软件(前提:group1的机器上的yum配置都已经好)
[root@m0 ~]# ansible group1 -m yum -a 'name=httpd,httpd-devel state=latest'             //使⽤yum安装httpd,httpd-devel软件,state=latest表示安装最新版本
[root@m0 ~]# ansible group1 -m yum -a 'name=httpd,httpd-devel state=absent'            //使⽤yum卸载httpd,httpd-devel软件

13、service模块(重点)

service模块⽤于控制服务的启动,关闭,开机⾃启动等。

[root@m0 ~]# ansible group1 -m service -a 'name=vsftpd state=started enabled=on'     //启动vsftpd服务,并设为开机⾃动启动
[root@m0 ~]# ansible group1 -m service -a 'name=vsftpd state=stopped enabled=false'         //关闭vsftpd服务,并设为开机不⾃动启动

14、command与shell模块

两个模块都是⽤于执⾏linux命令的,这对于命令熟悉的⼯程师来说,⽤起来⾮常爽。
shell模块与command模块差不多(command模块不能执⾏⼀些类似$HOME,>,<,|等符号,但shell可以)

注意: shell模块并不是百分之百任何命令都可以,⽐如vim或ll别名就不可以。

相关文章:

day30(8/16)——ansible

目录 一、回顾 1、mysql和python 1. mysql5.7 2. 可以使用pymysql非交互的管理mysql 2、mycat中间件 1. 独属于mysql主从的负载均衡策略 2.配置写主读从 3. 步骤 3.1 安装jdk 3.2 mycat 3.3 配置 3.4 启动和调试 二、运维自动化&#xff08;ansible&#xff09; 1、任务背…...

fastadmin 安装

环境要求&#xff0c;大家可以参考官方文档的&#xff0c;我这里使用的是phpstudy&#xff0c;很多已经集成了。 注意一点&#xff0c;PHP 版本&#xff1a;PHP 7.4 。 第二步&#xff1a;下载 下载地址&#xff1a;https://www.fastadmin.net/download.html 进入下载地址后…...

Unity动画模块 之 3D模型导入基础设置 Rig页签

​本文仅作笔记学习和分享&#xff0c;不用做任何商业用途本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 1.Rig页签 Rig 选项卡 - Unity 手册&#xff0c;rig是设置骨骼与替身系统的&#xff0c;工作流程如下 Avatar是什么…...

⭐️Python在Windows命令行(Command Prompt)运行Python脚本或交互式地执行Python代码详解

Python在Windows命令行&#xff08;Command Prompt&#xff09;运行Python脚本或交互式地执行Python代码详解 Python在Windows命令行&#xff08;Command Prompt&#xff09;运行Python脚本或交互式地执行Python代码详解一、安装Python二、运行Python脚本1. 打开命令行2. 导航到…...

Python | Leetcode Python题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; class Twitter:class Node:def __init__(self):self.followee set()self.tweet list()def __init__(self):self.time 0self.recentMax 10self.tweetTime dict()self.user dict()def postTweet(self, userId: int, tweetId: int) ->…...

D. Beard Graph

https://codeforces.com/problemset/problem/165/D 主要是边转点 后面都是简单的线段树维护 我们维护ok标记,val值&#xff0c;黑&#xff08;1),白&#xff08;0&#xff09; id.okl.ok&r.ok id.vall.valr.val 注意特判如果两个点一样是0,如果dfn[u]1>dfn[v]就不…...

使用预训练的 ONNX 格式的 YOLOv8n 模型进行目标检测,并在图像上绘制检测结果

目录 __init__方法&#xff1a; pre_process方法&#xff1a; run方法&#xff1a; filter_boxes方法&#xff1a; view_img方法&#xff1a; ​​​​​​​__init__方法&#xff1a; 初始化类的实例时&#xff0c;创建一个onnxruntime的推理会话&#xff0c;加载名为yolo…...

mac安装xmind

文章目录 介绍软件功能下载安装1.下载完成后打开downloads 双击进行安装2.将软件拖到应用程序中3.在启动台中搜索打开4.提示损坏问题解决5.执行完成关闭命令窗口6.打开成功&#xff0c;点击继续&#xff0c;跳过登录7.打开成功后&#xff0c;点击关于 小结 介绍 XMind 是一款流…...

MySQL分区表入门

MySQL数据库的分区表是一种将表数据分成逻辑上相关的部分并存储在不同的物理位置的技术。使用分区表可以提高查询性能、简化数据维护和提供更好的数据管理。 以下是MySQL中创建和使用分区表的一般步骤&#xff1a; 设计分区策略&#xff1a; 首先&#xff0c;需要确定如何将表…...

StarRocks 存算分离数据回收原理

前言 StarRocks存算分离表中&#xff0c;垃圾回收是为了删除那些无用的历史版本数据&#xff0c;从而节约存储空间。考虑到对象存储按照存储容量收费&#xff0c;因此&#xff0c;节约存储空间对于降本增效尤为必要。 在系统运行过程中&#xff0c;有以下几种情况可能会需要删…...

【运维】Linux中的xargs指令如何使用?

xargs 是 Linux 中一个非常强大的命令,用于将标准输入中的输出作为参数传递给其他命令。通常情况下,xargs 用于处理长列表或者将多行输入转换成一行。 以下是 xargs 的基本用法和一些常见的例子: 基本语法 command | xargs [options] [command]常见的例子 删除文件:假设…...

日志审计-graylog ssh登录超过6次告警

Apt 设备通过UDP收集日志&#xff0c;在gray创建接收端口192.168.0.187:1514 1、ssh登录失败次数大于5次 ssh日志级别默认为INFO级别&#xff0c;通过系统rsyslog模块处理&#xff0c;日志默认存储在/var/log/auth.log。 将日志转发到graylog vim /etc/rsyslog.conf 文件末…...

4. kafka消息监控客户端工具

KafkaKing官网地址 : https://github.com/Bronya0/Kafka-King github下载地址 : Releases Bronya0/Kafka-King (github.com) (windows、macos、linux版本) 云盘下载地址 : https://pan.baidu.com/s/1dzxTPYBcNjCTSsLuHc1TZw?pwd276i (仅windows版本) 连接kafka 输入本地地址…...

鸿蒙环境和模拟器安装

下载华为开发者工具套件&#xff0c;并解压 https://developer.harmonyos.com/deveco-developer-suite/enabling/kit?currentPage1&pageSize10 双击dmg安装ide 复制并解压sdk 安装模拟器 https://yuque.antfin-inc.com/ainan.lsd/cm586u/po19k1mi9b2728da?singleDoc#…...

【图文并茂】ant design pro 如何对接后端个人信息接口

上一节我们有讲到如何对接登录接口的 【图文并茂】ant design pro 如何对接登录接口 仅仅能登录是最基本的&#xff0c;但是我们要进入后台还是需要另一个接口。 这个接口有两个作用&#xff1a; 来获取当前登录账号的信息&#xff0c;比如头像&#xff0c;用户名&#xff0…...

MySQL运维学习(1):4种日志

1.错误日志 mysql错误日志记录了mysql发生任何严重错误时的信息&#xff0c;若数据库无法正常使用时&#xff0c;可以先查看错误日志 默认情况下错误日志是开启的&#xff0c;文件名为/var/log/mysqld.log&#xff0c;如果文件不在默认位置&#xff0c;可以通过下面的命令查看…...

代码随想录算法训练营第二十天(二叉树 七)

day19 周日放假 今天依旧是二叉树环节 力扣题部分: 235. 二叉搜索树的最近公共祖先 题目链接:. - 力扣&#xff08;LeetCode&#xff09; 题面: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T …...

Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发

&#x1f31f; Django 后端架构开发&#xff1a;通用表单视图、组件对接、验证机制和组件开发 &#x1f539; django 通用表单视图 Django 的通用表单视图提供了快速创建和处理表单的功能&#xff0c;使得表单处理变得简洁而高效。以下示例展示了如何使用通用表单视图创建一个…...

Cookie和Session是什么?它们的区别是什么?

【知识】深入理解COOKIE&SESSION的原理和区别-腾讯云开发者社区-腾讯云 (tencent.com) Cookie和Session的区别&#xff08;面试必备&#xff09;_cookie和session的作用和区别-CSDN博客 Cookie和Session是什么&#xff1f;它们的区别是什么&#xff1f;_cookie里面的字符…...

Python正则表达式提取车牌号

在Python中使用正则表达式&#xff08;Regular Expressions&#xff09;来提取车牌号是一个常见的任务&#xff0c;尤其是在处理车辆信息或进行图像识别后的文本处理时。中国的车牌号格式多种多样&#xff0c;但通常包含省份简称、英文字母和数字。以下是一个使用Python正则表达…...

视觉引导机械臂学习记录

首先是几个位置&#xff0c;拍照位、示教位、目标位置。 流程主要是 1.首先选取一个拍照位&#xff0c;相机扫描点云&#xff0c;通过点云质量进行选取。并且制作点云模板&#xff0c;进行配准&#xff0c;如果配准分数高则模板选取正确。 2.用相机拍灰度图像&#xff0c;并…...

插屏广告在游戏APP中广告变现的独特优势

插屏广告是目前全球移动应用变现的主要广告形式之一&#xff0c;其优势在于可以快速收回成本&#xff0c;又能适应于多数缺乏激励场景的应用。 插屏广告通常在app使用过程中的自然过渡点&#xff0c;比如暂停场景切换的时候弹出&#xff0c;以图片、动图、视频等为表现形式的半…...

Python数据分析:数据可视化(Matplotlib、Seaborn)

数据可视化是数据分析中不可或缺的一部分&#xff0c;通过将数据以图形的方式展示出来&#xff0c;可以更直观地理解数据的分布和趋势。在Python中&#xff0c;Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法&#xff0c;并附上一个…...

Java CompletableFuture:你真的了解它吗?

文章目录 1 什么是 CompletableFuture&#xff1f;2 如何正确使用 CompletableFuture 对象&#xff1f;3 如何结合回调函数处理异步任务结果&#xff1f;4 如何组合并处理多个 CompletableFuture&#xff1f; 1 什么是 CompletableFuture&#xff1f; CompletableFuture 是 Ja…...

5个免费在线 AI 绘画网站推荐,附100+提示词!

在数字化时代&#xff0c;艺术创作与人工智能的结合已带来前所未有的创新体验。AI 绘画技术&#xff0c;基于先进的人工智能算法&#xff0c;为艺术创作提供了全新的视角和工具。当前&#xff0c;多个免费在线AI绘画平台应运而生&#xff0c;为创作者们提供了丰富的灵感和创作机…...

C++基础语法:while的使用

前言 "打牢基础,万事不愁" .C的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结. 引入 while的使用是编写代码的基础内容.笔者的记忆力已不如以前,最近遇到了还花了不少功夫,可见是掌握地不够牢固.所以对while的思路和内容…...

鹏哥C语言自定义笔记重点(29-)

29.函数指针数组 30.void指针是不能直接解引用&#xff0c;也不能-整数。 void*是无具体类型的指针&#xff0c;可以接受任何类型的地址。 31.qsort:使用快速排序的思想实现一个排序函数(升序) 32. 33.地址的字节是4/8 34.char arr[]{a,b} sizeof(arr[0]1)答案是4&#xff0…...

代码随想录算法训练营第六十天 | dijkstra(堆优化版)、Bellman_ford 算法精讲

一、dijkstra&#xff08;堆优化版&#xff09; 题目连接&#xff1a;47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; (kamacoder.com) 文章讲解&#xff1a;代码随想录 (programmercarl.com)——dijkstra&#xff08;堆优化版&#xff09; 二、Bellman_ford 算法精讲…...

boost::asio 库版本,C/C++代码编译兼容性

1、boost::asio::spawn 开启有栈&#xff08;stackful&#xff09;协同程序&#xff0c;版本改进及限制 > boost_1_80 版本应采用以下方式。 auto f [self, this](const boost::asio::yield_context& y) noexcept {bool success_ do_handshake(y);if (!success_) {clo…...

前端开发的项目导入方法与应用

前端项目启动问题归集&#xff1a; 由于前端的项目对于npm的版本有要求&#xff0c;需要将其升级到20&#xff0c;所以必要的时候通过nvm&#xff0c;或者直接下载最新的安装包进行npm覆盖安装。在项目目录中应用npm i安装node_modules&#xff0c;如果没有正常安装的话&#…...