sysbench MySQL性能测试

目录

1. QPS&&TPS

1.1 数据库启动到现在的运行时间(秒)

1.2 查询量

1.3 status命令直接显示出QPS

1.4 每秒输出数据库状态(累加)

2. sysbench 测试工具

3. OLTP MySQL测试

3.1 普通参数

3.2 支持的lua脚本

3.3 脚本参数

3.4 测试数据准备

3.5 进行测试

3.6 测试结果解释

4. MySQL连接相关参数

4.1 什么是MySQL长连接和短连接

4.2 MySQL长短连接的实现原理

4.3 MySQL长连接和短连接的优缺点

4.4 MySQL长短连接的使用注意事项

5. MySQL线程相关参数


1. QPS&&TPS

QPS:query per second,数据库每秒执行的SQL数,包含insert、select、update、delete等。

TPS:transaction per second,数据库每秒执行的事务数

1.1 数据库启动到现在的运行时间(秒)

(root@localhost) [(none)]> show global status like 'uptime';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 658   |
+---------------+-------+
1 row in set (0.00 sec)

1.2 查询量

(root@localhost) [(none)]> show global status like 'Questions%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions     | 11    |
+---------------+-------+
1 row in set (0.00 sec)

查询量/运行时间=QPS

1.3 status命令直接显示出QPS

(root@localhost) [(none)]> status
--------------
mysql  Ver 14.14 Distrib 5.7.44, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:		3
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.44-log MySQL Community Server (GPL)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8mb4
Db     characterset:	utf8mb4
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/tmp/mysql.sock
Uptime:			14 min 28 sec

Threads: 2  Questions: 15  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 100  Queries per second avg: 0.017
--------------

1.4 每秒输出数据库状态(累加)

[root@localhost ~]# mysqladmin extended-status -i 1 -uroot -p123456

加上-r参数第一次显示总数,后面就显示差值

[root@localhost ~]# mysqladmin extended-status -i 1 -uroot -p123456 -r
.......
[root@localhost ~]# mysqladmin extended-status -i 1 -uroot -p123456 -r | grep -i questions
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
| Questions                                     | 38                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Questions                                     | 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Questions                                     | 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Questions                                     | 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Questions                                     | 1 

2. sysbench 测试工具

3. OLTP MySQL测试

3.1 普通参数

  --threads=N                     指定线程数 [1]
  --events=N                      事件总数的限制 [0]
  --time=N                        总执行时间(以秒为单位)[10],0表示无限制
  --warmup-time=N                 预热时间,可以实现在 CPU/database/page/caches 预热之后再进行统计,这样得到的数据指标更准确 [0]
  --forced-shutdown=STRING        强制关闭或禁用“off”之前,在—时间限制之后等待的秒数 [off]
  --thread-stack-size=SIZE        每个线程的堆栈大小 [64K]
  --thread-init-timeout=N         等待工作线程初始化的时间(以秒为单位) [30]
  --rate=N                        平均事务率。0表示不限制[0]
  --report-interval=N             以秒为单位定期报告中间统计信息,0禁用间隔报告 [0]
  --report-checkpoints=[LIST,...] 转储完整的统计信息,并在指定的时间点重置所有计数器。参数是一个逗号分隔的值列表,表示从测试开始到必须执行报表检查点所花费的时间(以秒为单位)。默认情况下,报表检查点是关闭的。 []
  --debug[=on|off]                打印更多调试信息 [off]
  --validate[=on|off]             在可能的情况下执行验证检查[off]
  --help[=on|off]                 打印帮助并退出 [off]
  --version[=on|off]              打印版本并退出[off]
  --config-file=FILENAME          包含命令行选项的文件
  --luajit-cmd=STRING             执行LuaJIT控制命令。这个选项相当于“luajit -j”。有关更多信息,请参见LuaJIT文档

#一般数据库选项
General database options:

  --db-driver=STRING  指定要使用的数据库驱动程序(“帮助”获取可用驱动程序列表) [mysql]
  --db-ps-mode=STRING 语句使用模式 {auto, disable} [auto]
  --db-debug[=on|off] 打印特定于数据库的调试信息 [off]

#数据库驱动
Compiled-in database drivers:
  mysql - MySQL driver

mysql options:
  --mysql-host=[LIST,...]          MySQL服务器主机[localhost]
  --mysql-port=[LIST,...]          MySQL服务器端口 [3306]
  --mysql-socket=[LIST,...]        MySQL socket
  --mysql-user=STRING              MySQL 用户[sbtest]
  --mysql-password=STRING          MySQL 密码[]
  --mysql-db=STRING                MySQL 数据库名称 [sbtest]
  --mysql-ssl=STRING               SSL模式。这接受与MySQL客户机实用程序中的——ssl-mode选项相同的值。默认情况下禁用 [disabled]
  --mysql-ssl-key=STRING           客户端私钥文件的路径名称
  --mysql-ssl-ca=STRING            CA文件的路径名
  --mysql-ssl-cert=STRING          客户端公钥证书文件的路径名
  --mysql-ssl-cipher=STRING        为SSL连接使用特定的密码 []
  --mysql-compression[=on|off]     如果在客户端库中可用,则使用压缩 [off]
  --mysql-debug[=on|off]           跟踪所有客户机库调用 [off]
  --mysql-ignore-errors=[LIST,...] 要忽略的错误列表,或“全部” [1213,1020,1205]
  --mysql-dry-run[=on|off]         试运行,假设所有MySQL客户端API调用都是成功的,而没有执行它们 [off] them [off]

3.2 支持的lua脚本

选项	                    说明	
oltp_read_only	        只读测试	
oltp_read_write	        读写测试	
oltp_insert	            简单插入测试	
bulk_insert	            批量插入测试	
oltp_delete	            delete删除测试	
oltp_update_index	    带索引的更新测试	
oltp_update_non_index	不带索引的更新测试	
oltp_point_select	    等值查询测试	
select_random_points	随机等值查询测试	
select_random_ranges	随机范围查询测试	

3.3 脚本参数

  --auto_inc[=on|off]           使用 AUTO_INCREMENT 列作为主键(对于 MySQL),或者它在其他 DBMS 中的替代项。禁用时,使用客户端生成的ID [on]
  --create_secondary[=on|off]   除了 PRIMARY KEY 创建二级索引 [on]
  --create_table_options=STRING Extra CREATE TABLE options []
  --delete_inserts=N            每个事务的 DELETE/INSERT 组合数 [1]
  --distinct_ranges=N           每个事务的 SELECT DISTINCT 查询数 [1]
  --index_updates=N             每个事务的 UPDATE 索引查询数 [1]
  --mysql_storage_engine=STRING 如果使用 MySQL,指定存储引擎 [innodb]
  --non_index_updates=N         每个事务的 UPDATE 非索引查询数 [1]
  --order_ranges=N              每个事务的 SELECT ORDER BY 查询数 [1]
  --pgsql_variant=STRING        使用 PostgreSQL 驱动程序运行时使用此 PostgreSQL 变体。当前唯一支持的变体是“redshift”。启用后,create_secondary 自动禁用,delete_inserts 设置为 0
  --point_selects=N             每个事务的点 SELECT 查询数 [10]
  --range_selects[=on|off]      启用/禁用所有范围 SELECT 查询 [on]
  --range_size=N                范围 SELECT 查询的范围大小 [100]
  --reconnect=N                 每N个事件后重新连接,默认0表示不重连 [0]
  --secondary[=on|off]          使用二级索引代替 PRIMARY KEY [off]
  --simple_ranges=N             每个事务的简单范围 SELECT 查询数 [1]
  --skip_trx[=on|off]           不要启动显式事务并在 AUTOCOMMIT 模式下执行所有查询 [off]
  --sum_ranges=N                每个事务的 SELECT SUM() 查询数 [1]
  --table_size=N                每个表的行数 [10000]
  --tables=N                    表的个数 [1]

3.4 测试数据准备

4个线程在sbtest数据库下创建4张1000000行数据的表

sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_read_only  prepare

3.5 进行测试

# oltp_read_only只读测试
[root@localhost ~]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_read_only run

# oltp_read_write读写测试
[root@localhost ~]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_read_write run

# oltp_insert简单插入测试
[root@localhost ~]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_insert run

# bulk_insert批量插入测试
[root@localhost ~]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 bulk_insert run

# bulk_insert批量插入测试
[root@localhost ~]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest  bulk_insert run

#oltp_delete删除测试
[root@localhost sysbench]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_delete run

#oltp_update_index带索引的更新测试	
[root@localhost sysbench]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_update_index run

#oltp_update_non_index不带索引的更新测试
[root@localhost sysbench]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_update_non_index run

#oltp_point_select等值查询测试
[root@localhost sysbench]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_point_select run

#select_random_points随机等值查询测试
[root@localhost sysbench]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 select_random_points run

#select_random_ranges随机范围查询测试	
[root@localhost sysbench]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 select_random_ranges run

3.6 测试结果解释

[root@localhost ~]# sysbench --threads=4 --events=0 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --tables=4 --table-size=1000000 oltp_read_write run
sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

#[1s],表示第1秒的压测统计报告
#thds:4,表示4个线程做压测
#tps:5.82,表示每秒执行了5.82个事务
#qps: 154.30,每秒可以执行4650.71个请求,(r/w/o: 113.54/25.23/15.53)表示在每秒中,分别是读、写、其他请求的个数,就是对QPS进行了拆解
#lat (ms,95%): 707.07,表示95%的请求的延迟都在707.07毫秒以下
#err/s: 0.00,每秒有0个请求是失败的
#reconn/s: 0.00,发生了0次网络重连
[ 1s ] thds: 4 tps: 5.82 qps: 154.30 (r/w/o: 113.54/25.23/15.53) lat (ms,95%): 707.07 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 4 tps: 8.19 qps: 169.95 (r/w/o: 122.86/30.71/16.38) lat (ms,95%): 831.46 err/s: 0.00 reconn/s: 0.00
......
SQL statistics:
    queries performed:
        read:                            3640    # 在30s的压测期间执行了3640次的读请求
        write:                           1040    # 在30s的压测期间执行了1040次的写请求
        other:                           520     # 在压测期间执行了520次的其他请求
        total:                           5200    # 总请求
    transactions:                        260    (8.60 per sec.) # 一共执行了260个事务,每秒执行8.6个事务
    queries:                             5200   (172.03 per sec.) # 一共5200请求,每秒172.03个请求
    ignored errors:                      0      (0.00 per sec.) # 0个忽略错误
    reconnects:                          0      (0.00 per sec.) # 0个重连

#30.228秒执行了260个事务,每秒执行了8.6013个事务
Throughput:
    events/s (eps):                      8.6013
    time elapsed:                        30.2280s
    total number of events:              260

Latency (ms):
         min:                                  182.67 # 最小延迟的请求
         avg:                                  463.30 # 平均延迟
         max:                                  973.78 # 最大延迟
         95th percentile:                      759.88 # 95%的请求延迟都在759.8毫秒内
         sum:                               120458.37 # 总延迟

Threads fairness:
    events (avg/stddev):           65.0000/0.71 #4个线程,每个线程平均执行的事务数的标准差
    execution time (avg/stddev):   30.1146/0.09 #4个线程,每个线程平均执行时间的标准差

在压测的时候可以查看系统的CPU、内存、磁盘IO、网络等情况

top - 12:37:35 up  5:26,  3 users,  load average: 1.13, 0.62, 0.53
Tasks: 195 total,   1 running, 194 sleeping,   0 stopped,   0 zombie
%Cpu(s): 74.9 us, 18.4 sy,  0.0 ni,  2.0 id,  0.0 wa,  0.0 hi,  4.7 si,  0.0 st
KiB Mem :  2895292 total,   114672 free,  1370780 used,  1409840 buff/cache
KiB Swap:  3145724 total,  3145724 free,        0 used.  1319900 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                       
  1702 mysql     20   0 3096292 892172  14452 S 331.7 30.8  29:33.48 mysqld                                                                                        
 20830 root      20   0  629244   7728   3048 S  61.4  0.3   0:04.99 sysbench                                                                                      
 19938 root      20   0  162020   2336   1580 R   1.0  0.1   0:03.07 top                                                                                           
  1188 root      20   0  574200  19480   6108 S   0.7  0.7   0:06.39 tuned                                                                                         
    19 root      20   0       0      0      0 S   0.3  0.0   0:02.57 ksoftirqd/2                                                                                   
  8027 root      20   0  163616   6116   4720 S   0.3  0.2   0:03.66 sshd                                                                                          
     1 root      20   0  191268   4244   2620 S   0.0  0.1   0:21.40 systemd                                                                                       
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.11 kthreadd                                                                                      
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                  
     6 root      20   0       0      0      0 S   0.0  0.0   0:05.89 ksoftirqd/0                                                                                   
     7 root      rt   0       0      0      0 S   0.0  0.0   0:04.72 migration/0                                                                                   
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                        
     9 root      20   0       0      0      0 S   0.0  0.0   0:13.59 rcu_sched                                                                                     
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                                                 
    11 root      rt   0       0      0      0 S   0.0  0.0   0:04.80 watchdog/0                                                                                    
    12 root      rt   0       0      0      0 S   0.0  0.0   0:01.77 watchdog/1                                                                                    
    13 root      rt   0       0      0      0 S   0.0  0.0   0:04.03 migration/1                                                                                   
    14 root      20   0       0      0      0 S   0.0  0.0   0:01.69 ksoftirqd/1                                                                                   
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H

上面mysqld使用的%CPU是331.7,意思是使用了3.317颗CPU,我的虚拟机总CPU为4颗逻辑CPU

4. MySQL连接相关参数

(root@localhost) [sbtest]> show global status like '%connect%';

+-----------------------------------------------+---------------------+
| Variable_name                                 | Value               |
+-----------------------------------------------+---------------------+
| Aborted_connects                              | 5                   |
| Connection_errors_accept                      | 0                   |
| Connection_errors_internal                    | 0                   |
| Connection_errors_max_connections             | 68                  |
| Connection_errors_peer_address                | 0                   |
| Connection_errors_select                      | 0                   |
| Connection_errors_tcpwrap                     | 0                   |
| Connections                                   | 238                 |
| Locked_connects                               | 0                   |
| Max_used_connections                          | 152                 |
| Max_used_connections_time                     | 2024-04-11 12:33:14 |
| Performance_schema_session_connect_attrs_lost | 0                   |
| Ssl_client_connects                           | 0                   |
| Ssl_connect_renegotiates                      | 0                   |
| Ssl_finished_connects                         | 0                   |
| Threads_connected                             | 1                   |
+-----------------------------------------------+---------------------+
16 rows in set (0.00 sec)

参数介绍:
Aborted_connects     		尝试连接到MySQL服务器失败的次数
Connection_errors_accept    当一个客户端的连接错误数达到该值时,服务器会拒绝该客户端的后续连接
Connection_errors_internal  由于服务器中的内部错误(如无法启动新线程或内存不足)而拒绝的连接数
Connection_errors_max_connections 因为max_connections限制而连接失败的连接
Connection_errors_peer_address 当一个IP地址的连接错误数达到阈值时,会触发访问拒绝
Connection_errors_select    在侦听端口上调用select()或poll()期间发生的错误数。(此操作失败并不一定意味着客户端连接被拒绝。)
Connection_errors_tcpwrap   libwrap库拒绝的连接数
Connections		     		表示MySQL从启动至今,成功建立连接的连接数,这个值是不断累加的
Locked_connects             尝试多少次连接后,锁住用户
Max_user_connections 		某个用户并行占用的最大连接数
Max_user_connections_time  	用户占用最大连接数的用户发生的时间点
Threads_connected 			打开的连接数.

(root@localhost) [sbtest]> show variables like '%connect%';
+-----------------------------------------------+-----------------+
| Variable_name                                 | Value           |
+-----------------------------------------------+-----------------+
| character_set_connection                      | utf8            |
| collation_connection                          | utf8_general_ci |
| connect_timeout                               | 10              |
| disconnect_on_expired_password                | ON              |
| init_connect                                  |                 |
| max_connect_errors                            | 100             |
| max_connections                               | 151             |
| max_user_connections                          | 0               |
| performance_schema_session_connect_attrs_size | 512             |
+-----------------------------------------------+-----------------+

max_connect_errors   		允许一个IP客户端端连接错误最大值,超过后在不刷新状态的情况下,禁止该客户端新连接
max_connections      		实例最大连接数限制
max_user_connections        同一个用户,同时连接的最大连接数

max_user_connections/max_connections = 85% 

        注意sysbench命令的threads参数和mysql的max_connections参数有关系,如果threads超过了max_connections就会报错FATAL: error 1040: Too many connections,调大max_connections参数即可,可以动态调整set global max_connections=256;

4.1 什么是MySQL长连接和短连接

MySQL连接分为长连接和短连接两种模式:

长连接:在长连接模式下,应用程序与MySQL数据库建立一次连接后,保持连接处于打开状态,直到显式关闭连接。这意味着应用程序可以多次使用相同的连接来执行多个查询或更新操作,而不需要每次都建立新的连接。

短连接:短连接模式下,应用程序执行完一个查询或更新操作后,立即关闭连接。下次需要再次操作数据库时,重新建立一个新的连接。

4.2 MySQL长短连接的实现原理

实现长连接和短连接的关键在于连接池的管理。连接池是一个维护数据库连接的池子,应用程序从池中获取连接,使用完后放回池中,而不是每次都建立新的连接。

  • 长连接:在长连接模式下,应用程序从连接池中获取连接后,不主动关闭连接,而是将连接保持打开,等待下次使用。
  • 短连接:在短连接模式下,应用程序获取连接后,在一次查询或更新操作后立即关闭连接,连接池会在连接关闭后将其释放。

4.3 MySQL长连接和短连接的优缺点

长连接的优点:

  • 减少连接开销。
  • 减轻数据库服务器负担。
  • 可以维护事务状态。

长连接的缺点:

  • 连接占用资源。
  • 需要显式管理连接状态。

短连接的优点:

  • 简单易用。
  • 适用于短期任务。

短连接的缺点:

  • 频繁连接开销。
  • 无法维持事务状态。

4.4 MySQL长短连接的使用注意事项

长连接需要谨慎管理,确保在适当的时候关闭连接,避免资源泄漏。
确保连接池的配置合理,以满足应用程序的需求。
根据具体应用场景选择合适的连接模式。

5. MySQL线程相关参数

(root@localhost) [sbtest]> show global status like '%thread%';
+------------------------------------------+-------+
| Variable_name                            | Value |
+------------------------------------------+-------+
| Delayed_insert_threads                   | 0     |
| Performance_schema_thread_classes_lost   | 0     |
| Performance_schema_thread_instances_lost | 0     |
| Slow_launch_threads                      | 0     |
| Threads_cached                           | 9     |
| Threads_connected                        | 1     |
| Threads_created                          | 152   |
| Threads_running                          | 2     |
+------------------------------------------+-------+

参数介绍:
Threads_cached     代表当前此时此刻线程缓存中有多少空闲线程。
Threads_connected  表示当前打开的连接数。
Threads_created    表示创建过的线程数。
Threads_running    是代表当前并发数,未休眠的线程。

(root@localhost) [sbtest]> show variables like 'thread_cache_size';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| thread_cache_size | 9     |
+-------------------+-------+

thread_cache_size  当客户端断开连接时,如果缓存中的线程少于thread_cache_size,则会将客户端的线程放入缓存中,默认值为8 + (max_connections / 100)

什么时候Threads_connected和Threads_running一样?有慢查询,阻塞

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

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

相关文章

硬件18、PCB中元器件旋转

器件旋转45度,如果只是用空格的话,器件只能旋转90度 不要用x和y,因为那是器件的镜像,但是实际器件没有镜像,就会导致焊接失败的问题

FPGA - 以太网UDP通信(三)

一,引言 前文链接:FPGA - 以太网UDP通信(一) FPGA - 以太网UDP通信(二) 在以上文章中介绍了以太网简介,以太网UDP通信硬件结构,以及PHY芯片RGMII接口-GMII接口转换逻辑&#xff0c…

云架构(四)异步请求-应答模式

Asynchronous Request-Reply pattern - Azure Architecture Center | Microsoft Learn 把后台处理和前端解耦,后台处理需要异步处理,但是也需要给前端一个清晰的回应。 背景和问题 在现代应用开发中,代码通常在浏览器中运行,依…

HarmonyOS实战开发-录音机、如何实现音频录制和播放的功能

介绍 本示例使用audio相关接口实现音频录制和播放的功能,使用mediaLibrary实现音频文件的管理。 相关概念: AudioRecorder:音频录制的主要工作是捕获音频信号,完成音频编码并保存到文件中,帮助开发者轻松实现音频录…

麒麟 V10 离线 安装 k8s 和kuboard

目录 安装文件准备 主机准备 主机配置 修改主机名(三个节点分别执行) 配置hosts(所有节点) 关闭防火墙、selinux、swap、dnsmasq(所有节点) 安装依赖包(所有节点) 系统参数设置(所有节点) 时间同步…

【Qt】界面优化

目录 一、QSS 1.1 基本语法 1.2 QSS设置方法 1.2.1 指定控件样式设置 1.2.2 全局样式设置 1.2.3 从文件加载样式表 1.2.4 使用Qt Designer编辑样式 1.3 选择器 1.3.1 介绍 1.3.2 子控件选择器 1.3.3 伪类选择器 1.4 样式属性(盒模型) 1.5 代码示例(登录界面) 二、…

html中的“居中”问题详解(超全)

html中的“居中”问题详解(超全) 图片居中文本居中定位居中元素居中响应式设计中的居中技巧 引言: 在网页设计和开发中,实现元素的居中是一个常见但也常被低估的挑战。无论是在传统的网页布局中还是在响应式设计中,居中…

DP10RF001一款工作于200MHz~960MHz低功耗、高性能、单片集成的(G)FSK/OOK无线收发芯片

产品概述. DP10RF001是一款工作于200MHz~960MHz范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发机芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器,只需配备简单、低成本的外围器件就可以获得良好的收发性能。芯片支持灵活可设的数据包…

MySQL之sql性能分析

sql执行频率 MySQL客户端连接成功后,通过show[session|global]status命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的所有INSERT、DELETE、UPDATE、SELECT的访问频次。 慢日志查询 慢查询日志记录了所有执行时间超过指定参数(longquer…

AR地图导览小程序是怎么开发出来的?

在移动互联网时代,AR技术的发展为地图导览提供了全新的可能性。AR地图导览小程序结合了虚拟现实技术和地图导航功能,为用户提供了更加沉浸式、直观的导览体验。本文将从专业性和思考深度两个方面,探讨AR地图导览小程序的开发方案。 编辑搜图 …

MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。

本篇文章主要讲解MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。通过本篇文章你可以快速掌握brew安装相对应环境的能力。 作者:任聪聪 日期:2024年4月12日 一、brew介绍及安装说明 官网地址:https://b…

工具推荐:市面上有哪些AI智能客服机器人比较好用?

在这个客户期望得到即时响应的时代,AI智能客服机器人成为了许多企业提高客户满意度和效率的重要工具。这些机器人利用最新的人工智能技术,可以24/7无休止地回答客户的查询,处理常见问题,甚至在必要时将问题转接给真人客服。接下来…

大数据架构之关系型数据仓库——解读大数据架构(二)

文章目录 前言什么是关系型数仓对数仓的错误认识与使用自上而下的方法关系型数仓的优点关系型数仓的缺点数据加载加载数据的频率如何确定变更数据 关系型数仓会消失吗总结 前言 本文对关系型数据仓库(RDW)进行了简要的介绍说明,包括什么是关…

50. QT/QML中创建多线程的方式汇总

1. 说明 在QT / QML中创建线程主要有三种方式。第一种:在定义类时继承 QThread 这个类,然后重写父类的虚函数 run(),将子线程需要执行的业务代码放到 run() 函数当中即可。**注意:**这种方式官方已经摒弃了。第二种:使用moveToThread()函数将需要在子线程中执行的函数类移…

OOCT WPF_D3D项目报错无法加载依赖项

运行示例项目报错缺少dll,发现运用了这个大老李,通过添加PATH路径也无法解决,看到debug文件夹下面没有其他的依赖项。 通过depneds工具可以看到 OCCTProxy_D3D.dll 缺少依赖项,图中的缺项都是OCCT生成的模块dll所以讲这些dll从..…

Java基于微信小程序的高校体育场管理小程序,附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

数据结构(图)

定义 G (V, E) 图 (点,边) 图,Graph 点,Vertex 边,edge 有空表,空树,但没有空图 图可以没有边|E| 0,但不能没有一个点 稠密图 &稀疏图 是边的多少决定的 (见Ex…

npm 切换成淘宝源,以及遇到npm 报错如何解决

淘宝源:npm config set registryhttps://registry.npmmirror.com/ 然后再npm下 package-lock.json这个删了 npm i再试一下

清远某国企IBM服务器Board故障上门维修

接到一台来自广东清远市清城区某水利大坝国企单位报修一台IBM System x3650 M4服务器无法开机的故障,分享给大家,同时也方便有需要的朋友能及时找到我们快速解决服务器问题。 故障服务器型号:IBM System x3650 M4 服务器使用单位:…

每日两题 / 142. 环形链表 II 146. LRU 缓存(LeetCode热题100)

142. 环形链表 II - 力扣(LeetCode) 用哈希记录走过的节点即可 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:Lis…