自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (3)
  • 收藏
  • 关注

原创 AS400编译器伪指令

1、/FREE 编译器伪指令指定自由格式计算规范块的开始。(自由格式) /END-FREE 指定快的结束2、/COPY (固定格式) b编译器伪指令导致在所编译的文件内的伪指令出现位置插入来自其它文件的记录。 不会打印在编译器列表中,而是将所指定文件的内容替换。赋值的所有文件都出现在编译器列表的COPY成员表中。...

2019-11-20 11:29:42 287

原创 消息队列MQ

MQ的使用,说说为什么使用MQ?优缺点是什么消息队列,即MQ,Message Queue消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。消息队列的主要作用:1.异步处理 例如用户完成注册 ·第一种方式-...

2019-08-26 21:14:00 146

原创 redis简介

redis是C语言编写的一个高性能的键值存储的非关系型数据库非关系型数据库的优点与缺点:非关系型数据库也叫NoSQL(not only sql)优点:可以轻松地处理海量数据缺点:1.没有主外键,则数据关系不能一目了然2.没有强大的事务来支持,那么数据就相对来说不安全3.不支持sql,不能进行复杂的查询redis存储是键值对key-value(map)redis数...

2019-08-19 20:17:15 118

原创 vsftpd文件上传代码演示

1.创建一个maven-webapp项目2.修改pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...

2019-08-19 19:45:30 277

原创 vsftpd的安装与nginx的安装

在Linux中安装1.打开Linux虚拟机,登录2.注释或去掉源虚拟机eth0所在的行信息:修改 vim /etc/usdv/rules.d/70-persistent-net.rules 注释第一句 将第二句的eth1 改为eth03.开启:start_udev4.修改网络配置文件vim /etc/sysconfig/network-scripts/ifcfg-eth0...

2019-08-14 21:18:37 120

原创 vsftpd与Nginx简介

vsftpd:是一款遵循FTP协议的FTP服务端程序,是Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用;不支持分布式;FastDFS与HDFS:分布式的文件程序,支持分布式,安装繁琐,大大占用服务器的资源FTP:file Transfer Protocal文件传输协议文件上传方式1.传统方式 (1)并发量小、用户少 (2)并发量高、用...

2019-08-14 20:44:36 448

原创 java面试题--String、StringBuffer、StringBuilder的联系区别

Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder相同点: 1.Java的核心类,String位于java.lang包中 1.都可以储存和操作字符串,同时三者都使用final修饰,都属于终结类不能派生子类,都是final类,不允许被继承,操作的相关方法也类似例如获取字符串长度等; 2.底层...

2019-08-13 08:52:12 151

原创 内部类的作用

内部类:定义在另一个内部的类;当一个类仅仅为另一个类服务,不希望其他任何类使用,那么可以作为内部类内部类分类:1.成员内部类2.静态成员内部类(特殊的成员内部类)3.局部内部类4.匿名内部类(特殊的局部内部类) 基本特征 (1)内部类可以直接访问外部类的成员 (2)外部类不可以直接访问内部类的成员,必须先创建对象再使用 (3)外部类只能用publ...

2019-08-12 15:49:05 115

原创 面试题--final、接口和抽象类的区别和联系

final1.final 修饰变量、成员变量值不能再变化,final修饰引用类型变量,栈内存中的引用不能改变,但所指向的堆内存中的对象属性值,仍在变化;2.final修饰方法,不能被子类重写3.final修饰类,不能有子类4.final不能修饰构造方法5.java中提供了一些final常量,方法:Math、System、String、StringBufferArrays:不...

2019-08-12 14:52:43 221

原创 Java面试题---static 关键字的作用

总的来说:1.static是java中的一个关键字,单词本身是静态的含义2.使用static修饰的成员称为静态成员,是属于某个类的;而不使用static修饰的称为实例成员,是属于类的每个对象的。3.一个类的成员包括成员变量、执行方法、构造方法、代码块和内部类,static可以修饰除了构造方法以外的所有成员。下面对其进行详细的介绍:1.static修饰变量 static属...

2019-08-12 10:23:27 825

原创 Maven简介

Maven是一个跨平台的项目管理工具。使用java语言开发(Maven 3.3+ require jdk 1.7 or above to execute)Maven有两大功能:依赖管理 项目构建依赖可以理解为jar包项目构建包括以下几个环节:清理 编译 测试 报告 打包 安装 部署清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备编译:将java源...

2019-08-10 10:02:45 163

原创 Linux 中常用软件的安装

1. JDK的安装1.1 准备工作:安装依赖的环境 直接复制过去执行就好 yum -y install glibc.i686 yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 yum -y install gcc-c++ yum...

2019-08-08 20:52:02 133

原创 Linux常用命令

1.cd 切换目录2. ll(ls)显示子目录 ll:可以查看文件类型(以一个为例)- rwx r-- r-- 1 root mysql 1551 May 17 2016 mysqladmin文件类型(“-”:普通文件;“d”:文件夹)下面每三个为一组:rwx:可读可写可执行 “-”:指的是没有该...

2019-08-08 20:45:17 99

原创 Linux 简介

Linux概念:是一个源于Unix的开源免费的操作系统。 特点:免费、安全、强大VMware是一款虚拟机软件,通过该软件安装虚拟机虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。首先要进行网络配置1.确保虚拟网卡已启动2.确保虚拟机服务都启动3.修改网络配置文件(vi /etc/sysconfig/network-scripts...

2019-08-08 20:19:11 103

原创 springmvc 文件上传及下载

springmvc中文件上传和下载文件上传1.导入相应的jar包2.在springmvc配置文件中添加(注册注解驱动,注册文件上传解析器(MultipartResolver,可以设置上传文件大小范围(maxUploadSize)以及解决中文乱码问题(defalutEncoding)))<!--设置组件扫描器--> <context:component...

2019-07-25 09:31:55 103

原创 SpringMVC 请求转发与重定向

详细的转发与重定向的描述请看:https://blog.csdn.net/qq_43907358/article/details/97030984springmvc中默认的是请求转发,这两种书写形式都可以 mv.setViewName("forword:/WEB-INF/success.jsp");// mv.setViewName("/WEB-INF/success.j...

2019-07-25 09:13:42 160

原创 SpringMVC中处理器的返回值

SpringMVC中处理器的返回值1.ModelAndView 之前的博客中有相关内容(既可以传参又可以进行视图跳转)2.String(返回的是视图资源,也可以进行传参) @Controller public class LoginController{ @RequestMapping("/login.do") //返回类型:String适合视图跳转 ,同时也可以...

2019-07-25 08:55:08 141

原创 转发和重定向的联系和区别

页面跳转有两种形式请求转发(request.getRequestDispatcher("").forward(request, response);)(例如呼叫转移)1.转发只是在服务器端对同一个request进行传递,没有产生其它请求,转发的操作,浏览器并不知道2.只有一个请求,因此跳转前后,可以共享保存在request的数据3.转发操作,浏览器并不知道,所以地址栏是转发之前的地...

2019-07-23 21:36:34 489

原创 HTTP HTTPS原理及流程

HTTP,用于约束信息在网络中的传播HTTP约束的查看分为两个部分:请求部分相关信息请求行:请求方式 请求路径 协议版本号请求头:客户端浏览器要告诉服务器的一些信息,name:value的形式User-Agent:代表客户端浏览器的类型Referer:当前请求是由那个页面发出的请求实体:请求过程中携带的数据响应部分相关信息- 响应行:协议版本号 响应状态码 ...

2019-07-23 20:09:43 248

原创 SpringMVC接收请求参数时的中文乱码问题

SpringMVC接收请求参数时的中文乱码问题在web.xml中注册字符编码过滤器(其中有两个参数需要设置encoding和forceEncoding)在过滤器底层代码中有一个方法doFilterInternal()其中if语句的判断中只要将forceEncoding设置为true(默认的是false),才能够保证中文乱码问题的解决,只需要在web.xml中设置编码就好,其它地方一律不需要;...

2019-07-22 21:34:34 547

原创 SpringMVC接受请求参数方法

SpringMVC接受请求参数方法逐个接收(参数需要和请求的参数保持一致,如果不一致需要用注解@RequestParam(“”)进行矫正) @Controller public class LoginController{ @RequestMapping("/login.do") //逐个接收假如参数和请求的不一致在相应的参数前面加@RequestParam...

2019-07-22 21:28:29 101

原创 SpringMVC 中处理器方法常用的参数

SpringMVC 中处理器方法常用的参数HttpServletRequestHttpServletResponseHttpSession用于承载数据的Model、Map、ModelMap请求中所携带的请求参数

2019-07-22 21:11:06 293

原创 SpringMVC的注解式开发

SpringMVC的注解式开发导入jar包2.后端控制器无需实现接口,在类体上添加相应的注解@Controller,方法上添加@RequestMapping(“访问的路径”),基本数据类型会自动转换,不需要人为转,@RequestMapping也可放在类体上,指的是命名空间用来限定范围; //后端控制器 @Controller public class LoginContro...

2019-07-22 21:08:01 157

原创 SpringMVC的配置式开发

SpringMVC的配置式开发导入jar包配置web.xml(注册一个前端控制器DispaterServlet,注意路径里面不能写“/*”,springmvc配置文件路径(contextConfigLocation)和名称的设置) <!--注册前端控制器(中央调度器)DispatcherServlet 路径不能是/*--> <servlet> ...

2019-07-22 20:49:13 129

原创 SpringMVC工作原理

SpringMVC是spring框架的一部分(子框架),是实现对Servlet技术进行封装。SpringMVC工作原理图:详细的工作流程:用户向服务器发送请求,请求被**SpringMVC中央调度器(前端控制器)**DispaterServlet捕获;DispaterServlet对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用处理器映射器HandlerMa...

2019-07-22 20:24:41 106

原创 Java面试题--写出java.lang.Object类的六个常用方法及其作用

1.public boolean equals(java.lang.Object) 比较对象的地址值是否相等,如果子类重写,则比较对象的内容是否相等;2.public native int hashCode() 获取哈希码3.public java.lang.String.toString() 把数据转变为字符串4.public final native java.lang.Clas...

2019-07-20 15:44:24 2391

原创 private/默认/protected/public权限修饰符的区别

private/默认/protected/public权限修饰符的区别类的成员有四个修饰符修饰public 公共的 可被项目中所有的类访问(项目可见性)protected 受保护的 可以被这个类本身访问;同一包中的所有其他的类访问;被它的子类(同一个包以及不同包中的子类)访问。(子类可见性)default 默认的被这个类本身访问;被同一包中的类访问。(包可见性)p...

2019-07-20 15:11:55 242

原创 Java 类和对象

类是对象的抽象,而对象是类的具体事例。类是抽象的,不占内存,而对象时具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。类和对象好比图纸和实物的关系,模具和铸件的关系。比如人类就是一个概念,人具有身高、体重等属性。以及可以吃饭说话等方法。**类分两大类:** 自定义类:Test.... 系统类:String System .....

2019-07-20 14:42:15 97

原创 面向过程和面向对象

两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。面向过程事物比较简单,可以用线性的思维去解决面向对象事物比较复杂,使用简单的线性思想无法解决面向过程和面向对象都是解决实际问题的一种思维方式二者相辅相成,并不是对立的;解决复杂问题通过面向对象便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统,具体到微观操作,仍然使用面向...

2019-07-20 14:05:04 178

原创 Java 可变参数

用一个简单的计算器实现加法运算来说明可变参数多个数相加的时候可以采用数组做形参,但是实参需要先放入到数组中用可变参数来实现更简单 方便1.可变参数语法 … jdk1.5增加的内容2.可变参数的好处:简单 方便 直观 减少方法重载的数量3.可变参数只能做方法的形参4.可变参数的实参可以是0个、1个、多个,也可以是一个数组5.一旦定义了可变参数,就不能定义数组参数6.在方...

2019-07-20 11:22:38 121

原创 Java 数组

数组是相同类型数据的有序集合1.数组的创建方式:静态创建:在创建数组时,同时初始化数组中的元素(静态创建数组时,数组的声明和创建必须在同一行)数据类型 [ ] 数组名={元素1,元素2,…}int [] a={1,2,3,4,5,6}动态创建:在创建数组时,交给Java自动给数组元素做初始化,我们仅仅规定数组的长度即可;(引用类型的数组初始值是null,Boolean是false)...

2019-07-20 11:08:15 60

原创 break、return、continue跳转语句

break、return、continue跳转语句1.break:跳出switch语句跳出循环语句(对于for循环)break后不会进行循环条件的判断;2.return:结束当前方法,跟循环无关;3.continue:提前结束本次循环,而不是结束当前循环,continue只能在循环中使用;...

2019-07-20 10:31:20 114

原创 switch条件变量的取值类型

switch条件变量的取值类型switch多分支选择结构只适合等值判断,不适合区间判断,因此支持byte、short、int、char、JDK1.7开始支持String类型;不支持long、float、double、boolean不确定的精度,不能进行等值判断...

2019-07-20 10:29:36 2190

原创 Java基础面试题2--“&”与“&&”联系与区别

&和&&区别和联系,|和||区别和联系;实际项目中,什么样情况用哪种联系:都是Java中的逻辑运算符,它们的运算规则相同,运算结果相同;区别:1.“&”无论任何情况,“&”两边的表达式都要参与计算;“&&”左边是表达式是false时,则不会计算右边的表达式。性能高,在实际开发中使用更多。2.“&&”可以做位运算符,“...

2019-07-20 10:27:35 191

原创 Java基础面试题---Java的跨平台原理

Java跨平台原理1.不同的硬件平台最终执行的是机器码,不同平台的机器码是不同的2.java源程序(.java文件)先编译成字节码文件(.class文件),由于字节码文件格式独立,不面向任何具体的平台,只面向虚拟机;因此将字节码文件解释成对应平台机器码并执行;3.Java虚拟机是可运行Java字节码文件的虚拟计算机,不同平台的虚拟机是不同的,但它们都提供了相同的接口。4.Java具有一次...

2019-07-20 10:08:42 360

原创 Spring+Mybatis+servlet的整合

问问

2019-07-20 09:13:47 855

原创 Spring与Mybatis的整合

首先Spring和Mybatis整合,需要将两个对象交给spring容器管理:SQLSessionFactoryBean和mapper代理配置式1.spring配置文件,相应的mybatis中只需要注册映射文件就好<!--加载jdbc属性文件--> <context:property-placeholder location="jdbc.properties"/&g...

2019-07-19 21:32:25 73

原创 Spring的事务管理

Spring的事务管理List item

2019-07-19 21:18:41 78

原创 AOP的实现

spring对AOP的实现(只有配置式)前置通知(MethodBeforeAdvice)后置通知(AfterReturingAdvice)环绕通知(MethodInteceptor)异常通知(ThrowsAdvice)首先要导入支持AOP的两个jar包定义目标类public class SomeServiceImpl implements IsomeService { ...

2019-07-19 09:22:07 126

原创 Spring的AOP原理,及其关键名词概念

AOPAspect Oriented Programming,是一种编程思想,是面向对象编程OOP的补充,很多框架都实现了对AOP编程思想的实现;AOP就是将交叉业务逻辑封装成切面,利用AOP容器的功能将切面织入到主业务逻辑中。交叉业务逻辑指的是通用的、与主业务逻辑无关的代码。如安全检查、事务、日志等。首先定义一个主业务接口 IsomeService ,定义了两个目标方法doSome()和...

2019-07-18 08:55:48 292

ssm-parent.rar

一个maven入门的简单聚合项目,主要来说明maven之间的关系:依赖 继承 聚合

2019-08-10

spring-19-mybatis-xml.rar

对spring和mybatis整合的简单实现---购买基金源代码。

2019-07-19

数据库测试test.sql

package com.bjsxt.servlet; import com.bjsxt.entity.User; import com.bjsxt.service.UserService; import com.bjsxt.service.impl.UserServiceImpl; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; import java.net.URLEncoder; import java.sql.Date; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class UserServlet extends BaseServlet { // @Override // protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // //解决POST表单的中文乱码问题 // request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if("login".equals(methodName)){ // this.login(request,response); // }else if("register".equals(methodName)){ // this.register(request,response); // }else if("logout".equals(methodName)){ // this.logout(request,response); // } // // } public void show(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取表单的数据 String userId = request.getParameter("userId"); if(userId == null){ userId = ""; } String strAge = request.getParameter("minAge"); int minAge = 0; try{ minAge = Integer.parseInt(strAge); //"12" "abc" }catch(NumberFormatException e){ e.printStackTrace(); } //调用业务层完成查询操作 UserService userService = new UserServiceImpl(); //List<User> userList = userService.findAll(); List<User> userList = userService.find(userId,minAge); //List<User> userList = null; //List<User> userList = new ArrayList<User>(); //跳转到show.jsp显示数据 request.setAttribute("userId",userId); request.setAttribute("minAge",strAge); request.setAttribute("ulist",userList); request.getRequestDispatcher("/admin/show.jsp").forward(request,response); } public void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //结束当前的session request.getSession().invalidate(); //跳转回登录页面 response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); } public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //request.setCharacterEncoding("utf-8"); //1.接收来自视图层的表单数据 String userId = request.getParameter("userId"); String realName = request.getParameter("realName"); String pwd = request.getParameter("pwd"); String rePwd = request.getParameter("repwd"); int age = Integer.parseInt(request.getParameter("age"));// "23" String [] hobbyArr = request.getParameterValues("hobby"); String strDate = request.getParameter("enterDate");//"1999-12-23" Date enterDate = Date.valueOf(strDate); //util.Date SimpleDateFormat //判断两次密码是否相同 if(pwd == null || !pwd.equals(rePwd)){ request.setAttribute("error","两次密码必须相同"); request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString(hobbyArr),enterDate); UserService userService = new UserServiceImpl(); int n = userService.register(user); //3.根据结果进行页面跳转 if(n>0){ response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); }else{ request.setAttribute("error","注册失败"); request.getRequestDispatcher("/admin/register.jsp").forward(request,response); } } public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解决POST表单的中文乱码问题 //request.setCharacterEncoding("utf-8"); //获取用户名和密码 request 内建对象 请求 String username = request.getParameter("username"); String password = request.getParameter("password"); String rememberme = request.getParameter("rememberme"); //调用下一层判断登录是否成功,并返回结果 //进行服务器端的表单验证 if(username ==null || "".equals(username)){ request.setAttribute("error","用户名不能为空JSP"); request.getRequestDispatcher("/admin/login.jsp").forward(request,response); return; } if (username.length()<=6){ request.setAttribute("error","用户名长度必须大于6JSP"); request.getRequestDispatcher("/admin/login.jsp").forward(request,response);//后面语句还会执行 return; //后面的语句不再执行 } // boolean flag = false;//默认失败 // if(username.indexOf("sxt")>=0 || username.contains("尚学堂")){ // flag = true; // } User user = null;//默认登录失败 // UserDao userDao = new UserDaoImpl(); // user = userDao.find(username,password); UserService userService = new UserServiceImpl(); user = userService.login(username,password); //userService.addOrder("shoppingCart"); //输出结果 if(user != null){ //登录成功才记住我 //1.办理会员卡 String username2 = URLEncoder.encode(username,"utf-8"); Cookie cookie1 = new Cookie("uname",username2); Cookie cookie2 = new Cookie("password",password); //2.指定会员卡的作用范围,默认范围是当前目录 /servlet/LoginServlet /admin/login.jsp //cookie1.setPath("/"); //当前服务器 cookie1.setPath("/myservlet2/"); //当前项目 cookie2.setPath("/myservlet2"); //3.指定会员卡的作用时间 if("yes".equals(rememberme)){ cookie1.setMaxAge(60*60*24*10); //默认的时间浏览器不关闭的时间;-1 表示一直有效 cookie2.setMaxAge(60*60*24*10); }else{ cookie1.setMaxAge(0); cookie2.setMaxAge(0); } //4.将会员卡带回家 response.addCookie(cookie1); response.addCookie(cookie2); //成功跳转到成功页面 //out.println("登录成功"); // /servlet/LoginServlet // /servlet/success.jsp // request.getRequestDispatcher("/admin/success.jsp").forward(request,response); HttpSession session = request.getSession(); // session.setAttribute("username",username); session.setAttribute("user",user); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect("https://www.bjsxt.com:443/news/11377.html"); //response.sendRedirect("http://localhost:8080/myservlet2/admin/success.jsp"); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect(request.getContextPath()+"/admin/success.jsp"); //http://192.168.58.250:8080/myservlet2/servlet/LoginServlet //http://192.168.58.250:8080/myservlet2/admin/success.jsp //登录成功后,网站的访问人数+1 //1.获取当前的访问人数 ServletContext context = this.getServletContext(); Integer count2 = (Integer) context.getAttribute("count"); //2.人数+1 if(count2 == null){ //第一个用户 count2 = 1; }else{ count2++; } //3.再存放到application作用域中 context.setAttribute("count",count2); //http://192.168.58.250:8080/myservlet2/servlet/admin/success.jsp response.sendRedirect("../admin/success.jsp"); }else{ //失败跳转回登录页面 //out.println("登录失败"); request.setAttribute("error","用户名或者密码错误"); // RequestDispatcher rd = request.getRequestDispatcher("/admin/login.jsp"); // rd.forward(request,response); //RequestDispatcher rd = request.getRequestDispatcher("http://localhost:8080/myservlet2/admin/login.jsp"); //RequestDispatcher rd = request.getRequestDispatcher("/admin/login.jsp"); //http://192.168.58.250:8080/myservlet2/servlet/admin/login.jsp RequestDispatcher rd = request.getRequestDispatcher("../admin/login.jsp"); rd.forward(request,response); } } }

2019-06-26

空空如也

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

TA关注的人

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