mysql5.7数据库安装及性能测试

mysql5.7数据库安装及性能测试

记录Centos7.9下安装mysql 5.7并利用benchmark工具简单测试mysql的性能。

测试机:centos7.9

配置:4C8G40G

1. 下安装mysql5.7

安装mysql5.7:

# 通过官方镜像源安装
$ wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
$ sudo yum -y install mysql57-community-release-el7-11.noarch.rpm
$ sudo yum -y install mysql mysql-server mysql-devel

#
 启动mysql并查看root密码
$ sudo systemctl start mysqld
$ sudo systemctl enable mysqld
$ sudo grep "password" /var/log/mysqld.log
2024-03-22T07:07:13.872300Z 1 [Note] A temporary password is generated for root@localhost: fO08,4R?b2%;

#
 由上述日志看出mysql的root密码为fO08,4R?b2%;

#
 修改密码
$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.44

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

#
 配置密码复杂度,可以设置简单密码
mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql>
 set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql>
 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

mysql>
 SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)

#
 配置root允许其他主机进行连接
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select `user`,authentication_string,`Host` from `user`;
+---------------+-------------------------------------------+-----------+
| user          | authentication_string                     | Host      |
+---------------+-------------------------------------------+-----------+
| root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
+---------------+-------------------------------------------+-----------+
3 rows in set (0.00 sec)

mysql>
 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>
 flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>
 select `user`,authentication_string,`Host` from `user`;
+---------------+-------------------------------------------+-----------+
| user          | authentication_string                     | Host      |
+---------------+-------------------------------------------+-----------+
| root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | %         |
+---------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)
mysql>

安装mysql5.7如果遇到如下GPG密钥问题:

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.

使用如下命令解决:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

2. sysbench测试mysql性能

2.1 sysbench安装

# 镜像源安装
$ sudo yum install -y sysbench

#
 源码编译安装
# CentOS安装依赖
$ sudo yum -y install make automake libtool pkgconfig libaio-devel
# For MySQL support, replace with mysql-devel on RHEL/CentOS 5
$ sudo yum -y install mariadb-devel openssl-devel

#
 下载源码编译安装
$ wget https://github.com/akopytov/sysbench/archive/master.zip
$ unzip master.zip
$ cd sysbench-master/
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make && sudo make install

#
 如果之前安装的sysbench没有添加mysql支持,可以在源码解压的文件夹里通过如下命令卸载,然后重新执行上面的安装流程:
$ sudo make uninstall

./configure说明:

sysbench默认是支持MySQL的benchmarking的,如果不加任何选项则要求保证MySQL的安装路径都是默认的标准路径,headfile位于/usr/include目录下,libraries位于/usr/lib/目录下。如果MySQL是源码编译安装的,安装路径放在/usr/local/mysql下,要添加相应的选项命令: --with-mysql-includes=/usr/local/mysql/include/mysql/ --with-mysql-libs=/usr/local/mysql/lib/mysql/

mysql安装在自定义路径,不在PATH下,可以使用--with-mysql-includes和--with-mysql-libs指定mysql路径。

2.2 sysbench oltp测试参数说明

sysbench 中常用的参数如下:
  --oltp-tables-count=1:表数量
  --oltp-table-size=10000000:每个表产生的记录行数
  --oltp-read-only=off:是否生成只读SQL,默认 off,如果设置为 on,则 oltp 模型不会生成 update, delete, insert 的 SQL 语句
  --oltp-skip-trx=[on|off]:省略 BEGIN / COMMIT 语句。默认是 off
  --rand-init=on:是否随机初始化数据,如果不随机化那么初始好的数据每行内容除了主键不同外其他完全相同
  --num-threads=12: 并发线程数,可以理解为模拟的客户端并发连接数
  --report-interval=10:表示每 10s 输出一次性能数据
  --max-requests=0:压力测试产生请求的总数,如果以下面的 max-time 来记,这个值设为 0 即可
  --max-time=120:测试的持续时间
  --oltp_auto_inc=off:id 是否为自增列
  --oltp_secondary=on:将 id 设置为非主键防止主键冲突
  --oltp_range_size=5: 连续取值 5 个,必定走到 5 个分片
  --mysql_table_options='dbpartition by hash(id) tbpartition by hash(id) tbpartitions 2':DRDS 支持拆分表,在建表的时候需要指定拆分方式
  
  安装完成会自带几个lua脚本文件,路径在/usr/local/share/sysbench 或 /usr/share/sysbench/tests/include/oltp_legacy下

2.3 测试执行

提前在mysql中创建数据库,名为sysbench。

# 创建测试数据库tpcc
$ mysql -uroot -p
mysql> create database sysbench;
mysql> exit
Bye

#
 1、数据准备,在sysbench库中创建10张表,每个表有1000000条记录。
$ sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000 --oltp_tables_count=10 --threads=4 --db-driver=mysql --mysql-db=sysbench --mysql-host=172.16.0.9 --mysql-user=root --mysql-password=123456 prepare
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Creating table 'sbtest1'...
Inserting 1000000 records into 'sbtest1'
Creating secondary indexes on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 1000000 records into 'sbtest2'
Creating secondary indexes on 'sbtest2'...
Creating table 'sbtest3'...
Inserting 1000000 records into 'sbtest3'
Creating secondary indexes on 'sbtest3'...
Creating table 'sbtest4'...
Inserting 1000000 records into 'sbtest4'
Creating secondary indexes on 'sbtest4'...
Creating table 'sbtest5'...
Inserting 1000000 records into 'sbtest5'
Creating secondary indexes on 'sbtest5'...
Creating table 'sbtest6'...
Inserting 1000000 records into 'sbtest6'
Creating secondary indexes on 'sbtest6'...
Creating table 'sbtest7'...
Inserting 1000000 records into 'sbtest7'
Creating secondary indexes on 'sbtest7'...
Creating table 'sbtest8'...
Inserting 1000000 records into 'sbtest8'
Creating secondary indexes on 'sbtest8'...
Creating table 'sbtest9'...
Inserting 1000000 records into 'sbtest9'
Creating secondary indexes on 'sbtest9'...
Creating table 'sbtest10'...
Inserting 1000000 records into 'sbtest10'
Creating secondary indexes on 'sbtest10'...

#
 2、进行write_only测试
$ sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000 --oltp_tables_count=10 --threads=4 --db-driver=mysql --mysql-db=sysbench --mysql-host=172.16.0.9 --mysql-user=root --mysql-password=123456 run 
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            19432
        write:                           5552
        other:                           2776
        total:                           27760
    transactions:                        1388   (137.58 per sec.)
    queries:                             27760  (2751.55 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          10.0875s
    total number of events:              1388

Latency (ms):
         min:                                    5.66
         avg:                                   28.89
         max:                                 1817.12
         95th percentile:                      104.84
         sum:                                40095.22

Threads fairness:
    events (avg/stddev):           347.0000/1.22
    execution time (avg/stddev):   10.0238/0.04

#
 3、清除数据
$ sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000 --oltp_tables_count=10 --threads=4 --db-driver=mysql --mysql-db=sysbench --mysql-host=172.16.0.9 --mysql-user=root --mysql-password=123456 cleanup
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
Dropping table 'sbtest4'...
Dropping table 'sbtest5'...
Dropping table 'sbtest6'...
Dropping table 'sbtest7'...
Dropping table 'sbtest8'...
Dropping table 'sbtest9'...
Dropping table 'sbtest10'...

参考:

https://www.cnblogs.com/xulinforDB/p/17496225.html

3. mysqlslap测试mysql性能

mysqlslap是MySQL官方提供的一个性能测试工具,用于模拟多个客户端对MySQL数据库进行并发访问,从而测试数据库在高负载下的性能表现。通过mysqlslap,我们可以测试数据库的查询性能、插入性能、更新性能等,从而评估数据库的性能瓶颈和提升空间。

3.1 mysqlslap参数说明

mysqlslap常用参数:

—auto-generate-sql, -a:自动生成测试表和数据。这是mysqlslap最常用的参数之一,可以让我们无需手动创建测试数据,快速进行测试。

—auto-generate-sql-load-type=type:测试语句的类型。这个参数可以指定测试语句的类型,包括read(读操作)、key(键值查询)、write(写操作)、update(更新操作)和mixed(混合操作)等。默认值为mixed,表示混合类型的测试语句。

—number-char-cols=N, -x N:自动生成的测试表中包含多少个字符类型的列。默认值为1,表示自动生成一个字符类型的列。

—number-int-cols=N, -y N:自动生成的测试表中包含多少个数字类型的列。默认值为1,表示自动生成一个数字类型的列。

—number-of-queries=N:总的测试查询次数(并发客户数×每客户查询次数)。这个参数可以指定总的测试查询次数,从而控制测试的时间和强度。

—query=’SQL’,(—query缩写为-q):使用自定义脚本执行测试。这个参数允许我们使用自定义的SQL语句进行测试,从而更灵活地模拟实际应用场景。

3.2 执行测试

在测试客户端上执行mysqlslap命令,指定要测试的MySQL服务器地址、用户名、密码等参数,以及要使用的测试选项。例如,我们可以使用以下命令进行混合类型的性能测试:

$ mysqlslap --auto-generate-sql --auto-generate-sql-load-type=mixed --number-of-queries=10000 --concurrency=10 --engine=innodb --user=root --password=123456 --host=localhost --port=3306
mysqlslap: [Warning] Using a password on the command line interface can be insecure.
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 7.546 seconds
        Minimum number of seconds to run all queries: 7.546 seconds
        Maximum number of seconds to run all queries: 7.546 seconds
        Number of clients running queries: 10
        Average number of queries per client: 1000

上述命令中,—concurrency参数指定了并发客户端的数量,—engine参数指定了存储引擎类型(这里使用InnoDB),—user和—password参数指定了连接MySQL服务器所需的用户名和密码,—host和—port参数指定了MySQL服务器的地址和端口号。

执行完mysqlslap命令后,将输出测试结果,包括每秒查询数(QPS)、平均响应时间等性能指标。我们可以根据这些指标来分析数据库的性能表现,找出潜在的性能瓶颈,并进行相应的优化。

4. benchmarksql测试mysql性能

benchmarksql是一款符合TPC-C基准压力测试工具,TPC-C是衡量在线事务处理的基准。

TPC-C模型是模拟一个商品批发公司的销售模型,这个模型涵盖了一个批发公司面向客户对一系列商品进行销售的过程,这包括管理订单,管理库存,管理账号收支等操作。这些操作涉及到仓库、商品、客户、订单等概念,围绕这些概念,构造了数据表格,以及相应的数据库操作。

官网:https://benchmarksql.readthedocs.io/en/latest/

4.1 安装benchmarksql

benchmarksql编译安装,官方benchmarksql最新版本不支持mysql测试,本文使用pingcap的仓库进行编译安装:

# 安装依赖
$ sudo yum install java-1.8.0-openjdk
$ sudo yum -y install ant 

#
 下载安装
$ git clone -b 5.0-mysql-support-opt-2.1 https://github.com/pingcap/benchmarksql.git
# 构建
$ cd benchmarksql/
$ ant
Buildfile: /home/test/tools/db/benchmarksql/build.xml

init:
    [mkdir] Created dir: /home/test/tools/db/benchmarksql/build

compile:
    [javac] Compiling 12 source files to /home/test/tools/db/benchmarksql/build

dist:
    [mkdir] Created dir: /home/test/tools/db/benchmarksql/dist
      [jar] Building jar: /home/test/tools/db/benchmarksql/dist/BenchmarkSQL-5.0.jar

BUILD SUCCESSFUL
Total time: 1 second

4.2 测试数据准备及执行

# 创建测试数据库tpcc
$ mysql -uroot -p
mysql> create database tpcc;
# 删除数据库
# mysql> drop database tpcc;
mysql> exit
Bye

#
 修改mysql测试文件。
$ sudo vi benchmarksql/run/props.mysql
db=mysql
driver=com.mysql.jdbc.Driver
conn=jdbc:mysql://localhost:3306/tpcc?useSSL=false&useServerPrepStmts=true&useConfigs=maxPerformance&rewriteBatchedStatements=true&cachePrepStmts=true&prepStmtCacheSize=1000&prepStmtCacheSqlLimit=2048
user=root
password=123456

warehouses=20
loadWorkers=8

terminals=20
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=0
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=10
//Number of total transactions per minute
limitTxnsPerMin=0

//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true

//The following five values must add up to 100
//The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4

// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
//osCollectorScript=./misc/os_collector_linux.py
//osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
//osCollectorDevices=net_eth0 blk_vda

参数说明:

  • db=mysql: 指定数据库类型,当前类型为mysql

  • driver=com.mysql.jdbc.Driver: mysql数据库JDBC驱动

  • conn=jdbc:mysql://localhost:3306/tpcc?useSSL=false...:mysql的连接字符串

  • user=root:连接mysql的用户名

  • password=123456:连接mysql的密码

  • Warehouses: 代表仓库数,每个 Warehouse 的数据量,其大小约为 76823.04KB。可以根据每个Warehouse的数据量,计算测试过程中的数据总量。 计算公式为:数据总量(KB)≈ Warehouse个数*76823.04KB 以10个Warehouse的数据量为例计算其数据总量大小约为:768230.4KB

  • loadWorkers=8:用于在数据库中初始化数据的加载进程数量,默认为4,实际使用过程中可以根据实际情况调整,加载速度会随worker数量的增加而有所提升

  • terminals=20:终端数,即并发客户端数量,通常设置为CPU线程总数的2~6倍

  • runTxnsPerTerminal=0:每个终端(terminal)运行的固定事务数量,例如:如果该值设置为10,意味着每个terminal运行10个事务,如果有32个终端,那整体运行320个事务后,测试结束。该参数配置为非0值时,下面的runMins参数必须设置为0

  • runMins=10: 要测试的整体时间,单位为分钟,如果runMins设置为60,那么测试持续1小时候结束。该值设置为非0值时,runTxnsPerTerminal参数必须设置为0。这两个参数不能同时设置为正整数,如果设置其中一个,另一个必须为0,主要区别是runMins定义时间长度来控制测试时间;runTxnsPerTerminal定义事务总数来控制时间。

  • limitTxnsPerMin=0: 每分钟事务总数限制,该参数主要控制每分钟处理的事务数,事务数受terminals参数的影响,limitTxnsPerMin/terminals的值必须是正整数。

  • terminalWarehouseFixed=true: 终端和仓库的绑定模式,设置为true时可以运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。TPCC规定每个终端都必须有一个绑定的仓库,所以一般使用默认值true。

  • 下面五个值的总和必须等于100,默认值为:45, 43, 4, 4,4 ,与TPC-C测试定义的比例一致,实际操作过程中,可以调整比重来适应各种场景.

    • newOrderWeight=45 新订单事务占总事务的45%
    • paymentWeight=43 支付订单事务占总事务的43%
    • orderStatusWeight=4 订单状态事务占总事务的4%
    • deliveryWeight=4 到货日期事务占总事务的4%
    • stockLevelWeight=4 查看现存货品的事务占总事务的4%
  • resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS 压测期间收集系统性能数据的目录(无需修改)

  • osCollectorScript=./misc/os_collector_linux.py: 操作系统性能收集脚本(无需修改)

  • osCollectorInterval=1: 操作系统收集操作间隔,默认为1秒

  • osCollectorSSHAddr=user@dbhost: 需要收集系统性能的主机

  • osCollectorDevices=net_eth0 blk_vda: 操作系统中被收集服务器的网卡名称和磁盘名称,根据个人环境进行调整

# 建立仓库,完成创建表并导入数据
pwd
/home/test/tools/db/benchmarksql/run
$ ./runDatabaseBuild.sh props.mysql
# 执行benchmark测试
$ ./runBenchmark.sh props.mysql

4.3 结果解读

4.3.1 runBenchmark.sh运行结果
# 运行结果
13:52:03,667 [Thread-5] INFO   jTPCC : Term-00, Measured tpmC (NewOrders) = 1995.21                                                                                                   
13:52:03,667 [Thread-5] INFO   jTPCC : Term-00, Measured tpmTOTAL = 4408.1
13:52:03,667 [Thread-5] INFO   jTPCC : Term-00, Session Start     = 2024-05-07 13:42:02
13:52:03,667 [Thread-5] INFO   jTPCC : Term-00, Session End       = 2024-05-07 13:52:03
13:52:03,667 [Thread-5] INFO   jTPCC : Term-00, Transaction Count = 44135

主要关注如下几项结果:

tpmC(NewOrder): 每分钟1995.21笔订单 tpmTOTAL:订单总数4408.1笔 Transaction Count 执行10min,执行了44135笔订单(每分钟4413.5笔订单)

4.3.2 html报告查看
# 安装R语言环境
$ sudo yum install R -y

# 生成html报告
$ sudo ./generateReport.sh my_result_2024-05-07_151402/
# 将my_result_2024-05-07_151402/下载到终端,使用浏览器即可打开html版本的报告
alt

备注:

html报告中系统资源(CPU、disk)无数据输出,待排查原因。

参考:

benchmarksql 5.0 支持对MySQL的TPC-C测试

pingcap-benchmarksql

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pandas索引

pandas索引 一、索引1.1 建立索引1.2 重置索引1.3 索引类型1.4 索引的属性1.5 索引的操作 一、索引 1.1 建立索引 建立索引可以在数据读取加载中指定索引: import pandas as pd df pd.read_excel(team.xlsx, index_colname) # 将name列设置为索引 df.head()效…

C语言 函数的定义与调用

上文 C语言 函数概述 我们对函数进行了概述 本文 我们来说函数的定义和调用 C语言规定 使用函数之前,首先要对函数进行定义。 根据模块化程序设计思想,C语言的函数定义是互相平行、独立的,即函数定义不能嵌套 C语言函数定义 分为三种 有参函…

Kansformer?变形金刚来自过去的新敌人

​1.前言 多层感知器(MLPs),也被称为全连接前馈神经网络,是当今深度学习模型的基础组成部分。 MLPs在机器学习中扮演着至关重要的角色,因为它们是用于近似非线性函数的默认模型,这得益于通用近似定理所保证的表达能力。然而,MLPs真的是我们能构建的最佳非线性回归器吗?尽管ML…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

Hi3516标准系统入门(命令行方式) 注意: 从3.2版本起,标准系统不再针对Hi3516DV300进行适配验证,建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作,则可能会…

人工智能编程的创新探索 卧龙与凤雏的畅想

在一间宽敞明亮的办公室内,阳光透过窗户洒在地上,形成一片片光斑。卧龙和凤雏正坐在舒适的办公椅上休息,享受着这片刻的宁静。 卧龙微微皱眉,一只手托着下巴,略显苦恼地说道:“现在的人工智能,也…

vue2人力资源项目5组织架构的增删改查

编辑表单回显 父组件:这里用到了父亲调子组件的方法和同步异步先后方法的处理 //methods里else if (type edit) {this.showDialog true// 显示弹层this.currentNodeId id// 记录id,要用它获取数据// 在子组件中获取数据// 父组件调用子组件的方法来获…

【力扣】203、环形链表 II

142. 环形链表 II 要解决这道题,首先需要对问题进行拆解: 确定链表是否存在环确定环的入口点 如何判断是否存在环呢?这个比较容易想到,使用快慢指针即可判断链表是否存在环。我们定义两个指针: ListNode slow head…

Redis学习4——Redis应用之限流

引言 Redis作为一个内存数据库其读写速度非常快,并且支持原子操作,这使得它非常适合处理频繁的请求,一般情况下,我们会使用Redis作为缓存数据库,但处理做缓存数据库之外,Redis的应用还十分广泛&#xff0c…

远程服务器 docker XRDP 桌面访问 记录

需求描述: 我现在在远程连接 一台服务器,由于需要实验环境需要GUI 和 桌面系统,但是又想在 docker 中运行。因此,我现在首先需要通过 ssh 连接服务器,然后再服务器中连接 docker. REF: https://github.com/danielguerra69/ubuntu-…

代码随想录day19day20打卡

二叉树 1 二叉树的最大深度和最小深度 最大深度已经学习过了,实质就是递归的去判断左右子节点的深度,然后对其进行返回。 附加两个学习的部分: (1)使用前序遍历的方法求解 int result; void getdepth(TreeNode* nod…

NXP i.MX8系列平台开发讲解 - 3.11 Linux PCIe设备调试(WIFI模块)

专栏文章目录传送门:返回专栏目录 文章目录 目录 1. WIFI 模块简单介绍 2. 设备驱动原理介绍 3. PCIE WIFI驱动实例分析 3.1 查看设备树 3.2 wifi 设备驱动代码分析 3.3 内核配置选项 4. WIFI驱动调试相关 根据前面对PCIe的讲解,对PCIe的整体都有…

Ansible --- playbook 脚本+inventory 主机清单

一 inventory 主机清单 Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或 多个主机组内。 如果是名称类似的主机,可以使用列表的方式标识各个主机。vim /etc/ansible/hosts[webservers]192.168.10.1…

Flutter弹窗链-顺序弹出对话框

效果 前言 弹窗的顺序执行在App中是一个比较常见的应用场景。比如进入App首页,一系列的弹窗就会弹出。如果不做处理就会导致弹窗堆积的全部弹出,严重影响用户体验。 如果多个弹窗中又有判断逻辑,根据点击后需要弹出另一个弹窗,这…

C++ Primer 总结索引 | 第十四章:重载运算与类型转换

1、C语言定义了 大量运算符 以及 内置类型的自动转换规则 当运算符 被用于 类类型的对象时&#xff0c;C语言允许我们 为其指定新的含义&#xff1b;也能自定义类类型之间的转换规则 例&#xff1a;可以通过下述形式输出两个Sales item的和&#xff1a; cout << item1 …

信息系统安全与对抗-网络侦查技术与网络扫描技术(期末复习)

1、网络拓扑结构在网络攻击中的作用 查明目标网络的拓扑结构&#xff0c;有利于找到目标网络的关键节点&#xff0c;从而提高攻击效率&#xff0c;达到最大攻击效果。 2、网络侦查在网络攻击中的作用 识别潜在目标系统&#xff0c;确认目标系统适合哪种类型的攻击。 3、百度…

jenkins部署服务到windows系统服务器

1、安装openSSH windows默认不支持ssh协议&#xff0c;需要下载安装&#xff0c;主要适用于jenkins传输文件已经执行命令使用 点击查看下载openSSH 2、项目配置 这里简单说说怎么配置&#xff0c;主要解决点就是ssh执行cmd或shell命令时不能开启新窗口导致应用部署失败或者断…

【机器学习系统的构建】从模型开发的过程讲清楚K-Fold 交叉验证 (Cross-Validation)的原理和应用

0、前言 最近在学习集成学习的时候了解到了k折交叉验证&#xff0c;其实在之前学习吴恩达老师的课程中也学过交叉验证&#xff0c;但是当时也不是很明白。这次借着自己的疑问以及网上搜找资料&#xff0c;终于把交叉验证给弄明白了。 在弄清楚前&#xff0c;我有这样几个疑问…

rancher/elemental 构建不可变IOS(一)

一、什么是elemental Elemental 是 Rancher 的一个变种&#xff0c;专注于提供一个更轻量级的 Kubernetes 发行版。它旨在提供简化的部署和管理体验&#xff0c;同时保持 Kubernetes 的灵活性和强大功能。Elemental 通常针对较小的部署场景或资源受限的环境&#xff0c;例如测…

BFS Ekoparty 2022 -- Linux Kernel Exploitation Challenge

前言 昨天一个师傅给了我一道 linux kernel pwn 题目&#xff0c;然后我看了感觉非常有意思&#xff0c;题目也不算难&#xff08;在看了作者的提示下&#xff09;&#xff0c;所以就花时间做了做&#xff0c;在这里简单记录一下。这个题是 BFS Lab 2022 年的一道招聘题&#…

JavaEE技术之MySql高级-搭建主从复制(主从同步原理、一主多从配置)

文章目录 MySQL主从同步1、MySQL主从同步原理2、一主多从配置2.1、准备主服务器2.2、准备从服务器2.3、启动主从同步2.4、实现主从同步2.5、停止和重置2.6、常见问题问题1问题2 MySQL主从同步 1、MySQL主从同步原理 基本原理&#xff1a; slave会从master读取binlog来进行数据…