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

kafka的备份策略:从备份到恢复

文章目录

  • 一、全量备份
  • 二、增量备份
  • 三、全量恢复
  • 四、增量恢复

前言:Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进行拉数据进行同步,从而保证数据的冗余,防止数据丢失的目的。如图:
在这里插入图片描述
Kafka 数据备份类型:

  • 全量备份
  • 增量备份

全量备份是将整个 Kafka 的数据复制到一个不同的地方。
增量备份是在全量备份后仅仅备份增量的数据。

一、全量备份

# 指定备份的主题
BACKUP_TOPIC=test #指定备份的数据目录
BACKUP_DIR=/tmp/backup #创建备份目录
mkdir -p $BACKUP_DIR #备份主题数据
kafka-console-consumer.sh --bootstrap-server localhost:9092  --topic $BACKUP_TOPIC --from-beginning > $BACKUP_DIR/$BACKUP_TOPIC.txt。

以下是该命令的详细解释:

kafka-console-consumer.sh:这是 Kafka 提供的命令行消费者工具的可执行文件路径。
--bootstrap-server localhost:9092:指定 Kafka 的引导服务器地址和端口,这里是 localhost 的 9092 端口。
--topic $BACKUP_TOPIC:指定要消费的 Kafka 主题,这里是变量 $BACKUP_TOPIC 指定的主题。
--from-beginning:指定从主题的起始位置开始消费消息,而不是从最新的消息开始。
>:这是一个重定向符号,将输出导入到指定的文件中。
$BACKUP_DIR/$BACKUP_TOPIC.txt:指定输出文件的路径和名称,这里是变量 $BACKUP_DIR 指定的目录下创建名为 $BACKUP_TOPIC.txt 的文件。
通过执行这个命令,Kafka 将从指定的主题中读取消息,并将它们写入到指定的文本文件中,从而实现备份的目的。即使用kafka-console-consumer.sh,工具将主题$BACKUP_TOPIC的数据备份到$BACKUP_DIR目录下的$BACKUP_TOPIC.txt文件中。

二、增量备份

增量备份需要借助第三方工具,例如 Kafka 的 MirrorMaker 等实现 。
下面是 MirrorMaker 的用法示例:

# 指定源和目的地址
SOURCE_HOST=localhost:9092
DESTINATION_HOST=backup-host:9092。
# 创建 MirrorMaker 配置文件
cat > /tmp/mirror-maker.properties <<EOF
consumer.bootstrap.servers=$SOURCE_HOST
producer.bootstrap.servers=$DESTINATION_HOST
EOF。
# 运行 MirrorMaker
kafka-run-class.sh kafka.tools.MirrorMaker \--consumer.config /tmp/mirror-maker.properties \
--producer.config /tmp/mirror-maker.properties \
--whitelist $BACKUP_TOPIC。

上述代码中创建一个 MirrorMaker 配置文件将源端的数据同步到目标端–whitelist参数指定备份的主题。

下面介绍Kafka数据恢复

三、全量恢复

# 指定恢复的主题
RESTORE_TOPIC=test 
# 指定备份文件路径
BACKUP_FILE=/tmp/backup/$RESTORE_TOPIC.txt。
# 恢复主题数据
kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic $RESTORE_TOPIC  \
--new-producer \
< $BACKUP_FILE

上述代码将$BACKUP_FILE文件中的数据恢复到$RESTORE_TOPIC主题中。
注意:该脚本也是同步操作,恢复时间较长时建议使用异步操作。

kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic $RESTORE_TOPIC  \
--new-producer  \
--async \
< $BACKUP_FILE。

四、增量恢复

增量恢复需要使用 MirrorMaker 来实现,下面是 MirrorMaker 的用法示例:
# 创建MirrorMaker 配置文件
cat > /tmp/mirror-maker.properties <<EOF
consumer.bootstrap.servers=backup-host:9092producer.bootstrap.servers=localhost:9092 
EOF
# 运行MirrorMaker
kafka-run-class.sh kafka.tools.MirrorMaker \
--consumer.config /tmp/mirror-maker.properties \
--producer.config /tmp/mirror-maker.properties \ 
--whitelist $RESTORE_TOPIC  (或者是*,如: --whitelist “.*”)

上述代码中创建一个 MirrorMaker 配置文件将备份端的数据同步到目标端$RESTORE_TOPIC主题中。
注意:增量恢复会将备份端数据的变化同步到目标端,因此恢复时必须先将备份端数据同步完整。
实例:
consumer.properties文件:

#cat consumer.properties
bootstrap.servers=192.168.3.194:9092
group.id=mirrormaker
auto.offset.reset=earliestproducer.properties文件:
#cat producer.properties
bootstrap.servers=192.168.2.123:9092运行mirror-maker
cat run-mirrormaker.sh
kafka-run-class.sh kafka.tools.MirrorMaker \--consumer.config ./consumer.properties \
--producer.config ./producer.properties \
--offset.commit.interval.ms 5000 --num.streams 2 \
--whitelist "test0428"

参数说明:
–consumer.config 消费者的配置文件(要消费的集群)
–producer.config 指定生产配置文件(要发送到的目标集群)
–whitelist 要同步的topic白名单,可以匹配正则,也可以指定具体topic
–offset.commit.interval.ms 消费端提交offset时间间隔
–num.streams MirrorMaker 要创建多少个 KafkaConsumer 实例

运行后会提示:
WARNING: The default partition assignment strategy of the mirror maker will change from ‘range’ to ‘roundrobin’ in an upcoming release (so that better load balancing can be achieved). If you prefer to make this switch in advance of that release add the following to the corresponding config: ‘partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor’
主要是说MirrorMaker使用的消费策略是 Range ,以后可能改成 “轮训策略” ,我们可以手动指定“轮询策略”。

在Consuemr.properties中设置:

partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor

此时我们已经运行成功,直接去查看是否可以消费成功即可。
注意:同步前最后将目标集群的Topic创建好,否则会使用Broker默认配置。
使用一个脚本来做备份和恢复:
简单的脚本,用于备份和恢复kafka数据:

#!/bin/bash
function backup_topic() {local topic=$1local backup_dir=$2echo "Starting backup for topic: $topic"mkdir -p $backup_dirkafka-console-consumer.sh \--bootstrap-server localhost:9092 \--topic $topic \--from-beginning \> $backup_dir/$topic.txtecho "Backup completed for topic: $topic"
}
function restore_topic() {local topic=$1local backup_file=$2echo "Starting restore for topic: $topic"kafka-console-producer.sh \--broker-list localhost:9092 \--topic $topic \--new-producer \< $backup_fileecho "Restore completed for topic: $topic"
}
backup_topic example-topic /tmp/backup
restore_topic example-topic /tmp/backup/example-topic.txt

上述代码中定义了两个函数 backup_topic 和 restore_topic,分别用于备份和恢复 Kafka主题数据。
在这个脚本中备份的主题是 example-topic,备份数据存储的目录是 /tmp/backup。
要恢复数据,请调用 restore_topic 函数,并通过参数指定要恢复的主题和备份文件的路径。在脚本的最后示例恢复了 example-topic 主题的备份数据。

相关文章:

kafka的备份策略:从备份到恢复

文章目录 一、全量备份二、增量备份三、全量恢复四、增量恢复 前言&#xff1a;Kafka的备份的单元是partition&#xff0c;也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互&#xff0c;follow从leader副本进…...

Android着色器SweepGradient渐变圆环,Kotlin

Android着色器SweepGradient渐变圆环&#xff0c;Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.SweepGradient import android…...

SQL 实战:聚合函数高级用法 – 多层分组与动态统计

在数据分析中&#xff0c;聚合函数如 COUNT()、SUM()、AVG()、MAX()、MIN() 等是最常用的工具之一。它们允许我们对大量数据进行汇总和统计。然而&#xff0c;随着业务需求的复杂化&#xff0c;我们常常需要进行更复杂的统计操作&#xff0c;例如多层次的分组统计、动态分组等。…...

从零创建一个 Django 项目

1. 准备环境 在开始之前&#xff0c;确保你的开发环境满足以下要求&#xff1a; 安装了 Python (推荐 3.8 或更高版本)。安装 pip 包管理工具。如果要使用 MySQL 或 PostgreSQL&#xff0c;确保对应的数据库已安装。 创建虚拟环境 在项目目录中创建并激活虚拟环境&#xff…...

Spring Boot 3.4新特性:RestClient和RestTemplate的重大更新详解

本文将深入探讨Spring Boot 3.4版本中关于RestClient和RestTemplate的重要更新。。 1. 背景介绍 在Spring生态系统中&#xff0c;HTTP客户端一直是一个重要的组件。从最早的RestTemplate&#xff0c;到WebClient&#xff0c;再到现在的RestClient&#xff0c;每一次演进都带来…...

ANSYS EMC Plus:谐振腔中的天线

概述 本博客说明了如何使用 EMA3D 和 MHARNESS 模拟工具来模拟腔内天线产生的电场。下面简要概述了完成模拟所需的步骤&#xff0c;视频链接中提供了完整的演示。 步骤1&#xff1a;定义模拟域 准备模拟的第一步是定义模拟域。该域应包含所有需要分析的几何图形。在此演示中…...

lv_ffmpeg学习及播放rtsp

lvgl8.3有ffmpeg支持 FFmpeg support typedef struct {lv_img_t img;lv_timer_t * timer;lv_img_dsc_t imgdsc;bool auto_restart;struct ffmpeg_context_s * ffmpeg_ctx; } lv_ffmpeg_player_t;typedef enum {LV_FFMPEG_PLAYER_CMD_START,LV_FFMPEG_PLAYER_CMD_STOP,LV_FFMP…...

Java前端基础—HTML

Java前端基础—HTML 目录 Java前端基础—HTML1.简介2.基础语法2.1HTML页面固定结构2.2标题标签2.3段落标签2.4换行标签2.5水平线标签2.6文本标签2.7图片标签2.8音频标签2.9视频标签2.10链接标签2.11列表标签2.12表格标签2.13表单标签2.14语义标签 1.简介 1.网页组成&#xff1…...

salesforce 控制 Experience Cloud 站点用户可以看到哪些用户

在 Salesforce 的 Experience Cloud 中&#xff0c;您可以通过多种方式控制站点用户&#xff08;如社区用户&#xff09;之间的可见性。这包括用户之间的信息可见性以及他们可以访问的其他用户数据。以下是几种方法和设置&#xff0c;用于实现对 Experience Cloud 站点用户可见…...

C语言实现尼科彻斯定理

1.题目&#xff1a; 2.分析 【1】怎么输出连续奇数&#xff1a;下面是输出m个连续奇数的代码 #include<stdio.h>int main(){int m,x;scanf("%d",&m);for(int i0;i<m:i){printf("%d",x);xx2;}return 0; } 【2】啥叫尼科彻斯定理&#xff1f;…...

【Ubuntu添加右键wine运行exe程序文件】

【前提】你在Ubuntu中安装了wine 【效果展示】右键在打开方式中显示用wine运行 以bilibli安装包为例&#xff0c;在B站安装包右键选择打开方式 省去了在终端中输入wine命令 【步骤】如何添加右键wine运行exe程序文件 新建一个文本文档 其中填入以下内容 [Desktop Entry]…...

7. Linux网络服务配置全面指南

本章目录&#xff1a; 引言7. 网络服务配置7.1 DNS服务器配置安装BIND配置区域文件创建区域文件测试与重启DNS服务示例图&#xff1a;DNS解析流程 7.2 Web服务器部署&#xff08;Apache/Nginx&#xff09;Apache与Nginx的选择安装Apache示例&#xff1a;部署静态网站安装Nginx配…...

深入探讨 Nginx 性能优化:从基础到高级的最佳实践

目录 引言Nginx 性能优化的意义Nginx 性能优化的主要方向系统层面的优化 4.1 优化操作系统的文件描述符4.2 调整 TCP 参数4.3 使用高效的磁盘 I/O 调度器 Nginx 配置优化 5.1 优化 worker 进程和连接数5.2 使用异步和非阻塞 I/O 模式5.3 配置 Gzip 压缩5.4 开启缓存和缓存控制…...

纯 HTML+CSS+JS 实现一个炫酷的圣诞树动画特效

纯 HTMLCSSJS 实现一个炫酷的圣诞树动画特效 前言 圣诞节快到了&#xff0c;今天给大家带来一个简单但是效果不错的圣诞树动画特效。这个特效完全使用原生 HTML、CSS 和 JavaScript 实现&#xff0c;包含闪烁的星星、随机彩灯等元素&#xff0c;非常适合节日气氛&#xff01;…...

Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)

教程概述 本教程先是幽络源初步教学分析掌阅书籍的网络结构&#xff0c;最后提供完整的爬取源码与使用说明&#xff0c;并展示结果&#xff0c;切记勿将本教程内容肆意非法使用。 原文链接&#xff1a;Python使用requests_html库爬取掌阅书籍&#xff08;附完整源码及使用说明…...

Linux网络——UDP的运用

Linux网络——UDP的运用 文章目录 Linux网络——UDP的运用一、引入二、服务端实现2.1 创建socket套接字2.2 指定网络接口并bind2.3 接收数据并处理2.4 整体代码2.5 IP的绑定的细节 三、用户端实现3.1 创建套接字3.2 指定网络接口3.3 发生数据并接收3.4 绑定问题 四、代码五、UD…...

axios

文章目录 [TOC](文章目录) 一、axios的基本使用axios请求1、引用axios,并发送请求axios发送请求的简化写法2、接受响应数据&#xff0c;并对响应的数据进行处理 三、axios拦截器&#xff08;instance&#xff09;1、请求拦截2、响应拦截 axios拦截器、vue中的路由守卫、servlet…...

MacOS下TestHubo安装配置指南

TestHubo是一款开源免费的测试管理工具&#xff0c; 下面介绍MacOS私有部署的安装与配置。TestHubo 私有部署版本更适合有严格数据安全要求的企业&#xff0c;支持在本地或专属服务器上运行&#xff0c;以实现对数据和系统的完全控制。 1、Mac 服务端安装 Mac安装包下载地址&a…...

vue2/3,Spring Boot以及生产环境跨域解决方案

vue2和vue3跨域解决方案 Vue 2 (基于 Webpack) 的跨域解决方案 1. 创建或编辑 vue.config.js 文件 Vue CLI为Webpack项目提供了简单的代理配置方式。你可以通过创建或编辑项目的根目录下的 vue.config.js 文件来设置开发服务器的代理规则&#xff1a; // vue.config.js mod…...

TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化

相关阅读 TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm1001.2014.3001.5482 时序单元的状态 未映射的时序单元(Unmapped Sequential Cell) 在Design Compiler读取了一个RTL设计后&#xff0c;Design Compiler内置的HDL Compiler工…...

Elasticsearch:analyzer(分析器)

一、概述 可用于将字符串字段转换为单独的术语&#xff1a; 添加到倒排索引中&#xff0c;以便文档可搜索。级查询&#xff08;如 生成搜索词的 match查询&#xff09;使用。 分析器分为内置分析器和自定义的分析器&#xff0c;它们都是由若干个字符过滤器&#xff08;chara…...

蓝桥杯——异或森林

问题描述 在一个神秘的世界中&#xff0c;存在着一个称为"异或森林"的地方。异或森林中的每个树木都拥有独特的力量。肖恩进入了这片森林&#xff0c;他得到了一个任务&#xff1a;找出数组中满足条件的连续子数组&#xff0c;使得连续子数组中所有元素异或运算结果…...

第一个C++程序 - Hello World, 编译与运行

引言 编写并运行你的第一个 C 程序是学习这门语言的第一步。通过这个简单的例子&#xff0c;你将了解如何创建、编译和运行一个基本的 C 程序。本文将详细介绍每个步骤&#xff0c;并确保初学者能够顺利上手。 一、编写 "Hello World" 程序 1. 创建源代码文件 首先…...

学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.PerspectiveCamera透…...

测试 - 4 ( 9000 字详解 )

一&#xff1a;性能测试 1.1 什么是性能测试 性能测试和功能测试虽然都在系统测试阶段进行&#xff0c;但两者有本质区别。功能测试主要关注系统“能否完成特定功能”&#xff0c;例如一辆车是否具备四个轮子、方向盘、挡风玻璃&#xff0c;以及是否能够正常行驶。而性能测试…...

从 Coding (Jenkinsfile) 到 Docker:全流程自动化部署 Spring Boot 实战指南(简化篇)

前言 本文记录使用 Coding (以 Jenkinsfile 为核心) 和 Docker 部署 Springboot 项目的过程&#xff0c;分享设置细节和一些注意问题。 1. 配置服务器环境 在实施此过程前&#xff0c;确保服务器已配置好 Docker、MySQL 和 Redis&#xff0c;可参考下列链接进行操作&#xff1…...

NIPS2014 | GAN: 生成对抗网络

Generative Adversarial Nets 摘要-Abstract引言-Introduction相关工作-Related Work对抗网络-Adversarial Nets理论结果-Theoretical Results实验-Experiments优势和不足-Advantages and disadvantages缺点优点 结论及未来工作-Conclusions and future work研究总结未来研究方…...

WebGPU入门初识

什么是 WebGPU&#xff1f; WebGPU 是一种现代图形 API&#xff0c;旨在取代 WebGL&#xff0c;提供更高性能和更灵活的 GPU 加速能力。它基于 Vulkan、Metal 和 Direct3D 12&#xff0c;为 Web 开发者带来了类似于原生图形 API 的性能和控制力。 与 WebGL 不同&#xff0c;Web…...

Go语言基础语法

文章目录 Go语言基础语法一、引言二、基础语法1、变量声明与作用域1.1、全局变量1.2、局部变量1.3、块作用域 2、基本数据类型3、控制流程3.1、条件语句3.2、循环语句 4、函数5、并发编程 三、使用示例四、并发编程示例五、变量作用域详解六、总结 Go语言基础语法 一、引言 G…...

易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 肝细胞癌&#xff08;hepatocellular carcinoma&#xff0c;HCC&#xff09;早期复发仍然是一个具有挑战性的领域&#xff0c;其中涉及的机制尚未完全被理解。尽管微血管侵犯&#xff08…...

layui动态拼接生成下拉框验证必填项失效问题

利用 jQuery 动态拼接下拉框时&#xff0c;lay-verify"required" 失效了&#xff0c;有以下几种原因。 1. <form></form>标签 加入 layui 类&#xff0c;class"layui-form" 。提交按钮上加自动提交&#xff0c;lay-submit ""; 。需…...

Speckly:基于Speckle文档的RAG智能问答机器人

前言 Speckly 是一个基于 检索增强生成 (RAG) 技术的智能问答机器人&#xff0c;它能像一位经验丰富的工程师&#xff0c;理解你的问题&#xff0c;并从 Speckle 文档中精准地找到答案。更厉害的是&#xff0c;它甚至可以帮你生成代码片段&#xff01;&#x1f680; 本文将详…...

NodeRed使用心得,实现增删改查等

使用场景介绍 在VUE中使用nodeRed实现对节点的 增删改查等功能&#xff0c;且储存成功之后下点击时启动对应流程 安装与配置 1.安装NodeRed npm install -g --unsafe-perm node-red 安装完成后&#xff0c;你可以通过运行以下命令来启动Node-RED node-red-start2. 配置文件 N…...

万物皆有解法(序)

万物皆有解法&#xff08;序&#xff09; 《万物有解》一&#xff1a;解的存在 解&#xff1a;可做解释解答&#xff0c;此文引申为原因。可做解除、解围&#xff0c;此文引申为解法、方法。 先有事物存于世-what&#xff0c;再有原因为何存-why&#xff0c;再有解法如何除去…...

OpenCV相机标定与3D重建(37)计算两幅图像之间单应性矩阵(Homography Matrix)的函数findHomography()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 找到两个平面之间的透视变换。 cv::findHomography 是 OpenCV 库中用于计算两幅图像之间单应性矩阵&#xff08;Homography Matrix&#xff09;的…...

从虚拟到现实:AI与AR/VR技术如何改变体验经济?

引言&#xff1a;体验经济的崛起 在当今消费环境中&#xff0c;产品与服务早已不再是市场竞争的唯一焦点&#xff0c;能够提供深刻感知和独特体验的品牌&#xff0c;往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为&#xff0c;而是通…...

Linux系统之stat命令的基本使用

Linux系统之stat命令的基本使用 一、stat命令 介绍二、stat命令帮助2.1 查询帮助信息2.2 stat命令的帮助解释 三、stat命令的基本使用3.1 查询文件信息3.2 查看文件系统状态3.3 使用格式化输出3.4 以简洁形式打印信息 四、注意事项 一、stat命令 介绍 stat 命令用于显示文件或文…...

c++ 命名空间

目录 目录 目录 namespace的定义 代码演示 先使用全局域&#xff0c;再使用namespace定义出的域 命名空间中可以定义变量/函数/类型等 命名空间可以嵌套 namespace的使用 指定命名空间访问 using将命名空间中某个成员展开 展开命名空间中全部成员 在c中&#xff0c;由…...

【实验记录】动手实现一个简单的神经网络实验(一)

最近上了“神经网络与深度学习”这门课&#xff0c;有一个自己动手实现调整神经网络模型的实验感觉还挺有记录意义&#xff0c;可以帮我巩固之前学习到的理论知识&#xff0c;所以就打算记录一下。 实验大概是使用LeNet&#xff08;卷积神经网络&#xff09;对MINIST数据集做图…...

【2024年最新】BilibiliB站视频动态评论爬虫

废话不多说&#xff0c;直接先放git仓库&#xff1a;GitHub - linyuye/Bilibili_crawler: bilibili爬虫&#xff0c;基于selenium获取oid与cookie&#xff0c;request获取api内容 〇&#xff1a;概念简述 oid&#xff1a;视频/动态的uuid&#xff0c;b站对于发布内容的通用唯…...

清空DNS 缓存

如果遇到修改了host文件&#xff0c;但是IP和域名的映射有问题的情况&#xff0c;可以尝试刷新DNS缓存。 ipconfig/flushdns win建加R建&#xff0c;然后输入cmd&#xff0c;然后回车 然后回车&#xff0c;或者点击确定按钮。 出现如下所示标识清空DNS 缓存成功。...

东土智能交通服务器助力北京市车路云一体化建设

背景及意义 北京高级别自动驾驶示范区自2020年启动建设&#xff0c;至今已经发展建设到3.0阶段&#xff0c;通州区作为3.0阶段扩建的重点区域之一&#xff0c;扩区建设范围共计约175平方公里&#xff0c;涉及18个属地街镇&#xff0c;涵盖580个路口。 作为北京市车路云一体化…...

HarmonyOS NEXT 实战之元服务:静态案例效果---妙语集语

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …...

python基础项目

1.联系人案例 # 导入的模块 from input_util import * import re import csv# 定义一个变量保存文件读取的信息 users {}# 封装读取文件的函数 def reader_file(path_name: str ./python基础/2024-11-15python基础项目/data/a.csv) -> None:try:with open(path_name, enco…...

mysql返回N/A

在写统计图的接口&#xff0c;sql查询一直无数据&#xff0c;给的默认值也没有实现&#xff1a; SELECTifnull( unit.num, 0 ) riskUnitCount,ifnull( EVENT.num, 0 ) riskEventCount,ifnull( measure.num, 0 ) riskMeasureCount FROMtb_companyLEFT JOIN (SELECTrisk.qyid,co…...

C++---------迭代策略与迭代器

一、迭代策略与迭代器 迭代器的概念 迭代器是一种对象&#xff0c;它提供了一种统一的方式来访问容器&#xff08;如数组、向量、列表等&#xff09;中的元素&#xff0c;而不暴露容器的内部结构。迭代器的行为类似于指针&#xff0c;可以用于遍历容器中的元素、修改元素以及…...

深入解析 Oracle 的聚合函数 ROLLUP

目录 深入解析 Oracle 的聚合函数 ROLLUP一、ROLLUP 函数概述二、ROLLUP 函数语法三、ROLLUP 实例详解&#xff08;一&#xff09;基础分组聚合&#xff08;二&#xff09;引入 ROLLUP 函数&#xff08;三&#xff09;ROLLUP 与 NULL 值&#xff08;四&#xff09;多列复杂分组…...

kipotix4靶机实战

信息收集 1.判断靶机ip 原理&#xff1a;开靶机之前nmap扫一次网段&#xff0c;再开靶机之后扫一次&#xff0c;查看多出来的ip就是靶机ip ip192.168.98.1742.判断端口服务&#xff0c;系统版本 a.确定端口 b.-p指定端口进一步收集 c.信息筛选 1.端口&#xff1a;22,80,139,…...

Java中处理if-else的几种高级方法

前言 在我看来多写几个if-else没啥大不了的&#xff0c;但是就是看起来没啥逼格&#xff0c;领导嫌弃。我根据开发的经历写几个不同的替代方法 一、枚举法替代 我先前写了一篇文章&#xff0c;可以去看看。 通过枚举替换if-else语句的解决方案_枚举代替if else c语言-CSDN博…...

LaTeX 是一种基于标记的排版系统,广泛用于创建高质量的文档,特别是在需要复杂数学公式、表格、文献引用等的场景中

LaTeX 是一种基于标记的排版系统&#xff0c;广泛用于创建高质量的文档&#xff0c;特别是在需要复杂数学公式、表格、文献引用等的场景中。以下是关于 LaTeX 的详细解释&#xff1a; 1. LaTeX 的基本概念 本质&#xff1a;LaTeX 是基于 TeX 的排版系统&#xff0c;提供了更高…...