自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 为什么hive在处理数据时,有的累加是半累加数据

Hive中的"半累加数据"指部分字段保持静态(如注册时间)、部分字段动态更新(如用户等级)的数据模式。典型场景包括:1)用户维度表(SCD2模型)通过版本记录保留历史;2)订单状态流水表追踪变更轨迹;3)日活跃用户表按分区增量存储。这种模式既满足数据追溯需求,又适应Hive追加写入的特性,通过区分静态/动态字段,在保留历史的同时支持增量更新。

2025-08-24 11:25:17 381

原创 Hive中的join优化

Hive中Join操作的核心优化策略:1)根据数据规模选择合适join方式:小表用MapJoin、大表用ReduceJoin、分桶表用BucketJoin;2)预处理优化:数据过滤、分区修剪、列式存储;3)执行优化:控制join顺序、避免笛卡尔积、统一key类型;4)高级优化:启用CBO、调整shuffle参数、处理数据倾斜。合理组合这些策略可显著提升海量数据关联效率。

2025-08-23 16:27:42 853

原创 大数据仓库分层

大数据仓库分层是一种规范化数据流转的设计方法论,旨在降低系统耦合、提升数据复用性和可维护性。主流架构通常分为五层:ODS(原始数据存储)、DIM(维度数据)、DWD(明细数据)、DWS/DWT(汇总数据)和ADS(应用数据服务)。分层设计通过解耦业务与数据、提升复用性、简化问题定位、优化性能和统一口径等优势,实现数据资产的高效管理。核心在于明确每层职责,如ODS保留原始数据,DWD进行清洗整合,DWS/DWT预计算汇总指标,最终ADS对接业务应用。实践中需避免过度分层,明确粒度标准,并做好数据血缘和生命周期

2025-08-21 09:53:21 780

原创 超详细讲解数仓分层

数据仓库分层是结构化处理数据的关键方法,标准分层包括:ODS(原始数据存储)、DIM(维度定义)、DWD(清洗明细)、DWS(预计算汇总)、DWT(主题整合)和ADS(应用服务)。分层通过解耦业务与数据、管控质量、提升复用性来支持高效分析。各层职责明确:ODS保留原始数据,DWD进行深度清洗,DWS预计算常用指标,DWT整合主题数据,ADS对接业务需求。实施时需遵循"上层依赖下层"原则,确保数据血缘清晰,并结合企业规模灵活调整。实时数仓在标准分层上增加实时接入和计算层,满足即时分析需求。

2025-08-16 16:36:12 1200

原创 深度解析Mysql的开窗函数(易懂版)

SQL开窗函数是一种高级分析工具,能够在保留原始数据行的基础上,对指定范围的行集合进行计算。其核心特点是通过OVER()子句定义计算窗口,支持按列分区、排序和限定行范围。开窗函数可分为三类:排名函数(如ROW_NUMBER()、RANK())、聚合函数(如SUM()、AVG())和分析函数(如LAG()、LEAD())。与GROUP BY不同,开窗函数不合并行,而是为每行附加计算结果,适用于排名、累计计算、移动分析等场景。使用时需注意排序对结果的影响和性能优化,主流数据库均支持该功能。

2025-08-12 17:12:23 1103

原创 Flink Python API 提交 Socket 数据源的 WordCount 作业

摘要:本文详细介绍了使用Flink Python API实现Socket数据源WordCount作业的完整流程。内容包括环境准备(安装Flink、PyFlink)、编写Python代码创建Socket数据源和执行词频统计、启动Flink集群和Socket服务器、提交作业的方法,以及测试和停止服务的步骤。重点说明了Socket数据源的流式特性、动态计数功能以及并行度设置等关键概念,帮助开发者快速掌握Flink Python作业的开发部署全流程。

2025-08-12 16:45:24 441

原创 FlinkSql(详细讲解二)

FlinkSQL进阶内容聚焦流处理核心场景,主要包含四个方面:1.窗口计算(滚动、滑动、会话窗口),解决无界流数据的分段统计问题;2.流表关联(常规、时态、间隔关联),实现不同场景下的多表联合分析;3.函数扩展(内置时间函数和自定义函数开发),满足复杂数据处理需求;4.CDC数据同步,通过MySQLCDC捕获数据库变更实现实时同步。这些功能覆盖了实时数据处理的核心场景,可应用于实时报表、风控等业务。使用时需注意状态管理和性能调优,如窗口并行度、水印延迟等配置。

2025-08-11 17:22:59 1156

原创 FlinkSql(详细讲解一)

FlinkSQL基础教程摘要:本文介绍了FlinkSQL的核心概念与应用方法。FlinkSQL作为流批统一的处理框架,通过SQL语法简化数据处理流程。主要内容包括:1)核心概念:流批统一处理、表与视图、连接器等;2)环境搭建:SQLClient的启动与使用;3)数据类型:基本类型、复杂类型及时间类型的应用;4)表操作:源表/汇表的创建与管理,水印机制处理事件时间;5)基础查询:SELECT语句、聚合操作及结果写入;6)视图与表管理命令。该教程为初学者提供了FlinkSQL的入门指导,为后续学习窗口计算等高级

2025-08-11 17:20:35 1156

原创 所有大数据中会用到的端口号

在大数据生态系统中,各类组件(如分布式存储、计算框架、消息队列等)通过特定端口进行通信、提供服务或暴露管理界面。以下按组件分类,详细列出常用端口号及其用途,并说明注意事项。

2025-08-10 10:17:08 430

原创 如何使用savepoint返回至检查点

摘要:Flink的Savepoint是手动触发的全局状态快照,用于作业恢复和升级。本文详细介绍了在Linux环境下使用Flink命令行工具操作Savepoint的完整流程:首先通过flink savepoint命令创建快照,然后使用flink run -s从指定路径恢复作业,并说明了验证恢复结果的方法。关键注意事项包括路径权限、作业兼容性检查以及Savepoint与自动Checkpoint的区别。该方案确保了流处理作业的平滑迁移和故障恢复,维护数据处理的一致性。

2025-08-10 10:11:24 270

原创 Flink中的检查点机制(Py代码和sql代码实例)

摘要:Flink的检查点机制是实现流处理容错的核心技术,通过定期保存状态快照确保故障恢复。本文详细解析了检查点的工作原理,包括屏障传播机制和全局一致性快照生成过程,并比较了检查点与保存点的区别。通过FlinkSQL和PyFlink代码示例,展示了如何配置检查点间隔、模式等参数,以及在不同编程场景中的应用。特别强调了EXACTLY_ONCE和AT_LEAST_ONCE两种一致性模式的选择考量,以及RocksDB状态后端在生产环境中的优势。文章还提供了检查点配置的最佳实践建议,帮助开发者在可靠性和性能之间取得平

2025-08-10 10:10:21 805

原创 Flink SQL 中的水印机制

摘要:本文详细讲解FlinkSQL中水印机制的应用,通过声明式SQL语法解决事件时间场景下的数据乱序问题。核心内容包括:1)水印定义方式,包括基于有界乱序和单调递增两种策略;2)完整代码示例展示如何为Kafka数据源定义水印并实现10分钟滚动窗口聚合;3)处理迟到数据的两种方法(允许延迟关闭和侧输出);4)关键特性与注意事项,如水印自动传播、时间精度要求等。相比DataStream API,FlinkSQL通过WATERMARK FOR子句简化了水印配置,更适合SQL开发者实现流处理逻辑。

2025-08-10 10:04:36 544

原创 Flink的窗口

Flink窗口机制是处理无限流数据的关键技术,通过将数据流切割为有限数据集实现批处理计算。窗口类型包括时间窗口(基于时间进度)和计数窗口(基于元素数量),按分配方式分为滚动窗口(无重叠)、滑动窗口(有重叠)、会话窗口(基于会话间隔)和全局窗口(需自定义触发器)。窗口生命周期包含创建、数据收集、触发计算和销毁四个阶段。核心组件包括窗口分配器、触发器、窗口函数和可选的驱逐器。针对迟到数据,Flink提供允许迟到的容忍机制和侧输出流处理方案。根据业务场景选择合适窗口类型并配合时间语义,可有效处理流数据并保证计算准

2025-08-08 10:22:27 1147

原创 Flink的时间语义

Flink流处理支持三种时间语义:处理时间(ProcessingTime)基于算子处理时的系统时间,实时性强但不精确;事件时间(EventTime)基于数据产生时间,通过水印机制处理乱序数据,结果精确但配置复杂;摄入时间(IngestionTime)折中方案,基于数据进入Flink的时间自动生成时间戳。事件时间是推荐方案,适用于计费等精确场景,而处理时间适合实时监控,摄入时间用于简单实时处理。新版Flink默认采用事件时间,需通过WatermarkStrategy配置时间戳和水印策略。

2025-08-08 10:02:18 977

原创 Flink的运行模式

Flink运行模式详解:本地模式适合单机开发调试,Standalone模式提供独立集群部署;YARN模式支持三种部署方式(会话/单作业/应用)实现资源隔离;Kubernetes模式适合云原生环境,具备弹性扩缩能力。选择模式需考虑开发调试、独立集群、Hadoop集成或云原生等场景需求,以优化资源利用和执行效率。

2025-08-07 15:30:10 800

原创 阿里云 Flink

阿里云Flink是基于Apache Flink打造的企业级实时计算平台,提供流批一体计算、全托管运维、高性能处理等核心能力。该平台深度集成阿里云生态产品,支持毫秒级延迟数据处理,具备自动容灾和弹性伸缩特性,适用于实时数仓、IoT数据处理等场景。相比自建方案,阿里云Flink降低了技术门槛和运维成本,特别适合需要快速构建实时业务的企业用户。

2025-08-06 12:45:53 453

原创 Apache Flink 的详细介绍

摘要:Apache Flink是一款开源的分布式流处理框架,采用"流优先"的设计理念,统一处理实时流和批处理数据。核心特性包括毫秒级低延迟、Exactly-Once语义、完善的时间语义(事件时间/处理时间)、强大的状态管理和灵活的窗口机制。架构采用主从模式,支持多种部署方式(Standalone/YARN/K8s),提供多层级API(从ProcessFunction到SQL)。Flink拥有丰富的连接器生态,适用于实时ETL、监控告警、欺诈检测等场景,在吞吐量、延迟和一致性方面优于Spa

2025-08-06 12:42:18 726

原创 pyspark中的kafka的读和写案例操作

本文介绍了PySpark操作Kafka进行数据读写的完整实现方案。主要内容包括:1)通过spark-sql-kafka依赖包实现集成;2)分别演示流处理和批处理两种方式读取Kafka数据,涵盖数据转换(二进制转字符串、JSON解析)等关键操作;3)展示流式和批量写入Kafka的实现方法,强调数据格式转换和必要参数配置;4)详细说明关键参数如bootstrap.servers、offset设置、检查点位置等注意事项;5)提供运行环境准备和版本匹配建议。该方案完整覆盖了PySpark与Kafka交互的核心场景和

2025-08-05 10:46:13 514

原创 Apache Spark 的结构化流

ApacheSpark的结构化流(Structured Streaming)是一个基于DataFrame/Dataset API的高级流处理框架,核心思想是将流数据视为"无限表",支持批流统一的处理方式。它提供两种处理模式:默认的微批处理(延迟约100ms-几秒)和实验性的连续处理(毫秒级延迟)。框架包含输入源、处理逻辑和输出接收器三大组件,支持多种数据源和输出模式(Append/Complete/Update)。通过Watermark机制处理延迟数据,利用检查点和预写日志实现精确一次语

2025-08-04 10:28:54 647

原创 Pyspark的register方法自定义udf函数

PySpark中的register方法用于将自定义函数(UDF)注册到SparkSQL中,使其可以在SQL语句中直接调用。该方法通过spark.udf.register()调用,需要指定函数名称、Python函数和返回类型。注册后的UDF支持单参数、多参数和复杂返回类型,并可在SQL和DataFrame API中使用。使用时需注意函数命名冲突、类型匹配、空值处理等问题,且由于涉及Python与JVM的交互,性能低于内置函数。register方法与@udf装饰器可结合使用,为SparkSQL提供灵活的功能扩展

2025-08-02 10:19:30 656

原创 Spark SQL 的 SQL 模式和 DSL模式

摘要:本文介绍了使用SparkSQL实现WordCount功能的两种方法:SQL模式和DSL模式。在SQL模式中,通过注册临时视图并编写SQL语句实现单词拆分、过滤和计数;DSL模式则利用DataFrame API的方法链完成相同功能。两种方法均涉及关键函数split、explode和groupBy的使用。文章对比了两者的特点:SQL模式适合熟悉SQL的用户处理复杂查询,而DSL模式更适合开发者进行程序化数据处理。最后提供了完整的PySpark代码示例,展示了两种实现方式的具体应用和相同输出结果。

2025-07-31 10:39:13 878

原创 Spark SQL 的详细介绍

SparkSQL是Apache Spark生态中处理结构化数据的核心模块,结合SQL查询与分布式计算能力,支持PB级数据处理。核心组件包括DataFrame(类似数据库表)、Dataset(类型安全扩展)和SparkSession(统一入口)。提供SQL支持、多数据源接入(JSON/Parquet/CSV等)、Catalyst优化器和Tungsten引擎等性能优化功能,并与Hive深度集成。相比传统SQL工具,SparkSQL具有分布式处理、半结构化数据支持和扩展性强等特点,适用于ETL、机器学习预处理和大

2025-07-31 10:34:44 689

原创 Spark的宽窄依赖

摘要:PySpark中RDD依赖关系分为窄依赖(NarrowDependency)和宽依赖(WideDependency),核心区别在于子RDD分区对父RDD分区的依赖范围及是否触发Shuffle。窄依赖(如map、filter)子分区仅依赖少数父分区,无Shuffle,计算高效且容错简单;宽依赖(如groupByKey、repartition)子分区依赖多个父分区,需Shuffle操作,性能开销大且容错成本高。这种差异直接影响Spark的Stage划分、任务调度和性能优化,开发时应优先使用窄依赖并减少不必

2025-07-30 17:18:33 837

原创 Spark的累加器(Accumulator)

摘要:PySpark累加器是用于分布式计算中安全聚合数据的共享变量,支持数值型和集合型内置累加器,也可通过继承AccumulatorV2类实现自定义逻辑。累加器具有单向通信、分布式安全、惰性执行和容错性等特点,适用于计数、求和等聚合操作。使用时需注意不要在转换操作中读取值,更新可能重复执行等问题。合理使用累加器能有效简化分布式状态聚合,提升代码效率。内置累加器包括数值型和集合型,自定义累加器则能扩展功能满足特定需求。

2025-07-30 17:14:57 547

原创 spark的broadcast variables

摘要:Spark广播变量(Broadcast Variables)是一种高效的共享变量机制,用于在集群节点间分发大型只读数据集,避免重复传输。其核心特性包括只读性、节点级缓存和P2P分发协议,适用于查找表、模型参数等场景。使用时需注意数据大小限制(建议<2GB)、序列化效率和只读特性。广播变量通过减少网络传输和内存占用,显著提升Spark任务性能,是优化大数据处理的重要工具。

2025-07-30 11:21:07 492

原创 RDD的checkpoint检查点机制(Checkpoint 与 Persist 的区别)

Spark中的Checkpoint机制通过将RDD数据持久化到可靠存储(如HDFS)来优化长血统RDD的计算效率和容错能力。与persist/cache不同,Checkpoint会切断RDD的血统依赖,直接从持久化文件恢复数据,避免重复计算。使用步骤包括配置存储路径、标记RDD和触发持久化。Checkpoint适用于迭代计算、长时间运行应用和复杂转换链路等场景,能与persist配合使用提升性能。该机制解决了长血统RDD的重计算成本高和依赖管理复杂的问题,是Spark容错体系的关键组成部分。

2025-07-29 16:19:19 612

原创 RDD的persist持久化/缓存机制

Spark RDD的持久化机制通过在内存或磁盘中缓存数据,避免重复计算,显著提升性能。核心要点包括:1)persist()和cache()方法使用,其中cache()是MEMORY_ONLY的简写;2)多级存储策略(MEMORY/DISK_ONLY/SER等),根据数据量和需求选择;3)持久化数据由BlockManager管理,支持容错;4)最佳实践建议优先MEMORY_ONLY,大数据量使用序列化,及时清理无用数据。合理使用持久化能有效优化Spark作业性能,特别适用于迭代计算和交互式查询场景。

2025-07-29 16:16:36 718

原创 kafka的消费者负载均衡机制

Kafka消费者负载均衡机制通过分区分配策略(Range、RoundRobin、Sticky)和再平衡机制实现高效消息消费。消费者组内每个分区仅由一个消费者消费,通过再平衡动态调整分配关系。三种策略各有特点:Range按主题分配简单但不均衡,RoundRobin跨主题均衡但要求订阅相同,Sticky则在保证均衡的同时减少分区迁移。再平衡会短暂中断消费,可通过优化心跳参数和使用Sticky策略来减少影响。合理配置消费者组和分配策略能最大化Kafka的并行消费能力,确保高吞吐和低延迟。

2025-07-26 11:20:15 1106

原创 kafka中生产者的数据分发策略

Kafka生产者数据分发策略决定了消息如何分配到主题分区。Python中通过kafka-python库实现,默认策略为:带Key的消息通过hash(key)%分区数确定分区(保证顺序性),不带Key则轮询分配。开发者可自定义分区器,如按业务字段分区。关键参数包括partitioner、linger_ms等,建议根据业务需求选择策略:顺序性要求高则使用固定Key,负载均衡优先则不指定Key。合理选择分发策略能优化Kafka性能,满足不同场景需求。

2025-07-26 11:17:27 572

原创 kafka的消息存储机制和查询机制

Kafka通过分区和副本机制实现分布式高可用存储,采用日志分段和稀疏索引优化读写性能。消息以二进制格式存储,支持压缩和定期清理。查询机制基于偏移量,通过索引快速定位消息,消费者采用拉取模式控制消费进度,支持按时间戳查询。这种设计使Kafka实现高吞吐、低延迟和高可靠性,适用于日志收集等场景。核心组件包括主题分区、副本、日志段和索引文件,通过ISR机制保证数据一致性。

2025-07-26 11:10:22 871

原创 kafka如何保证数据不丢失

本文详细介绍了如何通过Python代码示例在Kafka的生产者、集群和消费者三个层面保证数据不丢失。生产者层面通过acks='all'、重试机制和手动确认确保消息可靠发送;集群层面通过多副本、ISR机制和合理配置保证数据高可用;消费者层面通过手动提交偏移量和异常处理确保消息被正确处理后才提交。三个层面协同工作,构建了完整的Kafka数据可靠性保障机制。

2025-07-25 16:51:12 443

原创 大数据领域概念区分

摘要:大数据生态系统包含多种核心组件,按功能可分为:1)基础平台(Hadoop、Spark、Flink)用于批量和实时处理;2)协调服务(ZooKeeper、YARN)管理集群资源;3)存储系统(HDFS、HBase、MongoDB)满足不同数据特性;4)消息队列(Kafka、RabbitMQ)实现数据管道;5)分析工具(MapReduce、Hive、Pig)处理结构化数据;6)搜索与日志(Elasticsearch、Logstash)支持实时检索;7)机器学习框架(MLlib、TensorFlow)支持A

2025-07-24 16:56:28 456

原创 ZooKeeper 是什么?

ZooKeeper是Apache开发的分布式协调服务,为Hadoop生态提供关键支持。它通过树形数据结构(ZNode)实现配置管理、命名服务、分布式锁等功能,采用ZAB协议保证数据强一致性。在Hadoop中,ZooKeeper为HDFS NameNode和YARN ResourceManager提供高可用支持,实现故障检测和自动切换;同时支撑HBase、Kafka等组件的元数据管理和状态协调。作为Hadoop生态的"神经中枢",ZooKeeper解决了分布式环境下的数据一致性、高可用和同

2025-07-24 16:52:47 1059

原创 kafka的shell操作

Kafka常用Shell命令大全:包含主题管理(创建、查看、修改、删除)、生产者/消费者操作、消费组管理、分区操作等核心功能。主要命令包括kafka-topics.sh(主题管理)、kafka-console-producer/consumer.sh(生产消费消息)、kafka-consumer-groups.sh(消费组操作)等。使用时需指定--bootstrap-server参数,Windows系统需将.sh替换为.bat。这些命令支持Kafka集群的日常运维操作,如查看主题详情、重置消费偏移量等。

2025-07-24 16:48:39 558

原创 Kafka的介绍

Kafka是Apache开源的高性能分布式流处理平台,以高吞吐量、高可靠性和强扩展性著称。其核心架构基于分区和多副本机制,支持生产者-消费者模型,能够高效处理实时数据流。Kafka适用于日志收集、消息通信、实时分析等场景,性能远超传统消息队列,但存在一定的学习曲线。使用时需注意分区管理、消息可靠性配置等问题。相比RabbitMQ等产品,Kafka更适合海量数据场景,但复杂度较高。

2025-07-23 10:40:55 753

原创 消息队列MQ

消息队列(MQ)是一种异步通信中间件,用于分布式系统中不同组件间的解耦通信。其核心机制是通过"生产者-队列-消费者"模式实现消息的发送、存储和接收,具有解耦系统组件、异步提升效率、缓冲流量峰值三大核心价值。典型应用包括异步通知、日志收集、秒杀系统等。主流产品如RabbitMQ、Kafka、RocketMQ各具特点,需根据吞吐量、可靠性等需求选择。使用时需注意消息可靠性、顺序性、幂等性等问题,并做好系统监控。消息队列能有效提升系统扩展性和稳定性,但需合理设计和运维。

2025-07-23 10:38:10 946

原创 数据库和数据仓库的区别

数据库与数据仓库核心差异解析:数据库(DB)是支持OLTP事务处理的业务系统,采用ER模型确保实时数据一致性,适用于高并发CRUD操作;数据仓库(DW)面向OLAP分析,通过星型/雪花模型整合多源历史数据,支持复杂查询与决策分析。两者在数据特性(实时/历史)、架构(规范化/反规范化)、处理能力(事务/分析)等方面存在本质区别,通常配合使用形成完整数据处理链路。

2025-07-21 15:49:09 1021

原创 spark on yarn

Spark on YARN 是指将 Spark 应用程序运行在 Hadoop YARN 集群上,借助 YARN 的资源管理和调度能力来管理 Spark 的计算资源。• Spark 应用:包含 Driver 进程和 Executor 进程。◦ ApplicationMaster:为每个 Spark 应用启动,向 ResourceManager 申请资源,协调 Executor 运行。◦ ResourceManager:集群资源(CPU、内存)的总管理者,负责接收应用的资源请求并分配。

2025-07-18 16:10:56 252

原创 PySpark 常用算子详解

PySpark常用算子详解:包含转换算子(如map、filter)和行动算子(如collect、count)。RDD操作涵盖基本转换、集合操作和键值处理;DataFrame支持SQL式操作和窗口函数。注意惰性计算机制和性能优化技巧(如避免collect、合理分区)。掌握这些算子能高效处理大规模数据。

2025-07-15 16:37:33 986

原创 Standalone 与yarn集群

Spark部署模式对比:Standalone vs YARN Standalone和YARN是Spark两种主要部署模式,各有特点。Standalone部署简单,仅需Spark组件,适合测试开发环境,资源分配静态但管理简单。YARN作为Hadoop资源管理器,支持动态资源分配和多租户,适合生产环境,能与HDFS等组件无缝集成,但部署维护较复杂。Standalone启动更快但对大规模集群支持有限,YARN资源利用率更高但存在调度延迟。选择时,简单场景推荐Standalone,复杂生产环境需要资源共享时建议采用

2025-07-15 16:33:40 348

py大数据领域(全套自学资料)

py大数据领域(全套自学资料)

2025-08-12

Snipaste 截图工具 压缩包

Snipaste 截图工具 压缩包

2025-04-19

python飞机大战全套zip文件

【免费】pygame飞机大战(kunkun真爱粉版)包能运行,全套代码以及资源。 关注一下博主后续还有更多

2025-03-17

实施获取鼠标坐标,纯python代码实现

获取鼠标实时坐标脚本+键鼠自动化脚本设计专用

2025-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除