MySQ分库分表与MyCat安装配置

news2025/1/15 13:31:10

目录

介绍

拆分策略

垂直拆分

1. 垂直分库 

2. 垂直分表

水平拆分

1. 水平分库‘

2. 水平分表

实现技术

MyCat概述

安装

概念介绍

MyCat入门

需求

环境准备

分片配置

启动服务

连接测试

执行SQL语句测试

MyCat配置

1. schema.xml 

1. schema标签

2. datanode标签

3. datahost标签

2. rule.xml

3. server.xml 

1. system标签 

2. user标签


续接下篇:Mycat分片-垂直拆分-CSDN博客

介绍

问题分析

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存 储,存在以下性能瓶颈:

  1. IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。 请求数据太多,带宽 不够,网络IO瓶颈。
  2. CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出 现瓶颈。

为了解决上述问题,我们需要对数据库进行分库分表处理。

分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能 问题,从而达到提升数据库性能的目的。 

拆分策略

分库分表的形式,主要是两种:垂直拆分和水平拆分。而拆分的粒度,一般又分为分库和分表,所以组 成的拆分策略最终如下:

垂直拆分

1. 垂直分库 

垂直分库:以表为依据,根据业务将不同表拆分到不同库中。

特点:

        每个库的表结构都不一样。

        每个库的数据也不一样。

        所有库的并集是全量数据。

2. 垂直分表

垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。

特点:

        每个表的结构都不一样。

        每个表的数据也不一样,一般通过一列(主键/外键)关联。

        所有表的并集是全量数据。

水平拆分

1. 水平分库‘

水平分库:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。 

特点:

        每个库的表结构都一样。

        每个库的数据都不一样。

        所有库的并集是全量数据。

2. 水平分表

水平分表:以字段为依据,按照一定策略,将一个表的数据拆分到多个表中。

特点:

        每个表的表结构都一样。

        每个表的数据都不一样。

        所有表的并集是全量数据。

在业务系统中,为了缓解磁盘IO及CPU的性能瓶颈,到底是垂直拆分,还是水平拆分;具体是分 库,还是分表,都需要根据具体的业务需求具体分析。

实现技术

  • shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析、改写、路由处 理。需要自行编码配置实现,只支持java语言,性能较高。
  • MyCat:数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前 者。

MyCat概述

Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用 mycat,对于开发人员来说根本感觉不到mycat的存在。

开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器里面存储了什么数 据,都无需关心。 具体的分库分表的策略,只需要在MyCat中配置即可。

优势: 性能可靠稳定 强大的技术团队 体系完善 社区活跃

安装

准备三台虚拟机,关闭防火墙和selinux,进行时间同步。

IP安装软件说明配置系统
192.168.226.100

JDK8,Mycat1.6.7.4,MySQL8.0.39

MyCat中间件服务器;

分片服务器

2核心2G-20G磁盘centos7-2009-mini
192.168.226.101MySQL8.0.39分片服务器2核心2G-20G磁盘centos7-2009-mini
192.168.226.102MySQL8.0.39分片服务器2核心2G-20G磁盘centos7-2009-mini

初始化脚本

#!/bin/bash
echo "=====系统环境初始化脚本====="
sleep 3
echo "——>>> 关闭防火墙与SELinux <<<——"
sleep 3
systemctl stop firewalld
systemctl disable firewalld &> /dev/null
setenforce 0
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config
 
echo "——>>> 创建阿里仓库 <<<——"
sleep 3
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  
 
 
echo "——>>> 设置时区并同步时间 <<<——"
sleep 3
timedatectl set-timezone Asia/Shanghai
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
reboot

 给三台主机下载MySQL,并给root用户设置了简单密码为1234

sudo yum remove mysql-server -y && sudo yum autoremove -y
sudo yum remove *mysql* -y
sudo rm -rf /var/lib/mysql/ 
sudo rm -rf /etc/mysql/ 

yum install -y yum-utils > /dev/null
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm > /dev/null
yum-config-manager --enable mysql80-community > /dev/null
yum-config-manager --disable mysql57-community > /dev/null
yum install -y mysql-server
systemctl start mysqld && systemctl enable mysqld
mysqladmin -p"`awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log`" password 'TianPFh@123'
mysql -p'TianPFh@123' -e "UNINSTALL COMPONENT 'file://component_validate_password'"
mysqladmin -p'TianPFh@123' password '1234'

接下来仅对192.168.226.100主机操作

下载JDK8的rpm包形式:Java Archive Downloads - Java SE 8 | Oracle 台灣

上传到192.168.226.100主机安装

yum install -y jdk-8u202-linux-x64.rpm

下载Mycat1.6.7.4版本地址:链接:https://pan.baidu.com/s/1MGzS9TtBz7A9PEKjshvzRg?pwd=e2do 
提取码:e2do

tar -zxf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz
mv mycat/ /usr/local/

更换驱动包

cd /usr/local/mycat/lib/
# 删除旧版本
rm -rf mysql-connector-java-5.1.35.jar

# 然后将mysql-connector-java-8.0.22.jar上传到本目录里
# 授权
chmod +777 mysql-connector-java-8.0.22.jar

[root@master lib]# ll |grep mysql-connec*
-rwxrwxrwx 1 root root 2389216 2月  22 2022 mysql-connector-java-8.0.22.jar

概念介绍

在MyCat的整体结构中,分为两个部分:上面的逻辑结构、下面的物理结构。

在MyCat的逻辑结构主要负责逻辑库、逻辑表、分片规则、分片节点等逻辑结构的处理,而具体的数据 存储还是在物理结构,也就是数据库服务器中存储的。

MyCat入门

需求

由于 tb_order 表中数据量很大,磁盘IO及容量都到达了瓶颈,现在需要对 tb_order 表进行数 据分片,分为三个数据节点,每一个节点主机位于不同的服务器上, 具体的结构,参考下图:

环境准备

在上面已经准备好啦这三台服务器并安装好了相关软件了

192.168.226.100:MyCat中间件服务器,同时也是第一个分片服务器。

192.168.226.101:第二个分片服务器。

192.168.226.102:第三个分片服务器。

并且在上述3台数据库中创建数据库 db01 。并创建一个可以远程并授权的root用户,此远程root密码为admin 下面是sql语句一键完成。

CREATE DATABASE db01;
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin';
grant all on *.* to 'root'@'%';
FLUSH PRIVILEGES;

分片配置

这里我配置使用Notepad++连接服务器进行编辑文件,较为方便,连接方式:Notepad++使用SFTP连接虚拟机编辑文档_notepad ftp-CSDN博客

 编辑 /usr/local/mycat/conf/schema.xml 文件

该文件里全部内容参数替换为下述内容。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="DB01" checkSQLschema="true" sqlMaxLimit="100">
        <table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
    </schema>

    <dataNode name="dn1" dataHost="dhost1" database="db01" />
    <dataNode name="dn2" dataHost="dhost2" database="db01" />
    <dataNode name="dn3" dataHost="dhost3" database="db01" />

    <dataHost name="dhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master" url="jdbc:mysql://192.168.226.100:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="admin" />
    </dataHost>

    <dataHost name="dhost2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master" url="jdbc:mysql://192.168.226.101:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="admin" />
    </dataHost>

    <dataHost name="dhost3" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master" url="jdbc:mysql://192.168.226.102:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="admin" />
    </dataHost>

</mycat:schema>

这里定义了DB01这个逻辑库,逻辑库关联travelrecord这个逻辑表,将其分为dn1,dn2,dn3这三个分片,并将三个分片分别关联到了dhost1,dhost3,dhost3这三个节点,然后定义了这三个节点要关联的数据都为db01库,然后下面将每个节点主机关联到实际mysql节点主机,并配置了节点主机的URL,用户名和密码。

编辑 /usr/local/mycat/conf/server.xml 文件

需要在server.xml中配置用户名、密码,以及用户的访问权限信息,具体的配置如下:

下滑到文件尾部,按照如下修改配置,password为root登录mycat的登录密码,schemas对应的是逻辑库的名字

这里用户名和密码是登陆mycat的,和mysql无关。

此文件仅需要修改下述代码对应的模块即可,其它内容不用改动。

	<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">DB01</property>
		
		<!-- 表级 DML 权限设置 -->
		<!-- 		
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>

	<user name="user">
		<property name="password">123456</property>
		<property name="schemas">DB01</property>
		<property name="readOnly">true</property>
	</user>

启动服务

# 启动
/usr/local/mycat/bin/mycat start

# 停止命令:/usr/local/mycat/bin/mycat stop
[root@master ~]# ss -tnlp
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN      0      128                                          *:22                                                       *:*                   users:(("sshd",pid=913,fd=3))
LISTEN      0      1                                    127.0.0.1:32000                                                    *:*                   users:(("java",pid=16698,fd=4))
LISTEN      0      128                                       [::]:22                                                    [::]:*                   users:(("sshd",pid=913,fd=4))
LISTEN      0      50                                        [::]:1984                                                  [::]:*                   users:(("java",pid=16698,fd=85))
LISTEN      0      100                                       [::]:8066                                                  [::]:*                   users:(("java",pid=16698,fd=111))
LISTEN      0      50                                        [::]:44003                                                 [::]:*                   users:(("java",pid=16698,fd=88))
LISTEN      0      70                                        [::]:33060                                                 [::]:*                   users:(("mysqld",pid=963,fd=21))
LISTEN      0      50                                        [::]:40069                                                 [::]:*                   users:(("java",pid=16698,fd=84))
LISTEN      0      100                                       [::]:9066                                                  [::]:*                   users:(("java",pid=16698,fd=107))
LISTEN      0      128                                       [::]:3306                                                  [::]:*                   users:(("mysqld",pid=963,fd=24))

连接测试

可以看到mycat中的逻辑库与逻辑表

[root@master ~]# mysql -h 192.168.226.100 -P8066 -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.29-mycat-1.6.7.3-release-20210913163959 MyCat Server (OpenCloudDB)

Copyright (c) 2000, 2024, 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> show databases;
+----------+
| DATABASE |
+----------+
| DB01     |
+----------+
1 row in set (0.00 sec)

mysql> use DB01;
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> show tables;
+----------------+
| Tables in DB01 |
+----------------+
| tb_order       |
+----------------+
1 row in set (0.00 sec)

实际的mysql库中是没有变化的

[root@slave ~]# mysql -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 8.0.39 MySQL Community Server - GPL

Copyright (c) 2000, 2024, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db01               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use db01
Database changed
mysql> show tables;
Empty set (0.00 sec)

执行SQL语句测试

在mycat中执行sql语句

[root@master ~]# mysql -h 192.168.226.100 -P8066 -p123456   # 登录mycat执行

--登录mycat执行这些sql语句,然后登录这三台主机的mysql,看哪个mysql存储了数据.
--因为当前使用的默认分片规则,下面插入的数据会根据一定规则分别进入不同的数据库中.
--规则文件的位置在:/usr/local/mycat/conf/rule.xml  引用规则的文件就在/usr/local/mycat/conf/schema.xml里

-- 创建表TB_ORDER  
CREATE TABLE TB_ORDER (  
    id BIGINT(20) NOT NULL,  
    title VARCHAR(100) NOT NULL,  
    PRIMARY KEY (id)  
) ENGINE=INNODB DEFAULT CHARSET=utf8;  
  
-- 插入数据  
INSERT INTO TB_ORDER(id, title) VALUES(1, 'goods1');
INSERT INTO TB_ORDER(id, title) VALUES(2, 'goods2');
INSERT INTO TB_ORDER(id, title) VALUES(3, 'goods3');
INSERT INTO TB_ORDER(id,title) VALUES(5000000,'goods5000000');
INSERT INTO TB_ORDER(id,title) VALUES(10000000,'goods10000000');
INSERT INTO TB_ORDER(id,title) VALUES(10000001,'goods10000001');
INSERT INTO TB_ORDER(id,title) VALUES(15000000,'goods15000000');
INSERT INTO TB_ORDER(id,title) VALUES(15000001,'goods15000001');

经过测试,我们发现,在往 TB_ORDER 表中插入数据时:

        如果id的值在1-500w之间,数据将会存储在第一个分片数据库中。

        如果id的值在500w-1000w之间,数据将会存储在第二个分片数据库中。

        如果id的值在1000w-1500w之间,数据将会存储在第三个分片数据库中。

        如果id的值超出1500w,在插入数据时,将会报错。

这是由逻辑表配置时 的一个参数 rule 决定的,而这个参数配置的就是分片规则。

MyCat配置

1. schema.xml 

schema.xml 作为MyCat中最重要的配置文件之一 , 涵盖了MyCat的逻辑库 、 逻辑表 、 分片规 则、分片节点及数据源的配置。

主要包含以下三组标签:

schema标签:schema 标签定义了一个数据库模式,包含多个数据节点、路由规则和分片策略。

datanode标签:schema 标签定义了一个数据库模式,包含多个数据节点、路由规则和分片策略。

datahost标签:datahost 标签定义了数据源的连接信息,包括数据库的地址、用户名、密码等。

1. schema标签

schema 定义逻辑库

schema 标签用于定义 MyCat实例中的逻辑库 , 一个MyCat实例中, 可以有多个逻辑库 , 可以通 过 schema 标签来划分不同的逻辑库。MyCat中的逻辑库的概念,等同于MySQL中的database概念 , 需要操作某个逻辑库下的表时, 也需要切换逻辑库(use 库名)。

核心属性:

  • name:指定自定义的逻辑库库名
  • checkSQLschema:在SQL语句操作时指定了数据库名称,执行时是否自动去除;true:自动去 除,false:不自动去除
  • sqlMaxLimit:如果未指定limit进行查询,列表查询模式查询多少条记录

schema 中的table定义逻辑表 

  • table 标签定义了MyCat中逻辑库schema下的逻辑表 , 所有需要拆分的表都需要在table标签中定义核心属性
  • name:定义逻辑表表名,在该逻辑库下唯一
  • dataNode:定义逻辑表所属的dataNode,该属性需要与dataNode标签中name对应;多个dataNode逗号分隔
  • rule:分片规则的名字,分片规则名字是在rule.xml中定义的
  • primaryKey:逻辑表对应真实表的主键
  • type:逻辑表的类型,目前逻辑表只有全局表和普通表,如果未配置,就是普通表;全局表,配置为global 

2. datanode标签

核心属性:

  • name:定义数据节点名称
  • dataHost:数据库实例主机名称,引用自 dataHost 标签中name属性
  • database:定义分片所属数据库

3. datahost标签

该标签在MyCat逻辑库中作为底层标签存在, 直接定义了具体的数据库实例、读写分离、心跳语句。

核心属性:

  • name:唯一标识,供上层标签使用
  • maxCon/minCon:最大连接数/最小连接数
  • balance:负载均衡策略,取值 0,1,2,3
  • writeType:写操作分发方式(0:写操作转发到第一个writeHost,第一个挂了,切换到第二 个;1:写操作随机分发到配置的writeHost)
  • dbDriver:数据库驱动,支持 native、jdbc

2. rule.xml

rule.xml中定义所有拆分表的规则, 在使用过程中可以灵活的使用分片算法, 或者对同一个分片算法 使用不同的参数, 它让分片过程可配置化。主要包含两类标签:tableRule、Function。

3. server.xml 

server.xml配置文件包含了MyCat的系统配置信息,主要有两个重要的标签:system、user。 

1. system标签 

此图为部分展示

主要配置MyCat中的系统配置信息,对应的系统配置项及其含义,如下:

属性取值含义
charsetutf8设置 MyCat 的字符集,字符集需要与 MySQL 的字符集保持一致。
nonePasswordLogin0, 10: 需要密码登录;1: 不需要密码登录。默认值为 0。如果设置为 1,则需要指定默认账户。
useHandshakeV100, 1是否使用 HandshakeV10Packet 来与客户端进行通信。1: 使用;0: 不使用。主要用于兼容高版本的 JDBC 驱动。
useSqlStat0, 10: 关闭 SQL 实时统计;1: 开启 SQL 实时统计。开启后 MyCat 会自动统计 SQL 执行情况。
useGlobleTableCheck0, 10: 关闭全局表一致性检测;1: 开启全局表一致性检测。
sqlExecuteTimeout1000 (秒)SQL 语句执行的超时时间,单位为秒。如果 SQL 执行超时,则会关闭连接。
sequnceHandlerType0, 1, 20: 本地文件方式;1: 数据库方式;2: 时间戳列方式。默认使用本地文件方式。
sequnceHandlerPattern正则表达式必须带有 MYCATSEQ 或 mycatseq 进入序列匹配流程。注意 MYCATSEQ_ 有空格的情况。
subqueryRelationshipChecktrue, false在子查询中存在关联查询的情况下,检查关联字段中是否有分片字段。默认值为 false。
useCompression0, 10: 关闭 MySQL 压缩协议;1: 开启 MySQL 压缩协议。
fakeMySQLVersion5.5, 5.6设置模拟的 MySQL 版本号。
defaultSqlParserdruidparser, fdbparser指定默认的 SQL 解析器。MyCat 1.4 之后,默认是 druidparser,fdbparser 已经废除。
processors1, 2, ...指定系统可用的线程数量,默认值为 CPU 核心 × 每个核心运行线程数量。影响性能调优时的线程池配置。
processorBufferChunk字节数指定每次分配 Socket Direct Buffer 的大小,默认值为 4096 字节。
processorExecutor数字指定 NIOProcessor 上共享的 businessExecutor 固定线程池的大小。
packetHeaderSize数字指定 MySQL 协议中的报文头长度,默认值为 4 个字节。
maxPacketSize字节数指定 MySQL 协议可以携带的数据最大大小,默认值为 16MB。
idleTimeout30指定连接的空闲时间的超时长度,单位为分钟。如果超时,将关闭资源并回收。默认值为 30 分钟。
txIsolation1, 2, 3, 4初始化前端连接的事务隔离级别。默认值为 REPEATED_READ(数字 3)。
serverPort8066定义 MyCat 的使用端口,默认值为 8066。
managerPort9066定义 MyCat 的管理端口,默认值为 9066。

2. user标签

配置MyCat中的用户、访问密码,以及用户针对于逻辑库、逻辑表的权限信息,具体的权限描述方式及 配置说明如下:

在测试权限操作时,我们只需要将 privileges 标签的注释放开。 在 privileges 下的schema 标签中配置的dml属性配置的是逻辑库的权限。 在privileges的schema下的table标签的dml属性 中配置逻辑表的权限。 

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

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

相关文章

观测云产品更新 | 异常追踪、数据保存策略、BPF 日志、管理优化等

观测云更新 Breaking Changes OpenAPI&#xff1a;【事件】未恢复事件数据源从 UE 变更为 E 。 新增功能 管理&#xff1a;新增 Client Token 统一管理入口&#xff0c;用户使用公网 DataWay 接入 RUM 应用时&#xff0c;可更换系统默认生成的 Token&#xff0c;使用自定义…

重生奇迹 MU热血与激情的战斗岁月

这里&#xff0c;是一个充满神秘与奇幻色彩的大陆。古老的城堡诉说着往昔的荣耀&#xff0c;广袤的荒野等待着勇敢者的探索。长春的勇士们&#xff0c;准备好迎接挑战了吗&#xff1f; 绚丽的画面&#xff0c;每一帧都如同精美的画卷。从神秘的魔法森林到雄伟的龙巢&#xff0…

看看镭速传输中如何处理Mysql超时配置问题的

Mysql作为一个广泛使用的开源关系型数据库管理系统&#xff0c;以快速、可靠、易于使用、开源的特色闻名&#xff0c;使用 MySQL 来存储和管理数据&#xff0c;已经广泛应用于各个领域、各类大小型应用中。 使用 MySQL 来存储和管理数据的应用中&#xff0c;与数据库之间的连接…

程序员如何利用AI大模型逆袭

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;尤其是大规模预训练模型&#xff08;如GPT-4、BERT等&#xff09;的出现&#xff0c;程序员迎来了一个前所未有的机会窗口。AI不仅能提高开发效率&#xff0c;还能为程序员提供创新创业的机会。本文将探讨程序…

pytorch, torch_tesnsorrt安装各版本匹配

python -m pip install torch2.3.0 torchvision0.18.0 torch-tensorrt2.3.0 tensorrt10.0.1 --extra-index-url https://download.pytorch.org/whl/cu118 如果import tensorrt失败&#xff0c;则从官网下载再安装 https://developer.nvidia.com/tensorrt/download/10x 下载10.0…

四、Docker使用

1. 快速入门 1.1. Docker背景介绍 Docker是一个开源的平台&#xff0c;用于开发、交付和运行应用程序。它能够在Windows&#xff0c;macOS&#xff0c;Linux计算机上运行&#xff0c;并将某一应用程序及其依赖项打包至一个容器中&#xff0c;这些容器可以在任何支持Docker的环…

Aigtek电压放大器电路的特点是什么

电压放大器是一种电路&#xff0c;用于将低电压信号放大为高电压信号。它在电子、通信、音频和视频等领域广泛应用。下面是电压放大器电路的一些特点。 放大倍数高&#xff1a;电压放大器的主要功能是将输入信号的幅度放大到所需的输出电压。因此&#xff0c;电压放大器的一个重…

AI绘画工具 Stable Diffusion【插画转绘】:建筑 | 风景| 人像照片的插画转绘制作教程,照片秒变插画风格图片!

大家好&#xff0c;我是画画的小强 关于Stable Diffusion 的插画转绘&#xff0c;今天给大家分享一种制作方法。我们先看一下效果图。 一. 图片转插画的制作方法 本期教程我们将使用AI绘画工具Stable Diffusion&#xff0c;关于SD的安装和入门使用可以看看我的往期入门教程…

如何用Java SpringBoot+Vue搭建太原学院商铺管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

解锁未来财富密码:AI自动化副业创收班——终身财富加速器

副业创收已经成为行业趋势&#xff0c;在当前经济形势下&#xff0c;许多人面临着行业裁员的不确定性。为了增强个人的抗风险能力&#xff0c;寻求一份副业已经成为一种重要的趋势。这不仅是经济上的补充&#xff0c;更是对自由与独立的一种追求——它应让你自主掌控&#xff0…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月22日新模型预测第64弹

经过60多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;60多期一共只错了6次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c…

chapter1_数制和码制

文章目录 1.简介2.常用的数制2.1 十进制2.2 二进制2.3 八进制2.4 十六进制 3.不同进制之间的转换3.1 二—十进制3.2 十—二进制3.3 十六—二进制3.4 二—十六进制3.5 八进制数与二进制数的转换3.6 十六进制数与十进制数的转换 4.二进制算数运算4.1 反码、补码和补码运算 5.几种…

源代码一定要加密!10款超级好用的源代码加密软件排行榜

在当今高度竞争的商业环境中&#xff0c;源代码不仅是软件产品的基础&#xff0c;更是企业的核心资产之一。保护源代码免受未经授权的访问和盗窃至关重要。为此&#xff0c;许多企业采用源代码加密软件来为这一重要资产增加额外的安全层。以下是2024年企业通用的十大源代码加密…

普通高校普通教师如何应对智能时代的冲击

前篇 艰难求生的转型之路-CSDN博客 背景 增量发展阶段&#xff0c;大部分人生活随着个人努力都会出现改善&#xff1b; 存量博弈阶段&#xff0c;大部分人&#xff0c;不展开&#xff0c;求生欲。 增量→“蛋糕”越来越大&#xff1b; 存量→“蛋糕”(*^_^*)凸(艹皿艹 ) …

探索Python的自动化魔法:AutoIt库揭秘

文章目录 探索Python的自动化魔法&#xff1a;AutoIt库揭秘第一部分&#xff1a;背景介绍第二部分&#xff1a;AutoIt是什么&#xff1f;第三部分&#xff1a;如何安装AutoIt库&#xff1f;第四部分&#xff1a;AutoIt的五个简单函数第五部分&#xff1a;场景应用第六部分&…

最新盘点!18款2024年热门的项目管理系统软件!

项目管理是指在项目活动中运用专门的知识、技能、工具和方法&#xff0c;使项目能够在有限资源限定条件下&#xff0c;实现或超过设定的需求和期望的过程。 简单来说&#xff0c;项目管理系统就像是交响音乐会指挥手中的乐谱&#xff0c;能为项目经理清晰地呈现出项目的各个音符…

Web Worker 应用场景和实现

应用场景 众所周知JavaScript是单线程的语言&#xff0c;所有任务只能在一个线程上完成&#xff0c;一次只能做一件事&#xff0c;即前面的任务还没有完成&#xff0c;后面的任务只能排队等待。如果前面的任务需要执行一些大数据量的计算&#xff0c;页面就会出现卡顿、点击无反…

平衡二叉树、B树、B+树、红黑树解析

目录 有序二叉树平衡二叉树构造平衡二叉树RRLLRLLR 平衡二叉树的优缺点&#xff1a; 2-3-4树红黑树B树B树B树、B树、红黑树的应用 有序二叉树 关于有序二叉树的详解以及 J a v a Java Java代码实现详见&#xff1a;二叉排序树详解并通过Java代码实现。每个节点最多有两个孩子…

后端开发刷题 | 合并k个已排序的链表

描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0≤n≤5000&#xff0c;每个节点的val满足 ∣val∣<1000 要求&#xff1a;时间复杂度 O(nlogn) 示例1 输入&#xff1a; [{1,2,3},{4,5,6,7}] 返回值&#xff1a; …

电机foc学习渠道已开放,欢迎各位加入

凌鸥学园旨在为电机控制爱好者提供学习交流成长平台&#xff0c;缓解电控行业人才缺口扩大趋势&#xff0c;共同打造繁荣行业生态。我们将全面整合LKS MCU相关资料&#xff0c;包括开发环境、应用笔记、教学视频、学习指导等&#xff0c;并设有专业课程。 课程图&#xff1a; 除…