自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【设计模式笔记25】:由状态切换而自动主导行为的「状态模式」

状态模式允许对象在内部状态改变时改变其行为,使对象看起来像是修改了类。该模式通过将状态转换规则封装在状态类中,用多态替代条件判断,解决了传统枚举+switch方式导致的代码重复、违反开闭原则等问题。核心结构包括Context(上下文)、State(状态接口)和ConcreteState(具体状态实现)。以订单状态管理为例,状态模式通过委托状态对象处理业务逻辑,实现状态无感切换,相比传统方式具有更好的扩展性、可维护性和职责分离性,符合开闭原则和单一职责原则。

2026-01-02 08:00:00 2081

原创 并查集篇(2W字长文):一套“开箱即用”的并查集模板带你无脑秒杀一系列图论算法题

摘要 并查集是一种用于处理不相交集合合并与查询的高效数据结构,广泛应用于图论中的连通性问题。本文从图论角度解析并查集原理,将集合元素视为图中的顶点,集合合并对应边的添加操作。并查集支持三种核心功能:合并集合(Union)、查找根节点(Find)和动态维护连通分量数量。文章提供了一个基于HashMap实现的泛型并查集模板,包含路径压缩优化,使操作时间复杂度接近O(1)。该模板可直接应用于算法竞赛中的连通性问题求解,如判断元素连通性、统计连通分量等场景。

2025-08-05 13:01:30 3958

原创 证明:a%b == a&(b-1)

摘要:当b为2的整数次幂时,a%b等价于a&(b-1)。证明基于二进制分析:b-1形成低位掩码,保留a的低n位,而a%b的结果正是a的低n位数值。例如21%16=5,21&15=5,验证了该等式。这种位运算优化在底层编程中被广泛使用,可显著提升计算效率。

2025-07-06 10:42:50 818

原创 深度剖析:基于AOP、自定义注解与设计模式构建高度可定制的分布式锁解决方案

本文提出了一种基于Spring AOP和自定义注解的分布式锁解决方案,通过@MyLock注解实现声明式加锁。该方案采用策略模式封装不同锁获取策略(如快速失败、有限重试等),工厂模式支持多种锁类型(可重入锁、公平锁、读写锁),有效解决了传统分布式锁实现中代码侵入性强、重复代码多、不够灵活等问题。核心设计包括:1)@MyLock注解提供锁名称、等待时间、锁类型等配置项;2)MyLockType枚举定义支持的锁类型;3)MyLockStrategy枚举实现策略模式,处理获取锁失败的不同行为。该方案显著提升了代码可

2025-07-01 11:20:47 1942

原创 【SpringAI篇01】:5分钟教会你使用SpringAI (1.0.0稳定版)

后端开发之:从创建 SpringAI 项目开始,到快速入门实现调用大模型 API 实现对话功能。

2025-06-26 16:39:38 4496 1

原创 SpringBoot:基于注解 @PostConstruct 和 ApplicationRunner 进行初始化的区别

摘要:本文分析了Spring Boot中@PostConstruct和ApplicationRunner在初始化逻辑中的区别。两者都由主线程同步执行,但触发时机不同:@PostConstruct在Bean初始化阶段执行,此时容器未完全就绪;ApplicationRunner在容器启动完成后执行,适合处理复杂业务逻辑。核心区别在于@PostConstruct关注Bean自身完整性,而ApplicationRunner适用于整个应用的启动逻辑。文中还列举了ApplicationRunner的优势,如避免事务失效

2026-01-26 12:43:32 717

原创 【深度剖析】:结合 Spring Bean 的生命周期理解 @PostConstruct 的原理

本文深入解析了Spring开发中常用的@PostConstruct注解。首先指出它是JSR-250规范的一部分,而非Spring原生注解。重点分析了其与构造函数的区别:构造函数执行时依赖注入尚未完成,而@PostConstruct方法执行时所有依赖已就绪。文章详细阐述了Spring Bean的生命周期,说明@PostConstruct在初始化阶段由CommonAnnotationBeanPostProcessor通过反射机制触发执行。最后总结了使用规范,并对比了三种初始化方式的执行顺序和优缺点。理解这些机制

2026-01-26 12:21:42 978

原创 【OS笔记44】:磁盘存储管理

本文系统介绍了磁盘存储系统的核心原理与关键技术。首先阐述了磁盘的物理特性,包括盘面、磁道、柱面和扇区结构,以及I/O操作的三个步骤。其次对比了固定头和移动头磁盘的优缺点,指出后者需要调度算法优化。重点分析了四种磁盘调度算法:FCFS(公平但低效)、SSTF(高效但可能饥饿)、SCAN(电梯算法)和C-SCAN(单向扫描),详细说明其工作原理、移动路线及优缺点。最后总结了I/O系统的关键技术,包括中断、缓冲、SPOOLing和设备分配策略。全文以磁盘为核心,系统梳理了辅助存储器的硬件特性和调度优化方法。

2026-01-14 16:20:13 1079

原创 【OS笔记43】:设备管理 - 设备分配

本文介绍了操作系统中的设备分配机制。在多道程序环境下,设备分配通过四级数据结构(SDT、DCT、COCT、CHCT)记录设备状态,按设备→控制器→通道的顺序进行分配。分配策略包括独占分配(低速设备)、共享分配(高速设备)和虚拟分配(SPOOLing技术)。设备分配需确保三者都可用才能启动I/O操作,兼顾安全性与资源利用率。

2026-01-14 08:45:00 649

原创 【OS笔记42】:设备管理 - 缓冲技术

缓冲技术主要用于解决计算机系统中CPU与I/O设备间的速度不匹配问题。通过设置缓冲区,可以缓解速度差异,提高并行性,减少CPU中断次数。缓冲分为硬件缓冲器(速度快但成本高)和软件缓冲器(管理灵活)两类,常见管理方式包括单缓冲、双缓冲、多缓冲和缓冲池。该技术类似于快递柜工作原理,使CPU和设备能高效协同工作。

2026-01-13 13:43:08 349

原创 【OS笔记41】:设备管理 - 中断技术

摘要: 中断机制解决了CPU与外设速度差异问题,通过暂停当前程序处理突发事件(中断源),再恢复原程序。中断分为外部中断(硬件触发)和内部中断(软件异常)。处理流程包括关中断保护现场、执行服务程序、恢复现场并开中断,关键是通过开关中断确保操作的原子性,支持中断嵌套时允许更高优先级中断打断当前处理。这一机制显著提升了CPU效率,避免轮询等待。

2026-01-13 13:37:52 867

原创 【OS笔记40】:设备管理 - 通道控制方式

摘要: 通道技术是DMA的升级方案,解决了CPU干预多、总线独占等问题。通道作为小型I/O处理器,通过独立执行通道程序实现设备与内存的批量数据传输。分为三类:字节多路通道(分时服务低速设备)、数组选择通道(独占服务高速设备)、数组多路通道(兼顾效率与速度)。典型结构如IBM-370采用多通路设计。通道程序由CPU预存内存,通道自主执行指令。相比DMA,通道进一步降低CPU负担,通过并行控制多设备显著提升I/O效率,仅在启动和结束时需CPU干预。(150字)

2026-01-12 14:55:28 670

原创 【OS笔记39】:设备管理 - 数据传送控制方式

摘要 计算机设备管理的数据传送控制方式经历了三个阶段演变:1) 查询等待方式(CPU不断轮询设备状态,效率低下);2) 中断技术(设备完成操作后主动通知CPU,实现并行工作,但频繁中断仍影响性能);3) DMA方式(设备直接与内存交换数据,CPU仅在开始和结束时干预,适合高速大批量传输)。三种方式在中断频率、CPU干预程度和数据传输效率上存在显著差异,体现了I/O控制技术从完全依赖CPU到逐步解放CPU的发展路径。DMA虽已大幅提升效率,但更先进的通道控制方式能进一步减轻CPU负担。

2026-01-12 14:47:34 627

原创 【OS笔记38】:设备管理 - I/O 设备原理

计算机系统的外设管理是操作系统最复杂的任务之一。设备管理通过设备控制块(DCB)统一记录各类设备信息,实现用户对硬件设备的抽象化操作(如Linux将外设视为特殊文件)。其核心目标是:1)提供统一的设备接口,屏蔽物理细节;2)提升CPU与外设的并行效率;3)采用统一管理方法。关键功能包括设备分配、I/O操作执行、中断处理和缓冲管理,以解决高速CPU与低速外设的速度匹配问题。设备管理与进程管理(PCB)、文件管理(FCB)并列为操作系统三大控制块管理模块。

2026-01-11 16:22:15 862

原创 【OS笔记37】:文件存储空间管理(二)- 链接法与位示图法

本文介绍了三种外存空闲块管理方法:单块链接法通过指针串联空闲块,实现简单但效率低;成组链接法将空闲块分组管理,减少I/O次数;位示图法利用二进制位标记块状态,空间占用小且效率高。对比了文件系统与内存管理的差异,强调磁盘以物理块为管理单元的特性。最后总结了文件系统的基本概念、分类、结构和操作,并建议重点掌握成组链接法和位示图的计算应用。

2026-01-11 09:00:00 612

原创 【OS笔记36】:文件存储空间管理(一)- 空闲区表法

空闲区表法是磁盘空间管理的一种方法,通过建立空闲块登记表来记录连续空闲区域信息。该方法采用类似内存动态分区管理的三种分配算法(最先适应、最佳适应和最差适应),通过起始块号和块数进行空间分配与回收,并支持相邻空闲区合并。其特点是结构简单但易产生外部碎片,适用于连续分配的文件系统。与内存管理不同,外存管理以块为单位操作,反映磁盘的物理特性。该方法是后续学习位示图法等更高效管理方式的基础。

2026-01-10 13:54:24 665

原创 【OS笔记35】:文件系统的使用、实现与管理

本文介绍了文件系统的基本操作与存储管理方法。文件操作部分详细说明了创建、打开、读写、关闭和删除文件的系统调用语法及参数含义,重点解释了文件描述符(fd)的作用。文件存储管理部分对比了内存与外存管理的差异,归纳了空闲块管理的四种常见方法,特别强调了位示图法和UNIX采用的成组链接法。文章还补充说明了文件描述符作为系统资源访问句柄的重要作用,以及打开文件操作与文件控制块(FCB)的关系。这些内容构成了文件系统实现与管理的核心知识框架。

2026-01-10 13:47:55 824

原创 【OS笔记34】:文件系统 - 文件的共享和保护

本文探讨了多用户系统中文件共享与保护的核心问题。在文件共享方面,介绍了互斥共享和同时性共享两种方式,以及公共目录、链接和授权三种实现方法。在文件保护方面,分析了访问控制矩阵、控制表和目录权限等技术手段,并对比了口令和加密两种保密机制。文章指出,共享与保护之间存在矛盾,需要通过访问控制决定权限、保密技术保障安全,二者结合才能实现高效安全的文件管理。

2026-01-07 11:04:27 854

原创 【设计模式笔记28】:复用算法骨架与控制反转的「模板方法模式」

模板方法模式是一种行为设计模式,通过在父类中定义算法骨架(模板方法),将可变步骤延迟到子类实现。该模式遵循"好莱坞原则",由父类控制流程,子类只需实现具体细节。示例展示了数据导入系统中,抽象父类定义读取、解析、校验、保存的流程,而CSV和JSON处理器分别实现具体步骤。校验逻辑作为通用方法复用,钩子方法允许子类控制是否生成日志。这种模式有效避免了代码重复,同时保证了算法结构的稳定性。

2026-01-07 09:00:00 2585

原创 ReentrantLock 的 lock() 和 tryLock() 方法区别

本文对比了ReentrantLock的lock()和tryLock()方法的核心区别:lock()会阻塞线程直到获取锁,无返回值;tryLock()非阻塞,立即返回获取状态。从实现上看,lock()通过AQS队列等待,而tryLock()仅尝试一次CAS操作。使用场景上,lock()适合必须获得锁的情况,tryLock()适合可选锁的高并发环境。注意事项包括:tryLock()必须检查返回值,lock()需配合finally确保解锁。典型应用示例展示了两种方法的不同阻塞特性,总结表格清晰对比了关键差异。简言

2026-01-06 09:30:00 776

原创 【OS笔记32】:文件系统 - 文件的存取方法与目录管理

文件存取方法主要分为顺序存取和随机存取两种。顺序存取严格按记录顺序访问,适用于批量处理但查找效率低;随机存取可直接访问任意记录,适合数据库等场景。存取效率与文件物理结构密切相关:连续结构适合顺序和随机存取,链接结构仅适合顺序存取,索引结构两者均支持。文件目录管理通过文件控制块(FCB)实现,FCB包含文件名、权限、位置等元数据。目录文件本质是FCB的集合,如MS-DOS采用32字节固定大小的目录项结构,包含文件名、属性、位置等关键信息。

2026-01-06 09:00:00 1899

原创 【OS笔记33】:文件系统 - 文件目录的结构

摘要: 文件目录结构从一级目录发展到树型目录,逐步解决了查找效率低、重名冲突和共享困难等问题。一级目录简单但性能差;二级目录通过用户隔离解决重名问题;现代系统采用树型目录,实现层次化管理与权限控制。核心区别在于:一级目录全系统共享单表,二级目录分用户隔离,树型目录支持多级分类与动态扩展。(149字)

2026-01-06 09:00:00 655

原创 【OS笔记30】:文件系统 - 概述

摘要 文件是操作系统中被命名的数据集合,存储在外存设备上,具有类型、长度、位置等属性。文件可按创建者(系统/用户/库文件)、数据形式(源/目标/可执行)、权限(只读/读写)、保存时间(临时/永久)和结构(普通/目录)进行分类。文件系统作为用户与存储设备的接口,实现"按名存取"功能,主要职责包括:组织文件逻辑/物理结构、管理存储空间、提供共享保护机制以及统一操作接口。系统通过文件名+扩展名的命名规则,让用户无需了解物理细节即可操作文件。

2026-01-05 09:00:00 717

原创 【OS笔记31】:文件系统 - 文件的组织结构

本文介绍了文件系统的逻辑结构和物理结构。逻辑结构分为记录式文件(有结构)和流式文件(无结构)。物理结构包括三种主要形式:连续结构(顺序存储,存取快但扩展困难)、链接结构(链式存储,易扩展但访问慢)、索引结构(支持随机访问但占用空间)。重点分析了各结构的优缺点及适用场景,帮助理解文件存储管理的核心原理。

2026-01-05 09:00:00 1622

原创 【OS笔记28】:段式管理-段的共享和保护

摘要 段式管理在共享和保护方面具有优势,通过逻辑划分实现高效共享。段式虚拟存储管理引入扩充段表(含状态位、修改位等),支持动态调入和置换。地址转换流程涉及越界检查、状态判断和缺段中断处理。24位地址中8位段号时,每段最大长度为2^16。

2026-01-04 09:00:00 1770

原创 【OS笔记29】:存储管理-「段页式管理」

本文介绍了段页式存储管理的原理与实现。文章首先分析了分段管理的局限性(外部碎片问题),提出通过结合分段和分页的优点实现段页式管理。详细阐述了段页式的基本思想、地址结构划分方法,以及需要维护的段表和页表数据结构。重点说明了段页式地址变换的三次访存过程,并对比了分页、分段和段页式三种存储管理方式的特性差异。最后指出分段管理是唯一不会产生内部碎片的方式,并简要回顾了存储管理的发展历程和核心知识点。

2026-01-04 09:00:00 683

原创 【设计模式笔记27】:实现版本与备份功能的「备忘录模式」

备忘录模式(Memento Pattern)是一种在不破坏封装性的前提下,捕获对象内部状态并保存的设计模式。该模式通过Originator(发起人)、Memento(备忘录)和Caretaker(管理者)三个核心角色实现状态保存与恢复功能。类比Git的stash操作,Originator负责创建和恢复状态,Memento存储状态数据,Caretaker管理备忘录栈实现多级撤销。代码示例展示了如何使用栈结构保存多个状态版本,支持类似"撤销"的操作。该模式适用于需要状态回滚的场景,如文本编辑

2026-01-03 08:15:00 1452

原创 【OS笔记26】:存储管理-「页面置换算法」

摘要: 页面置换算法是请求分页存储管理中的关键技术,用于处理缺页中断时的内存空间分配问题。常见算法包括理论最优但无法实现的OPT算法、简单但存在Belady现象的FIFO算法、性能接近OPT的LRU算法及其近似算法NUR,以及基于访问频率的LFU算法。其中,LRU算法基于局部性原理,通过记录页面访问时间实现高效置换,而FIFO算法可能出现分配物理块增多却导致缺页率提高的反常现象(Belady现象)。不同算法在实现复杂度、性能表现上各具特点,需根据实际系统需求进行选择。

2026-01-03 08:15:00 691

原创 【OS笔记27】:段式管理

本文介绍了段式存储管理的核心概念与实现机制。段式管理通过将程序按逻辑结构划分为多个可变长度的段,解决了页式管理中一维线性地址空间的局限性。每个段独立分配连续内存空间,通过段表实现逻辑地址到物理地址的动态转换,包含段号合法性检查和段内越界检查。与页式管理相比,段式管理具有逻辑可见性、支持模块化编程和灵活共享等优势,其二维地址空间更符合程序员的思维模式。关键区别在于段是逻辑单位且长度可变,而页是固定大小的物理单位。

2026-01-03 08:15:00 942

原创 【设计模式笔记26】:深入浅出「观察者模式」

本文通过电商系统中商品价格变动通知会员的场景,展示了观察者模式的实现。该模式定义了一对多的依赖关系,当主题对象(商品)状态变化时,自动通知所有观察者(会员)。代码实现分为接口层(IMember、IProduct)、具体实现层(Product、Member)和业务测试层,通过UML类图展示了主题与观察者之间的关系。核心流程包括观察者注册、状态变更触发通知和广播更新。这种设计实现了对象间的松耦合,使得系统能够灵活应对变化。

2026-01-02 11:22:17 1184

原创 【设计模式笔记24】:JDK源码分析-Comparator中的「策略模式」

摘要:JDK中的Arrays.sort()方法通过Comparator接口实现了策略模式,允许运行时动态指定排序策略。Arrays类作为环境角色,Comparator是抽象策略接口,用户可提供具体实现。源码分析展示了TimSort如何调用比较器策略进行排序。示例演示了基本排序(升/降序)、复杂对象排序(年龄/分数/姓名)以及使用Lambda简化策略定义的方式。这种设计实现了算法与对象的解耦,使排序策略可灵活替换而不修改核心代码。

2026-01-01 21:45:34 729

原创 【设计模式笔记23】:长文解析-深刻理解「装饰器模式」

装饰器模式是一种动态扩展对象功能的结构型设计模式。它通过组合而非继承的方式,在不改变现有对象结构的情况下为其添加新功能。模式包含四个关键角色:组件接口(IGoat)、具体组件(XiGoat)、装饰器基类(DecoratedGoat)和具体装饰器(ShieldDecorated等)。装饰器模式能有效避免继承带来的类爆炸问题,通过层层包装形成装饰链,实现功能的灵活组合。相比继承,装饰器模式具有更好的扩展性、灵活性和代码复用性,特别适用于需要动态添加功能的场景,如游戏角色能力增强、Java I/O流处理等。其核心

2026-01-01 21:35:21 1460

原创 【设计模式笔记22】:结构型模式之组合模式

组合模式通过树形结构表示部分-整体关系,使客户端能够统一处理单个对象和组合对象。摘要:组合模式将对象组织成树形结构,解决树形数据的统一处理问题。核心角色包括抽象构件(定义共有接口)、叶子构件(无子节点)和容器构件(存储子节点)。代码示例以文件系统为例,通过递归调用实现目录结构的打印和大小计算。客户端只需操作根节点即可处理整个树形结构,无需区分文件或目录类型。该模式适用于菜单系统、组织架构等具有层次结构的场景。

2025-12-29 08:30:00 462

原创 【设计模式笔记21】:结构型模式之适配器模式

摘要:适配器模式是一种结构型设计模式,用于解决接口不兼容问题。通过创建一个适配器类(如AngleAdapter),将现有类(Adaptee)的方法转换为目标接口(Target)所需的形式,使原本不兼容的类能够协同工作。该模式具有复用性好、透明性和符合开闭原则等优点,适用于系统升级改造、复用现有类库等场景。文中以绘图系统为例,展示了如何通过对象适配器模式将Angle类的DrawAngle()方法适配为Shape接口的Draw()方法,实现不同图形类的统一管理。

2025-12-29 08:15:00 984

原创 【设计模式笔记20】:创建型设计模式对比总结

创建型设计模式概述: 创建型模式专注于对象创建过程的抽象,将对象创建与使用分离,提升代码清晰度和可维护性。遵循单一职责和开闭原则,通过封装创建逻辑降低耦合度。GoF23种模式中包含5种创建型模式:工厂方法、抽象工厂、单例、建造者和原型模式。按处理对象可分为类创建型(如工厂方法)和对象创建型(如抽象工厂)。各模式适用场景不同:单例确保唯一实例,工厂方法处理单一产品扩展,抽象工厂管理产品族,建造者分步构建复杂对象。建议初学者从简单工厂和单例入手,根据实际需求权衡设计复杂度,避免过度设计。

2025-12-24 08:30:00 687

原创 【设计模式笔记19】:建造者模式

建造者模式是一种对象创建型模式,它将复杂对象的构建与表示分离,使同样的构建过程可以创建不同表示。该模式包含四个核心角色:产品角色(被构建的复杂对象)、抽象建造者(定义构建接口)、具体建造者(实现构建逻辑)和指挥者(控制构建流程)。通过逐步构建对象部件并确保构建顺序,建造者模式实现了对象创建过程的精细控制,同时具备良好的扩展性和多态性。其优点包括解耦构建过程、支持多态构建、精细控制产品创建以及符合开闭原则。模式还可通过钩子方法和简化结构(如省略指挥者)进行灵活扩展。

2025-12-23 09:52:30 721

原创 【设计模式笔记18】:并发安全与双重检查锁定的单例模式

本文介绍了如何在保证延迟加载的同时解决单例模式的多线程安全问题。首先分析了普通懒汉式的线程安全问题,随后探讨了同步方法和同步代码块两种解决思路的局限性,最终提出双重检查锁定(DCL)方案。该方案通过两次判空检查和volatile关键字,既实现了线程安全又保证了效率。文章指出在实际开发中,可根据需求选择饿汉式或DCL实现单例模式,其中DCL尤其适用于需要懒加载的多线程环境。

2025-12-23 09:39:11 925

原创 JDK的 RandomAccess 接口作用简析

Java中的RandomAccess是一个标记接口,用于标识支持高效随机访问的集合类。该接口没有任何方法,仅作为标签表明实现类能快速访问索引(O(1)时间复杂度)。主要目的是优化算法性能,帮助工具类(如Collections)选择最优遍历策略。典型实现如ArrayList(数组结构,支持快速随机访问),而LinkedList(链表结构)未实现该接口。开发通用List处理工具时,可通过instanceof RandomAccess判断选择遍历方式,确保性能最优。

2025-12-02 13:29:49 571

原创 二叉树的非递归后序遍历-双栈法

摘要:双栈法实现二叉树后序遍历(左→右→根)通过两个栈的配合完成。第一个栈(s1)模拟变形前序遍历(根→右→左),将节点压入第二个栈(s2),利用栈的反转特性使s2弹出顺序变为后序遍历。算法时间复杂度O(n),空间复杂度O(n),逻辑清晰易实现。示例演示了该方法如何将输入[1,2,3,4,5]转换为后序输出[4,5,2,3,1]。

2025-11-30 22:02:44 635

原创 状态模式与策略模式的快速区分与应用

状态模式与策略模式快速区分指南 核心区别: 策略模式:客户端主动选择算法(手动切换) 状态模式:状态对象自动转换行为(被动切换) 判断方法: 看控制权:策略由外部决定,状态由内部管理 看切换时机:策略在配置阶段切换,状态在运行时自动转换 看意图:策略用于算法选择,状态用于对象行为管理 应用场景: 策略模式:折扣计算、支付方式选择 状态模式:订单状态流转、游戏角色状态 (98字)

2025-11-19 10:35:59 420

空空如也

空空如也

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

TA关注的人

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