自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理samgr-task_manager赏析及实现(2)

处理MSG_NON/MSG_CON/MSG_SYNC类型的消息。任务执行入口函数,当前函数是线程创建时的运行函数。获取当前线程的私有变量,存储的值是消息队列ID。更新exchange对象所属的服务实例。本文继续对任务管理器的实现进行分析。处理MSG_DIRECT类型的消息。处理MSG_ACK类型的消息。

2025-02-11 13:48:33 211

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理samgr-task_manager赏析及实现(1)

在task_manager部分,主要负责对任务的管理,从消息队列获取消息并处理。在distributedschedule_samgr_lite\samgr\source\task_manager.h中对声明对任务池操作的方法。在distributedschedule_samgr_lite\samgr\source\task_manager.c中对相关方法进行了实现。

2025-02-10 22:20:59 296

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理samgr-service赏析

在service中提供了服务的基本类型和常量。头文件位于distributedschedule_samgr_lite\interfaces\kits\samgr\service.h。该文件主要用于服务开发,提供基本功能,如服务的生命周期功能、继承宏、任务配置等。

2025-02-10 13:52:19 330

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理samgr-message实现分析(2)

接着上文继续分析message中的函数实现。发送消息,本质上是将消息对象放入队列中。

2025-02-09 21:40:21 183

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理samgr-message赏析

OpenHarmony在Samgr的。

2025-02-09 19:01:19 407

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理-samgr:iunknown实现分析

承接上一篇iunknown.h的赏析,本文接着对iunknown.c中的实现进行分析。在分析iunknown的实现之前,先介绍一下关于iunknown的相关背景,便于读者对后续代码的理解。

2025-02-08 21:33:51 902

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理-samgr主要接口思维导图(2)

Samgr模块提供了面向服务体系结构(SOA)的开发框架基础。可以基于Samgr开发框架开发自己的功能。该模块提供了servicefeature和function的基本模型,以及注册和发现。本文分析的接口文件位于。在Samgr的接口分析中,本文按照接口以及头文件的依赖顺序依次分析。这部分主要的接口已经分析完毕,后续将结合代码实现部分进一步解读。鸿蒙应用开发与鸿蒙系统开发哪个更有前景?嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~对于大前端开发来说,转鸿蒙开发究竟是福还是祸?鸿蒙岗位需求突增!

2025-02-08 14:55:53 277

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理-samgr主要接口思维导图(1)

模块提供了面向服务体系结构(SOA)的开发框架基础。可以基于。

2025-02-07 21:35:17 387

原创 【鸿蒙OH实战开发】OpenHarmony POSIX和CMSIS接口适配层解读adapter(2):thread/memory/time

本文针对thread_adapter、memory_adapter、time_adapter部分进行解读,也是samgr/adapter下关于POSIX和CMSIS的最后一部分代码。在adapter部分对POSIX和CMSIS在队列、线程、内存、时间方面进行统一的接口声明,并进行不同环境下的具体实现,保障OpenHarmony移植性。

2025-02-07 20:28:25 373

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理|消息广播功能实例操作详解(一)

本文分析的相关代码实现位于和。在本系列中将对以下数据结构及函数进行详解。struct Consumer:消息的接收者struct Provider:消息的发布者struct Subscriber:消息的订阅管理者struct PubSubInterface:发布和订阅的接口struct PubSubImplement:广播子功能实例BCE_CreateInstance:创建广播子功能实例AddTopic:添加主题信息Subscribe:订阅主题ModifyConsumer:更改主题的消费者。

2025-02-07 13:38:23 267

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理|消息广播服务及其子功能详解

本文相关代码实现位于目录下的和。本文将对以下数据结构及函数进行详解。在broadcast_service.c中Init:注册广播服务GetName:获取广播服务的名称Initialize:广播服务的初始化函数MessageHandle:广播服务的消息处理函数GetTaskConfig:获取广播服务的任务配置在pub_sub_feature.c中Init:初始化全局广播变量GetName:获取功能名称OnInitialize:初始化IDOnStop:停止功能。

2025-02-06 21:29:04 191

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理|同进程及跨进程间通信的数据结构及过程详解

上一篇介绍了鸿蒙业务模型中的三大概念以及简单的注册过程,相信读者已经对鸿蒙的业务逻辑有了一定的了解。简单的来说,就是将多个子功能注册到服务中,再把服务注册到全局系统功能管理器(Samgr)中。这样,一个服务包含零个或多个功能,而功能又绑定了对外接口,然后我们可以向暴露的接口发送消息,等服务执行特定的处理后再将响应消息发送回来。这是最简单最直观的一次交互过程,但是要完成这样的交互,鸿蒙的底层还需要做许多基础工作,比如服务的初始化、功能的初始化、消息传输对象的构建等等。

2025-02-06 14:01:02 406

原创 【鸿蒙OH实战开发】OpenHarmony轻量系统服务管理|鸿蒙业务模型重要概念详解

在针对鸿蒙模块二的源代码分析中,发现它业务逻辑的实现围绕着三大概念展开,分别是服务(Service)、功能(Feature)和功能接口API(Iunknown所以理解并掌握这三个概念对于我们深入学习鸿蒙底层代码的业务逻辑有极大的帮助。下面我将结合前期分析鸿蒙代码的经验,通过图文并茂的方式为读者讲解它们的基类和实例对象以及相应的作用。

2025-01-23 16:19:44 993

原创 【鸿蒙OH实战开发】Configure构建工程配置HarmonyOS编译工具链

Configure是一个用于自动化软件编译和安装的工具,它可以帮助开发者编译和安装源代码,以便生成可执行文件和库文件。在编译和安装软件时,通常需要一系列步骤,例如设置编译选项、检查依赖库、生成配置文件等,Configure可以通过读取软件的源代码,自动化这些步骤,简化软件的编译和安装过程。其原理是根据系统环境和用户设置来生成Makefile文件,Makefile文件是一个包含编译选项和依赖关系的脚本,可以自动化编译和安装软件。

2025-01-23 13:55:59 737

原创 【鸿蒙OH实战开发】Make构建工程配置HarmonyOS编译工具链

Make是一个标准的Unix构建工具,用于自动化编译过程。它可以读取Makefile中的规则和依赖项,并根据这些规则来构建源代码,Make会检查源代码文件的时间戳,以确定哪些文件需要重新编译。Make会自动解决依赖关系并按正确的顺序编译源文件,通过在终端中运行Make命令,Make将根据Makefile中的指令逐步构建代码,生成最终的可执行程序或库文件。Makefile文件是一个文本文件,它定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,以及哪些文件需要重新编译。

2025-01-22 21:53:29 968

原创 【鸿蒙OH实战开发】APP开发之评论回复弹窗开发实践

评论回复模块在图文和视频应用中被广泛使用,包含编辑区域、好友列表、常用表情列表和表情面板(见下图),它允许用户进行输入文字、表情、@好友、选择图片等操作。该模块一般以弹窗的形式展现给用户,通常在图文、视频界面中直接弹出,或者在评论列表上层弹出,本文将从评论列表上层弹出这种相对复杂的场景出发,重点对以下几个方面进行介绍,为开发者提供评论回复弹窗模块开发的最佳实践。弹窗组件的选型以及最终方案的实现软键盘和表情面板切换的适配编辑区域主要细节功能的实现图1效果图模块名称对应图1中序号评论列表1。

2025-01-22 13:43:59 874

原创 【鸿蒙OH实战开发】APP开发之轮播实现图文作品

图文作品播放是一种常见的功能,它的特点是:由多张图片组成一个合集,图片可以自动进行轮播,也可以手动去进行图片切换。自动轮播时,图片下方的进度条缓慢加载至完成状态;手动切换时,图片下方的进度条瞬间切换至已完成状态或未完成状态。由于原生Swiper组件自带的导航点指示器目前只支持数字和圆点的样式,不支持对应的特殊样式,因此需要通过自定义指示器(即进度条)来模拟底部的导航条效果。本文中将通过场景介绍、技术选型和实现方案三个部分来进行介绍。常见的图文作品,可以自动循环播放和手动切换播放合集中的图片。

2025-01-21 21:41:56 683

原创 【鸿蒙OH实战开发】APP开发之高负载场景下线程优先级设置防止中断关键线程

在现代软件开发中,多线程或多进程的并发处理已成为常态。在多线程环境中,不同线程执行的任务可能具有不同的重要性和紧急程度。在高负载情况下,系统资源(如cpu时间)变得非常宝贵,此时如果关键线程(如UI渲染线程)因被其他非关键线程频频打断而得不到足够的资源和执行时间以确保其能够连续且及时地完成任务,则可能会导致画面卡顿、延迟等,影响用户体验。方案斐波那契数列项数计算耗时低Qos等级 QOS_BACKGROUND34726.8毫秒高Qos等级 QOS_USER_INTERACTIVE34。

2025-01-21 14:08:40 778

原创 【鸿蒙OH实战开发】APP开发之使用同层渲染在Web组件上渲染原生组件

在使用Web组件加载H5页面时,经常会有输入框、视频的场景,这些场景在H5中的组件性能体验欠佳。想要更加流畅的体验,必须要将原生组件放到Web组件上。需要高性能,流畅体验。需要使用原生组件功能。原生组件已经实现,复用以减少开发成本。目前要实现在Web组件上使用原生组件有两种方案:方案一:直接使用Stack将组件堆叠到H5页面上。方案二:使用同层渲染,使用Web组件和原生组件交互的方式,将原生组件替代Web组件中部分组件,提升交互体验和性能。

2025-01-20 21:39:54 903

原创 【鸿蒙OH实战开发】APP开发之ArkWeb渲染框架适配方案

视图层方面,可以使用系统提供的同层渲染能力,把部分性能要求比较高的前端组件改成原生实现,以达到更好的体验效果。组件鸿蒙化:针对Web组件,以同层渲染的方式提供替代组件,以提升组件的性能与交互体验。实现中可以使用map容器把embedType和离屏节点的builder函数进行关联,当makeNode执行时,取出embedType对应的builder函数来创建rootNode节点,最后把rootNode节点关联的FrameNode返回,达到离屏节点动态上树、H5渲染出原生组件的效果。)的方式进行调用。

2025-01-20 13:47:31 631

原创 【鸿蒙OH实战开发】APP开发之应用间跳转场景开发实践

在现代应用使用场景中,应用间的跳转已成为提升用户体验的核心功能之一。它使用户能够在不同的应用之间快捷切换,从而轻松完成复杂的任务。无论是从购物应用无缝跳转到支付应用完成交易,还是通过推广链接直接进入应用市场进行版本更新,这些操作都涉及到应用间跳转的需求。系统提供了应用间跳转的统一打开体验,典型场景一步直达,适配各种主流场景的跨应用跳转诉求,更多场景(例如导航等)提供系统面板保障打开结果可信,打开体验便捷、一致。

2025-01-18 21:13:49 945

原创 【鸿蒙OH实战开发】APP性能监控之崩溃监测实践

崩溃(Crash)指的是应用程序在运行过程中突然停止运行或出现错误导致程序无法正常继续执行。用户体验:崩溃会直接影响用户体验,操作程序时突然Crash,可能导致用户不再打开应用、卸载应用。用户留存率:在同质化的市场竞争中,稳定的应用程序能够吸引用户并提高用户留存率,而崩溃率低就意味着应用的稳定。数据安全:崩溃可能造成应用数据丢失,影响数据完整性,比如编辑类的应用场景,减少Crash对用户数据的保护至关重要。HiAppEvent。

2025-01-18 19:20:16 691

原创 【鸿蒙OH实战开发】APP性能监控之CppCrash故障定位

CppCrash是C/C++运行时崩溃,包括空指针异常、数组越界异常、栈溢出异常等。HarmonyOS系统针对这一类故障,基于系统级DFX能力,能够进行检测并生成故障日志,生成在/data/log/faultlog/faultlogger系统目录下,在DevEcoStudio中的Faultlog工具栏也能进行汇总显示。(1)反编译addr2lineLinux下addr2line命令用于将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。

2025-01-17 20:19:17 1057

原创 【鸿蒙OH实战开发】APP性能优化之Grid网格布局性能提升

在实现如下图所示可滚动布局效果时,可能会通过 columnStart/columnEnd 对GridItem设置其占有行列数,实现不规则的布局效果。图1columnStart/columnEnd实现不规则网格布局删除或拖拽等改变GridItem位置使用scrollToIndex滑动到指定GridItem。

2025-01-17 14:49:44 993

原创 【鸿蒙OH实战开发】APP性能优化之瀑布流性能优化

瀑布流是应用开发中相当常见的开发场景。它通过容器自身的布局规则,将元素项目自上而下排列,在整体界面的呈现上,多列参差不齐、不停加载的形式使其内容看着像瀑布一样从上而下倾泻。借助其特点,瀑布流通常被用于展示图片资讯、购物商品、直播视频等多种形式的数据。当瀑布流上下滑动时,由于无限加载的特性,其能展示的数目非常多;大小不一的子元素,也带来了测量绘制的性能消耗。针对瀑布流这种场景进行性能优化,可以在加快渲染速度、提升滑动帧率、降低内存占用等方面,增强应用的运行效率,进而提升用户的操作体验。

2025-01-16 21:42:44 733

原创 【鸿蒙OH实战开发】APP性能优化之长列表加载性能优化

列表是应用开发中最常见的一类开发场景,它可以将杂乱的信息整理成有规律、易于理解和操作的形式,便于用户查找和获取所需要的信息。应用程序中常见的列表场景有新闻列表、购物车列表、各类排行榜等。随着信息数据的累积,特别是一些新闻应用、购物应用、聊天应用,列表数据往往会达到上万条,针对这类大量数据加载的长列表应用,如何对长列表的性能进行优化是非常重要的。一个正确、高性能的长列表应用能明显降低列表渲染时间、提升页面的滑动帧率、降低应用内存占用,大幅提升用户体验。

2025-01-16 17:32:49 811

原创 【鸿蒙OH实战开发】APP性能优化之Web场景性能优化(二)

本文深入探讨了Web页面加载的原理和优化方法,为开发者提供了重要的指导和思路。在当今互联网时代,用户对网页加载速度和体验要求越来越高,因此页面加载优化成为开发者必须重视的一环。通过理解Web页面加载的原理,开发者可以更好地处理页面加载与优化的相关问题,提升应用的整体质量。文中提供了预连接、预下载、预渲染、预取POST、预编译等多种常见的优化方法,指导开发者优化Web页面的加载速度。这些方法可以有效提高应用流畅度、提升用户体验。但是,这几种方法都是基于预处理的方式进行优化的,所以存在一定的优化代价。

2025-01-16 13:56:54 610

原创 【鸿蒙OH实战开发】APP性能优化之Web场景性能优化(一)

ArkWeb(方舟Web)是一个Web组件平台,旨在为应用程序提供展示Web页面内容的功能,并为开发者提供丰富的能力,包括页面加载、页面交互、页面调试等功能。在这个数字化时代,页面显示的速度直接体现了应用的流畅性,影响着用户对应用的印象和体验。快速加载并展示页面不仅可以吸引用户留在应用上,还能减少他们的等待时间和不耐烦情绪,从而提升用户的满意度。Web页面的显示过程可以被分为多个阶段,包括DNS解析、建立连接、发送请求、接收响应、解析HTML、下载资源等步骤。

2025-01-15 21:35:38 940

原创 【鸿蒙OH实战开发】性能优化之主线程耗时操作优化

在应用开发实践中,有效避免主线程执行冗余与易耗时操作是至关重要的策略。此举能有效降低主线程负载,提升UI的响应速度。面对高频回调接口在短时间内密集触发的场景,需要避免接口内的耗时操作,尽量保证主线程不被长时间占用,从而防止阻塞UI渲染,引发界面卡顿或掉帧现象。本文介绍开发过程中常见的冗余操作,常见的高频回调场景以及其他主线程优化思路。开发过程中,在主线程执行一些耗时任务,可能会阻塞UI渲染导致卡顿、掉帧等性能问题。具有如下优化思路正式发布版本避免冗余日志,Trace打点以及没有业务操作的系统回调;

2025-01-15 13:45:11 339

原创 【鸿蒙OH实战开发】性能优化之Swiper高性能开发

在应用开发中,Swiper组件常用于翻页场景,比如:桌面、图库等应用。Swiper组件滑动切换页面时,基于按需加载原则通常会在下一个页面将要显示时才对该页面进行加载和布局绘制。针对复杂页面场景,该过程可能会持续较长时间,导致滑动过程中出现卡顿,对滑动体验造成负面影响,甚至成为整个应用的性能瓶颈。本文主要介绍Swiper性能优化的相关方法。

2025-01-14 21:35:50 648

原创 【鸿蒙OH实战开发】性能优化之组件复用场景与方法详解

组件复用是优化用户界面性能,提升应用流畅度的一种重要手段,通过复用已存在的组件节点而非创建新的节点,从而确保UI线程的流畅性与响应速度。组件复用针对的是自定义组件,只要发生了相同自定义组件销毁和再创建的场景,都可以使用组件复用,例如滑动列表场景,会出现大量重复布局的创建,使用组件复用可以大幅度降低了因频繁创建与销毁组件带来的性能损耗。然而,面对复杂的业务场景或者布局嵌套的场景下,组件复用使用不当,可能会导致复用失效或者性能提升不能最大化。例如列表中存在多种布局形态的列表项,无法直接复用。

2025-01-14 15:12:50 904

原创 【鸿蒙OH实战开发】性能优化之ArkUI动画

动画是应用开发中必不可少的部分,它可以使应用程序更加生动和易于互动,一方面可以提升用户体验、增强视觉吸引力,另一方面可以引导用户操作、提高信息传达效率。应用程序中,页面层级间的转场、点击交互、手势操控都可以添加动画。提升动画感知流畅度:使用合适的动画能力将UX设计视角转换为开发实现视角,并将设计师提供的动效转化为具体的代码实现。这样可以确保应用在实际使用中达到设计的预期效果,提升动画感知流畅度并提供良好的用户体验。提升动画运行流畅度:优化动画资源的加载和释放,避免内存泄漏和资源浪费;

2025-01-13 21:20:13 896

原创 【鸿蒙OH实战开发】性能优化之UI组件优化

图2自定义组件生命周期流程图如上图所示,自定义组件创建完成之后,在build函数执行之前,将先执行aboutToAppear()生命周期回调函数。此时若在该函数中执行耗时操作,将阻塞UI渲染,增加UI主线程负担。因此,应尽量避免在自定义组件的生命周期内执行高耗时操作。对于复杂计算的耗时场景,可以将计算结果进行缓存处理。对于不需要等待结果的高耗时任务,可以采用多线程处理该任务,通过并发的方式避免主线程阻塞。

2025-01-13 14:13:09 624

原创 【鸿蒙OH实战开发】应用架构设计(AOP应用切面编程设计)

切面编程(AOP)是一种通过预编译方式和运行期间动态代理实现程序功能的统一维护的技术。AOP的核心思想是将程序的关注点(concern)分离,通过在程序中插入代码来实现横切关注点(cross-cutting concerns),从而实现对业务逻辑的各个部分进行隔离,降低它们之间的耦合度,提高程序的可维护性和可重用性,同时提高了开发的效率。在AOP中,开发者可以通过定义切面(aspect)来封装横切关注点,而不需要直接修改业务逻辑代码。

2025-01-12 22:09:42 761

原创 【鸿蒙OH实战开发】应用架构设计(应用并发设计)

ArkTS是HarmonyOS APP的开发语言,它在保持TypeScript(简称TS)基本语法风格的基础上,一方面规范强化静态检查提升开发者代码的规范性;另一方面基于TypeScript增强了一些特性提升开发体验和执行效率,尤其是在并发能力上的提升。本文档主要面向HarmonyOS APP的设计人员或开发人员,介绍应用在并行任务方案设计过程中,可能会遇到的典型场景以及对应的推荐设计方案,同时给出了方案的关键点及参考案例。

2025-01-12 20:30:03 740

原创 【鸿蒙OH实战开发】应用架构设计(模块化设计)

应用开发者需要根据自身技术架构选择适合的工程模块化模型,工程模块化模型也不是一成不变的,需要根据业务和技术架构的演进而演进。根据诉求在HAP、HAR和HSP三种类型中进行选择使用。对于具备独立运行和安装的模块只能选择HAP包,并将其作为Feature类型的HAP存在于App中;对于不具备独立特性部分,用户使用频率较少的模块,将其做成HSP按需加载模块存在于App中。对于需要共享的模块,只能采用HAR包,将其通过OHPM仓共享给其他工程使用。

2025-01-10 22:12:06 1023

原创 【鸿蒙OH实战开发】应用架构设计(分层架构设计)

对于需要通过Ability承载的功能,可以设计为 Feature类型的HAP ,而对于不需要通过Ability承载的功能,根据是否需要实现按需加载,可以选择设计为 HAR 模块或者 HSP 模块,编译后对应HAR包或者HSP包。在产品定制层,开发者可以从不同设备对应的应用UX设计和功能两个维度,结合具体的业务场景,选择一次编译生成相同或者不同的HAP(或其组合)。当Entry类型的HAP和Feature类型的HAP被分发并部署到相应的设备时,他们所依赖的HSP也会一同被分发并部署到相应的设备上。

2025-01-10 20:24:46 720

原创 【鸿蒙OH实战开发】设备场景适配——折叠屏体验设计实践

折叠屏形态展开态:折叠屏设备完全展开后的形态。有更大的屏幕尺寸,可充分显示应用内容。折叠态:折叠屏设备折叠后的形态。折叠后屏幕尺寸变小。悬停态:折叠屏设备处于完全展开和折叠的中间状态,可平稳放置。体验设计点折叠屏相对于普通手机有两个明显的特点:可随时折叠展开、展开后屏幕变大。折叠态或悬停态下,屏幕被划分为2个显示区域,一个主要显示屏幕,一个次要显示屏幕。为了能够充分利用折叠屏的特点,提供良好的使用体验,折叠屏UX设计中需考虑如下体验诉求:体验连续。

2025-01-10 13:44:43 704

原创 【鸿蒙OH实战开发】影音娱乐类APP开发——在线短视频流畅切换

为了帮助开发者解决在应用中在线短视频快速切换时容易出现快速切换播放时延过长的问题,将提供对应场景的解决方案。视频播放框架AVPlayer和滑块视图容器Swiper进行短视频滑动轮播切换。绘制组件XComponent的Surface类型动态渲染视频流。

2025-01-09 21:35:28 367

原创 【鸿蒙OH实战开发】新闻阅读类 APP开发——阅读器翻页效果实现

本文档主要面向小说应用的开发人员,指导开发者使用推荐的解决方案快速推进小说类应用的HarmonyOS适配工作。本文档立足于解决伙伴需求,提供了完整的小说类应用HarmonyOS实现方案,实现方案包括阅读器排版渲染、翻页动效实现(覆盖翻页、左右滑动翻页、上下滑动翻页)。本文档包括效果展示、场景说明、场景优化方案介绍等内容,关键能力的接入附带有详细的流程介绍和关键代码示例,力求为开发者的顺利接入提供最大程度的便捷。文字页面实现。

2025-01-09 14:54:42 842

空空如也

空空如也

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

TA关注的人

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