Flink-CDC 全面解析
Flink-CDC 全面解析
一、CDC 概述
(一)什么是 CDC
CDC 即 Change Data Capture(变更数据获取),其核心要义在于严密监测并精准捕获数据库内发生的各种变动情况,像数据的插入、更新以及删除操作,还有数据表相关的变动等,都会被它一一察觉。并且它会严格按照这些变动实际发生的先后顺序,毫无遗漏地完整记录下来,随后将这些变更信息写入到消息中间件里,方便其他服务按需进行订阅与消费。形象地说,它就像是数据库的“贴身管家”,时刻留意着数据库的任何“风吹草动”,一旦有变化,立马就能获取到相应信息。
(二)CDC 的种类
CDC 主要划分为基于查询和基于 Binlog 这两种方式,下面来看看它们之间的差别:
- 搭建 mysql 集群:在搭建时可以选择使用阿里巴巴的 mycat 来实现分库分表功能,以此更好地管理和扩展数据库架构。
- Canal:当我们想要知晓数据库中某个表的变动情况时,Canal 就能派上用场了,它的原理是依托 mysql 的 binlog,通过解析 binlog 来获取表的变更信息。例如,要是没有 CDC 的话,若想在大屏幕上实时展示订单的统计数据,那就得利用 Canal 去读取 mysql 里的实时订单数据,然后传递给 kafka,再由 kafka 把相关信息发送给 Flink;而要是有了 CDC,Flink 就能直接检测到 mysql 数据的变化,进而得出各项指标了。值得一提的是,CDC 底层其实内置了一个软件叫 debezium。
(三)Flink-CDC
Flink 社区精心打造了 flink-cdc-connectors 组件,这可是个功能强大的 source 组件,它具备直接从 MySQL、PostgreSQL 等数据库读取全量数据以及增量变更数据的能力,极大地拓展了 Flink 与数据库交互的便捷性。而且 Flink 还有诸如 mysql、kafka、hbase、cdc 等多种连接器,其触发器方面,默认大多是基于时间的,像 eventTime、procssingTime 等,当然也支持自定义触发器,比如在智慧交通项目中就有过相关应用。目前这个组件已经开源,开源地址为 https://github.com/ververica/flink-cdc-connectors ,方便广大开发者使用和贡献代码。
二、Flink CDC 案例实操
(一)DataStream 方式的应用
- 导入依赖:详细的依赖导入可参考 https://blog.csdn.net/mynameisgt/article/details/125826905 这个链接内容。要是启动时报错了,也不用慌,解决方案可查看 https://blog.csdn.net/qq_27721169/article/details/132151345 ,一般来说,就是修改 mysql 的驱动包的版本就行。不过要测试相关代码,还得先开启 mysql 的 binlog 日志,具体操作就是开启 MySQL Binlog 并重启 MySQL。
- 编写代码:代码编写完成后,接着要进行建库、建表操作,随后开启 mysql 的 binlog,具体可参照相应文档来执行。
- 案例测试:
- 打包并上传至 Linux:将写好的代码打包好,然后上传到 Linux 系统中,为后续部署做准备。
- 开启 MySQL Binlog 并重启 MySQL:再次强调这个操作的重要性,同时要查看 binlog 数据最新的大小,观察其前后变化情况,方便后续验证数据变更捕获是否准确。
- 创建一个表:创建一个带有随便几个字段的表,用于测试 Flink-CDC 对数据变更的捕获功能。
- 启动 Flink 集群:让 Flink 集群运行起来,为处理数据变更提供运行环境。
- 启动 HDFS 集群:启动 HDFS 集群,保障数据存储等相关功能的正常运行。
- 启动程序:正式启动编写好的 Flink-CDC 程序,开始检测数据变更情况。
- 在 MySQL 的 cdc_test.z_user_info 表中添加、修改或者删除数据:人为地在指定表中制造数据变更,以此来检验 Flink-CDC 是否能准确捕获到这些变化。
- 给当前的 Flink 程序创建 Savepoint:执行
bin/flink savepoint JobId hdfs://bigdata01:9820/flink/save
命令,创建 Savepoint,方便后续程序重启等操作时恢复状态。 - 关闭程序以后从 Savepoint 重启程序:通过
bin/flink run -s hdfs://bigdata01:9820/flink/save/... -c com.bigdata.FlinkCDC flink-1.0-SNAPSHOT-jar-with-dependencies.jar
命令,实现从 Savepoint 重启程序,验证程序的稳定性和数据处理的连贯性。
(二)自定义反序列化器
- 代码实现:在 Flink-CDC 中,有像 Canal、Maxwell 等相关总结内容。而且代码版本和 sql 版本存在一定区别:
- 版本支持:代码版本的 Flink 在 1.12 和 1.13 版本都支持相关操作,然而 sql 版本的 Flink 只有到 1.13 版本才支持。
- 监听范围:代码版本支持一次监听多个数据库以及多个表,功能更为强大;而 sql 版本则只支持单库单表的监听。
- 反序列化器:sql 版本中无需进行自定义反序列化器,相对简洁;但代码版本就需要自定义反序列化器了,当然,也可以选择不定义,根据具体业务场景和需求来决定。
(三)FlinkSQL 方式的应用
- 代码实现:在代码实现过程中,有一些需要特别留意的“坑”:
- jar 包版本问题:在 maven 中,各个 jar 包之间的版本有可能出现不兼容等问题,比如可能会出现
java.lang.NoSuchMethodError:scala.Predef$.refArrayOps
这样的错误,需要仔细排查和调整 jar 包版本。 - 主键问题:在 FlinkSQL 里,如果创建的表没有主键,尤其是在 Flink 1.13 版本之后,会遇到
The primary key is necessary when enable 'Key: 'scan.incremental.snapshot.enabled', default: true (fallback keys: [])' to 'true'
这样的限制,所以创建表的时候一定要记得加上主键。详细的常见 SQL 错误内容可参考 https://help.aliyun.com/zh/flink/support/common-sql-errors?spm=a2c4g.11186623.0.i32#section-9oq-z7x-sq0 。
- jar 包版本问题:在 maven 中,各个 jar 包之间的版本有可能出现不兼容等问题,比如可能会出现
以下是一段示例代码:
package com.bigdata.cdc;import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
import org.apache.flink.types.Row;/*** @基本功能:* @program:FlinkProject* @author: 闫哥* @create:2024-06-13 11:01:11**/
public class CdcSQLTest {public static void main(String[] args) throws Exception {//1. env-准备环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);env.setParallelism(1);// 获取tableEnv对象// 通过env 获取一个table 环境StreamTableEnvironment tenv = StreamTableEnvironment.create(env);//2. 创建表对象//3. 编写sql语句//4. 将Table变为stream流tenv.executeSql("CREATE TABLE user_info2 (\n" +" id INT NOT NULL primary key,\n" +" name STRING,\n" +" age int\n" +") WITH (\n" +" 'connector' = 'mysql-cdc',\n" +" 'hostname' = 'bigdata01',\n" +" 'port' = '3306',\n" +" 'username' = 'root',\n" +" 'password' = '123456',\n" +" 'scan.startup.mode' = 'latest-offset', " +" 'database-name' = 'cdc_test',\n" +" 'table-name' = 'user_info'\n" +")");tenv.executeSql("select * from user_info2").print();Table table = tenv.sqlQuery("select * from user_info2");DataStream<Tuple2<Boolean, Row>> retractStream = tenv.toRetractStream(table, Row.class);retractStream.print();//5. execute-执行env.execute();}
}
在这段代码中,首先是准备 Flink 的运行环境,设置好运行模式以及并行度等基础参数,接着获取 StreamTableEnvironment
对象,用于后续的 SQL 操作。然后创建了名为 user_info2
的表,定义了表结构以及相关的连接配置信息,如连接的数据库、用户名、密码等,通过执行 SQL 查询语句并将结果转换为流的形式进行输出,最后执行整个程序,实现基于 FlinkSQL 方式对 Flink-CDC 的应用实践。
相关文章:
Flink-CDC 全面解析
Flink-CDC 全面解析 一、CDC 概述 (一)什么是 CDC CDC 即 Change Data Capture(变更数据获取),其核心要义在于严密监测并精准捕获数据库内发生的各种变动情况,像数据的插入、更新以及删除操作࿰…...
HarmonyOS中实现上拉加载下拉刷新
参考网址:Refresh-滚动与滑动-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者 1.数据基类 //根据自己的业务数据扩展此类 //注意:一定要继承Object export class PullToRefreshBean extends Object{name: string …...
【轻松学C:编程小白的大冒险】--- C语言简介 02
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【轻松学C:编程小白的大冒险】…...
MySQL安装,配置教程
一、Linux在线yum仓库安装 打开MySQL官方首页,链接为:https://www.mysql.com/ 界面如下: 在该页面中找到【DOWNOADS】选项卡,点击进入下载页面。 在下载界面中,可以看到不同版本的下载链接,这里选择【My…...
项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试
前言 在嵌入式设备的OTA场景测试和其他断电上电测试过程中,有的场景发生在夜晚或者随时可能发生,这个时候不可能24h人工盯着,需要自动化抓取串口日志处罚断电上电操作。 下面的python脚本可以实现自动抓取串口指定关键词,然后触发…...
多活架构的实现原理与应用场景解析
一、多活架构为何如此重要? 企业的业务运营与各类线上服务紧密相连,从日常的购物消费、社交娱乐,到金融交易、在线教育等关键领域,无一不依赖于稳定可靠的信息系统。多活架构的重要性愈发凸显,它宛如一位忠诚的卫士,为业务的平稳运行保驾护航。 回想那些因系统故障引发的…...
01-springclound
OpenFeign OpenFeign的日志级别 GateWay GateWay自定义过滤器 自定义过滤器,实现Order接口 数字小的先执行 GateWay传递用户信息 1、需要在网关搞定登录校验,将用户信息保存到请求头 2、网关到微服务 通过 springmvc的拦截器 来处理,将用户…...
Pandas-RFM会员价值度模型
文章目录 一. 会员价值度模型介绍二. RFM计算与显示1. 背景2. 技术点3. 数据4. 代码① 导入模块② 读取数据③ 数据预处理Ⅰ. 数据清洗, 即: 删除缺失值, 去掉异常值.Ⅱ. 查看清洗后的数据Ⅲ. 把前四年的数据, 拼接到一起 ④ 计算RFM的原始值⑤ 确定RFM划分区间⑥ RFM计算过程⑦…...
Java基础知识面试题
1.Java语言的特点? 1.一面向对象(封装,继承,多态); 2.平台无关性( Java 虚拟机实现平台无关性);(类是一种定义对象的蓝图或模板)3.支持多线程( C 语言没有内…...
WebSocket监听接口
在Vue.js中使用WebSocket来监听接口其实相对简单。WebSocket是一种在单个TCP连接上进行全双工通信的协议,通常用于需要实时数据更新的场景,比如聊天应用、实时通知等。 以下是一个在Vue.js中使用WebSocket的示例: 1. 创建Vue项目 如果你还…...
Kotlin语言的编程范式
Kotlin语言的编程范式 Kotlin是一种现代的编程语言,旨在提高开发效率,减少代码复杂度。在过去几年中,Kotlin在Android开发中获得了极大的普及,同时也逐渐被用在服务器端、Web开发、数据科学等多个领域。本文将深入探讨Kotlin的编…...
【权限管理】Apache Shiro学习教程
Apache Shiro 是一个功能强大且灵活的安全框架,主要用于身份认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)。它旨在为…...
网络安全 信息收集入门
1.信息收集定义 信息收集是指收集有关目标应用程序和系统的相关信息。这些信息可以帮助攻击者了解目标系统的架构、技术实现细节、运行环境、网络拓扑结构、安全措施等方面的信息,以便我们在后续的渗透过程更好的进行。 2.收集方式-主动和被动收集 ①收集方式不同…...
Java Web开发进阶——RESTful API设计与开发
随着分布式系统和微服务架构的流行,RESTful API已成为现代Web应用中后端与前端、第三方系统交互的重要方式。本节将深入探讨RESTful API的设计原则、实现方式以及如何使用Spring Boot开发高效、可靠的RESTful服务。 1. 理解RESTful API的设计原则 1.1 什么是RESTfu…...
图片已经在windows上旋转了,但是在linux上仍然显示不正常
公司接了一个linux产品的售后工作,我们现在的产品都是android。linux设备如果要播放竖屏的图片在linux主板上。需要将图片旋转下才能正常播放。 我拿到图片以后,就用window图片编辑器打开了图片如下图左。选择逆时针选择了90 然后另存图片为如下图右。 …...
关于大数据的基础知识(二)——国内大数据产业链分布结构
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(二&a…...
Flutter鸿蒙化 在鸿蒙应用中添加Flutter页面
前言 今天这节课我们讲一下 在鸿蒙应用中添加Flutter页面。 作用: 之前有很多朋友和网友问我鸿蒙能不能使用Flutter开发,他们的项目已经用Flutter开发成熟了有什么好的方案呢,今天讲到这个就可以很好的解决他们的问题,例如我们正式项目中可能是一部分native 开发 一部分…...
【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(二)
优美的排列 题目解析 算法原理 解法 :暴搜 决策树 红色剪枝:用于剪去该节点的值在对应分支中,已经被使用的情况,可以定义一个 check[ ] 紫色剪枝:perm[i] 不能够被 i 整除,i 不能够被 per…...
Perl语言的语法
Perl语言概述及其应用 引言 Perl语言是一种通用的高级编程语言,由拉里沃尔(Larry Wall)于1987年首次发布。Perl语言的设计目标是简化文本处理和报告生成,同时也提供了强大的功能以用于系统管理、网络编程、数据库交互等多种场景…...
ELK+filebeat+kafka
ELKfilebeatkafka elkelk的架构数据流向ELK的部署 filebeatzookeeperkafkazopkeeprzookeeper的工作机制zookeeper的特点zookeeper的数据架构zookeeper的安装 kafka消息队列消息队列的应用场景消息队列的模式kafka组件的名称 elk elk的架构 elk:统一日志收集系统 …...
WPF系列九:图形控件EllipseGeometry
简介 EllipseGeometry用于绘制一个椭圆的形状。它通常与其他图形元素结合使用,比如 Path 或者作为剪切区域来定义其他元素的外形。 定义椭圆:EllipseGeometry 用来定义一个椭圆或者圆的几何形状。参与绘制:可以被用作 Path 元素的数据&…...
2025新年源码免费送
2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝,又进来偷我源码啦👊👊👊。欢迎偷源码 🔥🔥🔥 获取免费源码以及更多源码,可以私信联系我 我们常常…...
离线录制激光雷达数据进行建图
目前有一个2D激光雷达,自己控制小车运行一段时间,离线获取到激光雷达数据后运行如下代码进行离线建图。 roslaunch cartographer_ros demo_revo_lds.launch bag_filename:/home/firefly/AutoCar/data/rplidar_s2/2025-01-08-02-08-33.bag实际效果如下 d…...
Scala分布式语言二(基础功能搭建、面向对象基础、面向对象高级、异常、集合)
章节3基础功能搭建 46.函数作为值三 package cn . itbaizhan . chapter03 // 函数作为值,函数也是个对象 object FunctionToTypeValue { def main ( args : Array [ String ]): Unit { //Student stu new Student() /*val a ()>{"GTJin"…...
AI中的神经元与权重矩阵之间的关系;神经元连接角度看行和列的意义
AI中的神经元与权重矩阵之间的关系 目录 AI中的神经元与权重矩阵之间的关系神经元连接角度看行和列的意义AI中的神经元概念 在人工智能领域,特别是神经网络中,神经元是基本的计算单元,它是对生物神经元的一种抽象模拟。就像生物神经元接收来自其他神经元的电信号,经过处理后…...
前端中常用的单位度量(px,rpx,rem,em,vw,vh)+图片自适应
文章目录 前端中常用的单位度量vw/vh 的场景应用px/rem/em 之间的转换关系项目中的rem 应用根元素 font-size 设置为16px 的应用惯例自适应之图片应用1. 使用 max-width 和 max-height2. 使用 object-fit 属性3. 使用 background-image 模拟图片展示 前端中常用的单位度量 px&…...
Attention计算中的各个矩阵的维度都是如何一步步变化的?
在Transformer模型中,各个矩阵的维度变化是一个关键的过程,涉及到输入、编码器、解码器和输出等多个阶段。以下是详细的维度变化过程: 输入阶段 输入序列:假设输入序列的长度为seq_len,每个单词或标记通过词嵌入&…...
Golang学习笔记_23——error补充
Golang学习笔记_20——error Golang学习笔记_21——Reader Golang学习笔记_22——Reader示例 文章目录 error补充1. 基本错误处理2. 自定义错误3. 错误类型判断3.1 类型断言3.2 类型选择 4. panic && recover 源码 error补充 1. 基本错误处理 在Go中,函数…...
DB-Engines Ranking 2025年1月数据库排行
DB-Engines Ranking 2025年1月数据库排行 DB-Engines排名根据数据库管理系统的受欢迎程度进行排名。排名每月更新一次。 2025年1月,共有423个数据库进入排行。 排行榜 Oracle Oracle 连续三月稳居榜首,排名稳定。2025 年 1 月分数较上月增 5.03&#x…...
积分与签到设计
积分 在交互系统中,可以通过看视频、发评论、点赞、签到等操作获取积分,获取的积分又可以参与排行榜、兑换优惠券等,提高用户使用系统的积极性,实现引流。这些功能在很多项目中都很常见,关于功能的实现我的思路如下。 …...
用 Python 绘制可爱的招财猫
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常…...
用 HTML5 Canvas 和 JavaScript 实现炫酷跨年烟花特效
一、引言 跨年夜,五彩斑斓、绚丽绽放的烟花是最令人期待的视觉盛宴之一。在网页端,我们能否通过技术手段复现这一梦幻场景呢?答案是肯定的。本文将深入剖析一段使用 HTML5 Canvas 和 JavaScript 实现的跨年烟花特效源码,带你领略前端技术创造的惊艳画面。 用 HTML5 Canvas…...
什么是数据湖?大数据架构的未来趋势
💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...
Spring boot接入xxl-job
Spring boot接入xxl-job 导入maven包加入配置增加配置类创建执行器类(写job的业务逻辑)去控制台中配置job 导入maven包 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…...
Flutter pubspec.yaml 使用方式
Flutter pubspec.yaml 使用方式 pubspec.yaml 是 Flutter 项目中最重要的配置文件之一,用于管理应用的基本信息、依赖项、资源以及构建配置等内容。 1. 基本结构和字段 基本信息 name: my_flutter_app # 应用的名称 description: A new Flutter project …...
Elixir语言的学习路线
Elixir语言的学习路线 Elixir是一种动态、通用的编程语言,特别适合用于构建可扩展和维护性强的应用程序。它基于Erlang虚拟机(BEAM),因其高并发性和容错能力而广受欢迎。近年来,Elixir在Web开发(特别是与P…...
看不懂scatter、gather的来
1.torch.scatter 这是out-of-place版本(相对于in-place版本),它会返回一个新的张量。 torch.Tensor.scatter_ 就是in-place版本,它直接修改自身,返回的也是自身 Tensor.scatter_(dim, index, src, *, reduceNone) →…...
系统思考—问题分析
爱因斯坦说过:“如果我有1小时拯救世界,我会花55分钟去确认问题为何,只用5分钟寻找解决方案。” 这个看似简单的道理,却蕴藏着解决复杂问题的智慧。真正的问题,往往隐藏在现象的背后。解决问题的关键,不在…...
【C】编译与链接
在本文章里面,我们讲会讲解C语言程序是如何从我们写的代码一步步变成计算机可以执行的二进制指令,并最终执行的。C语言程序运行主要包括两大步骤 -- 编译和链接,接下来我们就来一一讲解。 目录 1 翻译环境和运行环境 2 翻译环境 1&#…...
如何用Python编程实现自动整理XML发票文件
传统手工整理发票耗时费力且易出错,而 XML 格式发票因其结构化、标准化的特点,为实现发票的自动化整理与保存提供了可能。本文将详细探讨用python来编程实现对 XML 格式的发票进行自动整理。 一、XML 格式发票的特点 结构化数据:XML 格式发票…...
深入探索OceanBase分布式数据库理论:开启数据管理新篇章
《深入探索OceanBase分布式数据库理论:开启数据管理新篇章》 在当今数字化转型风起云涌的时代,数据已然成为企业最为宝贵的资产之一。随着数据量呈爆炸式增长、业务场景愈发复杂多元,传统的集中式数据库在应对高并发、海量数据存储与处理时逐…...
如何用VS调试不属于解决方案的EXE和DLL程序-使用PDB和EXE文件-根据exe|pdb|源码文件进行调试分析
文章目录 1.问题2.基本点3.方法步骤3.1.新建一个空的解决方案3.2.构建源码项目3.3.添加pdb文件目录3.4.调试目标exe 4.源码断点 1.问题 如果你手里有一个现成的EXE, 以及EXE相关联PDB文件, 还有相关联的CPP文件和H文件. 你如何用VS调试? (当然你可以选择WinDbg.不过这里就讨论…...
2. CSS的元素显示模式
2.1什么是元素显示模式 作用:网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的额特点可以更好的布局我们的网页。 元素显示模式就是元素(标签)以什么方式进行显示,比如<div>自己占一行…...
marktext 开源markdown安装
https://github.com/marktext/marktext 该 markdown 的免费安装, 在mac os 上 安装时, 出现无法安装的情况 使用如下的命令可以, 可以进行使用 https://github.com/marktext/marktext/issues/2983 This isn’t the recommended command si…...
/src/utils/request.ts:axios 请求封装,适用于需要统一处理请求和响应的场景
文章目录 数据结构解释1. 核心功能2. 代码结构分析请求拦截器响应拦截器 3. 改进建议4. 总结 console.log(Intercepted Response:, JSON.stringify(response));{"data": {"code": 0,"msg": "成功","data": {"id":…...
蓝桥杯 第十五届 研究生组 B题 召唤数学精灵
问题描述: 数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式 A(n) 和累乘法仪式 B(n)。累加法仪式 A(n) 是将从 1 到 n 的所有数字进行累加求和,即:A(n)12⋯n累乘法仪式 B(n) 则是将从 1 到 n 的所…...
四种编译方式(make、cmake、configure、autogen.sh)
文章目录 一、make特征编译步骤(make)样例编译二、cmake特征编译步骤(cmake --> make)样例编译三、configure特征编译步骤(./configure --> make)样例编译四、autogen.sh特征编译步骤(./autogen.sh --> ./configure --> make)样例编译总结一、make 特征 …...
Cursor 实战技巧:好用的提示词插件Cursor Rules
你好啊,见字如面。感谢阅读,期待我们下一次的相遇。 最近在小红书发现了有人分享这款Cursor提示词的插件,下面给各位分享下使用教程。简单来说Cursor Rules就是可以为每一个我们自己的项目去配置一个系统级别的提示词,这样在我们…...
mysql事务及隔离机制
mysql总结 mysql事务特性: 原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability) 并发访问数据库造成的问题: 脏读:读到…...
《护网行动与数字时代:如何应对日益复杂的网络威胁?》
什么是护网 1.什么是护网行动 护网行动是由公安部牵头组织的网络安全攻防演练活动,旨在评估和提升企事业单位的网络安全防护能力。 具体来说,护网行动通过模拟真实的网络攻击场景,组织攻防双方进行对抗演练,以检测企事业单位网…...