Flink的流处理和人工智能:将人工智能融入流处理

这篇具有很好参考价值的文章主要介绍了Flink的流处理和人工智能:将人工智能融入流处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:禅与计算机程序设计艺术

Flink的流处理和人工智能:将人工智能融入流处理

作为一位人工智能专家,程序员和软件架构师,我深知流处理的重要性和价值。流处理是一种高并行、高可扩展性的数据处理方式,能够大大提高数据处理的速度和效率。同时,结合人工智能技术,可以进一步提高流处理的智能和自适应能力。在本文中,我将向大家介绍如何将人工智能融入流处理,以及如何使用 Flink 实现高效的流处理和人工智能应用。

  1. 技术原理及概念

2.1 基本概念解释

流处理是一种并行数据处理方式,其目的是处理大量数据,以实现快速和高效的数据处理。流处理系统由多个组件组成,包括数据源、数据传输、数据处理和数据存储等。流处理系统中的各个组件通常是并行运行的,从而实现高并行的数据处理。流处理还可以用于实时数据处理,例如实时监控和实时分析等场景。

2.2 技术原理介绍

流处理技术的核心在于并行数据处理,通过将数据处理任务分配给多个处理单元并行执行,可以大大提高数据处理的速度和效率。同时,通过使用适当的算法和技术,可以进一步提高流处理的智能和自适应能力。例如,使用机器学习算法可以对数据进行分类、预测和分析等任务,从而实现更加智能化的流处理。

2.3 相关技术比较

流处理技术是一个比较广泛的概念,包括多种不同的技术,例如基于事件的流处理、基于主题的流处理和基于批次的流处理等。这些技术之间的主要区别在于数据处理方式和算法技术的不同。例如,基于事件的流处理通常采用事件驱动的方式,以实现对数据事件的实时处理;而基于主题的流处理则通常采用主题化的方式,以实现对数据主题的深入分析。基于批次的流处理则通常采用批量化的方式,以实现对数据批次的支持。

  1. 实现步骤与流程

3.1 准备工作

在实现流处理和人工智能应用之前,需要进行充分的准备工作。首先,需要安装 Flink 开发环境,并设置环境变量和依赖关系。然后,需要熟悉 Flink 的基本概念和 API,以便能够实现流处理和人工智能应用。此外,需要了解常见的流处理技术和算法,以便能够选择合适的流处理方式和技术。

3.2 核心模块实现

实现流处理和人工智能应用的关键在于核心模块的实现。核心模块通常包括数据源、数据传输、数据处理和数据存储等模块。例如,可以使用 Kafka、ZeroMQ 和 Flink 自带的数据源,实现数据传输。使用机器学习和深度学习算法,实现数据分析和预测。最后,将处理结果存储到数据存储系统中,以实现流处理和人工智能应用。

3.3 集成与测试

在实现流处理和人工智能应用之后,需要进行集成和测试,以确保系统的稳定性和可靠性。首先,需要进行单元测试,以验证核心模块的正确性。然后,进行集成测试,以验证系统的流处理和人工智能应用能力。最后,进行压力测试,以验证系统的性能和可靠性。

  1. 应用示例与代码实现讲解

4.1 应用场景介绍

本章节将介绍如何使用 Flink 实现一个简单的流处理和人工智能应用。该应用主要用于对用户数据进行分析和预测,以提供个性化的推荐服务。


# 应用程序

import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.api.environment.FlinkEnvironment;
import org.apache.flink.stream.api.datastream.DataStream;
import org.apache.flink.stream.api.environment.StreamExecutionEnvironment;
import org.apache.flink.stream.connectors.Kafka;
import org.apache.flink.stream.util.serialization.JSONKeyValueDeserializer;
import org.apache.flink.stream.util.serialization.JSONValueDeserializer;
import org.apache.flink.stream.util.serialization.StringDeserializer;
import org.apache.flink.stream.util.serialization.StringSerializer;
import org.apache.flink.stream.api.datastream.DataStream;
import org.apache.flink.stream.api.environment.FlinkExecutionEnvironment;
import org.apache.flink.stream.api.environment.StreamExecutionEnvironment;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;
import org.apache.flink.stream.api.operators.source.SourceOperator;





5. 应用示例与代码实现讲解
-------------

本节将向您介绍如何使用 Flink 实现一个简单的流处理和人工智能应用。该应用主要用于对用户数据进行分析和预测,以提供个性化的推荐服务。

import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.api.environment.FlinkEnvironment; import org.apache.flink.stream.api.environment.StreamExecutionEnvironment; import org.apache.flink.stream.api.functions.source.SourceFunction; import org.apache.flink.stream.api.functions.source.SourceFunction; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator; import org.apache.flink.stream.api.operators.source.SourceOperator;

public class FlinkStreamExample {

public static void main(String[] args) throws Exception {

    // 创建 Flink 环境
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

    // 创建数据源
    SimpleStringSchema<String> inputSchema = new SimpleStringSchema<>();
    inputSchema.get() = "input";

    // 创建数据流
    DataSet<String> input = env.createDataSet<String>("input");

    // 定义源函数
    SourceFunction<String> sourceFunction = new SourceFunction<String>() {
        @Override
        public Iterator<String> map(String value) throws Exception {
            // 在此处定义数据处理的逻辑
            return input.map("message");
        }
    };

    // 创建源
    Source<String> source = env.createSource(sourceFunction);

    // 定义数据处理的步骤
    DataStream<String> dataStream = source.mapValues("value")
           .map(value -> value.split(","))
           .map(value -> value[0])
           .mapValues(value -> value.substring(1));

    // 定义数据处理的逻辑
    dataStream.print();

    // 定义数据流的目标
    // 在此处定义数据的目标,例如:
    // env.add(dataStream, "output");

    // 执行作业
    env.execute("流处理和人工智能示例");
}

}文章来源地址https://www.toymoban.com/news/detail-616666.html


## 结论与展望
---------------

### 5.1 技术总结

本篇博客介绍了如何使用 Flink 实现一个简单的流处理和人工智能应用。该应用主要用于对用户数据进行分析和预测,以提供个性化的推荐服务。我们使用了一个简单的数据源,并定义了一个源函数,用于定义数据处理的逻辑。然后,我们创建了一个数据流,用于将数据流转换为数据集。接着,我们定义了数据处理的步骤,并在数据流上执行一个简单的打印操作。最后,我们创建了一个数据流的目标,并定义了数据流执行的作业。

### 5.2 未来发展趋势与挑战

未来,流处理和人工智能技术将继续发展。挑战在于如何使用这些技术来解决现实世界中的实际问题,并实现更好的性能和可扩展性。另一个挑战是如何处理大规模数据,以实现流处理和人工智能的应用。

到了这里,关于Flink的流处理和人工智能:将人工智能融入流处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能安全-3-噪声数据处理

    噪声相关概述 噪声处理的理论与方法 基于数据清洗的噪声过滤 主动式过滤 噪声鲁棒模型 噪声是影响机器学习算法有效性的重要因素之一,由于实际数据集存在采集误差、主观标注以及被恶意投毒等许多因素,使得所构造的数据集中难免存在噪声。 在机器学习训练数据中,

    2024年02月08日
    浏览(39)
  • 人工智能安全-2-非平衡数据处理

    现象与原因 非平衡数据处理方法概览 数据预处理层面 特征层 算法层面 非平衡数据分类问题 :在网络信息安全问题中,诸如 恶意软件检测、SQL注入、不良信息检测等 许多问题都可以归结为机器学习分类问题。这类机器学习应用问题中,普遍存在非平衡数据的现象。 产生的

    2024年02月14日
    浏览(32)
  • 解密人工智能:如何模仿人类大脑处理信息

    人工智能(Artificial Intelligence,AI)是一门研究如何让计算机模拟人类智能的学科。人类智能包括学习、理解语言、推理、认知、计划、视觉、语音等多种能力。人工智能的目标是让计算机具备这些能力,并且能够与人类相互作用。 人工智能的研究历史可以追溯到1950年代,当时

    2024年02月22日
    浏览(56)
  • 人工智能 | 自然语言处理的发展历程

    ===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 随着深度学习和大数据技术的进步,自然语言处理取得了显著的进步。人们正在研究如何使计算机更好地理解和生成人类语言,以

    2024年01月20日
    浏览(70)
  • 人工智能在图像处理领域的应用

    随着科技的不断发展,人工智能(AI)逐渐成为当今社会的热点话题。人工智能正在逐渐渗透到人类生活的各个领域,改变着我们的生活方式和社会结构。在图像处理领域,人工智能的应用也越来越广泛,为图像处理带来了更高效、更准确的解决方案。本文将从图像分类、图

    2024年02月04日
    浏览(40)
  • 人工智能安全-2-非平衡数据处理(1)

    现象与原因 非平衡数据处理方法概览 数据预处理层面 特征层 算法层面 非平衡数据分类问题 :在网络信息安全问题中,诸如 恶意软件检测、SQL注入、不良信息检测等 许多问题都可以归结为机器学习分类问题。这类机器学习应用问题中,普遍存在非平衡数据的现象。 产生的

    2024年02月06日
    浏览(37)
  • 人工智能与自然语言处理:实现和发展

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着科学技术的飞速发展,人工智能作为一项新兴技术,得到了广泛的关注和应用。自然语言处理(Natural Language Processing, NLP)作为人工智能领域的重要组成部分,其主要研究目标是让计算机理解和处理自然语言。通过NLP技术

    2024年02月07日
    浏览(47)
  • 智能文档处理:利用人工智能技术提高文档处理效率 | What is Intelligent Document Processing?

    What does intelligent document processing mean? All-encompassing explanation of the technology.  智能文档处理是什么意思?对技术的全面解释。 Comparison of IDP solutions with other tools for document processing.  IDP 解决方案与其他文档处理工具的比较。 Common IDP use cases and tips on how to choose the best IDP software. 常

    2024年02月07日
    浏览(38)
  • 阶段五:深度学习和人工智能(学习人工智能的应用领域,如自然语言处理,计算机视觉等)

    Python是人工智能领域最流行的编程语言之一,它具有简单易学、功能强大、库丰富等优点,因此在自然语言处理、计算机视觉等领域得到了广泛应用。 自然语言处理 自然语言处理是人工智能领域的一个重要分支,它主要研究如何让计算机理解和处理人类语言。Python在自然语

    2024年02月04日
    浏览(64)
  • 基于Springboot+百度AI人工智能图像图片智能处理系统设计与实现

    基于Springboot+百度AI人工智能图像图片智能处理系统设计与实现  博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包