mysql自动安装脚本(快速部署mysql)

mysql_install - 适用于生产环境单实例快速部署

MySQL8.0 自动安装脚本

mysql8_install.sh(执行前修改一下脚本里的配置参数,改成你自己的)(博客末尾)

my_test.cnf(博客末尾)(这个是模板文件,基本上不用改,mysql8_install.sh脚本执行的时候会自动替换里面的port,server_id,innodb_buffer_pool_size等)

mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz

shell> wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz

三个文件放在同一个目录下,例如/root/soft/


Centos8 注意事项

shell> yum install jemalloc -y

内存管理器jemalloc库文件名字已经变更,需要建立一个软连接

shell> ln -s /usr/lib64/libjemalloc.so.2 /usr/lib64/libjemalloc.so


1)安装并启动mysql进程(主和从库都执行)

shell> /bin/bash mysql8_install.sh

注:my.cnf配置文件默认在/etc/目录下,文件名是以你的数据库名命名,例my_test.cnf,mysql.sock在/tmp目录下。

数据存放在/data/mysql/目录下。

2)配置主从复制(从库执行)

shell> /bin/bash mysql8_install.sh repl

3)配置组复制(先在Primary节点上执行,再到Secondary节点上执行)

注:先把3个节点MySQL实例启动后再开始搭建mgr,同时修改脚本里的ip地址和端口和hosts对应的主机名和地址

shell> /bin/bash mysql8_install.sh mgr

image

注:配置成功后,会在data数据目录下生成mysqld-auto.cnf配置文件。
脚本:
mysql8_install.sh

#!/bin/bash
# 适用于生产环境单实例快速部署,操作系统CentOS 7。echo "正在安装MySQL软件......."useradd mysql
useradd nagios
useradd zabbixsleep 2######配置参数######
mysql8_version=mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
mysql8_version_dir=mysql-8.0.32-linux-glibc2.12-x86_64################################主从复制配置################################
######同步复制用户######
repl_user=repl
repl_passwd=sysrepl
#############################root密码######
root_passwd=123456
#############################DBA管理用户######
dba_user=admin
dba_passwd=hechunyang
#############################8.0克隆用户######
clone_user=clone_user
clone_passwd=123456
#######################################################mgr组复制配置######################################修改hosts文件######
cat << EOF >> /etc/hosts192.168.71.11   mgr1
192.168.71.12   mgr2
192.168.71.13   mgr3EOF
#######################mysql_port=3306                 # 数据库实例对外请求端口
primary_ip=192.168.71.11        # 每个mgr节点IP
secondary1_ip=192.168.71.12     # 每个mgr节点IP
secondary2_ip=192.168.71.13     # 每个mgr节点IPprimary_port=33061        # mgr primary节点通讯端口
secondary1_port=33062     # mgr secondary1节点通讯端口
secondary2_port=33063     # mgr secondary2节点通讯端口local_ip=192.168.71.11    # 每个mgr节点IP不相同
local_port=33061          # 每个mgr节点通讯端口port不相同################################以下代码不用修改################################
if [ "$1" = "repl" ]
then
while true
doread -t 30 -p "输入你的主库IP:  " master_ipread -t 30 -p "输入你的主库端口号:  " master_portif [[ -z $master_ip || -z $master_port ]]thencontinueelseecho ""echo "主库IP是: $master_ip"echo "主库端口号是: $master_port"break fi
done/usr/local/mysql/bin/mysql -h127.0.0.1 -u"$dba_user" -p"$dba_passwd" -P"$master_port" --connect-expired-password -e "CHANGE MASTER TO MASTER_HOST='$master_ip',MASTER_USER='$repl_user',MASTER_PASSWORD='$repl_passwd',MASTER_PORT=$master_port,MASTER_AUTO_POSITION = 1,MASTER_CONNECT_RETRY=10; START SLAVE;"echo "MySQL主从复制同步已经初始化完毕。"exit 0
fi################################################
if [ "$1" = "mgr" ]
thenwhile true
doread -t 30 -p "是Primary吗?是请输入yes,否输入no:  " is_primaryif [[ -z $is_primary ]]thencontinueelseif [ $is_primary == "yes" ] || [ $is_primary == "no" ]thenbreak elseecho "你输入一个错误的字符$is_primary,请重新输入..."continuefifi
doneif [ $is_primary == "yes" ]
then/usr/local/mysql/bin/mysql -h127.0.0.1 -u"$dba_user" -p"$dba_passwd" -P"$mysql_port" --connect-expired-password -e "INSTALL PLUGIN group_replication SONAME  'group_replication.so'; set persist group_replication_group_name = '3b12b5bd-f0c6-11e9-9778-000c2900afc6';set persist group_replication_local_address =  '${local_ip}:${local_port}'; set persist group_replication_group_seeds = '${primary_ip}:${primary_port},${secondary1_ip}:${secondary1_port},${secondary2_ip}:${secondary2_port}';SET GLOBAL group_replication_bootstrap_group=ON; CHANGE MASTER TO MASTER_USER='$repl_user',MASTER_PASSWORD='$repl_passwd' FOR CHANNEL 'group_replication_recovery';START GROUP_REPLICATION;select sleep(5);select * from performance_schema.replication_group_members;SET GLOBAL group_replication_bootstrap_group=OFF;"else/usr/local/mysql/bin/mysql -h127.0.0.1 -u"$dba_user" -p"$dba_passwd" -P"$mysql_port" --connect-expired-password -e "INSTALL PLUGIN group_replication SONAME  'group_replication.so'; set persist group_replication_group_name = '3b12b5bd-f0c6-11e9-9778-000c2900afc6';set persist group_replication_local_address =  '${local_ip}:${local_port}'; set persist group_replication_group_seeds = '${primary_ip}:${primary_port},${secondary1_ip}:${secondary1_port},${secondary2_ip}:${secondary2_port}'; SET GLOBAL group_replication_bootstrap_group=OFF; CHANGE MASTER TO MASTER_USER='$repl_user',MASTER_PASSWORD='$repl_passwd' FOR CHANNEL 'group_replication_recovery';START GROUP_REPLICATION;select sleep(5);select * from performance_schema.replication_group_members;"fiecho "MySQL Mgr组复制已经初始化完毕。"
exit 0fi################################################ps aux | grep 'mysql' | grep -v 'grep' | grep -v 'bash'
if [ $? -eq 0 ]
thenecho "MySQL进程已经启动,无需二次安装。"exit 0
fiif [ ! -d /usr/local/${mysql8_version_dir} ]
thenyum install xz numactl* jemalloc* libaio* net-tools nload iftop sysstat wget vim ntpdate lrzsz -ytar -Jxvf ${mysql8_version} -C /usr/local/ln -s /usr/local/${mysql8_version_dir} /usr/local/mysqlchown -R mysql.mysql /usr/local/mysql/chown -R mysql.mysql /usr/local/mysql
elseln -s /usr/local/${mysql8_version_dir} /usr/local/mysqlchown -R mysql.mysql /usr/local/mysql/chown -R mysql.mysql /usr/local/mysql
fi while true
doread -t 30 -p "输入你的数据库名:  " dbnameread -t 30 -p "输入你的数据库端口号:  " dbportread -t 30 -p "输入MySQL serverId:  " serverIdread -t 30 -p "输入innodb_buffer_pool_size大小,单位G:  " innodb_bp_sizeif [[ -z $dbname || -z $dbport || -z $serverId || -z $innodb_bp_size ]]thencontinueelseecho "数据库名字是: $dbname"echo "数据库端口是: $dbport"echo "MySQL serverId: $serverId"echo "BP大小是: $innodb_bp_size GB"break fi
donesed "s/test/$dbname/g;s/3306/$dbport/;s/413306/$serverId/;/innodb_buffer_pool_size/s/1/$innodb_bp_size/" my_test.cnf > /etc/my_$dbname.cnfDATA_DIR=/data/mysql/$dbname
[ ! -d $DATA_DIR ] && mkdir -p $DATA_DIR/{data,binlog,relaylog,tmp,slowlog,log}; touch $DATA_DIR/log/error.log; chown -R mysql.mysql /data/mysql/if [ `ls -A $DATA_DIR/data/ | wc -w` -eq 0 ]
thencd /usr/local/mysqlecho ""echo "初始化MySQL数据目录......"echo ""bin/mysqld --defaults-file=/etc/my_$dbname.cnf --initialize --lower-case-table-names=1 --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/$dbname/datasleep 2bin/mysqld_safe --defaults-file=/etc/my_$dbname.cnf --user=mysql &
fiwhile true
donetstat -ntlp | grep $dbportif [ $? -eq 1 ]thenecho "MySQL启动中,稍等......"sleep 5continueelseif [ ! -e "/tmp/mysql_${dbname}.sock" ];thenecho "MySQL启动中,稍等......"sleep 5continuefibreakfi
doneps aux | grep 'mysql' | grep -v 'grep' | grep -v 'bash'
if [ $? -eq 0 ]
thenecho "MySQL安装完毕。"
elseecho "MySQL安装失败。"exit 1
fi###更改root账号随机密码
random_passwd=`grep 'temporary password' $DATA_DIR/log/error.log | awk -F 'root@localhost: ' '{print $2}'`/usr/local/mysql/bin/mysql -S /tmp/mysql_$dbname.sock -p"$random_passwd" --connect-expired-password -e "alter user root@'localhost' identified by '$root_passwd';" 
if [ $? -eq 0 ]
thenecho "root账号随机密码更改完毕。"
elseecho "密码更改失败,再次重试更改。"sleep 5/usr/local/mysql/bin/mysql -S /tmp/mysql_$dbname.sock -p"$random_passwd" --connect-expired-password -e "alter user root@'localhost'identified by '$root_passwd';"if [ $? -eq 0 ]thenecho "root账号随机密码更改完毕。"elseecho "密码更改失败"exit 1fi
fi###创建同步账号和管理员账号
/usr/local/mysql/bin/mysql -S /tmp/mysql_$dbname.sock -p"$root_passwd" -e "set sql_log_bin=0;create user '$repl_user'@'%' IDENTIFIED BY '$repl_passwd'; GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO '$repl_user'@'%'; create user '$dba_user'@'%' IDENTIFIED BY '$dba_passwd'; GRANT ALL on *.* to '$dba_user'@'%' WITH GRANT OPTION;"sed -i -r "s/(PATH=)/\1\/usr\/local\/mysql\/bin:/" /root/.bash_profile
source /root/.bash_profileecho "MySQL账号初始化完毕。"###安装clone插件
/usr/local/mysql/bin/mysql -S /tmp/mysql_$dbname.sock -p"$root_passwd" -e "set sql_log_bin=0;INSTALL PLUGIN CLONE SONAME 'mysql_clone.so'; CREATE USER '$clone_user'@'%' IDENTIFIED BY '$clone_passwd';GRANT BACKUP_ADMIN,CLONE_ADMIN ON *.* TO '$clone_user'@'%';"echo ""
echo "clone克隆插件安装完毕。"### 最后一步清空binlog文件,恢复起始文件mysql-bin.000001和Position位置号153 
/usr/local/mysql/bin/mysql -S /tmp/mysql_$dbname.sock  -p"$root_passwd" -e "reset master;"

my_test.cnf

[client]
port		=  3306
socket   =  /tmp/mysql_test.sock
#default-character-set = utf8 
prompt=(\\u@\\h) [\\d]>\\_# The MySQL server
#########Basic##################
[mysqld]
##bind_address = 127.0.0.1
server-id	=  413306
port	        =  3306
user            =  mysql
basedir		=  /usr/local/mysql
datadir		=  /data/mysql/test/data
tmpdir		=  /data/mysql/test/tmp
secure_file_priv =  /data/mysql/test/tmp
socket		=  /tmp/mysql_test.sock
skip-external-locking
skip-name-resolve
skip-ssl
##init_connect = 'SET global sql_mode = ""'
sql_mode = ''
default_authentication_plugin = mysql_native_password
activate_all_roles_on_login = 1### Percona ###
#extra_port = 13306
#extra_max_connections = 100###skip-networking
default-storage-engine = INNODB
character-set-server = utf8
wait_timeout  =  3600
connect_timeout  =  20
interactive_timeout  =  3600
back_log  =  500
#event_scheduler  =  ON
open_files_limit = 65535
#thread_handling  =  pool-of-threadslower_case_table_names  =  1###### binlog ######
log-bin  =  /data/mysql/test/binlog/mysql-bin
binlog_format = ROW
binlog_row_image = FULL
binlog_row_metadata = FULL
binlog_checksum = NONE
binlog_transaction_dependency_tracking = WRITESET
sync_binlog      =   1
gtid_mode = on
enforce_gtid_consistency = on
log_slave_updates   =  1
master_info_repository = TABLE
relay_log_info_repository = TABLE
max_binlog_size  =  128M
binlog_cache_size  =  1M
expire-logs-days  =  7#########replication#############
relay-log               =  /data/mysql/test/relaylog/relay-log
slave-net-timeout                   =  10
#rpl_semi_sync_master_enabled        =  1
#rpl_semi_sync_master_wait_no_slave   =  1
#rpl_semi_sync_master_timeout        =  1000
#rpl_semi_sync_slave_enabled         =  1
#skip-slave-start
log_slave_updates                  =  1
relay_log_recovery                 =  1
#slave_skip_errors = 1062
read_only                          =  0###### Mgr config ######
loose-transaction_write_set_extraction = XXHASH64
loose-group_replication_start_on_boot = ON ###是否随mysql启动Group Replication
loose-group_replication_bootstrap_group = OFF  ###是否是Group Replication的引导节点,初次搭建集群的时候需要有一个节点设置为ON来启动Group Replication###参数设置为ON,是为了标示以后加入集群的服务器都已这台服务器为基准。以后加入的就不需要进行设置loose-group_replication_group_name = aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                             
#loose-group_replication_local_address = 192.168.148.41:33061					       
#loose-group_replication_group_seeds = 192.168.148.41:33061,192.168.148.42:33072,192.168.148.39:33083					       
loose-group_replication_single_primary_mode = ON	
loose-group_replication_exit_state_action = OFFLINE_MODE
loose-group_replication_transaction_size_limit = 150000000 ###默认143M事务大小,最大值2147483647(大约2G),当此系统变量设置为0时,该组接受的事务大小没有限制。
loose-group_replication_enforce_update_everywhere_checks = OFF ###在单主模式下设置为OFF,多主模式下设置为ON。###offline_mode = ON###MHA ############
relay_log_purge            =  1
######################parallel replication####
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers = 24
slave_preserve_commit_order = ON
###########################################slow log#############
slow_query_log  =  1
slow_query_log_file  =  /data/mysql/test/log/mysql-slow.log
#log-slow-verbosity = query_plan,explain
long_query_time  =  5#########error log#############
log-error   =  /data/mysql/test/log/error.log
log_timestamps = system#######per_thread_buffers############
max_connections=4100
max_user_connections=4000
max_connect_errors=100000000
max_allowed_packet = 256M
table_open_cache = 6144
table_definition_cache = 4096
sort_buffer_size = 128K
read_buffer_size = 128K
read_rnd_buffer_size = 128k
join_buffer_size = 128K
tmp_table_size = 64M
max_heap_table_size = 64M
bulk_insert_buffer_size = 32M
thread_cache_size = 64
#thread_concurrency = 32
thread_stack = 256K##MyISAM## 
key_buffer_size = 64M
myisam_sort_buffer_size = 8M
concurrent_insert=2
low_priority_updates=1
myisam_recover_options=BACKUP,FORCE######### InnoDB #############
sql_generate_invisible_primary_key = 1
innodb_adaptive_hash_index = 0
innodb_autoinc_lock_mode = 2
innodb_numa_interleave = 1
innodb_sort_buffer_size = 32M
innodb_rollback_on_timeout = 1
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_size = 1G
innodb_buffer_pool_instances	= 16
innodb_lru_scan_depth = 2048
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 10
innodb_sync_spin_loops = 40
innodb_max_dirty_pages_pct = 95
innodb_ddl_threads = 16
innodb_ddl_buffer_size = 1G
innodb_online_alter_log_max_size = 1G
innodb_parallel_read_threads = 32
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 500
innodb_concurrency_tickets = 1000
log_bin_trust_function_creators = 1
innodb_flush_method = O_DIRECT
#innodb_flush_method = O_DIRECT_NO_FSYNC
innodb_file_per_table = 1
innodb_read_io_threads = 16
innodb_write_io_threads = 16
innodb_use_native_aio = 1
innodb_io_capacity = 800
innodb_purge_threads = 16
innodb_purge_batch_size = 32
innodb_old_blocks_time = 1000
innodb_change_buffering = all
transaction_isolation = READ-COMMITTED
innodb_stats_on_metadata = 0
performance-schema = 1
performance-schema-instrument = wait/lock/metadata/sql/mdl=ON####### NEW ########
##innodb_kill_idle_transaction = 5###### SSD #########
#innodb_flush_neighbors = 0
#innodb_log_block_size = 4096
####################[mysqldump]
quick
max_allowed_packet = 128M[mysql]
no-auto-rehash
#prompt=(\\u@\\h) [\\d]>\\_
prompt=(\\u@\\h) [\\d]>\\_[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 256k
read_buffer = 2M
write_buffer = 2M[mysqlhotcopy]
interactive-timeout[mysqld_safe]
open-files-limit = 65535
#flush_caches = 1
#numa_interleave = 1
malloc-lib = /usr/lib64/libjemalloc.so

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

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

相关文章

力扣24 两两交换链表中的节点 Java版本

文章目录 题目解题方法Code 题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;hea…

【五】Python 代理模式

文章目录 5.1 代理模式概述5.1.1 代理介绍5.1.2 代理模式的作用 5.2 代理模式的UML类图5.3 了解不同类型的代理5.3.1虚拟代理5.3.2 远程代理5.3.3 保护代理5.3.4 智能代理 5.4 现实世界中的代理模式5.5 代理模式的优点5.6 门面模式和代理模式之间的比较 5.1 代理模式概述 5.1.…

VSCode 配置自动生成头文件

相关文章 VSCode 开发C/C实用插件分享——codegeex VSCode 开发C/C实用插件分享——koroFileHeader VSCode 配置自动生成头文件 一、snippets二、配置步骤三、效果展示 一、snippets 相信大家对C、C都头文件都不陌生&#xff0c;都会发现每个头文件都会包括下面的这些格式&…

Cent OS7 磁盘挂载:扩展存储空间和自动挂载

文章目录 &#xff08;1&#xff09;概述&#xff08;2&#xff09;查看磁盘使用情况&#xff08;3&#xff09;VMware虚拟机挂载磁盘&#xff08;4&#xff09;物理机磁盘挂载&#xff08;5&#xff09;ntfs硬盘处理 &#xff08;1&#xff09;概述 在Linux系统中&#xff0c…

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.共生生物算法4.实验参数设定5.算法结果6.…

拓展 Amazon S3 技术边界:Amazon S3 Express One Zone 的创新之路

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 自 Amazon S3 服务推出以来&#xff0c;一直是全球各行各业数百万客…

学习MS Dynamics AX 2012编程开发 1. 了解Dynamics AX 2012

在本章中&#xff0c;您将了解开发环境的结构以及Microsoft Dynamics AX中的开发人员可以访问哪些工具。在本书的第一步演练之后&#xff0c;您将很容易理解著名的Hello World代码&#xff0c;您将知道应用程序对象树中的不同节点代表什么。 以下是您将在本章中学习的一些主题…

linux7安装python3.12.1教程

1.下载tar.gz包 地址&#xff1a;Python Release Python 3.12.1 | Python.org 2.上传包到linux服并解压 cd /home/local/ ll tar -zxvf Python-3.12.1.tgz 3.安装编译python所需环境 yum install -y gcc yum install -y zlib* yum -y install zlib-devel bzip2-devel opens…

大象elephant目标检测数据集VOC+YOLO格式2300张

大象是长鼻目象科的哺乳动物&#xff0c;有两个属&#xff0c;是世界上最大的陆生动物。其像柱子一样的四肢和宽厚的脚掌可以稳稳支撑住庞大的身体。巨大的头上长有蒲扇状的大耳朵和长且有弹性的鼻子。象耳上有丰富的血管&#xff0c;可以有效散热。鼻子和上唇合而为一的象鼻由…

计算机网络——网络层——OSPF协议的介绍

什么是 OSPF &#xff1f; OSPF 是一个基于链路状态的自治系统内部路由协议&#xff0c;在 TCP/IP 的网络层中进行路由选择&#xff0c;常用于构建大型企业网络或者服务上的骨干网络。在互联网核心路由器之间也可以使用。 OSPF 概述 OSPF 使用的是 Dijkstra&#xff08;最短…

制作蓝牙小车(一)

制作控制蓝牙小车app 想制作一个蓝牙小车&#xff0c;通过手机app程序操控小车运行&#xff0c;制作分2个部分&#xff08;app制作&#xff0c;蓝牙小车硬件以及程序制作&#xff09;&#xff0c;先完成第一个部分app制作&#xff0c;本次app是通过androidstudio软件来制作安卓…

centos安装了curl却报 -bash: curl: command not found

前因 我服务器上想用curl下载docker-compress&#xff0c;发现没有curl命令&#xff0c;就去下载安装&#xff0c;安装完成之后&#xff0c;报-bash: curl: command not found 解决方法 [rootcentos ~]# rpm -e --nodeps curl warning: file /usr/bin/curl: remove failed: …

python每日学10:关于python实用版本的选择

用python也有好几年了&#xff0c;也会经常安装python&#xff0c;因为有工作需要&#xff0c;可能在各个地方使用python&#xff0c;自己的电脑也经常重装&#xff0c;重装后会装python&#xff0c;还有的时候&#xff0c;装的包太多了&#xff0c;影响整个环境的使用&#xf…

数字IC验证快速入门全攻略,你想知道的都在这!

芯片行业是个高风险、高投入的行业&#xff0c;做一款芯片仅仅是开模的费用就是百万起。 从设计到制造都是环环相扣的&#xff0c;设计过程中的BUG或者错误能够达到上千个。 所以验证是保证芯片功能正确性和完整性最重要的一环。&#xff08;文末有学习视频哦~&#xff09; …

21、状态模式(State Pattern)

状态模式指给对象定义不同的状态&#xff0c;并为不同的状态定义不同的行为&#xff0c;在对象的状态发生变换时自动切换状态的行为。 状态模式是一种对象行为型模式&#xff0c;它将对象的不同行为封装到不同的状态中&#xff0c;遵循了“单一职责”原则。同时&#xff0c;状…

【动手学深度学习】(十三)深度学习硬件

文章目录 一、CPU和GPU二、更多的芯片1.DSP:数字信号处理2.可编程阵列(FPGA)3.AI ASIC 三、单机多卡并行 一、CPU和GPU 提升CPU利用率 在计算ab之前&#xff0c;需要准备数据 主内存->L3->L2->L1->寄存器(数据只有进入寄存器才可以参与运算) 提升空间和时间的内存…

【react.js + hooks】useVirtualArea 渲染虚拟列表

useVirtualArea Hook useVirtualArea 是一个 React Hook&#xff0c;用于创建虚拟列表。虚拟列表是一种优化技术&#xff0c;用于在不影响性能的情况下显示大量数据。 参数 useVirtualArea 接受一个对象和一个数组作为参数&#xff0c;该对象包含以下属性&#xff1a; load…

电子元器件介绍——电阻(一)

电子元器件 文章目录 电子元器件前言1.1电阻基本知识1.2电阻的作用1.3电阻的分类1.4 贴片电阻贴片电阻的规范、尺寸、封装 1.5 技术参数噪声&#xff1a; 1.6 电阻的失效 总结 前言 接下来我们就把常用的电子元器件全部介绍给大家&#xff0c;这一节是电阻&#xff0c;电容电感…

基础算法(2):排序(2):计数排序

1.计数排序实现 计数排序是一个非基于比较的稳定的线性时间的排序算法&#xff0c;而选择排序是基于比较的&#xff0c;计数排序不用&#xff0c;它的实现依靠计数。 工作原理&#xff1a;使用一个额外的数组&#xff0c;其中第i个位置是待排序数组1中值等于i的元素的个数&…

蓝桥杯物联网竞赛_STM32L071_9_按键矩阵扩展模块

原理图&#xff1a; 矩阵按键原理图&#xff1a; 实验板接口原理图&#xff1a; 得到对应图&#xff1a; 扫描按键原理&#xff1a; 按键的COLUMN1、2、3分别制0&#xff0c;每次只允许其中一个为0其他都是1&#xff08;POW1和POW2正常状况为上拉&#xff09;&#xff0c;当有…