MySQL故障排查与生产环境优化

一、MySQL逻辑架构图

  • 客户端和连接服务
  • 核心服务功能
  • 存储引擎层
  • 数据存储层

二、MySQL故障排查

1、MySQL单实例故障排查

故障一

故障现象:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (2)

问题分析:

  • 以上这种情况一般都是数据库未启动或者数据库端口被防火墙拦截导致。

解决方法:

  • 启动数据库或者防火墙开放数据库监听端口。

故障二

故障现象:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

问题分析:

  • 密码不正确或者没有权限访问

解决方法:

  • 修改my.cnf主配置文件,在[mysqld]下添加skip-grant-tables
    • update更新user表authentictication_string字段
    • 重新授权

①  update更新user表authentictication_string字段

mysql>use mysql; 
mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; 
mysql> flush privileges;

注:再删除刚刚添加的 skip-grant-tables 参数,重启数据库,使用新密码即可登录

②  重新授权,授权命令如下

mysql>grant all on *.* to 'root'@'mysql-server' identified by '123456';

故障三

故障现象

  • 在使用远程连接数据库时偶尔会发生远程连接数据库很慢的问题

问题分析

  • DNS解析慢、客户端连接过多

解决办法

  • 修改my.cnf主配置文件(增加skip-name-resolve参数)
  • 数据库授权禁止使用主机名

故障四

故障现象

Can't open file: 'xxx_forums.MYI'. (errno: 145)

问题分析

  • 服务器非正常关机,数据库所在空间已满,或一些其它位置的原因,对数据库表造成了损坏
  • 因拷贝数据库导致文件的属组发生变化

解决方法

  • 修复数据表(myisamchk、phpMyAdmin)
  • 修改文件的属组

**注意:**以上两种修复方式在执行前一定要备份数据库

故障五

故障现象

ERROR 1129 (HY000): Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors; 
unblock with 'mysqladmin flush-hosts

问题分析

  • 超出最大连接错误数量限制

解决方法

  • 清楚缓存(flush-hosts关键字)
  • 修改mysql配置文件(max_connect_errors=100)

故障六

故障现象

客户端报  Too many connections

问题分析

  • 连接数超出MySQL的最大连接限制

解决方法

  • 在my.cnf配置文件里面增大连接数,然后重启 MySQL 服务。
max_connections = 10000
  • 临时修改最大连接数,重启后不生效。需要在 my.cnf 里面修改配置文件,下次重启生效。
set GLOBAL max_connections=10000;

故障七

故障现象

Warning: World-writable config file /etc/my.cnf is ignored
ERROR! MySQL is running but PiD file could not be found

问题分析

  • MySQL的配置文件/etc/my.cnf权限问题

解决方法

chmod 644 /etc/my.cnf

故障八

故障现象

InnoDB: Error: page 14178 log sequence number 29455369832 
InnoDB: is in the future! Current system log sequence number 29455369832

问题分析

  • innodb数据文件损坏

解决方法

  • 修改my.cnf配置文件(innodb_force_recovery=4)
  • 启动数据库后备份数据文件
  • 利用备份文件恢复数据

2、MySQL主从故障排查

故障一

故障现象

  • 从库的Slave_IO_Running为NO
The slave I/O thread stops because master and slave have equal MySQL server ids;these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). 

问题分析

  • 主库和从库的server-id值一样

解决方法

  • 修改从库的server-id的值,修改为和主库不一样
  • 重新启动数据库并再次同步

故障二

故障现象

  • 从库的Slave_IO_Running为NO

问题分析

造成从库线程为NO的原因有很多,主要原因是主键冲突或着主库删除或更新数据,从库内查找不到记录,数据被修改导致,通常状态码报错有1007、1032、1062、1452等

解决方法

  • 方法一
 mysql> stop slave; 
 mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
 mysql> start slave;
  • 方法二
###设置用户权限,设置从库自读权限
set global read_only=true;

故障三

故障现象

Error initializing relay log position: I/O error reading the header from the binary log

问题分析

  • 从库的中继日志relay-bin损坏

解决方法

  • 手工修复,重新找到同步的binlog个pos点,然后重新同步即可
mysqI> CHANGE MASTER TO MASTER_LOG_FNLE='mysql-bin.xxx',MASTER_LOG_POS=xxx;

三、MySQL生产环境优化

1、硬件优化

说到服务器硬件,最主要的无非 CPU、内存、磁盘三大关键因素。

  1. CPU:推荐使用S.M.P.架构的多路对称CPU
  2. 内存:4GB以上的物理内存
  3. 磁盘:RAID_0+1磁盘阵列或固态硬盘

(1)关于CPU

CPU 对于 MySQL 应用,推荐使用 S.M.P.架构的多路对称 CPU。例如:可以使用两颗Intel Xeon 3.6GHz 的 CPU。现在比较推荐用 4U 的服务器来专门做数据库服务器,不仅仅是针对于 MySQL。

(2)关于内存

物理内存对于一台使用 MySQL 的 Database Server 来说,服务器内存建议不要小于2GB,推荐使用 4GB 以上的物理内存。不过内存对于现在的服务器而言可以说是一个可以忽略的问题,工作中遇到了高端服务器基本上内存都超过了 32G。

(3)关于磁盘

磁盘寻道能力(磁盘 I/O)。以目前市场上普遍高转速 SAS 硬盘(15000 转/秒)为例, 这种硬盘理论上每秒寻道 15000 次,这是物理特性决定的,没有办法改变。 MySQL 每秒钟都在进行大量、复杂的查询操作,对磁盘的读写量可想而知。所以通常认为磁盘 I/O 是制约 MySQL 性能的最大因素之一,通常是使用 RAID-0+1 磁盘阵列,注意不要尝试使用RAID-5,MySQL 在 RAID-5 磁盘阵列上的效率并不高。如果不考虑硬件的投入成本,也可以考虑固态(SSD)硬盘专门作为数据库服务器使用。数据库的读写性能肯定会提高很多。

2、MySQL配置文件优化

  • 调整配置顶

通常默认的 my.cnf 配置文件无法发挥出 MySQL 最高的性能,所以需要根据不同的硬件进行优化,配置文件的优化也是重点。下面是物理内存为 32G 的数据库优化参数,具体从全局、二进制日志、主从、innodb、myisam 几个方面优化,仅供参考。

(1)default-time-zone=+8:00
默认 MySQL 使用的是系统时区,修改为北京时间,也就是所说的东八区。

(2)interactive_timeout = 120
服务器关闭交互式连接前等待活动的秒数。

(3)wait_timeout = 120
服务器关闭非交互连接之前等待活动的秒数。

(4)open_files_limit = 10240
MySQL 服务器打开文件句柄数限制。

(5)group_concat_max_len = 102400
MySQL 默认的拼接最大长度为 1024 个字节,由于 1024 个字节会出现不够用的情况, 根据实际情况进行修改。

(6)user=mysql
使用 mysql 用户运行。

(7)character-set-server=utf8、init_connect='SET NAMES utf8'
设置字符集为 utf8

(8)back_log = 600
在 MySQL 暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的 TCP/IP 连接的监听队列的大小。默认值 50。

(9)max_connections = 5000
MySQL 允许最大的进程连接数,如果经常出现 Too Many Connections 的错误提示, 则需要增大此值。

(10)max_connect_errors = 6000
设置每个主机的连接请求异常中断的最大次数。当超过该次数,MySQL 服务器将禁止host 的连接请求,直到 MySQL 服务器重启或通过flush hosts 命令清空此host 的相关信息。

(11)table_cache = 1024
数据表调整缓冲区大小。它设置表高速缓存的数目。每个连接进来,都会至少打开一个表缓存。因此,table_cache 的大小与 max_connections 的设置有关。例如,对于 200 个并行运行的连接,应该让表的缓存至少有 200×N。这里 N 是应用可以执行查询的一个连接中表的最大数量。

此外,还需要为临时表和文件保留一些额外的文件描述符。 当 MySQL 访问一个表时, 如果该表在缓存中已经被打开,则可以直接访问缓存。如果还没有被缓存,但是在 MySQL 表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区。如果表缓存满了,则会按照一定的规则将当前未用的表释放,或者临时扩大表缓存来存放,使用表缓存的好处是可以更快速地访问表中的内容。执行 flushtables 会清空缓存的内容。

一般来说,可以通过 showstatus 命令查看数据库运行峰值时间的状态值 Open_tables 和 Opened_tables,判断是否需要增加 table_cache 的值(其中 open_tables 是当前打开的表的数量,Opened_tables 则是已经打开的表的数量)。若 open_tables 接近 table_cache, 并且 Opened_tables 值在逐步增加, 那就要考虑增加这个值的大小了。还有就是Table_locks_waited 比较高的时候,也需要增加 table_cache。

(12)table_open_cache = 2048
指定表高速缓存的大小。每当MySQL 访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。

(13)max_heap_table_size = 256M
这个变量定义了用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变,即 set @max_heap_table_size=#。但是对于已经存在的内存表就没有什么用了,除非这个表被重新创建(create table)、修改(alter table)或者truncate table。服务重启也会设置已经存在的内存表为全局 max_heap_table_size 的值。

(14)external-locking = false
使用 skip-external-lockingMySQL 选项以避免外部锁定。该选项默认开启。

(15)max_allowed_packet = 32M
设置在网络传输中一次消息传输量的最大值。系统默认值为 1MB,最大值是 1GB,必须设置 1024 的倍数。

(16)sort_buffer_size = 512M
Sort_Buffer_Size 是一个 connection 级参数,在每个 connection(session)第一次需要使用这个 buffer 的时候,一次性分配设置的内存。Sort_Buffer_Size 并不是越大越好,由于是 connection 级的参数,过大的设置+高并发可能会耗尽系统内存资源。

(17)join_buffer_size = 8M
用于表间关联缓存的大小,和 sort_buffer_size 一样,该参数对应的分配内存也是每个连接独享。

(18)thread_cache_size = 300
服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中;如果线程重新被请求,那么请求将从缓存中读取;如果缓存中是空的或者是新的请求,那么这个线程将被重新创建;如果有很多新的线程,增加这个值可以改善系统性能。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。设置规则如下:1GB 内存配置为 8,2GB 配置为 16, 3GB 配置为 32,4GB 或更高内存,可配置更大。

(19)thread_concurrency = 8
设置 thread_concurrency 值的正确与否,对 MySQL 的性能影响很大,在多个 CPU(或多核)的情况下, 错误设置了 thread_concurrency 的值, 会导致 MySQL 不能充分利用多CPU(或多核),出现同一时刻只能一个 CPU 在工作的情况。thread_concurrency 应设为CPU
核数的 2 倍。比如有一个双核的 CPU,那么 thread_concurrency 的应该为 4;2 个双核的
cpu,thread_concurrency 的值应为 8。

(20)query_cache_size = 512M
使用 MySQL 的用户,对于这个变量一定不会陌生。前几年的 MyISAM 引擎优化中, 这个参数也是一个重要的优化参数。但随着发展,这个参数也爆露出来一些问题。机器的内存越来越大,人们也都习惯性的把以前有用的参数分配的值越来越大。这个参数加大后也引发了一系列问题。首先分析一下 query_cache_size 的工作原理:一个 SELECT 查询在 DB 中工作后,DB 会把该语句缓存下来。当同样的一个 SQL 再次来到 DB 里调用时,DB 在该表没发生变化的情况下把结果从缓存中返回给 Client。这里有一个关建点,就是 DB 在利用Query_cache 工作时,要求该语句涉及的表在这段时间内没有发生变更。那如果该表在发生变更时,Query_cache 里的数据又怎么处理呢?首先要把 Query_cache 和该表相关的语句全部设置为失效,然后再写入更新。那么如果 Query_cache 非常大,该表的查询结构又比较多,查询语句失效也慢,一个更新或是 Insert 就会很慢,这样看到的就是 Update 或是Insert 怎么这么慢了。所以在数据库写入量或是更新量也比较大的系统,该参数不适合分配过大。而且在高并发,写入量大的系统,建议把该功能禁掉。

(21)query_cache_limit = 4M
指定单个查询能够使用的缓冲区大小,缺省为 1M。

(22)query_cache_min_res_unit = 2k
默认是 4KB,设置值大对大数据查询有好处,但如果查询都是小数据查询,就容易造成内存碎片和浪费,查询缓存碎片率=Qcache_free_blocks/Qcache_total_blocks*100%。  如果查询缓存碎片率超过 20%,可以用 FLUSHQUERYCACHE 整理缓存碎片,或者尝试减小 query_cache_min_res_unit 。 如果查询都是小数据量, 那么查询缓存利用率=(query_cache_size–Qcache_free_memory)/query_cache_size*100%。查询缓存利用率在 25%以下,说明 query_cache_size 设置的过大,可适当减小。查询缓存利用率在 80%以上而且 Qcache_lowmem_prunes>50 的话说明 query_cache_size 可能有点小,要不就是碎片太多。查询缓存命中率=(Qcache_hits–Qcache_inserts)/Qcache_hits*100%。

(23)default-storage-engine = innodb
默认引擎,现在一般都是 innodb 引擎表居多。

(24)thread_stack = 192K
设置 MySQL 每个线程的堆栈大小,默认值足够大,可满足普通操作。可设置范围为128K 至 4GB,默认为 192KB。

(25)transaction_isolation = READ-COMMITTED
设定默认的事务隔离级别,READCOMMITTEE 是读已提交。

(26)tmp_table_size = 256M
tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL 产生一个Thetabletbl_nameisfull 形 式 的 错误 ; 如 果 执 行很 多 高 级 GROUPBY 查 询, 增 加tmp_table_size 值。如果超过该值,则会将临时表写入磁盘。

(27)key_buffer_size = 1024M
指定用于索引的缓冲区大小,增加它可以得到更好的索引处理性能。

(28)read_buffer_size = 2M
MySQL 读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL 会为它分配一段内存缓冲区。read_buffer_size 变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。和 sort_buffer_size 一样,该参数对应的分配内存也是每个连接独享。

(29)read_rnd_buffer_size = 256M
MySQL 的随机读(查询操作)缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL 会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度。如果需要排序大量数据,可适当调高该值。但 MySQL 会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。

(30)bulk_insert_buffer_size = 64M
批量插入数据缓存大小,可以有效提高插入效率,默认为 8M。

(31)skip-name-resolve
禁止域名解析,包括主机名.所以授权的时候要使用 IP 地址。

(32)ft_min_word_len = 1
从 MySQL4.0 开始就支持全文索引功能,但是 MySQL 默认的最小索引长度是 4。如果是英文默认值是比较合理的,但是中文绝大部分词都是 2 个字符,这就导致小于 4 个字
的词都不能被索引。MySQL 全文索引是专门为了解决模糊查询提供的,可以对整篇文章预先按照词进行索引,搜索效率高,能够支持百万级的数据检索。
下面几个参数时关于 MySQL 二进制日志文件的优化。

(33)log-bin=mysql-bin
打开 MySQL 二进制功能。

34)binlog_cache_size = 4M
在事务过程中容纳二进制日志 SQL 语句的缓存大小。二进制日志缓存是服务器支持事务存储引擎并且服务器启用了二进制日志(—log-bin 选项)的前提下为每个客户端分配的内存。
注意:是每个 Client 都可以分配设置大小的 binlogcache 空间。可以通过 MySQL 的以下两个 状态变量来判 断当前的 binlog_cache_size 的状况 : Binlog_cache_use 和Binlog_cache_disk_use。

(35)max_binlog_cache_size = 128M
表 示 binlog 能 够使 用的 最大 cache 内 存大 小。 执行 多语 句事 务的 时候 , max_binlog_cache_size 如 果 不 够 大 的 话 , 系 统 可 能 会 报 出“Multi-statementtransactionrequiredmorethan'max_binlog_cache_size'bytesofstorage” 的错误。

(36)max_binlog_size = 1G
Binlog 日志最大值,一般来说设置为 512M 或者 1G,但不能超过 1G。该大小并不能非常严格控制 Binlog 大小,尤其是当到达 Binlog 比较靠近尾部而又遇到一个较大事务的时候,系统为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有 SQL 都记录进入当前日志,直到该事务结束。这一点和Oracle 的Redo 日志有点不一样,因为Oracle 的 Redo 日志所记录的是数据文件的物理位置的变化,而且里面同时记录了 Redo 和 Undo 相关的信息,所以同一个事务是否在一个日志中对 Oracle 来说并不关键。而 MySQL 在Binlog 中所记录的是数据库逻辑变化信息,MySQL 称之为 Event,实际上就是带来数据库变化的 DML 之类的 Query 语句。

(37)sync_binlog=1
在 MySQL 中系统默认的设置是 sync_binlog=0,也就是不做任何强制性的磁盘刷新指
令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统 Crash,在 binlog_cache 中的所有 binlog 信息都会被丢失。而当设置为“1”的时候最安全,但也是性能损耗最大的设置。因为当设置为 1 的时候,即使系统 Crash,也最多丢失 binlog_cache 中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为 0 和设置为 1 的系统写入性能差距可能高达 5 倍甚至更多。

(38)binlog_format=mixed
默认使用 statement 模式,基于 SQL 语句的复制,另外一种是基于行的复制,为提升效率,可以将以上两种模式混合使用。一般的复制使用 STATEMENT 模式保存 binlog,对于 STATEMENT 模式无法复制的操作使用 ROW 模式保存 binlog,MySQL 会根据执行的SQL 语句选择日志保存方式。

(39)expire_logs_days = 7
二进制日志只留存最近 7 天,不用人工手动删除。

(40)log-slave-updates
这条参数只读主从架构适用,当从库 log_slave_updates 参数没有开启时,从库的 binlog 不会记录来源于主库的操作记录。只有开启 log_slave_updates,从库 binlog 才会记录主库同步的操作日志。

(41)slow_query_log 
打开慢查询日志。

(42)slow_query_log_file=slow.log 
慢查询日志文件位置。

(43)long_query_time = 2
记录超过 2 秒的 SQL 查询。

3、关于引擎innodb的优化

(1)innodb_additional_mem_pool_size = 64M
这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小,类似于 Oracle 的 library cache。这不是一个强制参数,可以被突破。

(2)innodb_buffer_pool_size = 20480M
用于缓存索引和数据的内存大小,这个选项的值越多越好, 数据读写在内存中非常快, 减少了对磁盘的读写。当数据提交或满足检查点条件后才一次性将内存数据刷新到磁盘中。   然而内存还有操作系统或数据库其他进程使用,推荐设置 innodb-buffer-pool-size 为服务器总可用内存的 75%。 若设置不当, 内存使用可能浪费或者使用过多。 对于繁忙的服务器, buffer pool 将划分为多个实例以提高系统并发性, 减少线程间读写缓存的争用。buffer pool 的大小首先受 innodb_buffer_pool_instances 影响,当然影响较小。

(3)innodb_data_file_path = ibdata1:1024M:autoextend
用 来 指 定 innodb tablespace 文 件 , 如 果 我 们 不 在 my.cnf 文 件 中 指 定innodb_data_home_dir 和innodb_data_file_path 那么默认会在datadir 目录下创建ibdata1 作为 innodb tablespace。

(4)innodb_file_io_threads = 4
文件 IO 的线程数,一般为 4,但是在 Windows 下,可以设置得较大。

(5)innodb_thread_concurrency = 8
服务器有几个 CPU 就设置为几,建议用默认设置,一般为 8。

(5)innodb_write_io_threads = 8
InnoDB 使用后台线程处理数据页上写 I/O(输入输出)请求的数量。一般设置为 CPU核数,比如 CPU 是 2 颗 8 核的,可以设置为 8。

(6)innodb_read_io_threads = 8
InnoDB 使用后台线程处理数据页上读 I/O(输入输出)请求的数量。一般设置为 CPU核数,比如 CPU 是 2 颗 8 核的,可以设置为 8。

(7)innodb_flush_log_at_trx_commit = 2
如果将此参数设置为 1,将在每次提交事务后将日志写入磁盘。为提高性能,可以设置为 0 或 2,但要承担在发生故障时丢失数据的风险。设置为 0 表示事务日志写入日志文件,
而日志文件每秒刷新到磁盘一次。设置为 2 表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。

(8)innodb_log_buffer_size = 16M
此参数确定日志文件所用的内存大小,以 M 为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL 开发人员建议设置为 1-8M 之间。

(9)innodb_log_file_size = 256M
此参数确定数据日志文件的大小,以 M 为单位,较大的值可以提高性能,但也会增加恢复故障数据库所需的时间。

(10)innodb_log_files_in_group = 3
为提高性能,MySQL 可以以循环方式将日志文件写到多个文件。

(11)innodb_file_per_table = 1
独享表空间(关闭)。

(12)innodb_max_dirty_pages_pct = 90
Buffer_Pool 中 Dirty_Page 所占的数量, 直接影响 InnoDB 的关闭时间。 参数innodb_max_dirty_pages_pct 可以直接控制了 Dirty_Page 在 Buffer_Pool 中所占的比率, 而且幸运的是 innodb_max_dirty_pages_pct 是可以动态改变的。所以,在关闭 InnoDB 之前先将 innodb_max_dirty_pages_pct 调小,强制数据块 Flush 一段时间,就能够大大缩短MySQL 关闭的时间。

(13)innodb_lock_wait_timeout = 120
InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合 InnoDB 使用 MyISAM 的 locktables 语句或第三方事务引擎,InnoDB 就无法识别死锁。为消除这种可能性,可以将 innodb_lock_wait_timeout 设置为一个整数值,设置 MySQL 在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)。

(14)innodb_open_files = 8192 innodb 
打开文件句柄数。

4、关于引擎myisam的优化

(1)myisam_sort_buffer_size = 128M
MyISAM 表发生变化时重新排序所需的缓冲大小。

(2)myisam_max_sort_file_size = 10G
MySQL 重建索引时所允许的最大临时文件的大小(当 REPAIR,ALTERTABLE 或者
LOADDATAINFILE)。如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)。

(3)myisam_repair_threads = 1
如果一个表拥有超过一个索引,MyISAM 可以通过并行排序使用超过一个线程去修复。这对于拥有多个 CPU 以及大量内存情况的用户是一个很好的选择。

(4)myisam_recover
自动检查和修复没有适当关闭的 MyISAM 表。

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

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

相关文章

使用Pollard_rho算法分解质因数

分解质因数的朴素算法 最简单的算法即为从 [2, sqrt&#xff08;N&#xff09;] 进行遍历。 vector<int> breakdown(int N) {vector<int> result;for (int i 2; i * i < N; i) {if (N % i 0) { // 如果 i 能够整除 N&#xff0c;说明 i 为 N 的一个质因子。…

求组合背包II(acwing)

题目描述&#xff1a; 给定n组循问&#xff0c;每组询问给定两个整数a&#xff0c;b&#xff0c;请你输出Ca^b mod (1e9 7)的值&#xff0c;。 输入格式&#xff1a; 第一行包含整数n。 接下来2行&#xff0c;每行包含一组a和b。 输出格式&#xff1a; …

Vscode下使用markdown入门

1.安装vscode插件 1. **Markdown All in One** ——提供丰富的Markdown相关的快捷键、自动补全功能&#xff0c;提高md文档编写生产力 2. **Markdown Preview Ehanced** ——用于渲染当前编写文档的效果同步预览 3. **Paste Image** ——用于快速引用图片至Markdown文…

视频素材库有哪些网站?八大平台视频素材库创作推荐

视频创作的小达人们&#xff0c;是不是经常在想&#xff0c;视频素材库有哪些网站能提供高质量的素材呢&#xff1f;别担心&#xff0c;今天我要为你们揭秘八个超棒的视频素材网站&#xff0c;让你的视频制作更加轻松在创作的路上如鱼得水&#xff01; 蛙学网&#xff1a;海量…

【tensorflow框架神经网络实现鸢尾花分类_Keras】

文章目录 1、前言2、鸢尾花分类3、结果打印 1、前言 【tensorflow框架神经网络实现鸢尾花分类】一文中使用自定义的方式&#xff0c;实现了鸢尾花数据集的分类工作。在这里使用tensorflow中的keras模块快速、极简实现鸢尾花分类任务。 2、鸢尾花分类 import tensorflow as t…

.DevicData-P-XXXXXXXX勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络安全问题日益突出&#xff0c;其中勒索病毒成为了一种日益严重的威胁。.DevicData-P-XXXXXXXX勒索病毒就是其中一种典型的恶意软件&#xff0c;它通过加密用户文件并要求赎金来解锁的方式&#xff0c;给企业和个人带来…

【Java项目】基于SpringBoot的【心灵治愈交流平台】

目录 背景 技术简介 系统简介 界面预览 背景 随着网络不断的普及发展&#xff0c;心灵治愈交流平台依靠网络技术的支持得到了快速的发展&#xff0c;首先要从用户的实际需求出发&#xff0c;通过了解用户的需求开发出具有针对性的首页、系统公告、心理咨询师、心灵专栏、压…

基于springboot实现网上点餐系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网上点餐系统演示 摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于网上点餐系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了网上点餐系统…

【了解下Oracle】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

网络安全入门教程(非常详细)从零基础入门到精通!

网络安全是一个庞大而不断发展的领域&#xff0c;它包含多个专业领域&#xff0c;如网络防御、网络攻击、数据加密等。介绍网络安全的基本概念、技术和工具&#xff0c;逐步深入&#xff0c;帮助您成为一名合格的网络安全从业人员。 一、网络安全基础知识 1.计算机基础知识 …

java(4)之运算符

1、算术运算符 运算符含义表达式加11-减1-1*乘1*2/除2/1%取余5%2 2、赋值运算符 即 表示将右边的值赋给左边的变量 即 int i &#xff1b; i 1&#xff1b; 运算符含义 表达式 x xyxy-x x-yx - y*x x*yx*y/x x/yx /y%x x%yx %y 代码示例 public class Main {pub…

芒果YOLOv5改进89:卷积SPConv篇,即插即用,去除特征图中的冗余,FLOPs 和参数急剧下降,提升小目标检测

芒果专栏 基于 SPConv 的改进结构,改进源码教程 | 详情如下🥇 👉1. SPConv 结构、👉2. CfSPConv 结构 💡本博客 改进源代码改进 适用于 YOLOv5 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件 YOLOv5改进专栏完整目录链接:…

环境配置——已解决ModuleNotFoundError: No module named ‘cv2’(python)

一、报错代码 在网上搜到不少用Python处理图形的代码&#xff0c;于是复制别人的代码直接运行却报错&#xff0c;得到的结果却是&#xff1a;已解决ModuleNotFoundError: No module named ‘cv2’。&#xff08;当时心里瞬间凉了一大截&#xff0c;最后顺利解决了&#xff0c;顺…

配置文件乱码

1、改UTF-8 &#xff08;1&#xff09;已经创建的项目 (2)新项目也改一下

皓学IT:WEB07_ JSP

一、Jsp基础语法 1.1. JSP模板元素 JSP页面中的HTML内容称之为JSP模版元素。 JSP模版元素定义了网页的基本骨架&#xff0c;即定义了页面的结构和外观。 1.2. JSP脚本片段 JSP脚本片断用于在JSP页面中编写多行Java代码&#xff08;在<%%>不能定义方法&#xff09;。…

动手机器学习支持向量机+习题

非参数化模型&#xff0c;当数据集规模增大时&#xff0c;其参数量也相应变多 希望从这无数个可以分隔两个点集的超平面中&#xff0c;挑选出与任意一点间隔&#xff08;margin&#xff09;的最小值最大的平面 支持向量机的数学描述 对上式来说&#xff0c;当w和b的大小同时变…

鸿蒙OS开发实例:【ArkTS类库多线程CPU密集型任务TaskPool】

CPU密集型任务是指需要占用系统资源处理大量计算能力的任务&#xff0c;需要长时间运行&#xff0c;这段时间会阻塞线程其它事件的处理&#xff0c;不适宜放在主线程进行。例如图像处理、视频编码、数据分析等。 基于多线程并发机制处理CPU密集型任务可以提高CPU利用率&#x…

学习大数据之JDBC(使用JAVA语句进行SQL操作)(2)

文章目录 PreparedStatement预处理对象sql注入的问题以解决方法&#xff08;预处理对象&#xff09;使用预处理对象(PreparedStatement)实现操作使用预处理对象&#xff08;PreparedStatement&#xff09;实现查询操作使用预处理对象&#xff08;PreparedStatement&#xff09;…

瑞吉外卖实战学习--11、分类管理的列表分页查询

分类管理的列表分页查询 前言1、创建接口2、基于分页组件来实现的 前言 通过前端接口可以看到请求和传递的参数&#xff0c;本文章是基于mybatisPlus的分页插件来实现的 1、创建接口 GetMapping("/page")public R<Page> page(int page,int pageSize){ // …

AI图像重绘解决方案

高质量的图像素材往往成本高昂且制作周期长&#xff0c;给企业带来了不小的困扰。美摄科技凭借其领先的AI图像重绘解决方案&#xff0c;为企业提供了一种高效、便捷且成本可控的图像优化途径&#xff0c;助力企业重塑视觉形象&#xff0c;引领市场新风尚。 美摄科技的AI图像重…