自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

极音战歌

每一天的努力,只是为了让远方变得更近一些

  • 博客(50)
  • 资源 (4)
  • 收藏
  • 关注

原创 如何查询电脑本机出厂序列号

【WIN】+【R】快捷键输入【cmd】回车,输入【wmic bios get serialnumber】回车,可以查看产品序列号Serial Number。

2022-11-04 14:27:06 8662 1

原创 下载Wireshark软件时遇到The Visual C++ Redistributable installer failed with error 5.安装失败问题

1、下载Wireshark软件时安装失败2、提示The Visual C++ Redistributable installer failed with error 5.Unable to continue installation.

2022-11-02 19:58:10 6958 1

原创 【Android】Android_WIFI_MBB(Make Befor Break)梳理

梳理Android_WIFI_MBB(Make Befor Break)触发MBB流程 和 解除MBB流程目录一、触发MBB(Make Befor Break)二、解除MBB(Make Befor Break)硬件要求:①设备是否支持至少两个并发的客户端模式管理器(STA + STA 并发)②是否使能了mbb 的wifi切换1、在连接一个接口为wlan0的wifi使用的过程中,wifi会不时的自我检查,在某个时间段遇到以下条件之一时,则会考虑触发MBB行为:①当前连接的网络是OEM付费/专用网络(只

2022-05-24 17:19:34 759

原创 【Android】Android网络评分机制简单总结

文章参考于:三、Android 网络评分机制 - 简书在前两节简单介绍了连接管理的大致框架,数据链接的准备工作,包括APN的初始化与默认APN使能,DcTracker的构造,包括各种事件的注册等工作。但是数据链接的打开不止是只有...https://www.jianshu.com/p/541a21bf82d6【网络连接评分机制之networkfactory 原】 - #1我的IT知识库-网络连接评分机制之networkfactory 原搜索结果https://www.itdaan.com/key

2022-01-28 15:21:46 4928

原创 【Android】粘性广播的发送、注册、接收,基于Android12.0的WiFi部分源码分析

Android的广播有:普通广播(Normal Broadcast)有序广播(Ordered Broadcast)粘性广播(Sticky Broadcast)系统广播(System Broadcast)本地广播(Local Broadcast)介绍:本次分析的是粘性广播(Sticky Broadcast),粘性广播是属于可拦截广播的。粘性广播通过Context.sendStickBroadcast()方法来发送,用此方法发送的广播会一直滞留,当有匹...

2021-11-19 19:17:13 3330

转载 【Android】Android中Alarm的机制

本次给大家分析的是Android中Alarm的机制所用源码为最新的Android4.4.4。首先简单介绍如何使用Alarm并给出其工作原理,接着分析Alarm和Timer以及Handler在完成定时任务上的差别,最后分析Alarm机制的源码。什么是AlarmAlarm是android提供的用于完成闹钟式定时任务的类,系统通过AlarmManager来管理所有的Alarm,Alarm支持一次性定时任务和循环定时任务,它的使用方式很简单,这里不多做介绍,只给出一个简单的示例:AlarmManage

2021-11-13 17:47:11 1874

原创 【Android 12.0】Android S WiFi关闭业务流程分析(UML图)

以下为Android S的WiFi关闭(stop)业务流程UML图,业务流程的过程详情因公司规定不可复制源码出来,所以想看业务流程详情的同学可以参考其他博主所发的博客。业务流程参考内容链接我会放在本文章后面。图一为手机在WiFi设置界面点下WiFi按钮关闭后WiFi关闭(stop)的业务流程。1、WifiStop业务流程WiFi Stop业务流程源码详情参考:Android wifi源码分析(二) Wifi关闭流程 - 简书接着上一篇,这篇说一下Wifi的关闭流程。 由上一篇可以知道,fra

2021-11-03 18:32:43 799 2

原创 【Android 12.0】Android S WiFi启动业务流程分析(UML图)

以下两张为Android S的WiFi启动(start)业务流程UML图,业务流程的过程详情因公司规定不可复制源码出来,所以想看业务流程详情的同学可以参考其他博主所发的博客。业务流程参考内容链接我会放在本文章后面。图一为手机在WiFi设置界面点下WiFi按钮打开后WiFi启动的业务流程。图二为WiFi设置功能处于打开状态条件下,手机重启开机后系统WifiService对WiFi Start的业务流程(通俗讲就是手机开机时会检查WiFi在上一次手机关机时是处于打开状态还是处于关闭状态。如果是打

2021-11-02 10:17:17 4348 2

原创 【Android】StateMachine状态机的定义理解--安卓平台框架基础内部工具StateMachine.Java

【状态机初始化三部曲:(基础中的基础,把这三组单词刻在脑子里!)addStatesetInitialStatestart】这里定义的状态机是处理消息的分层状态机并且可以按层次排列状态。状态机是处理消息的分层状态机,并且可以按层次排列状态。状态是一个State对象,实现--->processMessage()和可选的enter/exit/getName)()--->进入/退出方法等价于构造和销毁,分别用于执行状态的初始化和状态清理。getName()方法返回

2021-09-13 17:01:37 682 1

原创 【Java基础】面向对象篇 (类和对象)

java学习笔记(根据java基础入门教学书和教学视频内容学习)致敬Java之父:詹姆斯·高斯林(James Gosling)目录【Java基础】面向对象篇 (类和对象)1、类的定义2、对象的创建3、成员变量和局部变量4、封装5、this关键字6、构造方法7、static关键字【Java基础】面向对象篇 (类和对象)1、类的定义2、对象的创建3、成员变量和局部变量成员变量:类中方法外的变量局部变量:方法中的变量...

2021-08-23 14:16:59 105

原创 【Java基础】基础语法篇

java学习笔记(根据java基础入门教学书和教学视频内容学习)致敬Java之父:詹姆斯·高斯林(James Gosling)目录【Java基础】基础语法篇一、java基础语法1、注释2、关键字3、常量4、数据类型5、变量6、标识符7、类型转换8、字符的“+”操作9、字符串的"+"操作10、赋值运算符11、自增自减运算符12、关系运算符13、逻辑运算符14、短路逻辑运算符15、三元运算符16、数据输入17、Random.

2021-08-21 14:31:44 271

原创 【Java基础】概述、环境安装配置篇

java学习笔记(根据java基础入门教学书和教学视频内容学习)致敬Java之父:詹姆斯·高斯林(James Gosling)目录【Java基础】概述、环境安装配置篇一、Java语言发展1、Java语言发展史(了解)2、Java语言跨平台原理(理解)3、JRE和JDK(记忆)4、JDK的下载和安装5、JDK的安装目录名称说明6、JDK、JRE和JVM的关系二、演示程序1、常用DOS命令2、Path环境变量的配置三、用java编写基础的HeloWo.

2021-08-20 11:13:32 72

原创 【C】冒泡排序

冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。#include <stdio.h>int main(){ int arr[] = {9,8,6,5,0,1,2,3,4}; int i = 0; int j = 0; int temp = 0; int len = sizeof(arr)/sizeof(arr[0]); //计算数组长度

2021-04-07 13:44:46 88

原创 C 和 C++的区别?

C和C++的区别?1、C是面向过程的语言,C++是面向对象的语言。2、C中的struct不能有函数,C++中的struct可以有函数。3、C中函数可以不返回值,默认是int类型,而C++函数没有返回值必须写void。4、标准输入输出也不一样,C中是printf,scanf,C++中是cin,cout。5、C++支持缺省参数的函数6、C++支持函数重载C和C++中的struct有什么不同?C和C++中struct的主要区别是C中的struct不可以含有成员函数,而C++中的struc.

2021-04-06 16:45:07 880

原创 【通俗简洁】UART 、I2C 、SPI 的原理区别

UART 、I2C 、SPI 的原理区别 UART IIC SPI 全称 Universal Asynchronous Receiver Transmitter: 通用异步收发器 INTER IC BUS IC 之间总线 Serial Peripheral Interface 串行外设接口 总线形式 RXD 接收数据线 TXD 传送数据线 GND(通信设备必须共地) SDA .

2021-04-05 16:53:51 366

原创 IIC总线 和 SPI总线 的不同

IIC总线 和 SPI总线 的不同1、 iic 总线是半双工, 2 根线 SCL SDA。 spi 总线实现全双工, 4 根线 SCK CS MOSI MISO;2、 iic 总线是多主机总线,通过 SDA 上的地址信息来锁定从设备。 spi 总线只有一个主设备,主设备通过 CS 片选来确定从设备;3、 iic 总线传输速度在 100kbps-4Mbps。 spi 总线传输速度更快,可以达到 30MHZ 以上;4、 iic 总线空闲状态下 SDA SCL 都是高电平。 spi 总.

2021-04-05 16:39:26 2155

原创 SPI总线理解【待完善】

SPI总线理解 SPI 英文名叫 Serial Peripheral Interface,中文名叫串行外围设备接口。是由 Motorola公司开发,用来在微控制器和外围设备芯片之间提供一个低成本、易使用的接口。这种接口可以用来连接存储器(存储数据)、 AD 转换器、 DA 转换器、实时时钟、 LCD 驱动器、传感器、音频芯片、甚至其他处理器。 与标准的串行端口不同, SPI 是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生。接收数据的...

2021-04-05 16:34:13 319

原创 IIC总线理解【待完善】

IIC总线理解IIC (Inter-Integrated circuit,又称IIC)总线是一种由PHILIPS(飞利浦)公司开发的串行总线,用于连接微控制器及其外围设备,它具有如下特点:(1)只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL);(2)每个连接到总线的器件都可以使用软件根据它的唯一的地址来识别;(3)传输数据的设备间是简单的主/从关系;(4)主机可以用作主机发送器或主机接收器;(5)它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检测

2021-04-05 16:26:09 354

原创 【C】编写一个C函数(10行代码搞定!),将“I am from China”倒置为“China from am I”即将句子中的单词位置倒置,并不改变单词内部结构。

将“I am from China”倒置为“China from am I”版本一#include <stdio.h>int main(){ int i=0; char word[255][255]; while(scanf("%s",word[i++])&&(getchar()!='\n')); while(--i) printf("%s ",word[i]); printf("%s",word[0]); return 0;}输入:I am fro

2021-04-01 16:14:31 154

原创 【C】编写一个C函数,输入一组字符串,求字符串中最长单词的长度 + 打印最长单词。

版本一:输入英文句子(字符串),求句子中最长英文单词的长度#include<stdio.h>#define MAX 255int main(){ char str[MAX]; //设置数组能存放最大的空间 int i = 0; int j = 0; int max = 0; gets(str); //输入字符串 例如: I love China! while(str[i] != '\0' && str[j] != '\0' ){ while(st

2021-04-01 10:08:14 1730 2

原创 如何保证UDP协议可靠?

如何保证UDP协议可靠?模拟tcp的可靠机制来保证四个无即可:无差错、无丢失、无重复、无失序;1)数据包添加序号,保证单次通信的多个数据包之间有序:2)应用层增加校验机制,如接收方计算数据包的校验码与数据包中提供的校验码不-致,则丢弃该数据包请求重发;3)应用层增加确认机制,如果发送方没有在规定的时间内没有收到接收方的应答包,则进行重发,三次后还未收到应答直接判断发送失败;...

2021-03-26 14:38:07 1719 1

原创 TCP和UDP的区别?

TCP和UDP的区别? TCP (传输控制协议) UDP (用户数据报协议) 特点 可靠通信, 保证了数据的有序、 完整、 到达 不能保证数据有序、完整、到达 面向连接 面向连接的,只有在连接建立后才能够进行通信,简单来说就是需要牵电话线才能通话; 不是面向连接的,任意UDP套接字只要获得了接收方的地址,就能够发送数据给接收方,简单来说就是只要我知道你家信箱在哪,我就可以写信给你; 通信数据包 对用户而言,单次通信数据包长度的不做...

2021-03-26 14:37:35 182

原创 第十五届全国大学生智能汽车竞赛华南赛区

第十五届全国大学生智能汽车竞赛华南赛区基础四轮 第十五届全国大学生智能汽车竞赛华南赛区电磁AI组 2020.06一2020.08 基于MK60DN512ZVLQ10 的基础四轮室内自动寻迹智能车(集体项目)软件环境: keil5 IDE、Altium De

2021-03-26 10:13:39 533 3

原创 【通俗易懂】面向对象和面向过程的区别?等同于蛋炒饭和盖浇饭的区别?

面向对象:用线性的思维。与面向过程相辅相成。在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统。微观上,仍然使用面向过程。“面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。面向对象一、定义面向对象“是以“对象”为中心的编程思想。简单的举个例子:汽车发动、汽车到站。汽车启动是一个事件,汽车到站是另一个事件,面向过程编程的过程中我们关心的是事件,而不是汽车本身。针对上述两个事件,形成两个函数,之后依次调用...

2021-03-21 16:24:39 431 1

转载 三次握手和四次挥手(详细全面)

三次握手和四次挥手(详细全面)1.三次握手1.1 为什么需要三次握手,两次不行吗?1.2 什么是半连接队列?1.3 ISN(Initial Sequence Number)是固定的吗?1.4 三次握手过程中可以携带数据吗?1.5 SYN攻击是什么?2. 四次挥手2.1 挥手为什么需要四次?2.2 2MSL等待状态2.3 四次挥手释放连接时,等待2MSL的意义?两个理由:2.4 为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态?三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分

2021-03-20 13:35:14 138 1

原创 shell 是什么,试用 shell 脚本有什么好处?

Shell 是指一种 C 语言编写的应用程序。主要作用是获取用户输入的指令及参数,调用现有的程序实现用户的意图;用户在没有图形界面的情况下 shell 是用户访问系统内核服务的唯一途径(类似于Windows 下的 DOS) ;Shell 也是一种程序设计语言。它允许用户将想要执行的命令按照一定的语法格式书写在文本文件*.sh 中,随后执行 shell 脚本文件中的指令集合,把这种记录指令的脚本文件叫做 shell 脚本程序。Shell 脚本编程跟 JavaScript、 PHP、 Python 编程

2021-03-18 16:12:19 3127 2

原创 什么是内存泄露、内存溢出?如何防止?

什么是内存泄露,内存溢出,如何防止? 内存泄露 内存溢出 通俗解释 1、操作系统以为用户还占有某块内存, 但用户丢掉了该内存的地址, 失去对该内存的使用权; 2、调用 char *p = malloc(100), 但紧接着 p = NULL, 那么这 100 个字节将永远得不到访问, 除非程序结束, 操作系统回收内存。 1、内存不够用, 剩余的内存空间不足以满足需求; 2、企图开辟过大的空间,比如:栈对象 int num[4096][4096]是极易初始化失败的.

2021-03-18 16:01:21 432 1

原创 三次握手,四次挥手过程

三次握手,四次挥手过程三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn 包(tcp 协议中syn位置1,序号为J)到服务器,并进入SYN_ SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的sYN,同时自己也发送一一个SYN包,即SYN+ACK包(tcp 协议中syn位置1,ack位置1,序号K,确定序号为J+1),此时服务器进入SYN RECV状态:...

2021-03-17 20:35:41 220 1

原创 死锁是什么?如何产生死锁?如何避免死锁?

死锁是什么概念,一般是如何产生的死锁(deallocks):是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。产生死锁的条件:1.互斥条件: 一个资源每次只能被一个进程(线程)使用。2.请求与保持条件: 一个进程(线程)请求资源而阻塞时,对已获得的资源保持不放。3.不剥夺条件: 此进程(线程)已获得的资源...

2021-03-17 19:27:57 613 1

原创 什么是进程,什么是线程,多线程与多进程的区别?

什么是进程,什么是线程,多线程与多进程的区别?什么是进程,什么是线程多线程与多进程的区别什么是进程,什么是线程什么是进程,什么是线程,以及什么实际场景使用他们?进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。简言之运行的程序就是进程。线程(Thread) : 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。实际场景:  首先明确多进程和多线程都能“同时实现多个任务”。假设要同

2021-03-15 20:45:02 3627 1

原创 多文件编程有什么好处?

多文件编程有什么好处?多文件编程是必要的,甚至是必须的。简单来说就是把功能相近或者相关的函数变量定义添加到.c和.h文件中,这样的两个文件称为一个模块。其好处至少可以说出以下几点:1、方便代码复用: 模块化的代码可以很方便的迁移到其他项目中去,改写模块比重写模块更快;2、方便分工合作: 各个功能模块分成多个文件同时编辑,可以有效的提高团队开发的分工协作效率;3、方便后续维护: 项目源码交接时,不管是客户还是同事,对于划分明确的文件是不会排斥的;4、保证了库支持: 个人函数库都是由c文件产生库,采用

2021-03-15 20:30:55 1368 1

原创 回调函数是什么?

  回调函数就是一个通过函数指针调用的函数。如果你把函数A的指针(地址)作为参数传递给另一个函数B,由函数B内部调用函数A,我们就说函数A是回调函数。回调函数A不是直接调用,而是在函数B中检测的特定事件或条件发生时调用的,用于对该事件或条件进行响应。  简而言之,回调函数就是允许用户把需要调用的函数传递给一个另外函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法。...

2021-03-15 20:27:46 72 1

原创 堆和栈的区别

一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在

2021-03-11 11:15:49 88 1

原创 【Linux C编程】学生信息管理系统--简易版

学生信息管理系统流程图一、定义一个枚举体做菜单目录二、定义两个结构体三、定义一个菜单函数四、添加、删除、修改、搜索、排序相关代码五、主函数完整代码总结此学生管理系统是本人用Linux系统下vim编辑器编写的,该学生管理系统主要运用于可以存储学生信息,同时也可以对现有的学生信息进行添加、删除、修改、搜索、排序等相关功能。供学习者参考!!!此学生管理系统运用到的是enum枚举体数据类型、struct结构体数据类型。 不了解enum(枚举)如何运用的童鞋可以看一下我的另一篇博客有关enum(枚举)知识点介绍。

2021-03-10 13:03:10 1953 2

原创 enum(枚举)

enum(枚举)枚举是 C 语言中的一种基本数据类型。枚举语法定义格式如下:enum 枚举名 {枚举元素1,枚举元素2,……};我们举一个例子,例如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7上面的看起来代码量比较多,接下来我们看看使用枚举的

2021-03-10 11:15:59 514 1

转载 Linux中文件的可读,可写,可执行权限的解读以及chmod,chown,chgrp 命令的用法

一、文件权限解读如上图所示,开头的-rwxrw-r–这一字符串标识文件权限。这个字符串有10位,可以分为4段来解读。注:r–可读,w–可写,x–可执行。第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限;第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限;第四段(第8-10位,共3个字符串)表示其他用户对它的权限;注:我们用3位8进制来表示文件的权限,r用4标识,w用2标识,x用1标识上图中的-rwx

2021-03-09 17:27:48 7963 1

转载 堆栈溢出一般是由什么原因导致的?如何防止?

堆栈溢出一般是由什么原因导致的?答:1.函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。2.动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态空间使用的是堆空间,动态空间使用不会造成堆溢出。3.数组访问越界。C语言没有提供数组下标越界检查,如果

2021-03-08 20:07:09 3106 1

原创 C语言基础 — 关键字volatile有什么含意? 三个不同的例子。

关键字volatile有什么含意? 并给出三个不同的例子。关键字volatile有什么含意? 并给出三个不同的例子。关键字volatile有什么含意? 并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1.并行设备的硬件寄存器(如:状态寄存器)2. 一个中断服务子程序中会访问到的

2021-03-06 16:27:56 1991 5

原创 C++(一)— cout输出格式 (待完善)

C++cout输出格式ios::dec以10进制表示整数ios::hex以16进制表示整数ios::oct以8进制表示整数ios::showbase为整数添加一个表示其进 制的前缀ios::internal在符号位和数值的中间插入需要数里的填充字符以使串两端对齐ios::left在串的末尾插入填充字符以使串居左对齐ios::right在串的前面插入填充字符以使串居右对齐ios::boolalpha将bool类 型的值以true或fla

2021-03-05 14:40:51 948 2

原创 第十五届全国大学生智能汽车竞赛华南赛区

第十五届全国大学生智能汽车竞赛华南赛区基础四轮 第十五届全国大学生智能汽车竞赛华南赛区电磁AI组 2020.06一2020.08 基于MK60DN512ZVLQ10 的基础四轮室内自动寻迹智能车(集体项目)软件环境: keil5 IDE、Altium De

2021-03-05 11:33:06 528

C语言深度解剖.zip

C语言深度解剖 C语言学习文件

2021-03-18

C程序设计试题汇编.zip

C语言练习题 免费下载学习

2021-03-18

C语言深度解剖 + C语言练习题

C语言深度解剖 + C语言练习题 供学习者免费学习! 供学习者免费学习! 供学习者免费学习!

2021-03-18

Uninx 的起源 PDF文件

Uninx 的起源,1969 年, 由 KenThompson 在 AT&amp;T 贝尔实验室实现的。 使用的是用汇编语言。

2021-03-18

空空如也

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

TA关注的人

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