当前位置: 首页 > news >正文

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

参考课程

尚硅谷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-testdatasource:# ShardingSphere 的驱动driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver# ShardingSphere 的urlurl: jdbc:shardingsphere:classpath:shardingsphere--config.yaml

读写分离配置

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

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

dataSources:master:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3306/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 382673slave1:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3307/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 382673slave3:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3308/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 382673
# 这个是我们的读写分离配置
rules:- !READWRITE_SPLITTINGdataSources:readwrite_ds:writeDataSourceName: masterreadDataSourceNames:- slave1- slave3transactionalReadQueryStrategy: PRIMARYloadBalancerName: kiraloadBalancers:kira:type: ROUND_ROBIN- !SINGLEtables:        #我们的单表配置- "*.*.*"defaultDataSource: master # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。props:         #我们打印SQL语句sql-show: true

垂直分片配置

dataSources:user:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3301/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123456order:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3302/db_order?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123456rules:- !SINGLEtables:        #我们的单表配置- "*.*.*"defaultDataSource: user # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。- !SHARDINGtables:t_user:  #逻辑表actualDataNodes: user.t_user #不同的表在不同的数据源,配置我们对应的数据源  这样我们就把逻辑表和真实节点映射了t_order:  #逻辑表actualDataNodes: order.t_order #不同的表在不同的数据源,配置我们对应的数据源      这样我们就把逻辑表和真实节点映射了props:         #我们打印SQL语句sql-show: true

水平分片配置

dataSources:user:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3301/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123456order0:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3310/db_order?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123456order1:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3311/db_order?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123456rules:- !SINGLEtables:        #我们的单表配置- "*.*.*"defaultDataSource: user # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。- !SHARDINGtables: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: 16props:         #我们打印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.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3306/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 382673slave1:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3307/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 382673slave3:dataSourceClassName: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.88.130:3308/db_user?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 382673rules:- !READWRITE_SPLITTINGdataSources:readwrite_ds:writeDataSourceName: masterreadDataSourceNames:- slave1- slave3transactionalReadQueryStrategy: PRIMARYloadBalancerName: kiraloadBalancers:kira:type: ROUND_ROBIN- !SINGLEtables:        #我们的单表配置- "*.*.*"defaultDataSource: master # 默认数据源,仅在执行 CREATE TABLE 创建单表时有效。缺失值为空,表示随机单播路由。props:         #我们打印SQL语句sql-show: true


相关文章:

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

参考课程 尚硅谷ShardingSphere5实战教程&#xff08;快速入门掌握核心&#xff09;_哔哩哔哩_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…...

数据结构:数据类型与抽象数据类型

数据类型与抽象数据类型 数据类型基本数据类型构造数据类型指针类型枚举类型 抽象数据类型&#xff08;ADT&#xff09;抽象数据类型的组成部分常见的抽象数据类型示例 数据类型与抽象数据类型的区别实现抽象数据类型的具体方式用数组实现栈用链表实现栈 总结 数据类型 数据类…...

西方逻辑史简介

西方逻辑史研究&#xff0c;对形式逻辑实现现代化&#xff0c;对加强西方哲学史研究&#xff0c;对开展科学方法论的研究都有重要意义。西方逻辑史一般被划分成古代、中世纪、现代三个历史时期。本文拟对这三个时期中的七个重要逻辑学家和逻辑学派&#xff1a;亚里士多德、斯多…...

【论文10】复现代码tips

一、准备工作 1.创建一个虚拟环境 conda create --name drgcnn38 python=3.8.18 2.激活虚拟环境 conda activate drgcnn38 注意事项 在Pycharm中终端(terminal)显示PS而不是虚拟环境base 问题如下所示 解决方法:shell路径改成cmd.exe 重启终端显示虚拟环境 3.安装torch …...

分布式缓存获取以及设置

1. 通用代码 public SysUser getCache(String sysUserId) {String cacheKey "litgery:warehouse:" sysUserId;// 尝试从缓存中获取数据CacheData cacheData redisUtils.get(cacheKey);if (null ! cacheData) {if (Boolean.TRUE.equals(cacheData.getExist())) {re…...

SMO算法,platt论文的原始算法及优化算法

platt论文&#xff1a;[PDF] Sequential Minimal Optimization : A Fast Algorithm for Training Support Vector Machines | Semantic Scholar 算法优化&#xff1a;[PDF] Improvements to Platts SMO Algorithm for SVM Classifier Design | Semantic Scholar 包含个人plat…...

2.3 openCv -- 对矩阵执行掩码操作

在矩阵上进行掩模操作相当简单。其基本思想是根据一个掩模矩阵(也称为核)来重新计算图像中每个像素的值。这个掩模矩阵包含的值决定了邻近像素(以及当前像素本身)对新的像素值产生多少影响。从数学角度来看,我们使用指定的值来做一个加权平均。 具体而言,掩模操作通常涉…...

【Django】 js实现动态赋值、显示show隐藏hide效果

文章目录 需要达到的前端效果预览&#xff1a;实现步骤复制bootstrp代码&#xff08;buttons&#xff09;复制bootstrp代码&#xff08;Alert警告框&#xff09;写js测试效果 需要达到的前端效果预览&#xff1a; {% load static %} <!DOCTYPE html> <html lang"…...

qt--做一个拷贝文件器

一、项目要求 使用线程完善文件拷贝器的操作 主窗口不能假死主窗口进度条必须能动改写文件大小的单位&#xff08;自适应&#xff09; 1TB1024GB 1GB1024MB 1MB1024KB 1KB1024字节 二、所需技术 1.QFileDialog 文件对话框 QFileDialog也继承了QDialog类&#xff0c;直接使用静态…...

Eclipse 搭建 C/C++ 开发环境以及eclipse的使用

一、下载、安装 MinGW 1、下载: 下载地址&#xff1a;MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net 点击“Download Latest Version”即可 下载完成后&#xff0c;得到一个名为 mingw-get-setup.exe 的安装文件。双击运行&#xff0c;安装即可。 …...

【初阶数据结构】复杂度算法题篇

旋转数组 力扣原题 方案一 循环K次将数组所有元素向后移动⼀位&#xff08;代码不通过) 时间复杂度O(n2) 空间复杂度O(1) void rotate(int* nums, int numsSize, int k) {while (k--) {int end nums[numsSize - 1];for (int i numsSize - 1; i > 0; i--) {nums[i] num…...

20240725项目的maven环境报红-重新配置maven

1.在编辑器里面打开项目&#xff0c;导入源码 &#xff08;1&#xff09;找到项目的地址C:\Users\zzz\IdeaProjects\datasys&#xff0c;然后右击用idea编辑器打开。 &#xff08;2&#xff09;idea中上菜单栏打开open&#xff0c;然后输入file&#xff0c;选择源代码文件 2.…...

若依 ruoyi poi Excel合并行的导入

本文仅针对文字相关的合并做了处理 &#xff0c;图片合并及保存需要另做处理&#xff01;&#xff01; 目标&#xff1a;Excel合并行内容的导入 结果&#xff1a; 1. ExcelUtil.java 类&#xff0c;新增方法&#xff1a;判断是否是合并行 /*** 新增 合并行相关代码&#xff1a;…...

优化算法:1.遗传算法(GA)及Python实现

一、定义 遗传算法就像是在模拟“优胜劣汰”的进化过程&#xff0c;通过选择最优秀的个体&#xff0c;交配产生下一代&#xff0c;并引入一定的变异&#xff0c;逐步优化解决问题。 二、具体步骤 初始化种群(Initialization)&#xff1a; 假设你要找到一个迷宫的最佳出口路径。…...

企业化运维(8)Docker容器技术

###1.Docker介绍### 什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间…...

Unity C#底层原理(二)

委托 方法的容器&#xff1a;委托可以存储一个或多个方法的引用。可以使用委托对象来调用这些方法。函数/方法的变量类型&#xff1a;委托类型可以像变量一样声明和使用&#xff0c;存储方法的引用。存储、传递方法&#xff1a;委托可以作为参数传递给方法&#xff0c;也可以作…...

计算机网络-配置路由器ACL(访问控制列表)

配置访问控制列表ACL 拓扑结构 拓扑结构如下&#xff1a; 要配置一个ACL&#xff0c;禁止PC0访问PC3&#xff0c;禁止PC4访问PC0&#xff0c;其它正常。 配置Router0 配置接口IP地址&#xff1a; interface fastethernet 0/0 ip address 192.168.1.1 255.255.255.0 no shu…...

51单片机嵌入式开发:20、STC89C52R基于C51嵌入式点阵广告屏的设计

STC89C52R基于C51嵌入式点阵广告屏的设计 1 概述2 LED点阵介绍2.1 特点和优势2.2 工作原理&#xff1a;2.3 使用方法&#xff1a; 3 LED点阵原理3.1 Led点阵内部电路3.2 原理图电路3.3 74HC595 4 软件实现点阵图案的滑动4.1 软件工程代码4.2 Protues仿真 5 总结 配套示例程序 1…...

VLC输出NDI媒体流

目录 1. 下载安装VLC Play 2. 首先在电脑上安装NDI Tools 3. 运行VLC进行输出配置 4. 播放视频 5. 验证 (1)用Studio Monitor验证 (2)用OBS验证 NDI(Network Device Interface)即网络设备接口,是由美国 NewTek 公司开发的免费标准,它可使兼容的视频产品以高质量…...

WiFi 局域网通信 - 发现服务和解析

1. nsdManager nsdManager requireContext().getSystemService(Context.NSD_SERVICE) as NsdManager2. NsdManager.DiscoveryListener 注意&#xff1a;在onStartDiscoveryFailed 和 onStopDiscoveryFailed里不要调用nsdManager.stopServiceDiscovery(this) 方法&#xff0…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...