自定义博客皮肤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)
  • 收藏
  • 关注

原创 Java中最强大的技术之一 反射 一个方法实现对所有表的查询

Java中最强大的技术之一  反射  一个方法实现对所有表的查询前言1、一个方法实现对所有表的查询Dept类Emp类DBUtilTest工具类前言反射在一定程度上破坏了封装性,需要合理使用Dept类 Emp类 DBUtilTest工具类三个类的代码在文章最下方1、一个方法实现对所有表的查询要查询N张表的数据,但是不想写N多的方法,能否写一个方法完成所有表的查询工作public class BaseDaoImpl { /** * 统一的查

2021-02-08 22:43:42 9929 2

原创 单例模式的8种实现

单例模式的8种实现前言1、饿汉式-静态属性2、饿汉式-静态方法块3、懒汉式4、懒汉式 - synchronized锁住对象5、懒汉式 - synchronized同步代码块6、懒汉式 - if 双重检查7、静态内部类-完美解决方案8、枚举单例前言多态是面向对象的核心,理解了多态才能进一步理解设计模式才能进一步理解面向对象这种思想它的优势之所在几乎全部的设计模式说到底都是多态 只有少数几种不是现在手写单例的情况越来越少,一般我们都使用spring Bean工程给我们产生单例1、饿汉式-静态属性

2021-03-03 14:14:47 275 2

原创 Mysql存储引擎MyISAM与InnoDB - B+树数据的增删细节

Mysql存储引擎MyISAM与InnoDB - B+树数据的增删细节前言Mysql索引文件的存储结构1. InnoDB - B+Tree,叶子节点直接放置数据1.2 回表2. MyISAM--B+Tree,叶子节点放置数据的地址3. B+树数据的插入细节3.1 向B+树中插入数据93.2 向B+树中插入数据203.3 向B+树中插入数据1004. B+树数据的删除细节4.1 向B+树中删除数据914.1 向B+树中删除数据514.1 向B+树中删除数据594.1 向B+树中删除数据63前言

2021-02-14 14:00:47 7570 8

原创 Mysql原理解析 - 索引文件的存储结构

Mysql原理解析 - 基本架构前言局部性原理磁盘预读索引是什么?1. MSQL为什么索引选择B+树?1.1 哈希表hash简介:局限性:1.2 二叉树简介:局限性:1.3 AVL树简介:局限性:1.4 红黑树简介:性质:应用1.5 总结2. B树2.1 B树特点:局限性:2. mysql索引数据结构 -- B+树前言局部性原理磁盘预读磁盘预读(预读的长度一般为页(page)的整数倍) – 页是存储器的逻辑块,操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(在

2021-02-10 02:28:47 11961 6

原创 Mysql原理解析 - 基本架构

Mysql原理解析 - 基本架构1、Mysql的基本架构图1.1 连接器1.2 查询缓存1.3 分析器1.4 优化器1.5 存储引擎1、Mysql的基本架构图1.1 连接器连接器负责跟客户端建立连接,获取权限、维持和管理连接– 用户名密码验证– 查询权限信息,分配对应的权限– 可以使用show processlist查看现在的连接– 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时▪ 连接可以分为两类:– 长连接:推荐使用,但是要周期性的断开长连接

2021-02-10 00:47:29 10798 14

原创 Java中最强大的技术之一 反射 获取子父类方法及属性

Java中最强大的技术之一  反射  获取子父类方法及属性前言1、 clazz.getFields()获取成员变量2、 clazz.getDeclaredFields()获取当前类的所有属性3、 clazz.getMethods()获取当前对象及父类对象的所有公共方法4、 clazz.getDeclaredMethods()获取当前类中所有的方法5、反射 给属性赋值并打印6、反射 调用方法7、 clazz.getConstructors()获取对象的所有构造方法8、

2021-02-08 20:43:24 13287 8

原创 Java中最强大的技术之一 反射 获取Class类

Java中最强大的技术之一  反射  获取Class类1、反射概述2、类的加载过程3、获取Class类的三种方式3.1 通过 class.forname()来获取Class对象3.2 通过类名.class来获取Class对象3.3 通过对象的getClass()来获取Class对象3.4如果是一个基本数据类型,那么可以通过Type的方式来获取Class对象1、反射概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个

2021-02-08 19:37:55 11517 3

原创 Java SPI机制详解

Java SPI机制详解1、什么是SPI?2、SPI的用途Driver实现Mysql DriverManager实现spi工具类`ServiceLoader`将自己注册到驱动管理器的驱动列表中当获取连接的时候调用驱动管理器的连接方法从列表中获取。1、什么是SPI?SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制,是一种动态替换发现的机制。比如有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。我们经常遇到的就是java.sql.

2021-02-07 20:08:25 11069 3

原创 数据库设计-三大范式

数据库设计-三大范式数据库设计概述1. 第一范式例子第二范式例子第三范式例子数据库设计概述目的:减少数据冗余在设计和数据库有关的系统时,数据库表的设计至关重要,这些设计关系整个系统的架构,需要精心的仔细考虑。数据库的设计主要包含了设计表结构和表之间的联系,在设计的过程中,有一些规则应该遵守。1. 第一范式列不可分数据库表中的所有字段值都是不可分解的原子值,确保每列保持原子性。在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据

2021-02-07 17:09:41 10655 1

原创 算法-杂乱

递归与递归方程前言1. 哈希表TreeMap (有序,时间复杂度,其他与HashMap一样)前言1. 哈希表// 哈希表,增、删、改、查,在使用时,时间复杂度:O(1) // HashMap 基础类型,包装类型全按值传递,自己定义的类型(对象)按引用传递 HashMap<Node, String> map2 = new HashMap<>(); Node node1 = new Node(1); Node node2 = node1; map2.put(n

2021-02-05 22:13:57 10428

原创 递归与递归方程T(N)=aT(N/b)+O(N^d)

递归与递归方程前言1. 用递归方法求数组arr[L..R]中的最大值2) 递归方程T(N)=aT(N/b)+O(N^d)前言递归:将一件大事分解成若干小事,通过对小事结果的决策过程,就能获得大事的答案递归改成迭代(循环)–>就是自己用代码实现压栈,模拟系统栈的行为1. 用递归方法求数组arr[L…R]中的最大值解析:1)  将[L…R]范围分成左右两半。左:[L…Mid]右[Mid+1…R]2)  左部分求最大值,右部分求最大值3)&nbs

2021-02-05 18:40:32 12546 3

原创 栈和队列的常见面试题-栈实现队列-队列实现栈

栈和队列的常见面试题-栈实现队列-队列实现栈1) 用栈结构实现队列结构2) 如何用队列结构实现栈结构)1) 用栈结构实现队列结构解析:用两个栈:push栈,pop栈push栈:存储数据pop  栈:只要本栈数据不为空,便将push栈数据倒出致此,实现队列public static class TwoStacksQueue { public Stack<Integer> stackPush; public Stack<Integer> stack

2021-02-05 16:29:30 10644 2

原创 栈和队列的常见面试题-返回栈最小元素

栈和队列的常见面试题-返回栈最小元素题目:标题实现一个特殊的栈,在基本功能的基础上,再实现返回栈中最小元素的功能**2 ) 设计的栈类型可以使用现成的栈结构1 ) pop、push、getMin操作的时间复杂度都是O(1)**1. java代码写法一:2. java代码写法二:)题目:标题实现一个特殊的栈,在基本功能的基础上,再实现返回栈中最小元素的功能**2 ) 设计的栈类型可以使用现成的栈结构1 ) pop、push、getMin操作的时间复杂度都是O(1)**解析:用两个栈:数据

2021-02-05 15:23:31 10470 1

原创 数组实现固定大小的队列

数组实现固定大小的队列前言1. java代码如下前言栈:正常用数组实现便可队列:环形数组(两个指针相互追赶)环形数组:初始化问题有点麻烦新增一个size变量,解耦指针追赶1. java代码如下public static class MyQueue { private int[] arr; private int pushi;// end private int polli;// begin private int size; private final int lim

2021-02-05 15:04:44 10744 3

原创 双向链表实现栈和队列

双向链表实现栈和队列前言1. 双向链表2. 栈 --》 双向链表 首部加 首部出 O(1)3. 队列 --》 双向链表 首部加 尾部出 O(1)前言栈 --》 双向链表 首部加 首部出 O(1)队列 --》 双向链表 首部加 尾部出 O(1)1. 双向链表 public static class Node<T> { public T value; public Node<T> last; public Node<T> next; publi

2021-02-05 14:45:13 10784

原创 单向链表与双向链表简单应用

单向链表与双向链表简单应用前言1. 单向链表如何反转2. 双向链表如何反转3. 将链表给定值都删除前言链表相关的问题几乎都是coding问题1. 单向链表如何反转public static Node reverseLinkedList(Node head) { Node pre = null; Node next = null; while (head != null) { next = head.next; head.next = pre; pre = head;

2021-02-05 14:30:15 10529

原创 idea常用快捷键

idea常用快捷键前言1. 显示structure Alt+7前言真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子1. 显示structure Alt+7View→Tool Windows→Structure...

2021-02-03 22:16:46 10411 2

原创 位运算(异或+与)的妙用

@TOC前言真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子1. 异或 ^无进位相加,满足交换律 结合律0^N == N        N^N == 0例子1. 如何不用额外变量交换两个数int a = 16; int b = 61; System.out.println("a交换前的值为:"+

2021-01-29 21:34:13 10886 3

原创 二分法-扩展局部最小

二分法-及其扩展局部最小前言1. 思考!二分法只能建立在有序数组上吗?1)在一个有序数组中,找某个数是否存在前言真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子二分法时间复杂度 O = log(N)1. 思考!二分法只能建立在有序数组上吗?经常见到的类型是在一个有序数组上,开展二分搜索但有序真的是所有问题求解时使用二分的必要条件吗?不只要能正确构建左右

2021-01-29 20:16:16 10597 4

原创 排序

排序前言1. 选择排序-selectionSort2. 冒泡排序-bubbleSort3. 插入排序-insertionSort前言真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子1. 选择排序-selectionSort public static void selectionSort(int[] arr) { if (arr == n

2021-01-29 17:59:35 10424 1

原创 对数器-测试自己算法算法正确

对数器-测试自己算法算法正确前言概括对数器概念对数器例子-测试选择排序算法是否正确对数器例子-测试冒泡排序算法是否正确前言真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子概括1.你在网上找到了某个公司的面试题,你想了好久,感觉自己会做,但是你找不到在线测试,你好心烦…2.你和朋友交流面试题,你想了好久,感觉自己会做,但是你找不到在线测试,你好心烦…3.你

2021-01-29 17:35:18 10500

原创 Linux常用命令

算法优劣三大核心指标-时间复杂- 额外空间复杂度-常数项时间前言1. 评估算法优劣的核心指标1.1时间复杂度(流程决定)1.1.1什么是时间复杂度?时间复杂度怎么估算?1.1.2 时间复杂度-例子1.1.3 常见的时间复杂度1.2 额外空间复杂度(流程决定)1.3 常数项时间(实现细节决定)面试、比赛、刷题中,一个问题的最优解是什么意思?前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS

2021-01-29 17:17:49 10568 1

原创 服务器部署-常用命令

服务器部署-常用命令前言1、Linux服务器上部署jar包前言真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!多思考!)云计算的长征之路:阿里云的这群疯子,阿里巴巴的架构演进!1、Linux服务器上部署jar包​java命令部署jar包java –jar XXXX.jar (注意这个命令启动时,断开服务连接后,服务就关闭了)setsid java -jar cim-boot-server-1.

2021-01-27 20:54:32 11011 2

原创 实现用户访问量/功能访问量的统计信息的查询-接上篇过滤器 拦截器

实现用户访问量/功能访问量的统计信息的查询-接上篇过滤器 拦截器前言1、情景分析与介绍1.1 数据库表1.1.1 设计表1.1.2 visit_records_number用户访问数 数据展示1.1.3 visit_records_function各功能的用户点击量 数据展示2、SpringBoot各业务逻辑层2.1 VisitHandle Control层 控制业务逻辑2.2 IVisitService Service层 控制业务2.2.1 接口 IVisitService2.2.1 实现类 VisitS

2021-01-26 19:33:52 11909

原创 SpringBoot拦截器与过滤器 实现用户访问量/功能访问量的统计

SpringBoot拦截器与过滤器 实现用户访问量/功能访问量的统计前言1、过滤器 解决输入流不能重复读取问题1.1定义RequestWrapper容器1.2 定义ReplaceStreamFilter 过滤规则1.3 过滤器配置类FilterConfig2、拦截器 实现我们的业务功能2.1 定义VisitorInterceptor 拦截业务规则2.2 拦截器配置类WebMvcConfig2.3 业务功能对应的的mysql表3、HttpServletRequest的输入流只能读取一次的原因前言真正在

2021-01-26 18:55:52 3476 3

原创 spring-data-redis从源码分析到企业级开发

spring-data-redis从源码分析到企业级开发前言聊聊 SpringBoot整合1、查看源码1.1 自动配置类 spring.factories --> RedisAutoConfiguration1.2 RedisAutoConfiguration绑定的RedisProperties1.3 查看 绑定的RedisProperties类1.4 RedisAutoConfiguration配置的两个模板类1.5关于 RedisAutoConfiguration下的RedisConnectio

2021-01-17 12:33:44 10574 1

原创 Jedis

Jedis前言什么是Jedis为什么要使用Jedis1、导入对应的依赖2、编码测试3、常用的API3.1 String3.2 List3.3 Set3.4 Hash3.5 Key3.6 Password4、通过Jedis再次理解 事务前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)

2021-01-17 00:26:10 10526

原创 Redis-监控Watch(面试常问!)

Redis-监控Watch前言概括1、Redis测监视测试1.1、正常执行成功1.2、测试多线程修改值 ,事务执行失败 返回(nil)1.2.1、如果事务修改失败,怎么办?前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子概括悲观锁:很悲观

2021-01-16 00:10:43 10865 2

原创 Redis-事务

Redis-事务前言Redis-事务概括正常执行事务放弃事务编译型异常运行时异常前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子Redis-事务概括Redis 事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程的中

2021-01-15 23:42:31 10442 1

原创 Redis三种特殊数据类型-Bitmap

Redis三种特殊数据类型-Bitmap前言Bitmap 概括位存储使用bitmap 来记录 周一到周日的打卡!前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子Bitmap 概括位存储统计用户信息,活跃,不活跃! 登录 、 未登录! 打卡

2021-01-14 14:26:31 10612 1

原创 Redis三种特殊数据类型-Hyperloglog(基数)

Redis三种特殊数据类型-Hyperloglog(基数)前言基数Hyperloglog概括1、PFadd 添加,PFCOUNT,PFMERGE 合并前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子基数A {1,3,5,7,8,7}B{1

2021-01-14 13:33:15 10582

原创 Redis三种特殊数据类型-Geospatial(地理位置)

Redis三种特殊数据类型-Geospatial(地理位置)前言Geospatial(地理位置)概括1、geoadd 添加地理位置2、geopos 获得当前坐标值3、geodist 返回两地之间的距离4、georadius 以给定的经纬度为中心, 找出某一半径内的元素5、georadiusbymember 找出位于指定元素周围的其他元素6、geohash 返回元素的 Geohash 表示(了解就好)7、Geospatial 的其他操作 -查看,删除8、Linsert 将某个具体的value插入到列表中某

2021-01-14 13:25:54 10892 2

原创 Redis-Hash(哈希)

Redis-Hash(哈希)前言Hash(哈希)概括1、Hset和Hget ,Hmset和Hmget ,Hgetall (Key和Value一起打印),Hdel2、Hlen长度3、Hexists 指定字段是否存在4、Hkeys获得所有value ,Hvals 获得所有field5、incr,decr前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进

2021-01-12 18:48:42 10479

原创 Redis-Zset(有序集合)

Redis-Zset(有序集合)前言Zset(无序集合)概括1、Zadd ,Zrange2、排序如何实现 ZrangeByScore,ZrevRange3、Zrem ,Zcard4、zcount 获取指定区间的成员数量前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征

2021-01-10 17:56:11 10518

原创 Redis-Set(无序集合)

Redis-Set(无序集合)前言Set(无序集合)概括1、Sadd ,Smember ,Sismember2、Srem 移除set集合中的指定元素,Scard 长度3、Srandmember 随机抽选4、Llen 长度,Lrem移除list集合中指定个数的value5、spop 随机删除集合中的元素6、smove 将一个指定的值,移动到另外一个set集合7、SDIFF 差集 ,SINTER 交集 ,SUNION 并集8、Linsert 将某个具体的value插入到列表中某个元素的前面或者后面!

2021-01-10 17:16:29 10542 2

原创 Redis-List(列表)

List(列表)前言List(列表)概括1、Lpush和Lpush,Lrange2、Lpop和Lpop3、Lindex 索引取值,Llen4、Llen 长度,Lrem移除list集合中指定个数的value5、trim 截取(只剩下被截取的元素)6、rpoplpush 移除列表右边第一个元素,将他移动到新的列表中7、lset 将列表中指定下标的值替换为另外一个值8、Linsert 将某个具体的value插入到列表中某个元素的前面或者后面!前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考

2021-01-10 14:38:34 10483 1

原创 Redis-String(字符串)

Oracle增删改查,事务与序列前言1、INSERT(增加)2、 UPDATE(修改)3、DELETE(删除)4、事务提交与回滚5、序列(给主键赋值)前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。1、INSERT(增加)标准写法:INSERT INTO 表名[(列名 1,列名 2,…)]VALUES(值 1,值 2,…)简单写法(不建议)INSERT INTO 表名 VALUES(值 1,值 2,…)注意:使用简单的写法必须按照表中的字段的顺序来

2021-01-10 11:44:06 11438 4

原创 Redis-Key

Redis-Key前言1、exists,move,过期时间expire,type前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的长征之路:阿里云的这群疯子1、exists,move,过期时间expire,type 127.0.0.1:6379> set name

2021-01-10 10:19:30 10488 2

原创 Redis冷知识

Redis冷知识前言1、Redis测试性能2、 基础的知识3、Redis为什么这么快4、Redis 为什么单线程还这么快?前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。1、Redis测试性能redis-benchmark 是一个压力测试工具!官方自带的性能测试工具!redis-benchmark 命令参数!序号选项描述默认值1-h指定服务器主机名127.0.0.12-p指定服务器端口63793-s指定服务器 soc

2021-01-10 09:38:33 10480 1

原创 Redis入门+NoSQL的四大分类

Redis入门+NoSQL的四大分类前言1、Redis入门1.1 Redis 是什么?1.2 Redis 能干嘛?1.3 Redis特性2、NoSQL的四大分类2.1 NoSQL2.2 NoSQL 特点2.3 3V+3高前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)云计算的

2021-01-10 09:04:47 10462

空空如也

空空如也

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

TA关注的人

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