自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiaolyuh的专栏

凡是过去,皆为序幕

  • 博客(415)
  • 资源 (53)
  • 收藏
  • 关注

原创 Nginx的常见应用

跨域处理跨域其实是浏览器对网站的一种保护机制,具体原理是,浏览器不允许通过ajax的方式去加载其他域名下的资源。跨域主要有两种解决方案:通过jsonp的方式,但是这种方式需要前后端公共协作完成。通过cors的方式来解决,这种方式w3c组织制定的一种解决方案。Nginx主要是通过cors方式来解决的,主要原理是:当发起非本域名下的ajax请求时,浏览器会先询问服务器是否允许该域名下的ajax请求,如果浏览器返回可以,那么这次请求就是被允许的,不会被拦截。nginx跨域配置server {

2020-05-15 15:14:59 1021

原创 Nginx基础

Nginx是俄罗斯人编写的一款高性能的HTTP和反向代理服务器,在高连接并发的情况下,它能够支持高达50000个并发连接数的响应,但是内存、CPU等系统资源消耗却很低,运行很稳定。Nginx的优势为什么选择Nginx?因为它具有以下特点:速度快,先天的事件驱动型设计、全异步的网络I/O处理机制、极少的进程间切换。扩展性强,它支持很多第三方模块。可靠性好,Nginx是基于多进程设计,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供

2020-05-11 10:40:20 520

原创 MySQL性能优化

MySQL性能优化主要考虑几个方面:CPU、内存、硬盘、操作系统、文件系统等。CPU数据库的应用类型一般可以分为OLTP(OnlineTransaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理。OLTP主要用来解决事务性应用,如银行交易,在线商品交易等,所以对CPU需求较低;OLAP一般需要执行复杂的SQL语...

2020-05-07 19:56:41 784

原创 MySQL高可用化

服务在运行过程中存在很多意外情况,如:如服务器宕机、磁盘损坏、RAID卡损坏等。如何保证数据库在服务发生意外的情况下数据不丢失呢?服务还能继续提供服务呢?我们一般通过备份的方式来解决数据丢失问题,通过复制来解决MySQL的高可用问题。备份备份的方法不同可以将备份分为:Hot Backup(热备,在线备份):在数据运行过程中进行备份,对数据库操作没有影响。Cold Backup(冷备,离...

2020-05-07 14:42:22 1984 1

原创 MySQL的日志类型

重做日志(redo log)作用重做日志用来实现事务的持久性,即事务ACID中的D。其由两部分组成:一是内存中的重做日志缓冲(redo log buffer),其是易失的;二是重做日志文件(redo log file),其是持久的。原理InnoDB是事务的存储引擎,其通过Force Log at Commit机制实现事务的持久性,即当事务提交(COMMIT)时,必须先将该事务的所有日志写入...

2020-05-06 18:18:30 743

原创 MySQL事务

事务是访问并更新数据库中各种数据的最小单元,在事务的操作中,要么都修改成功,要么都修改失败。它的主要目的是:将数据库从一个一直状态转换成另一种一直状态。事务的四个特性是:原子性(atomicity):原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。一致性(consistency):一致性指事务将数据库从一种状态转变为下一种一致的状态。...

2020-05-02 15:53:21 512

原创 MySQL索引原理

定义索引(Index)是帮助MySQL高效获取数据的数据结构。那么什么数据结构可以用来高效的获取数据呢?查看索引mysql> show index from user;+-------+------------+------------------+--------------+-------------+-----------+-------------+----------+--...

2020-04-23 11:00:14 466

原创 MySQL中各数据类型占用字节数

数字类型类型字节数TINYINT1 字节SMALLINT2 个字节MEDIUMINT3 个字节INT4 个字节INTEGER4 个字节BIGINT8 个字节FLOAT(X)4 如果 X < = 24 或 8 如果 25 < = X < = 53FLOAT4 个字节DOUBLE8 个字节D...

2020-04-22 10:01:23 7895 4

原创 InnoDB存储引擎

InnoDB体系架构后台线程分类Master Thread主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。Master Thread具有最高的线程优先级别。其内部由多个循环(loop)组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(suspendloop)。Master Thread会根据数据库运行的状态在loop、...

2020-04-21 09:21:54 332

原创 MySQL常见的存储引擎

查看存储引擎查看当前mysql所支持的所有存储引擎mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine ...

2020-04-20 11:36:59 246

原创 MySQL查询的执行过程

Mysql 的逻辑架构MySQL执行一个查询的过程如图:客户端发送一个查询给服务器。服务器先检查查询缓存,如果命中,则直接返回缓存中的结果。如果没有没有命中,则进入下一阶段(解析器)。服务器由解析器检查sql语法是否正确,然后由预处理器检查sql中的表和字段是否存在,最后由查询优器生成执行计划。这一步很耗资源。mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询。...

2020-04-20 10:00:16 434

原创 MySQL优化 - EXPLAIN

EXPLAIN是我们最常用的SQL分析工具,在使用工具之前我们需要先了解下工具中每一项代表的含义,如下是EXPLAIN中的所有列:mysql> explain select * from user u1 left join user u2 on u1.id=u2.id where u1.name='wyh';+----+-------------+-------+-----------...

2020-04-14 17:00:43 304

原创 Mysql 数据库压力测试工具 - MySqlSlap

MySQLSlap是从MySQL的5.1.4版引入的压力测试工具。该工具我们可以在Mysql的安装目录的bin目录里面找到,如C:\Program Files\MySQL\MySQL Server 5.7\bin>。名词解释TPS:Transactions Per Second(每秒传输的事物处理个数),这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标...

2020-04-11 16:56:02 642

原创 为什么表设计时必须把字段定义为NOT NULL并设默认值

空间占用的坑空’'在存储过程中是不会占用空间的,但是NULL会。就像一个杯子,空表示杯子是真空的,NULL表示装的空气。mysql> SELECT length('1'),length(NULL),length('');+-------------+--------------+------------+| length('1') | length(NULL) | length('...

2020-04-10 10:49:23 3408

转载 58到家MySQL军规升级版

转载 2018-03-30 58到家DBA 架构师之路一、基础规范表存储引擎必须使用InnoDB表字符集默认使用utf8,必要时候使用utf8mb4解读:通用,无乱码风险,汉字3字节,英文1字节utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它禁止使用存储过程,视图,触发器,Event解读:对数据库性能影响较大,互联网业务,能让站点层和服务层干的事情...

2020-04-10 09:43:51 293

原创 IDEA 插件开发遇到的坑

文档地址https://www.jetbrains.org/intellij/sdk/docs/basics/action_system.htmlhttps://v.youku.com/v_show/id_XNDQ4MjgzMTEwOA==.html?spm=a2hbt.13141534.app.55!25!2555!255!25!25!255!2Agradle需要使用 5.5.X 版本...

2020-03-31 15:07:40 4352 1

原创 Git分支管理实践 - MrtfGitFlow

Git分支管理实践 - MrtfGitFlow

2020-03-29 15:55:43 2783 1

原创 GitFlowPlus4Idea插件

插件是一款基于分支管理流程的Idea插件,它最主要的作用是用来简化分支管理流程,最大限度的防止误操作。主要功能如下:插件配置文件可以加入GIT版本管理,在团队内部共享;基于origin/master新建开发分支和修复分支;基于origin/master重建测试分支和发布分支;开发完成后将开发分支合并到测试分支;支持在本地发起Merge Request;测试完成后将开发分支合并到发布分支;发布完成后将发布分支合并到origin/master分支;

2020-03-27 21:11:28 5166 7

原创 Arthas 查看方法调用路径上的每个节点上耗时

文档:https://alibaba.github.io/arthas/githut:https://github.com/alibaba/arthas/blob/master/site/src/site/sphinx/index.md安装快速安装wget https://alibaba.github.io/arthas/arthas-boot.jar && java -j...

2020-03-18 10:12:27 5870

原创 Arthas watch 方法执行数据观测

watch 让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。参数说明watch 的参数比较多,主要是因为它能在 4 个不同的场景观察对象参数名称参数说明class-pattern类名表达式匹配method-pattern方法名表达式匹配express观察表达式condi...

2020-03-18 10:10:40 5786

原创 EasyCode 简介

EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件,主要通过自定义模板(基于velocity)来生成各种你想要的代码。通常用于生成Entity、Dao、Service、Controller。如果你动手能力强还可以用于生成HTML、JS、PHP等代码。理论上来说只要是与数据有关的代码都是可以生成的。使用文档https://gitee.com/makejav...

2020-03-13 14:23:24 3108 1

原创 深入理解JVM - 系统性能优化

系统性能优化并不是一上来就是JVM优化,相反JVM优化几乎是最后的手段了。影响一个系统的性能的因素非常多,如图:从服务本身来看,影响服务性能的主要包扣:我们写代码时所选择的数据结构和算法服务开启的线程时是否合理WEB应用,WEB服务JVM方面的影响最后是操作系统的影响从整个服务架构上来看还有:数据持久化服务间的远程调用消息缓存等中间件的选择常用的性能测试指标响应时...

2020-03-04 17:39:06 597

原创 深入理解JVM - JVM编译器

编译器类型编译器最终的目的是将我们写的源代码编译成机器能识别的机器码。 在JVM 中有三个非常重要的编译器,它们分别是:前端编译器、JIT 编译器和AOT编译器。前端编译器将源代码转化成字节码,如javac;我们一般称 javac 编译器为前端编译器,因为其发生在整个编译的前期。javac编译过程大致可以分为1个准备过程和3个处理过程,它们分别如下所示。准备过程:初始化插入式注解处理器,...

2020-03-04 14:45:50 795

原创 在RedisTemplate中使用scan代替keys指令

SCAN 简介SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):SCAN 命令用于迭代当前数据库中的数据库键。SSCAN 命令用于迭代集合键中的元...

2020-02-22 12:15:43 2367 4

原创 深入理解JVM - 方法调用

方法调用并不等同于方法中的代码被执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还未涉及方法内部的具体运行过程。一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(也就是之前说的直接引用)。解析所有方法调用的目标方法在Class文件里面都是一个常量池中的符号引用,在类加载的解析阶段,会将其中的一部分符号引用转化为直接引...

2020-02-19 16:50:48 394

原创 深入理解JVM - 类加载机制

类加载过程一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)七个阶段,其中验证、准备、解析三个部分统称为连接(Linking),如图:加载、验证、准备、初始化和...

2020-01-20 17:25:49 748

原创 深入理解JVM - Class类文件的结构

Class文件是Java虚拟机执行引擎的数据入口,也是Java技术体系的基础支柱之一。Class文件本质Class文件本质上是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。Class文件格式Class文件格式采用一种类似于C语言结构体的伪结构...

2020-01-18 17:44:43 477

原创 深入理解JVM - 虚拟机字节码指令集

常量入栈指令指令码操作码(助记符)操作数描述(栈指操作数栈)0x01aconst_null将 null推送至栈顶0x02iconst_m1将 -1(int)推送至栈顶0x03iconst_0将 0(int)推送至栈顶0x04iconst_1将 1(int)推送至栈顶0x05iconst_2将 2(int)推送至栈顶...

2020-01-18 14:43:12 538

原创 Docker加速器 DaoCloud

由于众所周知的原因,从Docker Hub难以高效地下载镜像。除了使用VPN或代理之外,最为有效的方式就是使用Docker国内镜像。DaoCloud是首个提供国内免费Docker Hub镜像的团体,可以使用DaoCloud团队提供的Docker Hub Mirror服务。Docker加速器简介Docker加速器是 DaoCloud 推出的 Docker Hub Mirror ...

2020-01-18 12:52:25 1092

原创 Spring 源码(十二)Spring 中核心的后置处理器

BeanFactoryBeanFactoryPostProcessor:BeanFactory后置处理器ConfigurationClassPostProcessor:解析配置类的BeanFactory后置处理器BeanBeanPostProcessors:Bean 初始化前后执行的后置处理器InstantiationAwareBeanPostProcessor:Bean实例化前...

2020-01-14 15:30:12 1119 1

原创 深入理解JVM - ZGC垃圾收集器

如果下面的一些概念有些不清楚的可以先看深入理解JVM - 垃圾收集器和深入理解JVM - Shenandoah垃圾收集器。ZGC(Z Garbage Collector)是一款由Oracle公司研发的,以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还...

2020-01-13 10:19:35 6021 3

原创 深入理解JVM - Shenandoah垃圾收集器

如果下面的一些概念有些不清楚的可以先看深入理解JVM - 垃圾收集器。Shenandoah是一款只有OpenJDK才会包含的收集器,最开始由RedHat公司独立发展后来贡献给了OpenJDK,相比G1主要改进点在于:支持并发的整理算法,Shenandoah的回收阶段可以和用户线程并发执行;Shenandoah 目前不使用分代收集,也就是没有年轻代老年代的概念在里面了;Shenandoah...

2020-01-11 12:45:09 2854 3

原创 深入理解JVM - 内存分配策略

对象优先在Eden分配对象优先在Eden分配,如果说Eden内存空间不足,就会发生Minor GC大对象直接进入老年代大对象:需要大量连续内存空间的Java对象,比如:很长的字符串和大型数组。大对象带来的副作用:当没有足够的连续空间来存放大对象的时候,就需要提前出发一次Full GC在内存回收过程中,会进行大量的内存复制-XX:PretenureSizeThreshold参数 ,...

2020-01-09 18:21:13 280

原创 深入理解JVM - 垃圾收集器

垃圾回收主要是要解决3件事情:那些内存需要回收?如何回收?什么时候回收?那些内存需要回收在强引用的情况下已经“死”了的对象就需要回收,在非强引用的情况下视情况回收。在java里面,几乎所有的对象实例都是在堆上分配,所以垃圾收集器第一件事情就是要判断堆上的这些实例那些是“死去”的,那些还“活着”。判断对象是否存活主要有两种算法,一种是“引用计数算法”,一种是“可达性分析算法”。“死...

2020-01-09 17:04:42 1112

原创 OkHttp 工具类

OkHttp 工具类/** * OkHttpClient工具 * * @author yuhao.wang3 */public abstract class OkHttpClientUtil { private static final Logger logger = LoggerFactory.getLogger(OkHttpClientUtil.class); p...

2020-01-07 16:36:36 793

转载 如何成为优秀的技术主管?你要做到这三点

转至:https://mp.weixin.qq.com/s/0LVj1IcWMWAuUeY6U7r4hg阿里妹导读:技术主管,又叫「技术经理」,英文一般是 Tech Leader ,简称 TL。随着工作经验的不断积累,能力的不断提升,每个人都有机会成为Team Leader。然而在机会到来前,我们必须提前做好准备,对TL的工作职责有一定了解。当然,这也会为当下更好地配合TL工作打下基础。今天,......

2020-01-03 14:30:38 656

原创 深入理解JVM - 内存溢出实战

Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,当对象数量到达最大堆的容量限制后就会产生内存溢出异常。最常见的内存溢出就是存在大的容器,而没法回收,比如:Map,List等。出现下面信息就可以断定出现了堆内存溢出。java.lang.OutOfMemoryError: Java heap space保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象...

2019-12-31 14:27:39 967 4

原创 深入理解JVM - JVM内存模型

各版本的比较程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存

2019-12-25 16:29:40 550

原创 StackOverflowError 栈溢出实战

栈溢出的原因在解决栈溢出问题之前,我们首先需要知道一般引起栈溢出的原因,主要有以下几点:是否有递归调用,循环依赖调用是否有大量循环或死循环全局变量是否过多局部变量过大,如:数组、List、Map数据过大问题现象我们一个很老的接口(近一年没有动过)在线上运行一段时间后报了StackOverflowError栈溢出,其他接口又能正常提供服务,错误日志:java.lang.Stack...

2019-11-28 11:37:47 2164 1

原创 Mybatis 源码(六)Mybatis-Spring框架实现原理

我在使用mybatis-spring过程中一直有一个疑问,在Mybatis 源码(一)总揽中我提到过,SqlSession和Mapper对象的声明周期是方法级别的,也就是每个请求的SqlSession和Mapper对象是不一样的,是一个非单例的Bean。但是与Spring集成后,为什么我们可以直接注入Mapper对象,如果通过直接注入的话Mapper对象却成了单例的了?我们带着疑问来看下Myba...

2019-11-28 11:35:47 369

五子连珠源码

五子连珠源码,用java写的附源代码,记得好评哦

2012-08-28

3630个网页小图标

3630个网页小图标,各类网页图标,非常全面

2012-08-28

Java编程思想第四版完整中文高清版

Java编程思想第四版完整中文高清版,非常棒的一本书

2012-08-28

大学生科研课题精选

大学生科研项目课题精选,没有参加过科研项目的同学可以看一下。

2012-08-25

汽车电子控制系统实例

汽车电子技术在汽车技术进步的过程中始终走在前列,汽油机电控喷射技术结合三元催化器、柴油机燃油喷射系统、自动变速器、智能可变气门正时和升程技术、混合动力技术等许多机、电、液紧密结合的技术使汽车和性能指标日益提高,特别是电子控制技术伴随着微电子工业的迅猛发展而迅速提高。

2012-08-25

CAN技术规范

这本技术规范的目的是为了在任何两个CAN仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现柔韧性,CAN被细分为以下不同的层次

2012-08-25

CAN总线驱动器

82C250是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用而设计的。器件可以提供对总线的差动发送和接收功能。

2012-08-25

互联网新技术

互联网新技术,互联网基础,移动和无线网络,记得好评哈

2012-08-25

java输入输出

java输入输出,java中的重难点详解,记得好评哦

2012-08-25

网站界面设计

网站界面设计基础,只有一部分,记得好评哦

2012-08-25

单片机试题

单片机试题,单片机试题题库,考试很有用的

2012-08-25

大学生科学研究课题

大学生科学研究课题申报书_范例,很详细的

2012-08-25

photoshope_中文版教程

photoshope_中文版教程,很不错的photoshope教程,记得好评哦

2012-08-25

LIN_技术规范

LIN_技术规范及在汽车中的应用,LIN技术详解

2012-08-25

Java编程实验报告

Java编程基础实验报告(样本) 仅供参考 记得好评哦

2012-08-25

JAVA_split_用法

JAVA_split_用法,split详解,记得好评哦

2012-08-25

java实现控台通信

基于UDP协议的java通信,java网络编程

2012-08-25

Eclipse 技巧

Eclipse应用技巧-代码模板功能。非常全面,记得好评哦

2012-08-25

CoreJava笔记

java笔记,一个非常适合初学者学习的java文档。记录java精髓

2012-08-25

16/32位微机原理、汇编语言及接口技术

16/32位微机原理、汇编语言及接口技术__钱晓捷_第2版_课后习题答案.doc

2012-08-25

consul_1.7.3_windows\mac\linux.zip

微服务,注册中心,consul 1.7.3 Windows,linux,mac版。官网下载:consul_1.7.3_XXX_amd64。官网下载速度很慢,我才在这里分享一个资源。

2020-06-02

git-flow-plus-4idea-1.0.7.zip

MrtfGitFlow4Idea插件是一款基于mrtf-git-flow分支管理流程的Idea插件,它最主要的作用是用来简化分支管理流程,最大限度的防止误操作。

2020-05-07

ScreenToGif.rar

Screen to Gif是一款方便可靠的gif动画录制软件,可以用来快速录制屏幕上的指定区域,将其直接保存为GIF动画文件。 官网:http://www.screentogif.com/?l=zh_cn#

2020-03-13

logback 中文手册

此中文手册为官网手册中文版 文档版本 0.1 发布日期 2010年4月23日 原作者 Ceki Gülcü、Sébastien Pennec 中文版译者 陈华 联系方式: [email protected] 陈华的论坛地址:http://www.iteye.com/topic/655136

2017-03-30

jquery cookie 中文文档

jquery cookie 中文文档 1.4.0版本。 http://plugins.jquery.com/cookie/

2013-12-25

jQuery api 1.8 中文版.chm

jQuery api 1.8 中文版.chm 最新版的 还是中文的哈

2013-08-16

spring-data-jpa-reference API

spring框架中的持久层框架,讲的很全面

2013-08-16

javamail1.4.7

java邮件开发jar包。包括一些例子在里面。

2013-06-27

java媒体开发JMF包含,帮助文档,安装配置文档,初级教程,安装包

java媒体开发JMF包含帮助文档安装配置文档初级教程安装包

2012-08-31

JAVA反射机制

有详细的讲解和案例,希望对您有帮助,记得好评哦

2012-08-31

mysql-5.0.75.tar.gz

mysql-5.0.75.tar.gz tar -zxvf mysql-5.0.75.tar.gz 就可以安装了

2012-08-26

Android深入浅出之Binder机制

Android深入浅出之Binder机制,讲解Binder非常详细

2012-08-26

Android从入门到精通.rar

Android从入门到精通.rar,一个非常不错的android教材,现在android很火的

2012-08-26

apache-tomcat-7.0.8.exe

apache-tomcat-7.0.8.exe ,和MyEclipse一起用非常稳定

2012-08-26

十天学会DIV+CSS(WEB标准

十天学会DIV+CSS(WEB标准),css样式表,加div布局,非常棒的一本书

2012-08-26

165个DIV_CSS网站模板源码.rar

165个DIV_CSS网站模板源码.rar,记得好评哦

2012-08-26

3G技术讲解(华为)

3G技术讲解(华为).pdf,是一个非常详细的讲解3G技术的书籍

2012-08-26

捕鱼达人源码

捕鱼达人源码,挺好玩的,如有不足敬请原谅

2012-08-25

java聊天室程序

java聊天室源码,是一个毕业设计,如有不足敬请原谅

2012-08-25

Microsoft_Web_Application_Stress_Tool

使用Microsoft_Web_Application_Stress_Tool对web进行压力测试

2012-08-25

空空如也

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

TA关注的人

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