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

docker安装Canal1.1.5,MySQL5.7踩坑

docker安装Canal

  • 前情提示
  • 安装MySQL
    • docker安装MySQL
      • 1. 拉取镜像
      • 2. 创建容器映射宿主机目录
      • 3. docker run
    • 配置mysql
      • 重启mysql
      • 新建canal用户
  • 安装Canal
    • 创建docker网络
    • 安装Canal
      • 1.拉取canal镜像
      • 2.创建目录
      • 3.运行容器
  • 踩坑
    • 问题1

Canal

前情提示

关于版本问题,官方也没有详细说明从哪个版本开始支持MySQL8.0以上版本,之后的Release都是更新binlog的解析功能,所以推荐8.0以上版本推荐最新版,5.7推荐1.1.5
v1.1.4
支持mysql8.0新的caching_sha2_password认证协议
v1.1.7
支持MySQL 8.0、Mariadb 10.x版本的compress binlog解析
v1.1.8
适配MySQL 8.4、Mariadb 11、Percona 8.0、PolarDB-X 2.0的版本

在这里插入图片描述
所以如果遇到Canal一直启动不成功 docker start canal 30s之后自动退出,先别慌,可能是你的配置有问题,mysql无法访问等问题
在这里插入图片描述

安装MySQL

docker安装MySQL

1. 拉取镜像

docker pull mysql:5.7

2. 创建容器映射宿主机目录

mkdir -p  /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf

3. docker run

sudo docker run -d -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

命令解释:
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为,主机3306,容器3306
–name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:5.7:需要运行的容器名称以及版本号

配置mysql

打开mysql挂载主机目录下( /mydata/mysql/conf )的 my.cnf 配置文件,添加以下配置


[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect=' SET collation_connection = utf8_unicode_ci '
init_connect=' SET NAMES utf8 '
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
datadir=/var/lib/mysql
# start binlog 
log-bin = /var/lib/mysql/mysql-bin
binlog-do-db=heima
server-id = 1000

重启mysql

docker restart mysql

新建canal用户

  • 执行CREATE USER前可先删除旧用户:

    DROP USER IF EXISTS 'canal'@'%';
    

    赋予权限
    授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

    create user canal@'%' IDENTIFIED by 'canal';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%' identified by 'canal';
    FLUSH PRIVILEGES;

参数介绍:

参数作用
'canal'用户名(Canal 服务连接 MySQL 时使用的账号名)
'%'允许从任意主机连接(% 是通配符,若限制 IP 可改为 '192.168.%'
IDENTIFIED BY 'canal'设置用户密码为 canal(需与 Canal 容器配置的密码一致)
SELECT允许读取数据(Canal 需要查询表结构和数据)
REPLICATION SLAVE允许作为从库复制 Binlog(核心权限,Canal 伪装成 MySQL 从库)
REPLICATION CLIENT允许查看主库/从库状态(如执行 SHOW MASTER STATUS
ON *.*权限作用于所有数据库和表(可缩小为 heima.* 仅授权特定库)
TO 'canal'@'%'将权限授予之前创建的 canal 用户

安装Canal

创建docker网络

解释一下原因:canal在启动时需要指定mysql的ip地址,去连接mysql,也可在配置文件中指定

但是 Docker 默认的桥接网络(bridge)虽然允许容器间通信,但需要通过 IP 地址(如 172.17.0.2:3306),而容器的 IP 在重启时可能变化,导致配置不可靠。

解决方法:在自定义网络 heima 中,容器可以通过 名称(如 mysqlcanal)直接访问彼此,无需依赖 IP。

heima 网络中,Canal 只需配置 mysql:3306,Docker 会自动解析为 MySQL 容器的当前 IP

-e canal.instance.master.address=mysql:3306 # 通过容器名访问

# docker network create heima
docker network lsdocker network create heimadocker network connect heima mysql# 可以查看到两个镜像的ip地址
docker network inspect heima

查看配置的heima网络
在这里插入图片描述

{"Name": "heima","Id": "7b0eb7cc1ed6e5fb6d33b59e96b5cb3b35238391c6c0ffb6c2ed119862fb1739","Created": "2025-04-28T15:04:35.099533858+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.19.0.0/16","Gateway": "172.19.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {"38540c02f0430d05fe63cb446a03806b5b3799e9a8a5895a25289e60f7a2bf39": {"Name": "mysql","EndpointID": "0bd335bb4924588873beee55cf8b9a6581c8377367f96973e8af17022213fbd7","MacAddress": "02:42:ac:13:00:02","IPv4Address": "172.19.0.2/16","IPv6Address": ""},"f5dcd4769f47c41387d6ba4327aeb06d8d9383b5ec896db300115a9cd8686514": {"Name": "canal","EndpointID": "3eced6f10ed910d16dc01799740d5ad7891164f3732684bd8430e0db9a09a63a","MacAddress": "02:42:ac:13:00:03","IPv4Address": "172.19.0.3/16","IPv6Address": ""}},"Options": {},"Labels": {}}

安装Canal

1.拉取canal镜像

## 拉取版本为v1.1.5的canal
docker pull canal/canal-server:v1.1.5

2.创建目录

mkdir -p /mydata/canal-server/conf
mkdir -p /mydata/canal-server/logs
mkdir -p /mydata/canal-server/conf/heimadocker cp containID:/home/admin/canal-server/conf/canal.properties /mydata/canal-server/conf
docker cp containID:/home/admin/canal-server/heima/instance.properties /mydata/canal-server/conf/heima

3.运行容器

docker run -p 11111:11111 --name canal \
-e canal.destinations=heima \ 
-e canal.instance.master.address=mysql:3306  \
-e canal.instance.dbUsername=canal  \
-e canal.instance.dbPassword=canal  \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false  \
-e canal.instance.filter.regex=heima\\..* \
--network heima \
-d canal/canal-server:v1.1.5

踩坑

问题1

2025-04-28 16:58:26.569 [destination = heima , address = /127.0.0.1:3306 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /127.0.0.1:3306 has an error, retrying. caused by com.alibaba.otter.canal.parse.exception.CanalParseException: java.io.IOException: connect /127.0.0.1:3306 failure

分析,Canal 服务无法连接到 MySQL 的核心问题是 配置中的 MySQL 地址错误

分析网络配置

  • heima

    网络中已包含两个容器:

    • mysql(IP: 172.19.0.2
    • canal(IP: 172.19.0.3
  • 容器间网络互通正常。

最后的原因是canal.instance.master.address 未正确设置为 mysql:3306而使用的是127.0.0.1:3306

因为mysql是在docker环境下运行的,桥接模式下基于docker0网桥分配IP地址和网关

docker stop canal
docker run ...
docker logs canal
docker exec -it canal /bin/bash
tail -n 50 canal-server/logs/heima/heima.log

在这里插入图片描述

相关文章:

docker安装Canal1.1.5,MySQL5.7踩坑

docker安装Canal 前情提示安装MySQLdocker安装MySQL1. 拉取镜像2. 创建容器映射宿主机目录3. docker run 配置mysql重启mysql新建canal用户 安装Canal创建docker网络安装Canal1.拉取canal镜像2.创建目录3.运行容器 踩坑问题1 前情提示 关于版本问题,官方也没有详细…...

SpringBoot 接口国际化i18n 多语言返回 中英文切换 全球化 语言切换

介绍 Spring Boot通过MessageSource接口来实现国际化,它可以加载不同的消息资源文件,通常是.properties格式。通过定义不同的语言文件(例如:messages_en.properties、messages_zh.properties等),可以根据用…...

C++ 嵌套类 (详解 一站式讲解)

目录 嵌套类 嵌套类的定义 嵌套类结构的访问权限 pimpl模式(了解) 嵌套类 嵌套类的定义 首先介绍两个概念: 类作用域(Class Scope) 类作用域是指在类定义内部的范围。在这个作用域内定义的成员(包括…...

EasyCVR视频汇聚平台助力大型生产监控项目摄像机选型与应用

一、方案背景 在300路大型生产监控项目中,由于生产环境复杂多样,涵盖室外厂区、大型车间、室内办公区域等不同场景,单一类型的摄像机难以满足全方位、精细化的监控需求。EasyCVR作为一款功能强大的视频融合管理平台,具备灵活的视…...

解决leensa无法使用的办法:平替教程

Leensa已经完全连不上,并显示超时,至于之前有传言称他们会恢复服务也完全是无稽之谈。 那么,Leensa停止服务后,广大的外贸人,设计人,留学生以及技术人学习,查资料以及开发客户该怎么办呢&#…...

算法思想之哈希表

欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之哈希表 发布时间:2025.4.28 隶属专栏:算法 目录 算法介绍哈希表作用什么时候使用哈希表怎么使用哈希表 例题两数之和题目链接题目描述算法思路代码实现 判定是否互为字符重排题目链…...

springboot 视频分段加载在线播放

页面访问视频资源 前端播放加载部分视频,每次选中一个时间点后 往后加载一部分视频,主要用以节省网络传输的数据量 通过ResourceHttpRequestHandler类实现,ResourceHttpRequestHandler支持分片加载,前端请求头中携带Range: bytes 0-10001,就…...

【题解-Acwing】868. 筛质数

题目:868. 筛质数 题目描述 给定一个正整数 n,请你求出 1∼n 中质数的个数。 输入 共一行,包含整数 n。 输出 共一行,包含一个整数,表示 1∼n 中质数的个数。 数据范围 1 ≤ n ≤ 106 时空限制 0.2s / 64MB 输入样例 8输出样例 4代码 #include...

java 和 C#操作数据库对比

Java和C#在操作数据库方面有诸多相似之处,但也存在一些差异,以下从几个方面为你进行对比: 数据库连接 Java 在Java中,使用JDBC(Java Database Connectivity)来连接数据库。连接数据库的步骤通常包括加载…...

用 Python打造交互式图片-音视频管理器:代码分析与实践

在 Python 的 GUI 开发领域,wxPython 是一个功能强大且跨平台的框架,适合快速构建桌面应用程序。本文将深入分析一个基于 wxPython 的交互式图片管理器项目(SelectModelToPlayVideoAndAudio.py),该程序允许用户管理图片…...

Django 缓存框架

动态网站的一个基本权衡是它们是动态的。每当用户请求页面时,Web 服务器进行各种计算,从数据库查询到模板渲染到业务逻辑,以创建您网站访问者看到的页面。从处理开销的角度来看,这比标准的从文件系统中读取文件的服务器安排要昂贵…...

后缀数组~

子串&#xff1a;在字符串s中&#xff0c;取任意i<j,那么在s中截取从i到j的这一段就叫做s的一个子串。 后缀&#xff1a;后缀就是从字符串的某个位置i到字符串末尾的子串&#xff0c;我们定义以s的第i个字符为第一个元素的后缀为suff(i)。 suff(1)就是从第一个字符到最后一个…...

Rust 学习笔记:编程练习(一)

Rust 学习笔记&#xff1a;编程练习&#xff08;一&#xff09; Rust 学习笔记&#xff1a;编程练习&#xff08;一&#xff09;Convert temperatures between Fahrenheit and CelsiusGenerate the nth Fibonacci numberPrint the lyrics to the Christmas carol “The Twelve …...

【基础知识】常见的计算公式(一)

目录标题 定时器相关公式1. 定时器分频系数计算2. 定时器定时时间计算 波特率相关公式1. 异步串行通信波特率计算 PWM 相关公式1. PWM 占空比计算 不知道你们是不是和我一样,对定时器中的分频系数相关的计算公式,波特率计算公式等,都有点心生畏惧,其核心原因是不清楚不了解,没有…...

【AI生产力工具】Windsurf,一款AI编程工具

Windsurf 是 Codeium 公司推出的一款 AI 编程助手,它是一款集成深度上下文感知、多模型协作和实时代码管理的综合开发环境(IDE)。 Windsurf 作为 AI 编程工具的核心价值在于 “上下文感知 + 多模型协作 + 自动化工作流”,其深度集成的智能体系统(如 Flows 和 Cascade)正…...

【网络原理】TCP提升效率机制(三):延时应答和捎带应答

目录 一. 延时应答 二. 捎带应答 一. 延时应答 延时应答也是基于滑动窗口的一种提升传输效率的方式&#xff08;减少ACK数量&#xff09; 接收方收到数据之后&#xff0c;不会立刻返回一个ACK确认报文&#xff0c;而是等一会再返回ACK报文 这样做的好处&#xff1f; 1&…...

Golang|分布式索引架构

当文档数量巨大时&#xff0c;如一亿个文档&#xff0c;倒排索引难以全部放入单机内存。正排索引将热数据和冷数据分别存储在内存和磁盘中。分布式搜索引擎将数据分布在不同服务器上以应对大量数据。 倒排索引的水平切分 水平切分按关键词划分数据&#xff0c;如JAVA和算法在A服…...

【蓝桥杯省赛真题58】Scratch画台扇 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

目录 scratch画台扇 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C资料 scratch画台扇 第十五届青少年蓝桥杯scratch编程省赛真题解析 一…...

WebRTC SDK是什么?

​语音环境每年都在变&#xff0c;OKCC以前代理商的客群都是简单高效外呼为主&#xff0c;今年发现变化很大。很多代理商做的终端客户都是给其他业务系统赋能为主了。主流的还是以API对接为主&#xff0c;但是对接中发现webrtc SDK使用频率很高。 ​ ​那么什么是WebRTC SDK…...

反向代理、负载均衡与镜像流量:原理剖析、区别对比及 Nginx 配置实践

在现代网络架构中&#xff0c;反向代理、负载均衡和镜像流量是保障系统高效、稳定、安全运行的关键技术。虽然它们都涉及网络流量的管理与分发&#xff0c;但在功能、应用场景和实现方式上有着显著差异。本文将深入探讨三者的区别&#xff0c;并结合 Nginx 这一强大的开源服务器…...

PyCharm 2023升级2024 版本

windows下把老版本卸载之后&#xff0c;需要把环境变量&#xff0c;注册表信息删除。 并且把C:\Users\用户\AppData 文件夹下的 Local\JetBrains和Roaming\JetBrains 都删除&#xff0c;再重新安装 原旧项目升级的方式&#xff1a; 1.2023虚拟机的文件夹是venv 改为.venv…...

for(auto it: vec)和for(auto it: vec)的区别以及使用场景

目录 1.for(auto it: vec) 2.for(auto& it: vec) 3.总结 在 C 里&#xff0c;for(auto it: vec) 和 for(auto& it: vec) 都属于基于范围的 for 循环&#xff0c;可用于遍历容器&#xff08;像 std::vector、std::list 等&#xff09;或者数组。不过&#xff0c;它们…...

系统思考提升培训效能

彼得德鲁克曾说&#xff1a;管理者的价值&#xff0c;不在于处理了多少事务&#xff0c;而在于创造了多少不可替代的成果。效率是以正确的方法做事&#xff0c;效能则是做正确的事。在系统思考中我们看到&#xff1a;效率往往是对单点问题的反应&#xff0c;而效能则是对整体系…...

第1篇:Egg.js框架入门与项目初始化

一、Egg.js框架优势与设计理念 1. 为什么选择Egg.js&#xff1f; 作为基于Koa 2.x的渐进式企业级框架&#xff0c;Egg.js在阿里系大规模生产环境中验证成熟&#xff0c;具备以下核心优势&#xff1a; 约定优于配置 通过app/config目录结构自动加载机制&#xff0c;减少冗余配置…...

CMU-15445(1)——环境搭建

前言 最近在找完暑期实习之后&#xff0c;终于有了一些干项目外的空余时间学习新的知识&#xff0c;在这么多轮面试中&#xff0c;数据库的考察非常多&#xff0c;但孱弱的数据库基础导致我有很多次面试被问住&#xff0c;因此我希望在学习CMU-15445&#xff08;Fall 2024&…...

Web基础与HTTP协议

目录 一&#xff1a;Web基础 1.域名和dns 1.1域名的概念 &#xff08;1&#xff09;域名的结构 &#xff08;2&#xff09;域名结构类型 2.Hosts文件 &#xff08;1&#xff09;hosts文件的作用 &#xff08;2&#xff09;修改hosts文件 3.DNS 4.域名注册 &#xff0…...

数量关系7_行程问题

目录 一、基础行程1. 基础行程2. 比例法运用3. 相遇追及二、特殊情境1. 多次相遇问题(简单)2. 流水问题3. 火车过桥4. 等距离平均速度问题(简单)5. 匀加速一、基础行程 1. 基础行程 公式1:S = Vt 公式2:平均速度=(2 V1V2) / (V1+V2) 例题3(2023 广东) 某地举办了“铁…...

MTK Android12-13 App卸载加锁

实现&#xff1a;App 卸载时候需要加一层拦截锁&#xff0c;客户输入密码后才能正常卸载 文章目录 参考资料&#xff1a;实现方案涉及到修改文件修改方案实现效果 源码分析- 卸载方式一&#xff09; 设置界面进行卸载InstalledAppDetailsAppInfoDashboardFragmentAppButtonsPre…...

文号验证-同时对两个输入框验证

文号验证-同时对两个输入框验证 效果&#xff1a; 一、如果有多个文号&#xff1a; <div v-for"(item, index) in approvalForm.productApprovalTypeEvents" :key"index"> <el-form-itemlabel"文号":prop"productApprovalTypeEv…...

嵌入式面试八股文(十二)·FreeRTOS中·堆和栈

目录 1. 堆和栈 1.1 堆 1.2 栈 1.3 堆和栈的区别 1.3.1 分配方式 1.3.2 分配效率 1.3.3 生长方向 1.3.4 空间管理 1.3.5 存放内容 1. 堆和栈 1.1 堆 堆是一块用于动态分配内存的区域&#xff0c;用于存储程序运行时动态创建的对象。堆的大小可以在程序运行…...

表的增删改查

目录 1、增删改查&#xff08;CRUD&#xff09; 2、新增&#xff08;C&#xff09; 3、查询&#xff08;R&#xff09; 3.1、全列查询 3.2、指定列查询 3.3、查询字段为表达式 3.4、别名 3.5、去重&#xff1a;distinct 3.6、查询时排序 1、增删改查&#xff08;CRUD&…...

软考-软件设计师中级备考 4、数据结构

1、数据结构三要素 要素定义分类特点逻辑结构数据元素之间的逻辑关系&#xff0c;是从具体问题抽象出来的数学模型&#xff0c;与数据存储无关1. 集合结构&#xff1a;数据元素同属一个集合&#xff0c;无其他特殊关系 如一盒麦丽素豆子 2. 线性结构&#xff1a;元素存在一对…...

CMake:设置编译C++的版本

CMake提供了CMAKE_CXX_STANDARD用于设置C++的版本,比如可以通过如下方式设置使用C++23 set(CMAKE_CXX_STANDARD 23) 同时也提供了CMAKE_CXX_STANDARD_REQUIRED可以要求强制使用某个C++版本,比如: set(CMAKE_CXX_STANDARD_REQUIRED ON) 如果设置为 `ON`,那么 CMake 会要求编…...

【angular19】入门基础教程(一):项目的搭建与启动

angular现在发展的越来越能完善了&#xff0c;在vue和react的强势竞争下&#xff0c;它迎来了自己的巨大变革。项目工程化越来越好&#xff0c;也开始拥抱了vite这种高效的构建方式。所以&#xff0c;我们有必要来学习这么一个框架了。 项目实现效果 nodejs环境 Node.js - v^…...

在使用Python的Selenium库打卡网页后,通过CDP命令获取所有cookies(包括Httponly和Secure的cookies)

通过 Chrome DevTools Protocol (CDP) 结合 Selenium 可以直接获取浏览器存储的所有 Cookies&#xff08;包括所有域名下的 Cookies&#xff09;&#xff0c;以下是详细步骤&#xff1a; 步骤 1&#xff1a;配置 Chrome 启用 CDP启动 Chrome 浏览器时需启用远程调试端口&#…...

Deepseek-v3+cline+vscode java自动化编程

1、Deepseek DeepSeek 充值后&#xff0c;创建apikey 2、vscode Visual Studio Code - Code Editing. Redefined 3、下载插件cline 4、配置deepeseek-v3 的密钥到cline 5、不可用 在开始的几次调用能正常使用起来&#xff0c;用了几次后&#xff0c;不能使用了&#xff0c;请求…...

5G育种技术之植物性状订制

行业展望 我国农作物种业市场规模逐年增长&#xff0c;其中以粮食作物种子市场规模较大。目前我国育种产业发展仍处于初级阶段&#xff0c;存在龙头企业市场占有率和行业集中度不高、企业育种技术和水平落后于发达国家、种企研发投入不足等问题。虽然基因编辑技术的出现有望改…...

12前端项目----添加购物车1.0

商品添加购物车 商品数量添加购物车浏览器本地存储localStoragesessionStorage添加成功页面 商品数量 输入为数字&#xff0c;最少为1<div class"cartWrap"><div class"controls"><input autocomplete"off" class"itxt&quo…...

Elastic Platform 8.18 和 9.0:ES|QL Lookup Joins 功能现已推出,Lucene 10!

作者&#xff1a;来自 Elastic Elastic Platform Team Elastic 最新发布的 8.18 和 9.0 版本包含了强大的更新&#xff0c;将显著提升你的体验、增强查询性能并优化日志管理。无论你是在处理搜索、可观察性还是安全用例&#xff0c;本次发布都带来了大量新特性&#xff0c;旨在…...

两地三中心

1. 什么是同城备份 ✅ 定义&#xff1a; 主机房和备份机房都在同一座城市&#xff0c;通常距离几十公里以内&#xff08;比如10-50公里&#xff09;。 ✅ 特点&#xff1a; 网络延迟很低&#xff08;毫秒级&#xff09;&#xff0c;可以做到实时同步/热备份。 恢复速度快&am…...

数据结构第七章(一)-顺序查找和折半查找

数据结构第七章&#xff08;一&#xff09; 顺序查找和折半查找一、查找1.平均查找长度&#xff08;ASL&#xff09; 二、顺序查找1.实现2.算法优化 三、折半查找1.实现2.查找判定树 四、分块查找1.算法思想2.查找效率分析&#xff08;ASL&#xff09; 总结 顺序查找和折半查找…...

springboot项目之websocket的坑:spring整合websocket后进行单元测试后报错的解决方案

前排提醒&#xff1a;还是博主菜&#xff0c;见识短浅&#xff0c;没遇到过这个问题。。。 起因 前段时间学习websocket和sse&#xff0c;写demo用了spring框架。后来又写了新的spring单元测试类demo去测试&#xff0c;结果启动后报错&#xff0c;报错信息提示websocket的相关…...

在单片机编程中充分使用抽象工厂模式,确保对象创建的限制,多使用抽象接口避免多变具体实现类

背景 在软件架构设计上追求稳定,就必须多使用稳定的抽象接口,少依赖多变的实现;具体编码时可以充分使用抽象工厂模式 举例进行详细讲解和说明抽象工厂模式在单片机开发中的应用 抽象工厂模式是一种创建型设计模式,它提供了一种方式,可以将一组相关的对象创建封装到一个…...

喷泉码技术在现代物联网中的应用的总结和参考文献

总结 物联网与 5G 技术高速发展,数据传输对可靠性和实时性提出严苛要求。前向纠错码是增强通信鲁棒性的关键,但平衡冗余资源开销与编解码效率的矛盾是核心难题。LT 码和 Raptor 码是无率码典型。理论上它们能达渐进最优性能,然而实际系统受数据包规模、计算资源等限制,其工…...

vuex与vuex-persistedstate 插件固化数据

一&#xff0c;vuex与vuex-persistedstate 插件固化数据 的小案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>Vuex基础案例</title></head><body><div id"app"&…...

如何在WordPress网站中设置双重验证,提升安全性

随着互联网的不断进步&#xff0c;网站的安全问题越来越受到重视。尤其对于WordPress这样常用的建站平台&#xff0c;安全性显得尤为重要。尽管WordPress自带一定的安全性&#xff0c;但仅依靠用户名和密码的登录方式仍然存在风险。因此&#xff0c;启用“双重验证”便成为了提…...

2025系统架构师---基于规则的系统架构风格‌

引言 在业务规则频繁变更、决策逻辑高度动态化的现代企业环境中&#xff0c;‌基于规则的系统架构风格‌&#xff08;Rule-Based System Architecture Style&#xff09;通过将核心业务逻辑抽象为‌可配置规则‌、‌规则引擎‌与‌决策服务‌的分离&#xff0c;实现了业务敏捷…...

Python排序中lambda函数详解

在 Python 中&#xff0c;lambda 函数是一种匿名函数&#xff0c;通常用于需要一个函数但又不想为其定义一个正式名称的情况。在排序操作中&#xff0c;lambda 函数用于指定排序的依据。 lambda 函数的基本语法 lambda 函数的基本语法如下&#xff1a; lambda arguments: ex…...

web 基础与 http 协议

目录 一 Web 基础 1. 域名和 DNS 1.1 域名的概念 1.2 DNS 2. 网页与HTML 2.1 HTML 概述 2.2 HTML 基本标签 2.3 网站和主页 3. 静态网页与动态网页 3.1 静态网页 3.2 动态网页 二 HTTP 协议 1. HTTP 协议概述 2. HTTP 方法 3. HTTP 状态码 4. HTTP 请求流程分析…...

记一次奇妙的Oracle注入绕WAF之旅

0x01 一个登陆框 上班时遇到了一个登陆框 看着这个复古的界面&#xff0c;于是上手除了admin123456之外顺手点了个 于是弹出了一条有意思的报错 这就有意思了&#xff0c;毕竟已经很久没在登陆框遇到sql注入了&#xff0c;当我想当然的认为万能密码可以秒时&#xff0c;事情出…...