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 wrapperConnection 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 secThreads: 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 drivermysql 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 timeInitializing 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.6013time elapsed:                        30.2280stotal number of events:              260Latency (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一样?有慢查询,阻塞

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

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

相关文章

蓝桥杯-数组切分

问题描述 已知一个长度为 N 的数组: A1,A2,A3,...AN 恰好是1~ N的一个排列。现 在要求你将 4 数组切分成若干个 (最少一个,最多 N 个)连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。 例如对于 4 1,3,2,4,一共有 5 种切分方法: 1324:每个单独的数显然…

Java 中文官方教程 2022 版(四十六)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html 定义简单的通用类型 原文&#xff1a;docs.oracle.com/javase/tutorial/extra/generics/simple.html 这里是包java.util中接口List和Iterator的定义的一个小节选&#xff1a; public interface List <…

盲人独立购物新纪元:一款实时“障碍物识别”应用助力超市之行

作为一名资深记者&#xff0c;我始终热衷于探寻科技如何助力特殊群体跨越生活挑战的创新实践。近日&#xff0c;一款名为蝙蝠避障专为盲人设计的辅助应用走进了我的视野&#xff0c;它凭借实时障碍物识别功能&#xff0c;助力视障人士独立前往超市购物&#xff0c;悄然改变了他…

【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第五篇&#xff1a;Java面向对象编程&#xff1a;类、对象、继承、多态。 在Java中&#xff0c;面向对象编程是一种常用的编程范式&#xff0c;它以类和对象为核心&#xff0c;通过继承和多态等机制实现代码的复用和灵活…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上&#xff0c;开发出了一款基于经典街机游戏《街头霸王III》的人工智能&#xff08;AI&#xff09;基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发&#xff0c;游戏在模拟器中运行&#xf…

【C++】——list的介绍及使用 模拟实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.…

数据结构基础 ——数组VS链表(二)

一、数组 数组对应的英文是array&#xff0c;是有限个相同类型的变量所组成的有序集合&#xff0c;数组中的每一个变量称为元素。数组是最简单、最常用的数据结构。 数组存储格式&#xff1a; 在Python语言中&#xff0c;并没有直接使用数组这个概念&#xff0c;而是使用列表(…

Transformer模型-encoder编码器,padding填充,source mask填充掩码的简明介绍

今天介绍transformer模型的encoder编码器&#xff0c;padding填充&#xff0c;source mask填充掩码 背景 encoder编码器层是对之前文章中提到的子层的封装。它接收位置嵌入的序列&#xff0c;并将其通过多头注意力机制和位置感知前馈网络。在每个子层之后&#xff0c;它执行残差…

SQLite数据库文件格式(十五)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite 4.9的虚拟表机制(十四) 下一篇&#xff1a;SQLite超详细的编译时选项&#xff08;十六&#xff09; ► 目录 本文档描述和定义磁盘上的数据库文件 自 SQLite 以来所有版本使用的格式 版本 3.0.0 &#xff08;2004-06-18…

PVE系统的安装

一.PVE系统的安装 前置准备环境:windows电脑已安装Oracle VM VirtualBox,电脑支持虚拟化,且已经开启,按住ctrl+shift+ESC打开任务管理器查看是否开启,如果被禁用,可进入BIOS开启虚拟化,重启电脑后再进行后续操作。本步骤选用windows10安装VirtualBox,版本为7.0.8。 …

web安全-SSH私钥泄露

发现主机 netdiscover -r 192.168.164.0 扫描端口 看到开放80和31337端口都为http服务 浏览器访问测试 查看80端口和31337端口网页和源代码并无发现有用信息 目录扫描 扫描出80端口并无有用信息 扫描31337端口 发现敏感文件robots.txt和目录.ssh 访问敏感文件和目录 /.ss…

Ansys Zemax | 如何将光栅数据从Lumerical导入至OpticStudio(下)

附件下载 联系工作人员获取附件 本文介绍了一种使用Ansys Zemax OpticStudio和Lumerical RCWA在整个光学系统中精确仿真1D/2D光栅的静态工作流程。将首先简要介绍方法。然后解释有关如何建立系统的详细信息。 本篇内容将分为上下两部分&#xff0c;上部将首先简要介绍方法工作…

一键修复所有DLL缺失解决步骤,使用dll修复工具详情

在使用电脑或安装软件时&#xff0c;我们有时会遭遇DLL文件丢失的情况&#xff0c;这会阻止软件正常启动或运行。为此&#xff0c;一个简易且有效的解决方案是使用一键修复所有DLL缺失问题的工具。 引言 DLL&#xff08;动态链接库&#xff09;是Windows操作系统的核心部分&am…

k8s_入门_kubelet安装

安装 在大致了解了一些k8s的基本概念之后&#xff0c;我们实际部署一个k8s集群&#xff0c;做进一步的了解 1. 裸机安装 采用三台机器&#xff0c;一台机器为Master&#xff08;控制面板组件&#xff09;两台机器为Node&#xff08;工作节点&#xff09; 机器的准备有两种方式…

文库配置异步转换(宝塔)| 魔众文库系统

执行以下操作前提前进入网站根目录&#xff0c;如 cd /www/wwwroot/example.com执行 artisan 命令前请参照 开发教程 → 开发使用常见问题 → 如何运行 /www/server/php/xxx/bin/php artisan xxx 命令 步骤1&#xff0c;生成数据库队列表迁移文件 在执行该步骤前&#xff0c;请…

橘子学JDK之JMH-02(BenchmarkModes)

一、案例二代码 这次我们来搞一下官网文档的第二个案例&#xff0c;我删除了一些没用的注释&#xff0c;然后对代码做了一下注释的翻译&#xff0c;可以看一下意思。 package com.levi;import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import …

【科技】2024最新微信机器人一键部署教程

外话 话说上次写文章好像又过了几个月了…… 其实还是因为马上小升初的各种密考&#xff0c;其它地方不知道&#xff0c;反正广东这块名校基本上都得密考考进去 笔者连考几次都惨不忍睹…… 不过5月份会有一个信息技术特长生招生&#xff0c;看看能不能吧~ 正文 先说&#xff…

基于SpringBoot+Vue的高校大学生心理咨询管理系统(源码+文档+部署+讲解)

一.系统概述 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对高校大学生心理咨询管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计…

springboot相关报错解决

Caused by: java.lang.ClassNotFoundException: 目录 Caused by: java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener spring-boot-dependencies:jar:2.1.9.RELEASE was not found org.springframework.context.event.Generi…

华为OD-C卷-攀登者1[100分]

攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如: [0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图 地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,1…