使用Docker搭建MySql的主从同步+ShardingSphere搭建Mysql的读写分离

news2024/11/22 19:19:57

参考课程

尚硅谷ShardingSphere5实战教程(快速入门掌握核心)_哔哩哔哩_bilibili

主服务器

创建容器

docker run -d \

-p 3306:3306 \

-v /kira/mysql/master/conf:/etc/mysql/conf.d \

-v /kira/mysql/master/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=382673 \

--name mysql-kira-master \

mysql:8.0.29

修改配置文件

默认模式下,binlog日志是自动开启的

vim /kira/mysql/master/conf/my.cnf

配置文件里面的内容

[mysqld]

# 服务器唯一id,默认值1

server-id=1

# 设置日志格式,默认值ROW

binlog_format=STATEMENT

# 二进制日志名,默认binlog

# log-bin=binlog

# 设置需要复制的数据库,默认复制全部数据库

#binlog-do-db=mytestdb

# 设置不需要复制的数据库

#binlog-ignore-db=mysql

#binlog-ignore-db=infomation_schema

重启容器

docker restart mysql-kira-master

进入容器内部

#进入容器:env LANG=C.UTF-8 避免容器中显示中文乱码

docker exec -it mysql-kira-master env LANG=C.UTF-8 /bin/bash

#进入容器内的mysql命令行

mysql -u root -p

#修改默认密码校验方式

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '382673';

创建用户,方便从库连接的时候使用该用户连接

-- 创建slave用户

CREATE USER 'KIRA'@'%';

-- 设置密码

ALTER USER 'KIRA'@'%' IDENTIFIED BY '382673';

-- 授予复制权限

GRANT REPLICATION SLAVE ON *.* TO 'KIRA'@'%';

-- 刷新权限

FLUSH PRIVILEGES;

显示和记录Master状态

SHOW MASTER STATUS;


从服务器

创建容器

docker run -d \

-p 3308:3306 \

-v /kira/mysql/slave3/conf:/etc/mysql/conf.d \

-v /kira/mysql/slave3/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=382673 \

--name mysql-kira-slave3 \

mysql:8.0.29

修改配置文件

vim /kira/mysql/slave3/conf/my.cnf

配置文件的内容

[mysqld]

# 服务器唯一id,每台服务器的id必须不同,如果配置其他从机,注意修改id

server-id=3

# 中继日志名,默认xxxxxxxxxxxx-relay-bin

#relay-log=relay-bin

重启容器

docker restart mysql-kira-slave3

进入容器操作

#进入容器:

docker exec -it mysql-kira-slave3 env LANG=C.UTF-8 /bin/bash

#进入容器内的mysql命令行

mysql -uroot -p

#修改默认密码校验方式

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '382673';

配置主从关系

CHANGE MASTER TO MASTER_HOST='192.168.88.130',

MASTER_USER='KIRA',MASTER_PASSWORD='382673', MASTER_PORT=3306,

MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=1361;

具体的值要根据我们之前查出来的主库的值来配置

开启主从同步

START SLAVE;

-- 查看状态(不需要分号)

SHOW SLAVE STATUS\G

这两个都是YES,那么我们就是成功了


这个位置查看我们的错误

两个常见报错

这个是我们没关防火墙时就启动了docker,即使后面我们关闭防火墙docker里面还是没用


搭建主从集群时遇到的错误

用户插件错误

我们要修改我们的身份验证插件


我们在主库重新弄我们的KIRA用户的认证插件

ALTER USER 'KIRA'@'%' IDENTIFIED BY '382673';

ALTER USER 'KIRA'@'%' IDENTIFIED WITH mysql_native_password BY '382673';

docker restart mysql-kira-master


小重点

这两个KIRA用户是不同的,我们配置的是%的KIRA用户

如果我们修改的是上面那个指定IP的KIRA用户

那我们还是失败的

因为我们主机创建的KIRA用户是下面的

上面的用户都不存在

而且我们使用的KIRA用户也是%的KIRA用户

你看,我们的用户创建的时候,没有指定IP地址,而是%


经典报错

我们修改完认证插件后,我们呢还要重启我们的主库

我们的主库的状态如果我们不刷新,我们看不到改变的,一般错误都是那个指定主库的代码出错了

你看,刷新之后我们的file的版本号就变了

解决报错的经典代码,一般这些步骤就够了

-- 在从机停止slave

SLAVE STOP;

-- 在主机查看mater状态

SHOW MASTER STATUS;

-- 在主机刷新日志

FLUSH LOGS;

-- 再次在主机查看mater状态(会发现File和Position发生了变化)

SHOW MASTER STATUS;

-- 修改从机连接主机的SQL,并重新连接即可


ShardingSphere搭建mysql数据库的读写分离

尚硅谷的课程教的是properties格式

我觉得这个可读性太差了

所以我用的是yml格式

记住不同版本的依赖对应不同的官方文档,不然会启动不了或者许多配置和之前不同从而导致错误

跟着官网配置

数据源配置 :: ShardingSphere

且我们使用的YAML格式的配置,不是properties格式的配置

我们不同的版本要根据不同的文档来进行配置

我用的是5.4.1


经典的Spring配置文件

server:
  port: 8001
spring:
  application:
  name: ShardingSphere-test
  datasource:
    # ShardingSphere 的驱动
    driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver
    # ShardingSphere 的url
    url: jdbc:shardingsphere:classpath:shardingsphere--config.yaml

读写分离配置

记得我们url后面要加很多东西,不然连接不上

还有单表配置必须写,不然shardingsphere找不到表

dataSources:
  master:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3306/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 382673

  slave1:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3307/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 382673

  slave3:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3308/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 382673
# 这个是我们的读写分离配置
rules:
  - !READWRITE_SPLITTING
    dataSources:
      readwrite_ds:
        writeDataSourceName: master
        readDataSourceNames:
          - slave1
          - slave3
        transactionalReadQueryStrategy: PRIMARY
        loadBalancerName: kira
    loadBalancers:
      kira:
        type: ROUND_ROBIN

  - !SINGLE
    tables:        #我们的单表配置
      - "*.*.*"
    defaultDataSource: master # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。


props:         #我们打印SQL语句
  sql-show: true

垂直分片配置

dataSources:
  user:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3301/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456

  order:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3302/db_order?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456


rules:
  - !SINGLE
    tables:        #我们的单表配置
      - "*.*.*"
    defaultDataSource: user # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。

  - !SHARDING
    tables:
      t_user:  #逻辑表
        actualDataNodes: user.t_user #不同的表在不同的数据源,配置我们对应的数据源  这样我们就把逻辑表和真实节点映射了

      t_order:  #逻辑表
        actualDataNodes: order.t_order #不同的表在不同的数据源,配置我们对应的数据源      这样我们就把逻辑表和真实节点映射了


props:         #我们打印SQL语句
  sql-show: true

水平分片配置

dataSources:
  user:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3301/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456

  order0:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3310/db_order?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456

  order1:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3311/db_order?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456


rules:
  - !SINGLE
    tables:        #我们的单表配置
      - "*.*.*"
    defaultDataSource: user # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。

  - !SHARDING
    tables:
      t_user:  #逻辑表
        actualDataNodes: user.t_user #不同的表在不同的数据源,配置我们对应的数据源  这样我们就把逻辑表和真实节点映射了

      t_order:
        #逻辑表
        actualDataNodes: order${0..1}.t_order${0..1} #不同的表在不同的数据源,配置我们对应的数据源      这样我们就把逻辑表和真实节点映射了

        databaseStrategy :
          # 用于单分片键的标准分片场景
          standard:
            # 分片键
            shardingColumn: order_no
            # 分片算法
            shardingAlgorithmName: kira

        # 分表策略
        tableStrategy:
          # 用于单分片键的标准分片场景
          standard:
            # 分片键
            shardingColumn: user_id
            # 分片算法
            shardingAlgorithmName: kira


    # 分片算法
    shardingAlgorithms:
      # 数据表分片算法
      kira:
        # 根据分片键 Hash 分片
        type: HASH_MOD
        # 分片数量
        props:
          sharding-count: 16



props:         #我们打印SQL语句
  sql-show: true

用到的依赖

前面3个额外的依赖是好像是要引入的,不然会有什么类缺失,导致不兼容

然后我们的mybatisplus要指定boot3的版本,不然我们boot3好像执行mybatisplus的时候会报错

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-jdbc-core -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>shardingsphere-jdbc-core</artifactId>
        <version>5.4.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.4.0</version>
    </dependency>


    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-spring-boot3-starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        <version>3.5.7</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

我在真实项目中使用的是5.4.1版本

首先我配置好了mysql的主从模式

然后在shardingsphere里面来配置我们的读写分离

基本使用+报错

mybatis依赖冲突,启动报错

我们使用这个boot3的依赖包

因为一些特殊的报错,我还引入了这三个依赖

现在是目前有的依赖

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-jdbc-core -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>shardingsphere-jdbc-core</artifactId>
        <version>5.4.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.4.0</version>
    </dependency>


    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-spring-boot3-starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        <version>3.5.7</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

配置mysql读写分离后,shardingsphere找不到对应的表的问题(mybatis找不到表) (单表配置规则)

捏m个bei的,弄了我3个小时

新版本的shardingsphere有个坑比的地方,就是它如果要读取表的话

我们这里要有个单表规则类配置

不然我们成功连接后,shardingsphere竟然莫名奇妙地找不到我们的对应的表

我配置规则

可以管理所有数据库里面的所有表

然后指定我们的默认数据库

这上面目前是一个数据源,然后我们配置成功了,终于可以成功连接了


读写分离配置

记住,我们要跟着对应版本的文档来进行操作,不同版本文档配置是不同的

基本的读写分离配置

这个是我们的shardingsphere配置

dataSources:
  master:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3306/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 382673

  slave1:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3307/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 382673

  slave3:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.88.130:3308/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 382673

rules:
  - !READWRITE_SPLITTING
    dataSources:
      readwrite_ds:
        writeDataSourceName: master
        readDataSourceNames:
          - slave1
          - slave3
        transactionalReadQueryStrategy: PRIMARY
        loadBalancerName: kira
    loadBalancers:
      kira:
        type: ROUND_ROBIN

  - !SINGLE
    tables:        #我们的单表配置
      - "*.*.*"
    defaultDataSource: master # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。


props:         #我们打印SQL语句
  sql-show: true


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

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

相关文章

java学习---异常

前言 由于被分母不能为0&#xff0c;所以代码到int yn/m;会抛出异常&#xff0c;停止运行下去&#xff0c;但是如果是个庞大的代码&#xff0c;因为这种小错误而整个程序崩溃&#xff0c;会大大影响代码整体的健壮性&#xff0c;所以此时就需要我们得异常处理了 选中异常代码部…

正则采集器——前端搭建

前端使用有名的饿了么管理后台&#xff0c;vue3版本vue3-element-admin&#xff0c;首先从gitee中克隆一个vue3-element-admin模板代码vue3-element-admin: Vue3 Element Admin开箱即用的中后台管理系统前端解决方案&#xff0c;然后在此基础上进行开发。 1、修改vite.config.…

【深入理解SpringCloud微服务】深入理解Ribbon原理并手写一个微服务负载均衡器

深入理解Ribbon原理并手写一个微服务负载均衡器 负载均衡器理解Ribbon原理手写一个微服务负载均衡器总体设计LoadBalanceClientHttpRequestFactorySimpleLoadBalanceClientSimpleLoadBalancerLoadBalanceRulespring.factories与LoadBalanceConfig 负载均衡器 在微服务架构里面…

应用层_计算机网络

文章目录 应用层HTTP用户与服务器的交互&#xff1a;cookieWeb缓存HTTP/2 SMTPDNS&#xff1a;因特网的目录服务P2P文件分发BitTorrentCDN内容分发网 应用层 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。应用层协议定义了以下内容&#xff1a; 交换的…

结构性设计模式-外观模式

一、外观模式 有些人可能炒过股票&#xff0c;但其实大部分人都不太懂&#xff0c;这种没有足够了解证券知识的情况下做股票是很容易亏钱的&#xff0c;刚开始炒股肯定都会想&#xff0c;如果有个懂行的帮帮手就好&#xff0c;其实基金就是个好帮手&#xff0c;支付宝里就有许…

算力共享:如何理解、标识与调控多层次算力资源的异构性和复杂性,实现智能算力网生态诸要素有效互操作?

目录 鹏程云主机和NPU计算服务器关系 NPU计算服务器 两者关系 结论 两种不同类型的处理器或计算单元 FPGA MLU NS3(Network Simulator version 3) 一、基本属性 二、主要功能与特点 三、应用与前景 对象存储和HDD存储 一、定义与特点 二、应用场景 三、总结 对…

培养前端工程化思维,不要让一行代码毁了整个程序

看《阿丽亚娜 5 号&#xff08;Ariane 5&#xff09;火箭爆炸》有感。 1、动手写项目之前&#xff0c;先进行全局性代码逻辑思考&#xff0c;将该做的事情&#xff0c;一些细节&#xff0c;统一建立标准&#xff0c;避免为以后埋雷。 2、避免使用不必要或无意义的代码、注释。…

把 网页代码 嵌入到 单片机程序中 2 日志2024/7/26

之前不是说把 网页代码 嵌入到 单片机程序中 嘛! 目录 之前不是说把 网页代码 嵌入到 单片机程序中 嘛! 修改vs的tasks.json配置 然后 测试 结果是正常的,可以编译了 但是:当我把我都html代码都写上去之后 还是会报错!!! 内部被检测到了,没辙,只有手动更新了小工具代码 …

低功耗单声道音频编解码器ES8311中文规格书介绍

特征 具有ADC和DAC的低功耗单声道音频编解码器ES8311。 ES8311 QFN20封装的外形和丝印 系统 • 高性能、低功耗多位 delta-sigma 音频 ADC 和 DAC • I2S/PCM 主站或从站串行数据端口 • 256/384Fs、USB 12/24 MHz 和其他非标准音频系统时钟 • I2C 接口 模数转换器 • 24…

28 列表创建与删除

使用 “” 直接将一个列表赋值给变量即可创建列表对象。 my_list [a, #, 128, [12], [], {2, }, {a: 1, b: 2}] print(my_list) print(type(my_list)) print(id(my_list[0]), id(my_list[-1]))可以使用 list() 函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换…

PDF管理器和查看器PdfDing

什么是 PdfDing &#xff1f; PdfDing 是一款自托管 PDF 管理器和查看器&#xff0c;可在多种设备上提供无缝用户体验。它设计精简、速度快&#xff0c;并且易于通过 Docker 设置。 功能特点 在多种设备上无缝基于浏览器的 PDF 查看使用标签整理 PDF干净且响应迅速的用户界面暗…

photoshop学习笔记——选区3

从窗口面板可以打开历史记录面板&#xff0c;历史记录面板保存了所有的操作 可以点击历史记录中某一条&#xff0c;回到当时的操作状态&#xff0c;也可以通过编辑中的 还原、重做、切换到最终状态逐步调整或直接跳到最终状态 回退之后&#xff0c;如果有新的操作&#xff0c;历…

GEE:设置ui.Map.Layer上交互矢量边界填充颜色为空,只显示边界

一、目标 最近在GEE的交互功能鼓捣一些事情&#xff0c;在利用buffer功能实现了通过选点建立一个矩形后&#xff0c;需要将该矩形填充颜色设为空&#xff0c;只留边界。 然而通过正常设置layer的可视化参数并不能实现这一目的。因此只能另辟蹊径&#xff0c;改为定义矢量边界…

项目开发实战案例 —— Spring Boot + MyBatis + Hibernate + Spring Cloud

作者简介 我是本书的作者&#xff0c;拥有多年Java Web开发经验&#xff0c;致力于帮助更多开发者快速掌握并运用Java Web技术栈中的关键框架和技术。本书旨在通过实战案例的方式&#xff0c;带领读者深入理解并实践Spring Boot、MyBatis、Hibernate以及Spring Cloud等热门技术…

reshape函数介绍及应用

reshape 函数在 MATLAB 中是一个非常有用的函数&#xff0c;通过重新排列现有元素来重构数组。它允许你重新调整数组&#xff08;或矩阵&#xff09;的尺寸&#xff0c;而不改变其数据。这个函数特别适用于当你需要将一个矩阵或数组从一种结构转换为另一种结构时&#xff0c;只…

【计算机网络】TCP负载均衡实验

一&#xff1a;实验目的 1&#xff1a;了解TCP负载均衡的配置。 2&#xff1a;学会使用NAT技术处理和外部网络的连接。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS交换机、网线、内网网卡接口、Windows 2019操作系统的计算机等。具体为&#xff1a;二层交换机1…

Redis:RDB持久化

1. 简介 实现类似照片记录效果的方式&#xff0c;就是把某一时刻的数据和状态以文件的形式写到磁盘上&#xff0c;也就是 快照。这样一来即使故障宕机&#xff0c;快照文件也不会丢失&#xff0c;数据的可靠性也就得到了保证。 这个快照文件就称为RDB文件(dump.rdb)&#xff0c…

黑马头条Day10-定时计算热点文章、xxl-job

一、今日内容 1. 需求分析 目前实现的思路&#xff1a;从数据库直接按照发布时间倒序查询 问题&#xff1a; 如果访问量比较大&#xff0c;直接查询数据库&#xff0c;压力较大新发布的文章会展示在前面&#xff0c;并不是热点文章 2. 实现思路 解决方案&#xff1a;把热点…

Android 列表或网格形式展示大量数据:RecyclerView(二):缓存复用

一、缓存复用 为什么要了解这个呢&#xff1f;当我们rv出现卡顿&#xff0c;出现闪烁的时候&#xff0c;你应该如何优化呢&#xff1f; 为什么有时候onCreateViewHolder会被调用&#xff1f;onBindVilewHolder会被调用呢&#xff1f; visiable的使用&#xff0c;会导致重新绘制…

《“王栎鑫变张艺兴”?娱乐圈乌龙背后梦幻联动与未来合作遐想》

在这个充满惊喜与欢笑的娱乐圈里&#xff0c;每一个不经意的瞬间都可能成为网友热议的焦点&#xff0c;而《快乐老友记》的最新花絮&#xff0c;无疑为这个多彩的世界又添上了一抹亮丽的色彩。当“王栎鑫被路人认成张艺兴”这一话题如春风般拂过网络&#xff0c;不仅让两位才华…