自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hshopeful

Sharing changes the world

  • 博客(139)
  • 资源 (41)
  • 收藏
  • 关注

原创 朋友答App技术服务支持

朋友答App有任何使用问题,欢迎留言交流。

2019-07-07 22:46:47 727

原创 go语言获取发送信号的进程pid

背景今天在发布一个程序之前,给qa提测的时候,qa反馈程序运行10几分钟之后,退出了排查过程在程序中加日志,发现程序捕获到了一个SIGTERM信号,然后做了一些退出前的清理工作(在退出之前,该发送的数据还是需要发送的)。然后就需要知道到底是那个进程向我发送SIGTERM信号代码查了一下,貌似go语言没有直接的发送获取向自己发送信号的进程的pid,需要嵌入一段c语言代码,获取到pid之后,为了更直观的

2016-09-18 20:47:37 3296

原创 linux c捕获信号

捕获SIGINT、SIGTERM、SIGQUIT信号;如何确定是哪个进程给自己发送信号

2016-09-18 20:36:19 3857

原创 Linux Barrier IO

IO顺序是一个比较综合的问题,它涉及的层次比较多,从VFS page cache到I/O调度算法,从IO子系统到存储外设。而Linux Barrier IO就是其中重要的一部分。可能很多人认为,在做了文件写操作后,调用fsync就能保证数据可靠地写入磁盘。大多数情况下,确实如此。但是,由于磁盘设备自带缓存的存在,fsync这些同步操作,并不能保证存储设备把数据写入非易失性介质。如果此时

2015-01-18 09:35:34 2252

原创 去掉连续重复的字符

写一个简单的程序,处理一个c字符串,去掉连续重复的字符,原字符串可以不保留,比如abbccdaaae 转换成abcdae。可以分配新的内存,但尽量不要分配过多内存。注意连续重复二字,如果不连续,比如例子中的a。

2014-09-21 20:56:30 2048

原创 简易操作系统任务调度问题

操作系统任务调度问题操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级=50且例如:task[]={0,30,155,1,80,300,170,40,99},system_task[]={0,3,1,7,-1},user_task[]={4,8,2,6,-1}函数接口:void scheduler(int task[], int n, int system_task[],

2014-07-23 11:16:41 1588

原创 身份证号码合法性判断

问题描述: 我国公民的身份证号码特点如下:1、长度为18位;2、第1~17位只能为数字;3、第18位可以是数字或者小写英文字母x。4、身份证号码的第7~14位表示持有人生日的年、月、日信息。例如:511002198808080111或51100219880808011x。 请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校

2014-07-22 21:27:49 12294

原创 将一个字符串的元音字母复制到另一个字符串,并排序

问题描述:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。说明:1、元音字母是a,e,i,o,u,A,E,I,O,U2、筛选出来的元音字母,不需要剔重 最终输出的字符串,小写元音字母排在前面,大写元

2014-07-22 19:28:48 8556

原创 判断5张扑克牌的组成

一副牌中发五张扑克牌给你,让你判断数字的组成:有以下几种情况:1:四条:即四张一样数值的牌(牌均不论花色)2:三条带一对3:三条带两张不相同数值的牌4:两对5:顺子(包括10,J,Q,K,A)6:什么都不是7:只有一对 分析:应该不包含大小王,另外J、Q、K、A分别相当于11、12、13、14,虽然从2到A一共是13张牌,但是为了方便对应,使用了一个包含15

2014-07-22 10:43:13 8624

原创 约瑟夫环的变形

问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序。比如:输入的随机数列为:3,1,2,4,初始计数值

2014-07-21 11:43:39 2070

原创 简单四则运算

问题描述: 输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注:1、表达式只含 +, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一

2014-07-20 21:40:17 5797

原创 判断手机号码合法性

问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、长度13位;2、以86的国家码打头;3、手机号码的每一位都是数字。 请实现手机号码合法性判断的函数要求:1)如果手机号码合法,返回0;2)如果手机号码长度不合法,返回13)如果手机号码中包含非数字的字符,返回2;4)如果手机号码不是以86打头的,返

2014-07-20 14:46:28 27780

原创 约瑟夫环问题

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。C代码如下:#include#include#includetypedef struct _node{ struct _node* next;

2014-07-20 13:53:41 16992 4

原创 高速缓存与主存的三种映射方式

1、全相联映射方式全相联映射是指主存中任意一个块都可以映射到cache中任意一个块的方式,也就是说,当主存中的某一块需调入cache时,可根据当时cache的块占用或分配情况,选择一个块给主存块存储,所选的cache块可以是cache中的任意一个块。例如,设cache共有2C块,主存共有2M块,当主存的某一块j需调进cache中时,它可以存入cache的块0、块1、…、块i、…或块2C-1的任

2014-07-18 21:52:42 21437

原创 SSD的SMART属性

SMART监控电脑硬盘以检测和报告各种可靠性指标。这项技术旨在预测硬盘故障并向用户发出警告,让用户替换状况不佳的驱动器,进而避免数据丢失或意外中断运行。当然, SMART只能针对由于处理速度缓慢造成的可预测错误发出警告,如机械耗损以及通过分析某些指标可以预测的错误。不可预测的故障,如由于电涌导致的突然机械故障,由于没有可以测量的变量进行追踪和分析,所以无法预测失败。

2014-07-16 21:17:45 14714

原创 由free命令想到的

root@xdj-Z9PA-D8-Series:~# free -m total used free shared buffers cachedMem: 15977 1683 14293 0 132 549-/+ buffers/cache

2014-07-16 17:23:04 2153 1

原创 Linux deadline io 调度算法

deadline算法的核心就是在传统的电梯算法中加入了请求超时的机制,该机制主要体现在两点:1、请求超时时,对超时请求的选择。2、没有请求超时时,当扫描完电梯最后一个request后,准备返回时,对第一个request的选择。基于以上两点,平衡了系统i/o吞吐量和响应时间。此外,该算法还考虑到了读操作对写操作造成的饥饿。定义了elevator_deadline调度器类型:

2014-04-28 19:54:28 8352

原创 Linux noop io 调度算法分析

定义了一个elevator_noop的调度器类型: static struct elevator_type elevator_noop = { .ops = { .elevator_merge_req_fn = noop_merged_requests,//查询一个request,用于将bio并入 .elevator_dispatch_fn = noop_dispatch,/

2014-04-28 19:24:55 4488

原创 Linux 内核 hlist 详解

在Linux内核中,hlist(哈希链表)使用非常广泛。本文将对其数据结构和核心函数进行分析。和hlist相关的数据结构有两个:hlist_head 和 hlist_node//hash桶的头结点struct hlist_head { struct hlist_node *first;//指向每一个hash桶的第一个结点的指针};//hash桶的普通结点struct hl

2014-04-27 19:14:11 30779 4

原创 AVL 平衡二叉树的实现

平衡二叉树的定义:平衡二叉树或者是一棵空树,或者是具有以下性质的二叉排序树:平衡二叉树的左子树和右子树的深度之差小于等于1,且左子树和右子树也是平衡二叉树。二叉排序树的定义:二叉排序树或者是一棵空树,或者是具有以下性质的二叉树:1、若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2、任意结点的右子树不空,则右子树上所有结点的值均大于它的根结点的值

2014-04-25 21:37:51 1889 2

原创 利用ycsb测试hbase性能

java 、maven、ycsb 的安装及配置见这篇博客:http://blog.csdn.net/hs794502825/article/details/17309845本篇博客主要介绍 hbase 的安装,以及利用 ycsb 对 hbase 进行基本的测试步骤一:在http://mirrors.hust.edu.cn/apache/hbase/下载hbase稳定版:

2013-12-16 13:52:18 9685

原创 利用ycsb测试cassandra性能

java 、maven、ycsb 的安装及配置见这篇博客:http://blog.csdn.net/hs794502825/article/details/17309845本篇博客主要介绍 cassandra 的安装,以及利用 ycsb 对 cassandra 进行基本的测试在 http://cassandra.apache.org/download/ 上面下载了最新版本的 a

2013-12-15 16:14:58 7380

原创 利用ycsb测试redis性能

1、jdk的安装在http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html上面下载了jdk-7u45-linux-i586.tar.gz存放在/home/hs/program目录下cd /home/hs/programtar -zxvf jdk-7u45-l

2013-12-13 23:06:24 12863

原创 显式运行时链接

dlopen功能:打开一个动态链接库包含头文件:#include 函数定义:void * dlopen( const char * pathname, int mode);函数描述:在dlopen()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose()来卸载打开的库。mode是打开方式,其值有多个,不同操作系统上实现的功能有所

2013-11-25 15:20:50 1740

原创 打印堆栈中的初始化信息

进程初始化的时候,堆栈里面保存了关于进程执行环境和命令行参数等信息。事实上,堆栈里面还保存了动态链接器所需要的一些辅助信息数组(Auxiliary Vector)。那么进程执行环境、命令行参数信息以及辅助信息数组在进程堆栈中是怎么分布的呢?我们可以使用如下的一个小程序(auxiliary_vestor.c)显示之:#include#includeint main(int argc,

2013-11-25 10:34:26 1897

原创 测试系统可供malloc()使用的内存空间大小

一般程序中使用malloc()函数进行地址空间的申请,那么malloc()到底最大可以申请多少内存呢?可以利用下面这个小程序来测试malloc最大内存申请数量(当然这个数量跟你系统拥有的内存有关)。#include#includeunsigned int maximum = 0;int main(){ unsigned int alloc_size[] = { 1024

2013-11-20 20:45:34 2748 1

转载 免费电子书列表

在StackOverflow上,有人要打算收集个免费电子书的列表,结果很快就有人分享了一个列表。很不错,我就转过来了。原帖的地址在http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books (注意:有些连接可能会被墙掉)List of Free Programming books (c

2013-11-17 11:28:59 1083

原创 局域网内IP地址的检测与分配

每年当实验室进来师弟师妹后,由于师弟师门刚开始不熟悉实验室的情况,进行IP地址设置时都会动态获取IP地址,这时有可能就将实验室博士GG使用多年的IP地址给抢走了,弄得博士GG甚是不爽,经过一番说明之后,师弟师妹们也开始指定自己的IP地址,可是指定多少能不抢别人的呢?这也很头痛,当然我也很头疼,因为实验室的很多杂事都是我负责。每次在实验室群里面让大家贴出自己的IP地址时,总不可能保证所有人都贴,今天

2013-09-25 11:30:12 4379

原创 DiskSim 4.0 with dixtrac 安装

1、Install bison and flex, if you have not installed already.$ sudo apt-get install bison flex 2、Download and unzip.Sources can be downloaded from http://www.pdl.cmu.edu/DiskSim/.I downloaded

2013-09-23 15:50:22 2950 1

转载 Segmentation fault (core dumped)

有的程序可以通过编译,但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置:#设置co

2013-09-17 13:31:30 1834

原创 vim中跨文件的多行拷贝

1、用vim打开一个文件,例如:original.trace2、在普通模式下,输入:":sp"(不含引号)横向切分一个窗口,或者":vsp"纵向切分一个窗口,敲入命令后,你将看到两个窗口打开的是同一个文件3、在普通模式下,输入:":e new.trace",在其中一个窗口里打开另一个文件4、切换到含有源文件(original.trace)的窗口,在普通模式下,把光标移到你需要复制内容的

2013-09-14 10:17:47 21489

原创 flashcache中应用device mapper机制

Device Mapper(DM)是Linux 2.6全面引入的块设备新构架,通过DM可以灵活地管理系统中所有的真实或虚拟的块设备。DM以块设备的形式注册到Linux内核中,凡是挂载(或者说“映射”)于DM结构下的块设备,不管他们是如何组织,如何通讯,在Linux看来都是一个完整的DM块设备。因此DM让不同组织形式的块设备或者块设备集群在Linux内核面前有一个完整统一的DM表示。一、

2013-08-30 21:20:29 4337 4

转载 Linux CFS 进程调度算法

Linux主要实现了两大类调度算法,CFS(完全公平调度算法)和实时调度算法。宏SCHED_NOMAL和SCHED_BATCH主要用于CFS调度,而SCHED_FIFO和SCHED_RR主要用于实时调度。这几个宏的定义可以在include/linux/sched.h中找到。文件kernel/sched.c包含了内核调度器及相关系统调用的实现。调度的核心函数为sched.c中的schedule(),

2013-08-29 10:30:23 5409

原创 Linux CPU 亲和性

软亲和性意味着进程并不会在处理器之间频繁迁移,而硬亲和性则意味着进程需要在您指定的处理器上运行。Linux调度程序同时提供软硬CPU亲和性机制。虽然它尽力通过一种软的亲和性试图使进程尽量在同一个处理器上运行,但它也允许用户强制指定“这个进程无论如何都必须在这些处理器上运行。”这种硬CPU亲和性保存在进程task_struct的cpus_allowed这个位掩码标志中。该掩码标志的每一位

2013-08-28 22:39:21 4571

原创 find_new_reaper

如果父进程在子进程之前退出,必须有机制来保证子进程能找到一个新的父亲,否则这些成为孤儿的进程就会在退出时永远处于僵死状态,白白地耗费内存。对于这个问题,解决方法是给子进程在当前线程组内找一个线程作为父亲,如果不行,就让init做它们的父进程。在do_exit()中会调用exit_notify(),该函数会调用forget_original_parent(),而后者会调用find_new_reape

2013-08-27 16:37:24 3488 1

转载 list_entry()详解

Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) / ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个

2013-08-26 22:14:16 23588 3

原创 slab分配器分配task_struct结构

Linux通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色的目的分配和释放数据结构是所有内核中最普遍的操作之一。为了便于数据的频繁分配和回收,编程者常常会用到一个空闲链表。该空闲链表包含可供使用的、已经分配好的数据结构块。当代码需要一个新的数据结构实例时,就可以从空闲链表中取出一个,而不需要分配内存、再把数据放进去。以后,当不再需要这个数据结构的实例时,就

2013-08-26 21:43:22 1621

转载 进程上下文与中断上下文

处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间。2、内核态,运行于中断上下文,内核代表硬件运行于内核空间。3、用户态,运行于用户空间。进程上下文:在Linux中,用户程序装入系统形成一个进程的实质是系统为用户程序提供一个完整的运行环境。进程的运行环境是由它的程序代码和程序运行所需要的数据结构以及硬件环境组成的。进程的运行环境主

2013-08-26 21:18:19 1345

原创 fork() && fork() || fork()

#include #include int main(){ fork();/*****/ fork() && fork() || fork();/*****/ fork();/*****/ sleep(100); return 0;}问题是不算main这个进程自身,程序到底创建了多少个进程?这是EMC的一道笔试题,感觉挺有意思的,这道

2013-08-23 23:07:11 15896 9

转载 linux中fork()函数详解

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来

2013-08-23 22:12:13 1124

Windows下修复mbr的软件(MbrFix)

安装windows和linux双系统,需要卸载linux时,需要先修复mbr

2013-11-07

深入理解linux内核(中文第三版)第19章+进程间通信

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版) 第18章+Ext2和Ext3文件系统

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第17章+回收页框

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第16章+访问文件

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第15章 页高速缓存

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第14章+块设备驱动程序

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版) 第13章+IO体系结构和设备驱动程序

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第12章+虚拟文件系统

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版) 第11章+信号

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第10章+系统调用

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第9章+进程地址空间

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第8章+内存管理

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第7章+进程调度

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第6章+定时测量

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版) 第4章+中断和异常

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版) 第3章 进程

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第2章+内存寻址

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版)第1章+绪论

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版) 第5章+内核同步

深入理解linux内核,中文第三版,可随便复制粘贴,包含所有20章的内容

2013-04-14

深入理解linux内核(中文第三版可复制粘贴)第20章 程序的执行

深入理解linux内核,中文第三版,关键是可以随便复制粘贴。 第20章 程序的执行

2013-04-08

libmysqlclient.so.16(64bit)

这是一个用于64位系统的libmysqlclient.so.16

2012-08-09

QT实例教程(偏于入门级的一些简单例子)

本资源是QT程序设计的一些实例,但偏于入门级的一些小例子,但是讲解真的很好懂,特适合入门!

2011-01-18

设计模式(C++描述)

这是GOF的经典之作,是讲述设计模式最早,而且是最好的一本书。并且现在市面上讲设计模式的大多都是用JAVA讲的,然而这确实用C++讲述的!

2011-01-04

深度探索C++对象模型

这里面是有关面向对象程序设计的讲解,如果说你没有好好研究过这本书,真的不能说你学过面向对象程序设计,从而也就不能说你学习过C++!真的,这是面向对象程序设计的经典之作啊!

2011-01-04

十进制加减计算器(汇编语言程序设计)

这是学完汇编之后,老师要求做的一个课程设计。 十进制加减计算器的设计!

2011-01-04

计算机组成原理(唐塑飞)课件

有关计算机组成原理的课件,唐塑飞版的,也就是考研指定的教材!

2010-11-04

C++标准程序库(简体中文版)第三部分

这里是C++标准程序库(简体中文版)第三部分

2010-11-04

C++标准程序库(简体中文版)第二部分

这里是C++标准程序库(简体中文版)第二部分

2010-11-04

C++标准程序库1-7章

花了好大的经历才找到这本C++标准程序库的简体中文版,跟大家分享一下!

2010-11-04

C++标准程序库源代码

这里面包含C++标准程序库里面所以例子的源代码,对于书上哪个地方不是很明白的话,可以直接用源代码建立项目,看着结果便一目了然!

2010-11-04

局域网构建与管理实训

在计算机网络的基础之上讲解局域网的构建与管理

2010-09-15

Visual C++ 2008中有关MFC程序设计

本书稿为张孝祥、袁龙友两位老师在2000 年依据张孝祥的vc++讲课记录整理,由于时间关系,仅仅是写成了草稿,欢迎大家使用!

2010-09-15

校友录用户信息的管理

本资源是一个校友录用户信息管理的C++源码实现,完全通过调试,运行成功

2010-07-23

影碟租赁系统的程序设计

本资源是一个小巧但是功能健全的影碟租赁系统的C++源码实现

2010-07-23

单链表的各种操作的程序设计

本资源是单链表的建立、插入、删除、遍历、清空等等操作的源码实现

2010-07-23

多关键字排序的程序设计

本资源是一个多关键字排序的程序设计,里面包含冒泡排序、快速排序、基数排序的完整代码实现

2010-07-23

员工考勤系统的分析与设计

这是一个用C++语言写的员工考勤系统的分析与设计,里面不仅包含调试成功的代码,还包括课程设计书的完整书写。

2010-07-23

数据结构中有关多维数组的课程设计

本资源关于数据结构中的多维数组的设计与使用

2010-07-23

空空如也

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

TA关注的人

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