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

​Flink/Kafka在python中的用处

一、基础概念

1. ​Apache Kafka 是什么?
  • 核心功能:Kafka 是一个分布式流处理平台,主要用于构建实时数据管道和流式应用程序。
  • 核心概念
    • 生产者(Producer)​:向 Kafka 发送数据的程序。
    • 消费者(Consumer)​:从 Kafka 读取数据的程序。
    • 主题(Topic)​:数据流的分类名称(类似数据库中的表)。
    • Broker:Kafka 集群中的单个服务器节点。
  • 用途
    • 实时数据传输(如日志、事件流)。
    • 缓冲数据,解耦生产者和消费者。
    • 支持高吞吐量、低延迟的消息传递。
2. ​Apache Flink 是什么?
  • 核心功能:Flink 是一个分布式流处理和批处理框架,擅长处理无界(实时)和有界(离线)数据流。
  • 核心概念
    • DataStream API:用于处理实时数据流。
    • 窗口(Window)​:将无限数据流切分为有限块进行处理(如统计每分钟的访问量)。
    • 状态(State)​:在流处理中保存中间计算结果。
  • 用途
    • 实时数据分析(如监控、报警)。
    • 复杂事件处理(如检测异常模式)。
    • 流式 ETL(数据清洗、转换)。

二、Kafka + Flink 的协同工作

典型架构:
  1. 数据源 → ​Kafka​(收集和存储数据流)。
  2. Kafka → ​Flink​(实时消费和处理数据)。
  3. Flink → ​数据库/API/存储系统​(输出处理结果)。
优势:
  • 解耦:Kafka 作为中间层,缓冲数据并解耦生产者和消费者。
  • 容错:Kafka 持久化数据,Flink 支持故障恢复。
  • 高吞吐:两者均支持分布式处理,适合大数据场景。

三、Python 中的使用场景

虽然 Kafka 和 Flink 的原生 API 主要基于 Java/Scala,但 Python 可以通过以下方式使用它们:


1. ​Python 与 Kafka
  • 用途

    • 用 Python 编写生产者或消费者,与 Kafka 交互。
    • 适用于轻量级数据处理或与其他 Python 生态工具(如 Pandas、TensorFlow)集成。
  • 工具库

    • confluent-kafka:官方推荐的 Python 客户端库。
    • kafka-python:另一个常用库(功能稍少,但简单)。
  • 示例:Python 生产者

    from confluent_kafka import Producerproducer = Producer({'bootstrap.servers': 'localhost:9092'})def send_message(topic, message):producer.produce(topic, message)producer.flush()send_message('my_topic', 'Hello Kafka from Python!')
  • 示例:Python 消费者

    from confluent_kafka import Consumerconsumer = Consumer({'bootstrap.servers': 'localhost:9092','group.id': 'my-group'
    })
    consumer.subscribe(['my_topic'])while True:msg = consumer.poll(1.0)if msg is not None:print(f'Received: {msg.value()}')

2. ​Python 与 Flink(PyFlink)​
  • 用途

    • 用 Python 编写 Flink 流处理或批处理作业。
    • 适合熟悉 Python 的开发者进行快速原型开发。
  • 工具库

    • PyFlink:Flink 的 Python API(需要 Java 环境支持)。
  • 示例:PyFlink 流处理

    from pyflink.datastream import StreamExecutionEnvironment
    from pyflink.table import StreamTableEnvironment# 创建环境
    env = StreamExecutionEnvironment.get_execution_environment()
    table_env = StreamTableEnvironment.create(env)# 从 Kafka 读取数据
    table_env.execute_sql("""CREATE TABLE kafka_source (message STRING) WITH ('connector' = 'kafka','topic' = 'my_topic','properties.bootstrap.servers' = 'localhost:9092','format' = 'raw')
    """)# 处理数据(例如:统计消息长度)
    result_table = table_env.sql_query("SELECT message, LENGTH(message) FROM kafka_source")# 输出到控制台
    table_env.execute_sql("""CREATE TABLE print_sink (message STRING,length INT) WITH ('connector' = 'print')
    """)result_table.execute_insert("print_sink").wait()

四、典型应用场景

1. ​实时日志分析
  • Kafka 收集服务器日志 → Flink 实时统计错误频率 → Python 发送报警邮件。
2. ​用户行为分析
  • Kafka 接收用户点击事件 → Flink 计算实时点击热力图 → Python 可视化展示。
3. ​物联网(IoT)数据处理
  • Kafka 接收传感器数据 → Flink 检测异常温度 → Python 调用控制 API。

五、注意事项

  1. 性能限制:Python 在流处理中的性能通常不如 Java/Scala,适合轻量级任务。
  2. 环境依赖:PyFlink 需要 Java 环境,且部分高级功能可能受限。
  3. 学习曲线:需熟悉 Kafka/Flink 的核心概念(如分区、容错、状态管理)。

六、总结

  • Kafka:用于可靠地传输和缓冲实时数据。
  • Flink:用于复杂流处理(窗口、聚合、状态管理)。
  • Python:通过 confluent-kafka 和 PyFlink 实现轻量级集成。

如果你需要处理大规模实时数据流,且希望用 Python 快速开发,Kafka + Flink 是一个强大的组合!

相关文章:

​Flink/Kafka在python中的用处

一、基础概念 1. ​Apache Kafka 是什么? ​核心功能:Kafka 是一个分布式流处理平台,主要用于构建实时数据管道和流式应用程序。​核心概念: ​生产者(Producer)​:向 Kafka 发送数据的程序。…...

【Spring Boot 与 Spring Cloud 深度 Mape 之十】体系整合、部署运维与进阶展望

【Spring Boot 与 Spring Cloud 深度 Mape 之十】体系整合、部署运维与进阶展望 #微服务实战 #Docker #Kubernetes #SpringSecurity #OAuth2 #分布式事务 #Seata #ServiceMesh #总结 #SpringCloud #SpringBoot 系列终章:经过前九篇 [【深度 Mape 系列】] 的系统学习…...

轻松理解Python装饰器:从基础到应用

一、为什么需要装饰器 想象一下,你写了很多函数来完成不同的任务,突然有个新需求:在每个函数执行前打印一条“函数开始执行”的消息,执行后打印“函数执行结束”。如果没有装饰器,你就得在每个函数里手动添加这两条打…...

RabbitMQ 技术详解:异步消息通信的核心原理与实践

这里写目录标题 RabbitMQ 技术详解:异步消息通信的核心原理与实践一、RabbitMQ 本质剖析核心架构组件 二、核心功能与应用场景主要作用典型应用场景 三、工作流程深度解析消息传递流程关键协议机制 四、Java 实现示例1. 依赖配置(Maven)2. 消…...

MySQL-- 多表查询的分类,SQL92与SQL99,7种JOIN的实现,SQL99语法的新特性

目录 一,多表查询的分类 角度1:等值连接 vs 非等值连接 角度2:自连接 vs 非自连接 角度3:内连接 vs 外连接 二,SQL92语法实现内连接:见上,略SQL92语法实现外连接:使用 -…...

Selenium文件上传

在 Web 自动化测试中,文件上传是一项常见的任务。不同的网站和前端技术可能导致上传方式有所不同,因此需要采用不同的方法进行处理。 方法 1:使用 send_keys() 直接上传(最常用) 适用场景: 页面中 有标准的 <input type="file"> 标签。 不需要弹出 Wind…...

getID3获取本地或远程视频时长

音频文件也可使用&#xff0c;使用ffmeg安装太复杂了 附ffmpeg方式&#xff1a;centos下安装ffmpeg_yum安装ffmpeg-CSDN博客 使用composer先安装 composer require james-heinrich/getid3 获取本地视频 //获取本地视频$video_path $_SERVER[DOCUMENT_ROOT].$params[video];…...

OpenAI流式解析

OpenAI 流式的代码&#xff1a; 首选一般请使用os.getenv 去读环境变量的内容 注意使用pip install python-dotenv 的安装方法 load_dotenv 是这个库提供的一个函数&#xff0c;用于读取 .env 文件并将其中定义的键值对设置为系统的环境变量。 默认情况下&#xff0c;load_…...

在Trae中设置Python解释器版本

Python 是一种广泛使用的高级编程语言&#xff0c;因其简洁易读的语法和强大的功能而备受欢迎。随着 Python 的不断发展&#xff0c;多个版本相继发布&#xff0c;每个版本都带来了新特性和改进。然而&#xff0c;这也带来了一些问题&#xff0c;比如不同的工程&#xff0c;需要…...

第 6 章:优化动态分配内存的变量_《C++性能优化指南》_notes

优化动态分配内存的变量 第六章核心知识点详解总结第六章 动态内存优化 重点难点梳理 一、多选题&#xff08;每题至少2个正确答案&#xff09;二、设计题答案与详解多选题答案设计题答案示例 第六章核心知识点详解 动态内存分配的开销 知识点&#xff1a;动态内存分配需要调用…...

图像数据增强教程:为目标检测任务准备数据

目录 一、简介 二、代码结构 三、环境要求 四、数据增强类 4.1 调整增强概率和参数 4.2 增强方法参数 五、数据增强主函数 六、主函数 效果展示 完整代码 一、简介 在目标检测任务中&#xff0c;数据增强是一种关键技术&#xff0c;通过对原始图像应用多种变换来增加…...

Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能

Unity中的Gizmos功能是用于在场景视图中绘制辅助图形或图标的工具&#xff0c;帮助开发者在编辑模式下直观调试和可视化游戏对象的位置、范围、方向等信息。 一.定义概述 Gizomsd 概述 Gizoms是Unity提供的一个API&#xff0c;或者叫做一个工具类&#xff0c;包含一系列静态…...

HarmonyOS WebSocket全场景应用开发深度解析

注&#xff1a;适用版本&#xff08;Harmony OS NEXT / 5.0 / API 12 &#xff09; 一、最终效果预览 二、基础代码结构 Entry Component struct ChatApp {State messages: Message[] [] // 所有聊天记录State inputText: string "" // 输入框内容State isCon…...

JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测

JCRQ1河马算法消融实验&#xff01;HO-CNN-LSTM-Attention系列四模型多变量时序预测 目录 JCRQ1河马算法消融实验&#xff01;HO-CNN-LSTM-Attention系列四模型多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于HO-CNN-LSTM-Attention、CNN-LSTM-Attent…...

ubuntu 安装 postgresql

在 Ubuntu 系统中安装 PostgreSQL 的步骤如下&#xff1a; 步骤 1&#xff1a;更新软件包列表 sudo apt update步骤 2&#xff1a;安装 PostgreSQL Ubuntu 默认仓库包含 PostgreSQL&#xff0c;直接安装&#xff1a; sudo apt install postgresql postgresql-contrib -ypost…...

深入实践:基于WebSocket的全球化金融数据实时对接方案。 马来西亚、印度、美国金融数据API

深入实践&#xff1a;基于WebSocket的全球化金融数据实时对接方案 在全球金融市场中&#xff0c;实时数据的高效获取与处理是量化交易、行情监控等场景的核心能力。本文将以技术实践为核心&#xff0c;详细解析如何通过WebSocket技术实现美国、印度、马来西亚等多国金融数据&a…...

深度学习处理时间序列(5)

Keras中的循环层 上面的NumPy简单实现对应一个实际的Keras层—SimpleRNN层。不过&#xff0c;二者有一点小区别&#xff1a;SimpleRNN层能够像其他Keras层一样处理序列批量&#xff0c;而不是像NumPy示例中的那样只能处理单个序列。也就是说&#xff0c;它接收形状为(batch_si…...

Linux: 进程间通信

目录 一 前言 二 进程间通信目的 三 进程间通信方法 四 管道通信 1. 进程如何通信 2.管道概念 2.1匿名管道 2.2 匿名管道对多个进程的控制 2.3 命名管道 2.4 命名管道原理 一 前言 在我们学习进程的时候&#xff0c;我们知道正是因为程序地址空间的存在&#xff…...

为什么idea显示数据库连接成功,但操作数据库时,两边数据不同步

今日份小bug又叕又来了&#xff01; 一、原因分析 1. 未提交的事务 - IDEA 中执行了修改操作但未提交事务 - 其他客户端有未提交的修改 2. 连接隔离级别问题 - 不同连接使用了不同的事务隔离级别 - 读未提交(READ UNCOMMITTED)导致看到未提交数据 3. 多客户端同时操作…...

VMware中新建Ubuntu虚拟机系统,并安装Anaconda

详细介绍 Ubuntu18.04版本的安装Anaconda的安装 Ubuntu20.04版本的安装给出其他参考 安装Ubuntu18.04 新建虚拟机 如果不习惯图文形式的&#xff0c;也可参考该up主的环境安装分享&#xff0c;和我如下记录有些不同&#xff0c;但不影响&#xff0c;大部分均一致。 …...

LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板

LangChain 基础系列之 Prompt 工程详解&#xff1a;从设计原理到实战模板 一、揭开 LangChain 的 “灵魂引擎”&#xff1a;Prompt 的核心作用 在 LangChain 构建的智能应用中&#xff0c;Prompt&#xff08;提示词&#xff09;堪称驱动大模型的 “神经中枢”。这个承载着任务…...

项目如何安装本地tgz包并配置局部registry

一、判断包来源是否正确 1. 检查url curl <registry_url>2. 查看包是否存在 npm view <package_name> --registry<registry_url>二、局部registry配置步骤&#xff1a; 1. 全局配置 如果你希望对所有项目生效&#xff0c;可以将这行配置添加到全局.npmr…...

unity客户端面试高频2(自用)

标题是我 1.构造函数为什么不能为虚函数&#xff1f;析构函数为什么要虚函数&#xff1f;2.C智能指针3.左值和右值完美转发 4.深拷贝与浅拷贝5.malloc VS new 你们知道吗 1.构造函数为什么不能为虚函数&#xff1f;析构函数为什么要虚函数&#xff1f; 构造函数不能定义为虚函…...

【12】Ajax的原理和解析

一、前言 二、什么是Ajax 三、Ajax的基本原理 3.1 发送请求 3.2 解析内容 3.3 渲染网页 3.4 总结 四、Ajax 分析 五、过滤请求-筛选所有Ajax请求 一、前言 当我们在用 requests 抓取页面的时候&#xff0c;得到的结果可能会和在浏览器中看到的不一样&a…...

深度学习在测距模型中的应用

一、单目视觉测距和双目视觉测距简介 1、单目视觉测距 模型&#xff1a;深度估计&#xff08;Depth Estimation&#xff09; 原理&#xff1a;通过深度学习模型&#xff08;如MonoDepth2、MiDaS&#xff09;或传统的计算机视觉方法&#xff08;如单目相机结合物体大小推断&am…...

Python np.vectorize函数介绍

np.vectorize 是 NumPy 提供的一个 用于将标量函数(scalar function)向量化 的工具,使其可以作用于 NumPy 数组,类似于 通用函数(ufunc) 的行为。 1️⃣ np.vectorize 语法 numpy.vectorize(pyfunc, otypes=None, signature=None, excluded=None, cache=False)📌 参数…...

HarmonyOS NEXT状态管理实践

在HarmonyOS NEXT开发中&#xff0c;状态管理是构建高效、响应式应用的核心。本文深入探讨状态管理的最佳实践&#xff0c;结合代码示例与案例分析&#xff0c;帮助开发者掌握这一关键技能。 一、状态管理装饰器的合理使用 HarmonyOS NEXT提供多种状态管理装饰器&#xff0c;…...

广告牌变“高空炸弹“?智能预警终端筑起安全防线!

近年来&#xff0c;随着城市发展步伐加快&#xff0c;广告牌已成为城市形象的重要载体。但与此同时&#xff0c;因设计缺陷、违规搭建、维护缺失等问题导致的广告牌坠落事故频发&#xff0c;给市民生命财产安全带来严重威胁。据不完全统计&#xff0c;我国2000万块户外广告牌中…...

scss预处理器对比css的优点以及基本的使用

本文主要在vue中演示&#xff0c;scss的基本使用。安装命令 npm install sass sass-loader --save-dev 变量 SCSS 支持变量&#xff0c;可将常用的值&#xff08;如颜色、字体大小、间距等&#xff09;定义为变量&#xff0c;方便重复使用和统一修改。 <template><…...

Redis 单线程

Redis 读写是否是单线程&#xff1f; 核心数据操作仍然是单线程 Redis 主要采用 单线程执行命令&#xff0c;这是因为&#xff1a; 避免加锁&#xff1a;如果多个线程并发修改数据&#xff0c;就需要加锁&#xff0c;而 Redis 采用单线程保证操作的原子性&#xff0c;无需加…...

Node.js 下载安装及环境配置教程、卸载删除环境配置超详细步骤(附图文讲解!) 从零基础入门到精通,看完这一篇就够了

Node.js 安装 一、进入官网地址下载安装包 Node.js — Download Node.js 选择对应你系统的Node.js版本&#xff0c;这里我选择的是Windows系统、64位 Tips&#xff1a;如果想下载指定版本&#xff0c;点击【以往的版本】&#xff0c;即可选择自己想要的版本下载 二、安装程序…...

第十五章:Python的Pandas库详解及常见用法

在数据分析领域&#xff0c;Python的Pandas库是一个不可或缺的工具。它提供了高效的数据结构和数据分析工具&#xff0c;使得数据处理变得简单而直观。本文将详细介绍Pandas库的基本功能、常见用法&#xff0c;并通过示例代码演示如何使用Pandas进行数据处理。最后&#xff0c;…...

Windows下VSCode的安装

前言 VSCode的安装看起来平平无奇&#xff0c;但也不是轻轻松松的。笔者将最新的Windows下安装VSCode&#xff0c;以及运行最简单的C程序的过程记录下来&#xff0c;供后续的自己和大家参考。 一、官网下载安装包 Visual Studio Code - Code Editing. Redefined 二、安装 直接…...

PgDog:一个PostgreSQL分布式集群中间件

PgDog 是一个实现了 PostgreSQL 分片、连接池以及负载均衡功能的中间。PgDog 使用 Rust 语言编写&#xff0c;支持跨平台&#xff08;Linux、Mac OS、Windows&#xff09;&#xff0c;具有高性能和高可靠性&#xff0c;可以在不需要修改任何应用程序的前提下实现 PostgreSQL 数…...

基于yolov11的棉花品种分类检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的棉花品种分类检测系统是一种高效、准确的农作物品种识别工具。该系统利用YOLOv11深度学习模型&#xff0c;能够实现对棉花主要品种&#xff0c;包括树棉&#xff08;G. arboreum&#xff09;、海岛棉&#xff08;G. barbadense&#xff09;、草棉&a…...

Web网页内嵌福昕OFD版式办公套件实现在线预览编辑PDF、OFD文档

PDF&#xff0c;即Portable Document Format&#xff0c;用于以一种独立于应用程序、硬件、操作系统的方式共享和查看文档&#xff1b;OFD&#xff0c;即Office Open Document Format for Document&#xff0c;是一种在政府公文和法律文件等领域广泛应用的电子文件格式&#xf…...

UE4学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针

文章目录 一主菜单搭建UI显示主菜单时&#xff0c;暂停游戏&#xff0c;显示鼠标绑定按钮 二 打开主菜单 一主菜单 搭建UI 添加一个MainUi的控件 添加一个返回游戏的按钮和一个退出游戏的按钮 修改一下样式&#xff0c;放中间 显示主菜单时&#xff0c;暂停游戏&#xff0…...

多线程 - 线程安全引入

写一个代码&#xff0c;让主线程创建一个新的线程&#xff0c;由新的线程负责完成一系列的运算&#xff08;比如&#xff1a;1 2 3 ... 1000&#xff09;&#xff0c;再由主线程负责获取到最终结果。 但打印结果为 result 0&#xff0c;略微思考&#xff0c;明白了要让 t 线…...

Angular项目改端口号

在 Angular 项目中修改开发服务器的端口号&#xff08;默认是 4200&#xff09;&#xff0c;可以通过以下几种方式实现&#xff1a; 方法 1&#xff1a;通过 ng serve 命令行参数 直接在运行 ng serve 时指定端口号&#xff1a; ng serve --port 4300效果&#xff1a;开发服务…...

论文内可解释性分析

目录 3 TEPM(Text-Enhanced Prototype Module)3.1 为什么要进行文本增强?(动机)3.2 为什么要使用 Concat(Fv, T) 和 Repeat(T) + Fv?3.3 为什么 Q=F_C,K=V=F_R ?(第一层注意力)3.4 为什么要进行两层注意力?3.5 为什么最终结果会更好?**3.6 面试官可能问的挑战性问题*…...

《C++11:通过thread类编写C++多线程程序》

关于多线程的概念与理解&#xff0c;可以先了解Linux下的底层线程。当对底层线程有了一定程度理解以后&#xff0c;再学习语言级别的多线程编程就轻而易举了。 【Linux】多线程 -&#xff1e; 从线程概念到线程控制 【Linux】多线程 -&#xff1e; 线程互斥与死锁 语言级别的…...

@Resource 与 @Autowired:Spring 中的依赖注入注解大比拼

在 Spring 框架中&#xff0c;依赖注入&#xff08;DI&#xff09;是核心功能之一&#xff0c;它允许开发者将组件之间的依赖关系交给 Spring 容器管理&#xff0c;从而实现解耦和更灵活的代码结构。Resource 和 Autowired 是两种常用的依赖注入注解&#xff0c;它们虽然功能相…...

大模型学习:从零到一实现一个BERT微调

目录 一、准备阶段 1.导入模块 2.指定使用的是GPU还是CPU 3.加载数据集 二、对数据添加词元和分词 1.根据BERT的预训练&#xff0c;我们要将一个句子的句头添加[CLS]句尾添加[SEP] 2.激活BERT词元分析器 3.填充句子为固定长度 代码解释&#xff1a; 三、数据处理 1.…...

Git和GitCode使用(从Git安装到上传项目一条龙)

第一步 菜鸟教程-Git教程 点击上方链接&#xff0c;完成Git的安装&#xff0c;并了解Git 工作流程&#xff0c;知道Git 工作区、暂存区和版本库的区别 第二步 GitCode官方帮助文档-SSH 公钥管理 点击上方链接&#xff0c;完成SSH公钥设置 第三步&#xff08;GitCode的官方引…...

NodeJs之http模块

一、概念&#xff1a; 1、协议&#xff1a;双方必须共同遵从的一组约定。 Hypertext Transfer Protocol&#xff1a;HTTP&#xff0c;超文本传输协议 2、请求&#xff1a; ① 请求报文的组成&#xff1a; 请求行请求头空行请求体 ② 请求行&#xff1a; 请求方法URLHTTP版本…...

【深度学习与实战】2.3、线性回归模型与梯度下降法先导案例--最小二乘法(向量形式求解)

为了求解损失函数 对 的导数&#xff0c;并利用最小二乘法向量形式求解 的值‌ 这是‌线性回归‌的平方误差损失函数&#xff0c;目标是最小化预测值 与真实值 之间的差距。 ‌损失函数‌&#xff1a; 考虑多个样本的情况&#xff0c;损失函数为所有样本的平方误差之和&a…...

在word中使用zotero添加参考文献并附带超链接

一、引言 在写大论文时&#xff0c;为了避免文中引用与文末参考文献频繁对照、修改文中引用顺序/引用文献时手动维护参考文献耗易出错&#xff0c;拟在 word 中使用 zotero 插入参考文献&#xff0c;并为每个参考文献附加超链接&#xff0c;实现交互式阅读。 版本&#xff1a…...

在Linux系统中将html保存为PNG图片

1 前言 之前使用Pyecharts库在Windows系统中生成图表并转换为PNG格式图片&#xff08;传送门&#xff09;&#xff0c;现将代码放于Linux服务器上运行&#xff0c;结果发现错误&#xff0c;生成html文件之后无法保存图片。 2 原理 基于Selenium库的保存方案&#xff0c;其原…...

presto任务优化参数

presto引擎业内通常用它来做即席查询&#xff0c;它基于内存计算效率确实快&#xff0c;不过它自身的任务优化参数比较杂&#xff0c;不同类型的catalog能用的参数不完全一样&#xff0c;在官网上倒是可以看到相关资料&#xff0c;配置文件中写的见https://prestodb.io/docs/cu…...

uniapp + Axios + 小程序封装网络请求

前言 小程序自带的网络请求使用起来比较麻烦&#xff0c;不便于管理&#xff0c;就需要封装网络请求&#xff0c;减少繁琐步骤&#xff0c;封装最终效果&#xff0c;根据类别将网络请求封装在文件中&#xff0c;使用得时候调用文件名名称加文件中得自定义名称&#xff0c;就可…...