Mycat读写分离搭建及配置超详细!!!

news2025/4/28 19:37:42

目录

  • 一、Mycat产生背景
  • 二、Mycat介绍
  • 三、Mycat安装
  • 四、Mycat搭建读写分离
    • 1、 搭建MySQL数据库主从复制
    • 2、 基于mysql主从复制搭建MyCat读写分离
  • 五、Mycat启动常见错误处理
      • 1、Caused by: io.mycat.config.util.ConfigException: SelfCheck### schema TESTDB refered by user user is not exist!
      • 2、Navicat连接mycat报错:2003 -Can't connect to MySQL server on'192.168.245.132'(10061 "Unknown error")
  • 六、Mycat 监控工具
    • 1、Mycat-web 简介
    • 2、 Mycat-web 配置使用
      • ① ZooKeeper 安装
      • ② Mycat-web 安装
      • ③ Mycat-web 配置
      • ④ Mycat 性能监控指标

一、Mycat产生背景

随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求。尽管NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL定是无法满足的,所以还是需要使用关系型数据库。如何使用关系型数据库解决海量存储的问题呢?
MyCat 数据库中间件的出现是为了应对传统单体数据库在高并发、大数据量和复杂业务场景下面临的性能瓶颈和扩展性问题。通过分片、读写分离、事务支持、SQL 优化等技术,MyCat 提供了高性能、高可用和易扩展的数据库解决方案,帮助企业更好地管理和利用数据资源。
  Mycat 背后是阿里曾经开源的知名产品——Cobar。Cobar 的核心功能和优势是 MySQL 数据库分片,此产品曾经广为流传,据说最早的发起者对 Mysql 很精通,后来从阿里跳槽了,阿里随后开源的 Cobar,并维持到 2013 年年初。Mycat 基于 cobar 演变而来,对 cobar 的代码进行了彻底的重构,使用 NIO 重构了网络模块,并且优化了 Buffer 内核,增强了聚合,Join 等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。
  简单的说,MyCAT就是:一个新颖的数据库中间件产品,支持mysql集群,或者mariadb cluster,提供高可用性数据分片集群。你可以像使用mysql一样使用mycat。对于开发人员来说根本感觉不到mycat的存在。
在这里插入图片描述

二、Mycat介绍

Mycat 是一款开源的数据库中间件(逻辑数据库,将真实的数据库包起来),它主要用来解决数据库水平扩展的问题,即如何在不改变或最小化改动应用程序的情况下,让数据库能够处理更多的并发请求和更大的数据量。

原理
Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL
语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。使用时只需将Mycat暴露给外部应用程序,而无需关心数据请求到哪台服务区

在这里插入图片描述
通过以上方式把数据库的分布式从代码中解耦出来,只将Mycat暴露给应用程序访问。

以下是使用 Mycat 的作用及好处:
1、读写分离
Mycat 可以将读取操作和写入操作分开,将读取请求路由到只读副本上,而写入请求则路由到主数据库,从而提高系统的读取性能。

2、数据分片(垂直/水平拆分)
当单个数据库无法承载大量数据时,Mycat 可以帮助将数据水平切分到多个物理数据库上,将数据分布在多个数据库实例上,从而提高系统的并发处理能力,这样可以分散查询压力,提高查询效率。

3、负载均衡
通过将请求分发到不同的数据库节点上,Mycat 能够实现数据库层面的负载均衡,避免单一数据库过载。

4、高可用性:
Mycat 支持数据库集群,当某个数据库节点出现故障时,可以自动切换到其他健康的节点,保证服务的连续性。
5、透明性:
对于应用程序而言,Mycat 提供了一个统一的访问入口,应用程序只需要连接到 Mycat,而不需要关心后端数据库的具体结构,这降低了应用程序的复杂度。

6、多数据源整合及跨数据库类型的支持:
无论是数据库集群、关系、非关系型数据库都可以整合通过mycat连接;Mycat 不仅支持多种关系型数据库(如 MySQL、Oracle、SQL Server 等),还支持一些 NoSQL 数据库(如 MongoDB),使得混合数据库环境下的应用集成更加灵活。

7、简化开发:
应用程序可以继续使用标准的 SQL 语句来操作数据,而不需要针对特定的分片策略编写复杂的逻辑,这简化了开发工作并提高了开发效率。

8、易于管理:
Mycat 提供了图形化的管理工具,方便管理员监控和管理数据库集群的状态。总之,Mycat 通过其强大的功能,可以帮助企业构建可扩展、高性能、高可用的数据层,从而支撑大规模应用的需求。

三、Mycat安装

1、解压后即可使用
解压缩文件拷贝到 linux 下 /usr/local/

2、三个配置文件
schema.xml:定义逻辑库,表、分片节点等内容
rule.xml:定义分片规则
server.xml:定义用户以及系统相关变量,如端口等

①控制台启动 :mycat/bin 目录下执行 ./mycat console
②后台启动 : mycat/bin 目录下 ./mycat start
为了能第一时间看到启动日志,方便定位问题,我们选择①控制台启动
在这里插入图片描述 !!!启动成功!!!

注意事项:
① mycat是数据库中间件,那么mycat必然要能够访问对应的主从数据库,所以在主、从数据库中我们需要分别创建访问的账号

-- 创建用户
CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
-- 授予所有权限并允许授予权限
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' WITH GRANT OPTION;
-- 刷新权限缓存
FLUSH PRIVILEGES;

若创建过程中报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
,可临时降低密码策略要求

select @@validate_password.policy;
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password.policy=0;
set global validate_password.length=1

附常用命令

FLUSH HOSTS --清除主机缓存中的所有条目。重置对特定主机的连接限制,允许被阻止的主机重新尝试连接。解决由于主机缓存导致的连接问题,例如某些 IP 地址被暂时禁止连接。
systemctl restart mysqld --修改mysql配置文件后需要重启
systemctl status mysqld  --重启后查看mysql运行状态

四、Mycat搭建读写分离

本地基于CentOS 7搭建了三台虚拟机:
在这里插入图片描述

在实现 Mycat 和 MySQL 的主从复制配合搭建数据库的读写分离前,先完成mysql的主从复制。此处演示搭建一主一从

1、 搭建MySQL数据库主从复制

在搭建MyCat读写分离前,我们先需要搭建mysql的主从复制
在这里插入图片描述

MySQL 主从复制原理:mysql在做主从复制时,每次只能在接入点复制,主库将内存中的数据写入Binary log日志,从库先将Binary log日志写入自己的Relay log(中继)日志,然后再由中继日志进行读取后写入。
在这里插入图片描述
redis主从复制原理:与mysql主从复制不同的是redis在做主从复制时会将主库内存中所有的数据写入rdb持久化文件,从库再替换掉rdb持久化文件存储

① 主机配置
在这里插入图片描述

修改配置文件:vim /etc/my.cnf #主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个)binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字#设置logbin格式
binlog_format=STATEMENT

② 从机配置
在这里插入图片描述

修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
#启用中继日志
relay-log=mysql-relay

③ 主机、从机重启 MySQL 服务

systemctl restart mysqld

④ 主机从机都关闭防火墙
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service

⑤ 查看主机运行状态show master status;

#记录下File和Position的值
#执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

在这里插入图片描述

参数解释
File
含义:当前正在使用的二进制日志文件的名称。
示例:mysql-bin.000017
说明:这个文件名表示主服务器当前正在写入的二进制日志文件。从服务器需要知道这个文件名,以便从该文件的指定位置开始读取二进制日志事件。
Position
含义:当前二进制日志文件中的位置(偏移量)。
示例:156
说明:这个位置表示主服务器在当前二进制日志文件中写入的最后一个事件的结束位置。从服务器需要知道这个位置,以便从该位置开始读取二进制日志事件。

搭建主从复制前,主机切记不要进行任何操作(但凡进行操作,接入点会发生变化)

⑥ 在从机上配置需要复制的主机

#复制主机的命令
CHANGE MASTER TO MASTER_HOST='192.168.245.129',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000017',MASTER_LOG_POS=156;

在这里插入图片描述
说明:若出现以上错误证明之前连接过主机(搭建过主从),需要进行以下重置操作

stop slave;  -- 停止复制
reset master; -- 重置主服务器的二进制日志(binary log),这通常涉及删除所有
              -- 二进制日志文件并重置二进制日志索引文件。

在这里插入图片描述

再次进行连接:
在这里插入图片描述
⑦ 启动从服务器复制功能
start slave;

⑧ 查看从服务器状态
show slave status\G;

#下面两个参数都是Yes,则说明主从配置成功!

 # Slave_IO_Running: Yes
 # Slave_SQL_Running: Yes

在这里插入图片描述

关键字段解释:
Slave_IO_Running: 应为 Yes,表示 I/O 线程正在运行。
Slave_SQL_Running: 应为 Yes,表示 SQL 线程正在运行。
Last_IO_Error: 如果有错误,会显示在这里。
Last_SQL_Error: 如果有错误,会显示在这里。
Read_Master_Log_Pos: 从服务器读取的主服务器二进制日志位置。
Exec_Master_Log_Pos: 从服务器执行的主服务器二进制日志位置。
Relay_Master_Log_File: 从服务器正在读取的中继日志文件。
Relay_Log_Pos: 从服务器正在执行的中继日志位置。

binlog 日志三种格式:
① Statement
格式:基于 SQL 语句的记录方式。
记录内容:记录执行的 SQL 语句。
优点:【1】日志文件较小:只记录 SQL 语句,通常比行格式的日志文件小;【2】易于审计:日志内容直观,易于理解和审计;【3】复制效率高:对于大量数据操作,复制效率较高。
缺点:【1】非确定性操作:某些非确定性操作(如 UUID()、NOW())可能导致主从数据不一致。【2】存储过程和函数:存储过程和函数的执行结果可能不一致。【3】外键约束:某些外键约束的操作可能导致主从数据不一致。
② Row
格式:基于行的记录方式。
记录内容:记录每一行数据的变化。
优点:【1】数据一致性:确保主从数据的一致性,避免非确定性操作导致的问题;【2】支持所有操作:支持所有类型的 SQL 操作,包括存储过程和函数;【3】外键约束:支持外键约束的操作。
缺点:【1】日志文件较大:记录每一行数据的变化,日志文件通常比语句格式的大;【2】审计复杂:日志内容为行变化,不如语句格式直观。
③ Mixed
格式:混合记录方式。
记录内容:根据操作类型自动选择记录格式。
工作原理:默认使用 Statement-Based Logging。在遇到非确定性操作或无法用语句格式准确记录的操作时,自动切换到 Row-Based Logging。
优点:【1】结合了 SBL 和 RBL 的优点:既保持日志文件较小,又确保数据一致性;【2】灵活性:根据操作类型自动选择最佳记录格式。
缺点:【1】复杂性:日志格式可能在不同操作之间切换,增加了复杂性;【2】日志文件大小:在某些情况下,日志文件可能比纯 SBL 或纯 RBL 大。

在这里插入图片描述

2、 基于mysql主从复制搭建MyCat读写分离

mysql已经搭建读写分离
在这里插入图片描述
验证之前的配置已分配了读写主机,是否已实现读写分离?(启动mycat,直接使用Navicat直连Mycat进行验证访问)
在这里插入图片描述
验证读写分离:向表中插入系统变量
(1)在写主机插入:

insert into mytable values (1,@@server_id); -- 构造主从主机数据不一致的场景(@@server_id:每个MySQL实例的唯一标识符,在主从配置中,主库和从库的 server_id 必须不同。)

(2)在Mycat中查询:select * from mytable;
在这里插入图片描述
原因:在做读写分离时有一个关键的配置项,因此还需修改<dataHost>的balance属性,通过此属性配置读写分离的类型
(3) 修改 Mycat 的配置文件 schema.xml中的balance(设置值读写分离的配置项)属性,通过此属性配置读写分离的类型

负载均衡类型,目前的取值有4 种:
(1)balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
(2)balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从
模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
(3)balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
(4)balance="3",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力

为了能看到读写分离的效果,把balance设置成2,会在两个主机间切换查询

<dataHost name="host1" maxCon="1000" minCon="10" balance="2"
 writeType="0" dbType="mysql" dbDriver="native" switchType="1" 
slaveThreshold="100">

此时发现查询数据在两台服务器(主、从)间随机切换!!!

五、Mycat启动常见错误处理

mycat日志文件说明:
mycat.log:MyCat程序运行日志,即程序启动后运行错误,例如数据库连接异常等。
wrapper.log:程序启动日志,启动成功/失败打印的日志,例如xml文件加载异常等。
switch.log:dataNode心跳日志,记录每个节点状态日志。

1、Caused by: io.mycat.config.util.ConfigException: SelfCheck### schema TESTDB refered by user user is not exist!

在这里插入图片描述
原因:因mycat的conf目录下schema.xml中schema name="TESTDB"对于server.xml数据库用户user不存在,可以注释掉name=“user” 实际不存在该用户
在这里插入图片描述

!!!成功解决!!!
在这里插入图片描述

2、Navicat连接mycat报错:2003 -Can’t connect to MySQL server on’192.168.245.132’(10061 “Unknown error”)

在这里插入图片描述
① 查看是否能ping通mycat主机 !!!正常
在这里插入图片描述
② 检查三台服务器防火墙是否关闭(均关闭) !!!正常
在这里插入图片描述
③ 检查三台服务器防火墙是否关闭(均关闭) ???
最终发现,有的虚拟机不会自动打开8066端口,依次输入以下指令即可
在 INPUT 链的开头插入一条规则,允许目标端口为 8066 的 TCP 数据包进入本机:
/sbin/iptables -I INPUT -p tcp --dport 8066 -j ACCEPT #开启8066端口
与第一个命令功能相同,允许目标端口为 8066 的 TCP 数据包进入本机
iptables -I INPUT -p tcp --dport 8066 -j ACCEPT
将 OUTPUT 链的默认策略设置为接受所有从本机发出的数据包。
iptables -P OUTPUT ACCEPT

以上执行完毕后,重启mycat再此使用Navicat连接Mycat:
在这里插入图片描述

至此Mycat连接成功!!!
在这里插入图片描述

六、Mycat 监控工具

1、Mycat-web 简介

Mycat-web 是 Mycat 可视化运维的管理和监控平台,弥补了 Mycat 在监控上的空白。帮 Mycat 分
担统计任务和配置管理任务。Mycat-web 引入了 ZooKeeper 作为配置中心,可以管理多个节点。
Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和内存等,具备 IP 白名单、邮件告警等模
块,还可以统计 SQL 并分析慢 SQL 和高频 SQL 等。为优化 SQL 提供依据

2、 Mycat-web 配置使用

① ZooKeeper 安装

#1下载安装包http://zookeeper.apache.org/
#2 安装包拷贝到Linux系统/opt目录下,并解压tar -zxvf zookeeper-3.4.11.tar.gz(此处解压后拷贝到了 /usr/local目录下)
在这里插入图片描述
#3 进入ZooKeeper解压后的配置目录(conf),复制配置文件并改名
cp zoo_sample.cfg zoo.cfg
在这里插入图片描述
#4 进入ZooKeeper的命令目录(bin),运行启动命令
./zkServer.sh start
在这里插入图片描述
#5 ZooKeeper服务端口为2181,查看服务已经启动
netstat -ant | grep 2181

② Mycat-web 安装

#1下载安装包http://www.mycat.io/
#2 安装包拷贝到Linux系统/opt目录下,并解压

tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz

#3 拷贝mycat-web文件夹到/usr/local目录下

cp -r mycat-web /usr/local

#4 进入mycat-web的目录下运行启动命令

cd /usr/local/mycat-web/
./start.sh &

在这里插入图片描述

#5 Mycat-web服务端口为8082,查看服务已经启动

netstat -ant | grep 8082

#6 通过地址访问服务

http://192.168.140.127:8082/mycat/

在这里插入图片描述

③ Mycat-web 配置

#1 先在注册中心配置ZooKeeper地址,配置后刷新页面,可见

④ Mycat 性能监控指标

在 Mycat-web 上可以进行 Mycat 性能监控,例如:内存分享、流量分析、连接分析、活动线程分
析等等。

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

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

相关文章

空指针:HttpSession异常,SpringBoot集成WebSocket

异常可能性&#xff1a; 404 &#xff1a; 请检查拦截器是否将请求拦截WebSocket握手期间HttpSession为空 HttpSession为空 方法一 &#xff1a; 网上参考大量的文档&#xff0c;有说跟前端请求域名有关系的。 反正对我来说&#xff0c;没啥用无法连接。 需使用 localhost&a…

【大数据】机器学习------决策树

一、基本流程 决策树是一种基于树结构的分类和回归方法&#xff0c;它通过对特征空间进行划分&#xff0c;每个内部节点表示一个特征测试&#xff0c;每个分支代表一个测试输出&#xff0c;每个叶节点代表一个类别或回归值。 特征选择&#xff1a;根据某种准则&#xff08;如信…

服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台服务器上的8块硬盘组建了一组raid5磁盘阵列。上层安装windows server操作系统&#xff0c;部署了oracle数据库。 raid5阵列中有2块硬盘的硬盘指示灯显示异常报警。服务器操作系统无法启动&#xff0c;ORACLE数据库也无法启动。 服…

Day05-后端Web基础——TomcatServletHTTP协议SpringBootWeb入门

目录 Web基础知识课程内容1. Tomcat1.1 简介1.2 基本使用1.2.1 下载1.2.2 安装与卸载1.2.3 启动与关闭1.2.4 常见问题 2. Servlet2.1 快速入门2.1.1 什么是Servlet2.1.2 入门程序2.1.3 注意事项 2.2 执行流程 3. HTTP协议3.1 HTTP-概述3.1.1 介绍3.1.2 特点 3.2 HTTP-请求协议3…

【已解决】【记录】2AI大模型web UI使用tips 本地

docker desktop使用 互动 如果需要发送网页链接&#xff0c;就在链接上加上【#】号 如果要上传文件就点击这个➕号 中文回复 命令它只用中文回复&#xff0c;在右上角打开【对话高级设置】 输入提示词&#xff08;提示词使用英文会更好&#xff09; Must reply to the us…

Deep4SNet: deep learning for fake speech classification

Deep4SNet&#xff1a;用于虚假语音分类的深度学习 摘要&#xff1a; 虚假语音是指即使通过人工智能或信号处理技术产生的语音记录。生成虚假录音的方法有"深度语音"和"模仿"。在《深沉的声音》中&#xff0c;录音听起来有点合成&#xff0c;而在《模仿》中…

Docker save load 镜像 tag 为 <none>

一、场景分析 我从 docker hub 上拉了这么一个镜像。 docker pull tomcat:8.5-jre8-alpine 我用 docker save 命令想把它导出成 tar 文件以便拷贝到内网机器上使用。 docker save -o tomcat-8.5-jre8-alpine.tar.gz 镜像ID 当我把这个镜像传到别的机器&#xff0c;并用 dock…

备战蓝桥杯 队列和queue详解

目录 队列的概念 队列的静态实现 总代码 stl的queue 队列算法题 1.队列模板题 2.机器翻译 3.海港 双端队列 队列的概念 和栈一样&#xff0c;队列也是一种访问受限的线性表&#xff0c;它只能在表头位置删除&#xff0c;在表尾位置插入&#xff0c;队列是先进先出&…

工厂物流管理系统方案(二):危险品车辆专用导航系统架构设计深度剖析

本文专为IT架构师、物流技术专家、软件开发工程师及对危险品运输导航技术有深入探索需求的读者撰写&#xff0c;旨在全面解析危险品车辆专用导航系统的架构设计&#xff0c;展现其技术深度与复杂性&#xff0c;为行业同仁提供权威的技术参考与实践指导。如需获取危险品车辆专用…

用 Python 从零开始创建神经网络(十九):真实数据集

真实数据集 引言数据准备数据加载数据预处理数据洗牌批次&#xff08;Batches&#xff09;训练&#xff08;Training&#xff09;到目前为止的全部代码&#xff1a; 引言 在实践中&#xff0c;深度学习通常涉及庞大的数据集&#xff08;通常以TB甚至更多为单位&#xff09;&am…

No.1|Godot|俄罗斯方块复刻|棋盘和初始方块的设置

删掉基础图标新建assets、scenes、scripts文件夹 俄罗斯方块的每种方块都是由四个小方块组成的&#xff0c;很适合放在网格地图中 比如网格地图是宽10列&#xff0c;高20行 要实现网格的对齐和下落 Node2D节点 新建一个Node2D 添加2个TileMapLayer 一个命名为Board&…

蓝桥云客第 5 场 算法季度赛

题目&#xff1a; 2.开赛主题曲【算法赛】 - 蓝桥云课 问题描述 蓝桥杯组委会创作了一首气势磅礴的开赛主题曲&#xff0c;其歌词可用一个仅包含小写字母的字符串 S 表示。S 中的每个字符对应一个音高&#xff0c;音高由字母表顺序决定&#xff1a;a1,b2,...,z26。字母越靠后…

刀客doc:快手的商业化架构为什么又调了?

一、 1月10日&#xff0c;快手商业化及电商事业部进行新一轮的架构调整。作为2025年快手的第一次大调整&#xff0c;变动最大的是负责广告业务的商业化事业部。快手商业化将原来的8个业务中心&#xff0c;现在统合成了5个&#xff0c;行业归拢看上去更加明晰了。 根据自媒体《…

6.2 MySQL时间和日期函数

以前我们就用过now()函数来获得系统时间&#xff0c;用datediff()函数来计算日期相差的天数。我们在计算工龄的时候&#xff0c;让两个日期相减。那么其中的这个now函数返回的就是当前的系统日期和时间。 1. 获取系统时间函数 now()函数&#xff0c;返回的这个日期和时间的格…

mock服务-通过json定义接口自动实现mock服务

go-mock介绍 不管在前端还是后端开发过程中&#xff0c;当我们需要联调其他服务的接口&#xff0c;而这个服务还没法提供调用时&#xff0c;那我们就要用到mock服务&#xff0c;自己按接口文档定义一个临时接口返回指定数据&#xff0c;以供本地开发联调测试。 怎么快速启动一…

sparkSQL练习

1.前期准备 &#xff08;1&#xff09;建议先把这两篇文章都看一下吧&#xff0c;然后把这个项目也搞下来 &#xff08;2&#xff09;看看这个任务 &#xff08;3&#xff09;score.txt student_id,course_code,score 108,3-105,99 105,3-105,88 107,3-105,77 105,3-245,87 1…

CSS | 实现三列布局(两边边定宽 中间自适应,自适应成比)

目录 示例1 &#xff08;中间自适应 示例2&#xff08;中间自适应 示例3&#xff08;中间自适应 示例4 &#xff08;自适应成比 示例5&#xff08;左中定宽&#xff0c;右边自适应 示例6&#xff08;中间自适应 示例7&#xff08;中间自适应 示例8&#xff08;中间定宽…

力扣 子集

回溯基础&#xff0c;一题多解&#xff0c;不同的回朔过程。 题目 求子集中&#xff0c;数组的每种元素有选与不选两种状态。因此在使用dfs与回溯时把每一个元素分别进行选与不选的情况考虑即可。可以先用dfs跳过当前元素即不选然后一直深层挖下去&#xff0c;直到挖到最深了即…

网络层协议-----IP协议

目录 1.认识IP地址 2.IP地址的分类 3.子网划分 4.公网IP和私网IP 5.IP协议 6.如何解决IP地址不够用 1.认识IP地址 IP 地址&#xff08;Internet Protocol Address&#xff09;是指互联网协议地址。 它是分配给连接到互联网的设备&#xff08;如计算机、服务器、智能手机…

RocketMQ 知识速览

文章目录 一、消息队列对比二、RocketMQ 基础1. 消息模型2. 技术架构3. 消息类型4. 消费者类型5. 消费者分组和生产者分组 三、RocketMQ 高级1. 如何解决顺序消费和重复消费2. 如何实现分布式事务3. 如何解决消息堆积问题4. 如何保证高性能读写5. 刷盘机制 &#xff08;topic 模…