自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

时光隧道

qq:2528877987,weixin:xutao13960699696

  • 博客(58)
  • 资源 (6)
  • 收藏
  • 关注

原创 【愚公系列】2022年01月 Docker容器 Dockerfile详解

什么是 Dockerfile?Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。使用 Dockerfile 定制镜像1、下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/

2020-10-31 17:06:20 288914

原创 【愚公系列】2022年01月 Docker容器 容器间相互通信

Docker容器连接相互通信端口映射并不是唯一把 docker 连接到另一个容器的方法。docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。容器命名当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器,例如:runoob@runoob:~$ docker run -d -P --name runoob training/webapp python ap

2020-10-31 16:25:45 289158

原创 【愚公系列】2022年01月 Docker容器 镜像的操作

查找镜像我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。 docker search httpd拖取镜像我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。dock

2020-10-31 10:46:40 288662

原创 【愚公系列】2022年01月 Docker容器 Docker运行web应用

运行一个 web 应用前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用 docker 构建一个 web 应用程序。我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。runoob@runoob:~# docker pull training/webapprunoob@runoob:~# docker run -d -P training/webapp python app.pyrunoob@runoob:~$ docker run -d -p

2020-10-31 09:04:35 289293 2

原创 【愚公系列】2022年01月 Docker容器 Docker和容器的交互

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。容器使用获取镜像如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:$ docker pull ubuntu启动容器以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:$ docker ru

2020-10-31 08:46:20 289218

原创 【愚公系列】2022年01月 Docker容器 Windows11安装Docker Desktop

Windows10安装Docker Desktop在Windows系统上安装Docker不再需要先安装虚拟机,然后在虚拟机上安装Linux系统,最后在虚拟机上的Linux系统安装Docker了。Docker for Windows的出现使得我们在Windows系统上使用Docker也非常的简单。如果是Win10以下的系统则需要安装Docker Toolbox,本文只介绍Win10环境下Docker Desktop的安装。对操作系统的要求Windows 10 64位:Pro,Enterprise或Ed

2020-10-30 10:10:14 292320 6

原创 【愚公系列】2023年01月 Docker容器 Ubuntu安装Docker

Ubuntu是比较流行的liunx开源系统,能够很好集成Dcoker,而且自带python,写脚本会方便很多。1、安装docker:sudo apt-get install -y docker.io2、启动docker服务:systemctl start docker3、设置开机启动:systemctl enable docker4、查看docker状态:systemctl status docker5、停止docker服务:systemctl stop docker。

2020-10-30 09:39:56 307402 2

原创 【愚公系列】2022年01月 Docker容器 基本架构

Docker 包括三个基本概念:镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。仓库(Repository):仓库可看成一个代码控制中心,用

2020-10-28 16:37:13 306117 1

原创 (精华)2020年10月28日 支付宝 ASP.NET Core 使用支付宝当面付之扫码支付

扫码支付简单介绍扫码支付是支付宝当面付中的一种支付方式,当面付包含条码支付、扫码支付、声波支付。扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商家展示在某收银场景下的二维码并进行支付的模式。该模式适用于线下实体店支付、面对面支付等场景。使用示例:1.某直播平台充值2.某视频网站开通vip扫码支付比传统的跳转网页支付方便快捷。业务流程:使用步骤:收银员在商家收银系统操作生成支付宝订单,并生成二维码;用户登录支付宝钱包,点击首页“付款-扫码付”或直接点击“扫一扫”,进入扫一扫界面;

2020-10-28 15:36:16 307927

原创 (精华)2020年10月28日 支付宝 ASP.NET Core 使用支付宝PC网站支付

前言支付宝有比较多的支付产品,比如当面付、APP支付、手机网站支付、电脑网站支付等,本次讲的是电脑网站支付。创建项目新建一个ASP.NET Core 3.1 MVC项目配置由于我在开发的时候支付接口并没有申请下来,所以使用的是支付宝沙箱环境来进行开发的。支付宝沙箱环境介绍:蚂蚁沙箱环境(Beta)是协助开发者进行接口功能开发及主要功能联调的辅助环境。沙箱环境模拟了开放平台部分产品的主要功能和主要逻辑,在开发者应用上线审核前,开发者可以根据自身需求,先在沙箱环境中了解、组合和调试各种开放接口,

2020-10-28 11:11:30 307578 6

原创 (精华)2020年10月28日 Grpc Grpc健康检查的实现方式

一:引言上一篇consul已经介绍了手动的健康检查实现方式,这边就不多说了二:健康检查实现不用手动创建 proto 文件,直接安装官方的现成组件,这里面包含了通过上面的标准 proto 文件生成的类。所以重写实现类就行了。通过 Nuget 安装 Grpc.HealthCheck然后添加一个实现类 HealthCheckService继承 HealthServiceImpl 最后重写方法,然后主要代码都适合上面一致的:public class HealthCheckService:HealthSe

2020-10-28 10:07:54 306212 1

原创 (精华)2020年10月28日 Grpc Grpc对接Consul服务注册发现

一. 前言gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍Consul。二. 注册GRPC服务与健康检查1.为服务端项目安装 nuget包NConsul.AspNetCore2.在 Startup 的 ConfigureServices方法内进行配置public void ConfigureServices(IServiceCollection serv

2020-10-28 10:03:11 305942

原创 (精华)2020年10月27日 微服务 Jenkins语言显示问题

一:下载对应的安装包到系统管理 插件管理中下载如下插件接口Localization: Chinese (Simplified)二:到系统管理Manage Jenkins下的Config System下,如下截图的位置去配置一下默认语言即可

2020-10-27 16:51:26 306486 1

原创 (精华)2020年10月27日 微服务 Windows上Jenkins安装及其配置

一:Jenkins安装1.官方下载地址:https://www.jenkins.io/download/2.war包安装:启动Jenkins命令,打开cmd至Jenkins安装目录下,运行命令 java -jar jenkins.war 如果改变默认端口,则指定端口例如端口号9080:java -jar jenkins.war --httpPort=9080。此种安装方式的Jenkins可以在Web容器(例如tomcat)中运行,作为持续性集成环境不推荐此种方法。3.msi安装包安装(这里采用此安装方

2020-10-27 16:45:29 306112

原创 (精华)2020年10月28日 Grpc Grpc身份认证和授权

一.引言本文主要讲 ASP.NET Core 本身的认证授权和gRPC接入,认证方式采用目前主流的 JWT 结合 IdentityServer4。二.服务端配置我们首先需要在服务端配置认证和授权。gRPC基于此文的Demo来开始:IdentityServer 基于此文Demo: https://www.cnblogs.com/stulzq/p/7509648.html 。配置1.首先启动 IdentityServer4 地址为:http://localhost:50002.为gRPC项目安装Jw

2020-10-24 14:43:32 307962

原创 (精华)2020年10月28日 Grpc Grpc拦截器的使用

一. 前言前面两篇文章给大家介绍了使用gRPC的入门以及双向流的使用,今天介绍的是gRPC中的拦截器。拦截器就像MVC的过滤器或者是ASP.NET Core middleware 一样,具有面向切面的思想,可以在调用服务的时候进行一些统一处理, 很适合在这里处理验证、日志等流程。本片文章就以记录日志为例来进行讲解。二. Interceptor 类介绍Interceptor类是gRPC服务拦截器的基类,是一个抽象类,它定了几个虚方法,分别如下:public virtual TResponse Bloc

2020-10-24 14:33:13 307859 1

原创 (精华)2020年10月28日 Grpc Grpc双向流调用

一.前言gRPC 支持双向流调用,支持实时推送消息,这也是 gRPC的一大特点,且 gRPC 在对双向流的控制支持上也是非常强大的。二. 什么是 gRPC 流gRPC 有四种服务类型,分别是:简单 RPC(Unary RPC)、服务端流式 RPC (Server streaming RPC)、客户端流式 RPC (Client streaming RPC)、双向流式 RPC(Bi-directional streaming RPC)。它们主要有以下特点:服务类型特点简单 RPC

2020-10-24 09:49:51 308982

原创 (精华)2020年10月28日 Grpc Grpc基本使用

一.简介List itemgRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。 gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建。它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议。它的主要优点:现代高性能轻量级 RPC 框架。约定优先的 API 开发,默认使用 Protocol Buffers 作为描述语言,允许与语言无关的实现。可用于多种语言的工具,以生成强类型的服务器和客户端。支持客户端,

2020-10-24 09:33:34 307851 1

原创 (精华)2020年10月24日 vue element-ui树形表懒加载数据无法更新问题

第一步:在element中得table加入:load=“load”<el-table :key="tableKey" v-loading="listLoading" :data="list" border fit highlight-current-row style="width: 100%" row-key="Id" @selection-change="onSelectChange

2020-10-24 08:24:37 307906

原创 (精华)2020年10月21日 设计模式案例 事件总线实现原理

EventBus实现原理#region{ // 1、创建事件总线 EventBus eventBus = EventBus.Instance; TeacherEventListener teacherEventListener = new TeacherEventListener(); eventBus.AddListener(teacherEventListener); Teacher teacher = new Teacher(); TeacherS

2020-10-21 16:30:09 341666

原创 (精华)2020年10月21日 设计模式案例 AspNetCore运行原理

AspNetCore运行原理#region{ // 完成一个请求 /*// 1、加载Controller EndpointRouteBuilder endpointRouteBuilder = new EndpointRouteBuilder(); endpointRouteBuilder.MapControllers();// 扫描所有Controller // 2、创建EndpointRoute EndpointRoute endpointRoute

2020-10-21 16:23:57 341844 1

原创 (精华)2020年10月21日 设计模式案例 .NetCore Middleware实现原理

Middleware使用#region Middleware使用{ // 1、创建IApplicationBuilder IApplicationBuilder applicationBuilder = new IApplicationBuilder(); applicationBuilder.UseAuthentication(); applicationBuilder.UseAuthorization(); applicationBuilder.UseExce

2020-10-21 16:10:49 341538 1

原创 (精华)2020年10月21日 设计模式案例 .NetCore Configuration的实现思路

使用#region Configuration使用{ // 1、创建ConfigurationBuilder对象 ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("app.json"); // 2、构建Configuration对象 Configuration configuration = confi

2020-10-21 16:00:59 341795

原创 (精华)2020年10月19日 设计模式案例 无极限菜单的实现(C#版)

定义菜单类/// <summary> /// 菜单信息 /// </summary> public class Menu { private string mu_id; //菜单编号 private string mu_name; //菜单名称 private string mu_parentid; //父菜单编号 private string mu_url; //菜单ur

2020-10-19 23:03:52 342651

原创 (精华)2020年10月19日 设计模式案例 手写IOC容器

定义IOC特性/// <summary>/// IOC类型过滤特性/// </summary>[AttributeUsage(AttributeTargets.Class)]public class IOCService :Attribute{ public IOCService() { }}/// <summary>/// IOC属性过滤特性/// </summary>[AttributeUsage(Attri

2020-10-19 22:41:20 342868 3

原创 (精华)2020年10月18日 高可用高并发 缓存的使用(HTTP缓存验证)

首先安装包Marvin.Cache.Headers配置public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void Configu

2020-10-18 23:01:01 344519 2

原创 (精华)2020年10月18日 高可用高并发 缓存的使用(Sqlserver)

首先安装缓存数据包dotnet tool install --global dotnet-sql-cache执行dotnet sql-cache create 数据库连接字符串 dbo 缓存数据表名称nutget 安装如下包Microsoft.Extensions.Caching.SqlServer配置public class Startup { public Startup(IConfiguration configuration) {

2020-10-18 22:10:33 344575 2

原创 (精华)2020年10月18日 高可用高并发 缓存的使用(Redis)

首先按装如下包Microsoft.Extensions.Caching.Redis配置public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } pub

2020-10-18 21:50:20 344852 5

原创 (精华)2020年10月18日 高可用高并发 缓存的使用(Cache)

配置缓存public class Startup{ public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) {

2020-10-18 21:46:26 345089 1

原创 (精华)2020年10月18日 数据库调优 分库分表底层详解(EFCore实现DbContext读写分离负载均衡)

首先下载如下包:Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.DesignMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.ToolsUser类 public class User{ public long Id { get; set; } public string Account { get; set; }

2020-10-18 20:37:08 345351 1

原创 (精华)2020年10月16日 数据库调优 分库分表底层详解(读写分离)

发布、订阅都在同一台服务器本地发布数据库SQLTEST、发布表user_info本地订阅数据库copy_for_sqltest一、配置分发配置分发是发布和订阅前的基础,没有分发库就不能完成。快照文件夹:可以使用默认的,也可以自己自定义(F:\My_Code\MSSQL_ReplData)分发数据库名称用默认的:distribution二、快照发布顾名思义,就像拍照片一样,发布服务器对你要同步的表数据做一张快照,快照的数据集保存在本地的快照文件夹。然后按照你设定的时间间隔向订阅服务器传输

2020-10-16 21:55:15 345619 2

原创 (精华)2020年10月16日 数据库调优 分库分表底层详解(分区)

数据库层面(表分区,读写分离)第一步:创建文件组,分别向文件组中添加文件use mastergo if exists(select * from sys.databases where database_id = DB_ID('Test'))drop database Test--1.创建数据库create database Test on(name =N'Test',filename=N'e:\test\test.mdf',size = 3MB,filegrowth = 1MB)log o

2020-10-16 21:45:14 345289

原创 (精华)2020年10月12日 高并发高可用 负载均衡

反向代理内容服务器的替身如果内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。代理服务器成为安全数据库和可能的恶意攻击之间又一道屏障。即便这道屏障打破,充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权

2020-10-12 23:57:13 354390 1

原创 (精华)2020年10月12日 高并发高可用 架构集群

高并发高科用角度架构演进单机应用(WebSite)渐渐的随着用户量的增加, 问题:一台服务器已经不够用了,服务器不稳定。挑战:高可用/高并发。 解决方式:于是我们将准备两台服务器搭成集群简单集群(WebSite)搭完集群之后,假如原来十个用户访问一台服务器,现在平均开,五个人访问上面的服务器,五个人访问另一个服务器。 用户的体验就会稍微好一点。好处:简单高可用,假如其中一台服务器挂了,是不影响用户访问的,因为用户可以访问另一台好的服务器问题:这样做有一个局限性,就是同时存在两个服务器,就会同时存

2020-10-12 21:52:58 364323

原创 (精华)2020年10月10日 高并发高可用 .NET实现持续集成与自动化部署(Jenkins实现测试环境到生产环境一键部署Windows系统)

前言:因为dotnet在发布站点后,然后再上传服务时,会因为各种的网速问题,导致站点瞬间挂掉!那么通过一键部署,先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后再本机进行文件替换,速度是相当的快,最终把影响降到最低。所用到的插件:文件复制插件,从master复制到slave:【Copy Data To Workspace Plugin】:https://wiki.jenkins-ci.org/display/JENKINS/Copy+Data+To+Workspace+Plu

2020-10-10 16:09:51 364722

原创 (精华)2020年10月10日 高并发高可用 .NET实现持续集成与自动化部署(使用NuGet.Server搭建公司内部的Nuget(包)管理器)

一、下载Nuget.Server从官方Nuget服务器上搜索nuget.server,点击项目url中的github路径。从github中下载nuget.server的源码。下载并解压后的文件路径如下图所示:二、搭建Nuget.Server打开项目文件NuGet.Server.sln,找到NuGet.Server,右键发布,选择文件系统(跟发布web程序一样,发布到IIS中)。IIS新建站点MyNuGet启动程序出现以下页面代表搭建成功注意:若点击here出现404页面如下图所示可

2020-10-10 16:03:44 364464 2

原创 (精华)2020年10月10日 高并发高可用 .NET实现持续集成与自动化部署(Jenkins的使用)

一、初识Jenkins由于之前亦没有相关知识的积累,因此也是对如何实现也是一头雾水。于是只能找度娘,关键字"自动化发布"。搜索到很多工具和方法,但都是以Java平台居多,.net平台相关资料不多。其中以Jenkins介绍较多,微软也提供一套自动化部署的方式,也有一些其他持续集成工具可以实现自动化的发布,但最终还是选择了Jenkins。主要有以下几个原因:代码开源、插件丰富完善、系统稳定社区活跃,成功实践和网上资源较为丰富安装配置简单web形式的可视化的管理页面1. Jenkins是什么Jenk

2020-10-10 15:54:23 365533

原创 (精华)2020年10月10日 高并发高可用 信息自动化

高可用/并发架构带来部署和运维挑战更多的服务器,更复杂的软件架构,更多的工作节点…… 更多的发布,部署,测试和运维挑战。问题:高可用和架构安全的关系持续发布/部署需求持续部署和持续发布[CI/CD]:复杂软件架构,往往带来更多的地面分层,更多的软件节点。系统的节点发布就会变得很麻烦。特别微服务 系统得持续发布,持续部署就是为了解决这些问题持续集成:强调开发人员提交了新代码之后,立刻进行构建、(单元)测试,根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起持续交付:是在持续集成

2020-10-10 15:28:38 364548

原创 (精华)2020年10月10日 高并发高可用 架构安全

常见的高可用/并发场景带来挑战问题:高可用和架构安全的关系常见的架构安全问题SQL注入SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。带内注入常见的tsql拼接或UNION ALL 推理SQL注入:非为了显示数据

2020-10-10 15:07:38 365673

原创 (精华)2020年10月8日 高并发高可用 分布式架构

什么是分布式架构单体分布式集群分布式的高可用搭建服务集群,提高负载,避免单点故障应对灾难,搭建异地灾备,预防地区因发生地震等自然灾害接口限流以及服务降级。为防止过高的并发量造成服务器负载过高而出现故障故障监控报警服务的可伸缩性,易于水平扩张服务器数量。使用缓存降低数据库压力使用CDN等加速静态资源的访问分布式能够给架构带来什么应用服务器集群:随着访问量的继续增加,单台应用服务器也无法满足需求了,我们就需要搭建应用服务器集群来对外提供服务了数据负载-读写分离主从数据库之间的数据需

2020-10-08 23:17:43 364865 2

ES和分词器相关包,注意版本要一致

ES和分词器相关包,注意版本要一致

2023-12-04

基于seate的saga案例源码

基于seate的saga案例源码

2023-12-02

手语猜一猜元服务卡片视频

手语猜一猜元服务卡片视频

2023-11-09

手语元服务demo案例

手语元服务demo案例

2023-10-30

Servlet服务器项目完整案例源码

Servlet服务器项目完整案例源码

2023-10-24

MVVM手写基础框架案例

MVVM手写基础框架案例

2023-09-04

CsGo并发流程控制框架

CsGo并发流程控制框架

2023-08-07

AstroCanvas-智慧充电桩-1-0-1684230939576.rar

AstroCanvas-智慧充电桩-1-0-1684230939576.rar

2023-07-04

智慧充电桩相关物模型文件

智慧充电桩相关物模型文件

2023-07-03

awvs15.0.22相关工具

awvs15

2023-04-20

Halcon车牌识别源码

Halcon车牌识别源码

2023-04-03

tomcat10的两个包

tomcat10的两个包

2023-03-25

EFCoreDemo-master.zip

EFCoreDemo-master.zip

2023-02-22

WPFMVVM.rar

WPFMVVM.rar

2023-02-18

Loki 轻量级日志可视化

Loki 轻量级日志

2022-12-19

小程序webgl-demo

小程序webgl-demo

2022-11-18

webGL matrix相关js

webGL matrix相关js

2022-09-10

attack-trace.pcap

流量包分析

2022-09-06

省市区三联动相关的json数据

省市区三联动相关的json数据

2022-08-31

20201214WPF上位机Course27MVVM基础架构实战.rar

WPF上位机MVVM手写基础框架源码

2021-10-03

redis-windows.zip

windows版本客户端和服务端redis

2021-07-05

skywalking.zip

链路监控工具

2021-06-02

FinalShell.zip

FinalShell

2021-06-02

jmeter压测工具环境配套.zip

jmeter压测工具和jdk8

2021-06-01

ILSpy_binaries_5.0.0.5124.zip

ILSpy反编译工具

2021-05-22

空空如也

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

TA关注的人

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