自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青椒*^_^*凤爪爪的博客

总结,是一种很有效的学习方式。≧◔◡◔≦ 有志者、事竟成,破釜沉舟,百二秦关终属楚;苦心人、天不负,卧薪尝胆,三千越甲可吞吴。

  • 博客(99)
  • 资源 (14)
  • 收藏
  • 关注

原创 一种简单安全的消息队列的C语言解决方案

基于嵌入式编程,对于有安全等级要求的项目,一般都会对编码有诸多安全性考虑的规则限制。在实际的编程中,消息队列的使用还是比较频繁的,但是对于不使用操作系统的情况下,消息队列相关的功能就需要手动实现。下面将会介绍一种简单的、安全的消息队列的实现方式。

2024-09-28 00:15:00 996

原创 Linux下递归设置目标目录及其子目录和文件的权限

本文旨在简单介绍一个在Linux环境下批量修改目录及其子目录和文件的权限的方法。

2024-08-31 23:00:00 373

原创 共享服务器chfs(CuteHttpFileServer)搭建

本文旨在简单介绍一个在Linux环境下轻量级的文件共享服务器chfs(CuteHttpFileServer) 的简单用法,权作为记录以便后续再次使用。

2024-08-12 23:15:00 1598

原创 Win环境下一种提高延时精度的方法 --- 100ms的延时改进(CPU低)

win环境下一种提高延时精度的方式,仅作为参考。

2023-08-26 10:40:25 546

原创 Linux -- Ubuntu 修改Home目录下的中文目录为英文

在安装Ubuntu系统时如果选则了中文安装系统,则在安装完成后默认在home目录下自动创建几个常用的目录,并且目录名称自动选择为安装系统时选择的语言。界面上操作回方便使用,但是如果在终端上操作就会很感到很忧伤,因为你需要在终端敲入中文(Ubuntu 16.04终端支持中文输入,Ubuntu 14.04也可以,(博主自己为ubuntu 18.04也可)但具体在哪一个版本开始支持的就不了解了),这种输入方式会让人极度不习惯。

2022-10-24 20:30:31 4963 4

原创 Linux系统下基于setitimer的高精度嵌入式软件定时器实现方案

基于上一篇博文Linux环境下的setitimer的延时/定时器的使用,我们已经了解定时器 setitimer setitimer 在同一个进程中只能使用一个的缺点,作为一个嵌入式的开发人员总觉得有点说不出的苦恼,那么本博文将基于这种力不从心的苦恼,编写一个满足基本要求的软件定时器。...

2022-07-02 22:39:27 1787

原创 Linux环境下搭建本地git服务和客户端(超级详细)

本文主要说明在本地电脑上部署git服务器和客户端的过程。设置的过程详细的令人发指,如果是初学或者不熟悉git的相关指令的话,那么本文将会是最优的指导

2022-06-19 22:37:55 3181 1

原创 利用VS2010生成win32和win64的动态库的方法(详细图文说明)

利用VS2010生成win32和win64的动态库的方法,用超级详细的步骤加上图片示意,说明动态库的生成与测试的完成的详细的过程,非常适合新手尝试。

2022-06-16 22:14:17 3467

原创 Linux环境下的setitimer的延时/定时器的使用

在linux C嵌入式开发编程中,经常会遇到精度要求比较高的周期性的定时事件,对于一般性要求 1ms 级别的精度,linux下可以使用 select() 函数实现,但是 select() 有一个弱点就是其 定时的误差会累积,运行到一定程度的时候,实际误差可能已经超出了允许的范围,那么在这种情况,setitimer() 函数可以解决误差累积这样的问题。...

2022-05-22 22:43:43 5566

原创 Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录

makefile进行项目管理,进行多目录文件编译、编译过程中自动生成编译目录、自动搜所当前目录下的所有源文件、生成静态库、合并静态库、静态库中函数的交叉调用等。根据一个比较特殊的需求而编写的一个工程模板,内容比较杂单没有进行系统性的解释说明。

2022-05-15 22:18:48 9270 5

原创 Linux系统自己打造的vim配置文件(自用)

做嵌入式开发,经常能够在一些新的环境下配置各种各样的环境,做为默认使用的编辑器,VIM非常重要,但是每次都要折腾来折腾去的配置,所以今天特意记录一下,方便后续直接使用。

2022-05-13 21:48:14 604

原创 Linux环境设置用户自定义应用的开机自启动

做 Linux 嵌入式开发,经常会遇到要设置自己的应用程序在系统开机的时候自动启动,并且一般情况我们不想安装一些额外的软件去实现此种需求。那么直接根据当前系统自带的默认的一些工具实现用户软件的开机自启动。

2022-05-09 22:37:23 7220

原创 C#实现 -- 自动获取剪贴板的文字并且自动发送

自动发消息的一个工具:模拟 Ctrl + V 粘贴,然后 模拟 回车 按键将消息发送。

2022-05-02 23:29:17 1450

原创 markdown中让表格居中的写法

示例表格序号偏移说明10表格说明22表格说明34表格说明实现的代码是下面这样的。<!-- 让表格居中显示的风格 --><style>.center { width: auto; display: table; margin-left: auto; margin-right: auto;}</style><p align="center"><font fac..

2022-04-21 22:07:56 14188

原创 Linux -- 多线程编程之 - 基础实现二

为了进一步减少处理器的空转时间,支持多处理器以及减少上下文切换的开销,进程在演化中出现了另一个概念 --- 线程,它是进程内独立的一条运行路线,是内核调度的最小单元,也被成为轻量级进程。线程具有高效性和可操作性,在嵌入式发开中运用的十分广泛。

2022-03-17 23:11:10 6554

原创 Linux -- 多线程编程之 - 基础实现一

为了进一步减少处理器的空转时间,支持多处理器以及减少上下文切换的开销,进程在烟花中出现了另一个概念 --- 线程,它是进程内独立的一条运行路线,是内核调度的最小单元,也被成为轻量级进程。线程具有高效性和可操作性,在嵌入式发开中运用的十分广泛。

2021-12-27 22:42:13 5216 1

原创 Linux -- 多进程编程之 - 守护进程的出错处理

因为守护进程完全脱离终端控制,所以不能像其它进程一样将错误信息输出到控制终端。所以如何处理错误消息是一个问题。在Linux系统中,一般通用的办法是使用syslog服务,将程序中出错信息输入到系统日志文件中(如"/var/log/messages",此文件需要用用root权限的用户查看),从而可以直观地看到程序的问题所在。在不同的Linux发行版中,系统日志的文件路径全名可能有所不同(比如可能是"/var/log/syslog")。

2021-12-05 21:53:40 6366

原创 Linux -- 多进程编程之 - 守护进程

守护进程是一个生存期较长的进程,他常常在系统引导装入是启动,仅仅在系统关闭的才终止。也就是通常所说的 Daemon 进程,是 Linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 Linux 中很多系统服务都是通过守护进程实现的。

2021-11-27 23:37:31 7258

原创 Linux -- 多进程编程之 - 僵尸进程

僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。

2021-11-13 23:53:34 5673 4

原创 Linux -- 多进程编程之 - 基础实现、孤儿进程

在Linux 中创建一个新进程的方法是使用 fork()函数。

2021-11-06 23:01:21 7117

原创 Linux -- 多任务机制(任务、进程、线程)介绍

多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。 Linux就是一个支持多任务的操作系统,多任务操作系统使用某种调度策略支持多个任务并发执行。事实上。(单核)处理器在某一时刻只能执行一个任务。每个任务创建时被分配时间片(几十到上百毫秒),任务执行(占用CPU)时,时间片递减,操作系统会在当前任务的时间片用完时调度执行其他任务。由于任务会频繁地切换执行,因此给用户多个任务同时运行的感觉。多任务操作系统中通常有3个基本概念:任务、进程、线程。

2021-11-04 23:04:25 6186

原创 Linux -- exit()函数、_exit()函数、return的说明与使用

exit()函数和_exit()函数都是用来 终止进程 的。return是C语言关键字,主要用于子函数的返回,标识这个子函数的结束。

2021-10-24 09:15:00 11084 1

原创 OpenWRT编译 -- 出现‘...net/mac80211/mac80211.ko‘ is missing的错误

大爷来进来玩呀(*^▽^*)

2021-10-24 00:36:47 5770 15

原创 Linux -- Linux下库的生成和使用

在写程序的过程中,基本上都要依赖各种各样的库,比如标准C库等等,使用库也很大程度上减少了重复不必要的编程,也使得编写的程序精简不少。所以,当我们在编程中用到自己开发的使用比较频繁的资源的时候,也希望能够编译成库的模式。在需要用到的时候直接引用即可。那么接下来就简单描述下在 Linux 环进行的动态库和静态库的生成和使用。

2021-03-19 17:43:09 5602 4

原创 C语言 -- string.h中函数功能详解与手动实现 - 03(常用函数memchr、strchr、strstr、strspn、strlen、strnlen...)

一般系统中提供一个标准的 C库 string.h ,用于操作各种操作字符串 strxxx、内存 memxxx 的库函数。作为 C标准库 的一部分,它们被强制要求可以在任何支持 C语言 的平台上运行。 不管是在面试中还是平时的工作中,对 string.h 文件中的大部分的函数的都有涉及,并且会经常遇到手撕某个或者某几个库函数的题目,其重要程度可想而知。

2021-01-27 22:20:41 3867

原创 C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)

一般系统中提供一个标准的 C库 string.h ,用于操作各种操作字符串 strxxx、内存 memxxx 的库函数。作为 C标准库 的一部分,它们被强制要求可以在任何支持 C语言 的平台上运行。 不管是在面试中还是平时的工作中,对 string.h 文件中的大部分的函数的都有涉及,并且会经常遇到手撕某个或者某几个库函数的题目,其重要程度可想而知。

2021-01-25 22:14:48 2946 12

原创 C语言 -- string.h中函数功能详解与手动实现 - 01(常用函数memset、memcmp、strcmp、strncmp ...)

一般系统中提供一个标准的C库 string.h ,用于操作各种操作字符串 strxxx、内存 memxxx 的库函数。作为 C标准库 的一部分,它们被强制要求可以在任何支持 C语言 的平台上运行。 不管是在面试中还是平时的工作中,对 string.h 文件中的大部分的函数的都有涉及,并且会经常遇到手撕某个或者某几个库函数的题目,其重要程度可想而知。

2021-01-24 14:43:42 3710 7

原创 数据结构(廿六) -- C语言版 -- 图 - 图的遍历 -- 邻接表 - 深度/广度优先遍历/搜索(DFS、BFS)

图是一种非线性的数据结构,图的遍历指的是:从图中的某一顶点出发,沿着一些边访问图中所有的顶点,使得每个顶点都被访问且仅被访问一次。根据遍历路径的不同,通常有两种遍历图的方法:深度优先遍历(Depth First Search)和广度优先遍历(Breadth First Search)。它们对无向图和有向图都适用,图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。

2020-12-19 19:16:50 5222 28

原创 数据结构(廿五) -- C语言版 -- 图 - 图的遍历 -- 邻接矩阵 - 深度/广度优先遍历/搜索(DFS、BFS)

图是一种非线性的数据结构,图的遍历指的是:从图中的某一顶点出发,沿着一些边访问图中所有的顶点,使得每个顶点都被访问且仅被访问一次。根据遍历路径的不同,通常有两种遍历图的方法:深度优先遍历(Depth First Search)和广度优先遍历(Breadth First Search)。它们对无向图和有向图都适用,图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。

2020-12-08 22:29:42 6498 8

原创 OpenWRT编译 -- 嵌入式系统Openwrt移植SQLite3数据库

SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。SQLite的代码在公共域中,因此可以免费用于任何目的,无论是商业还是私有。SQLite是世界上部署最广泛的数据库,其应用程序比我们所能统计的还要多,其中包括几个引人注目的项目。SQLite是一个嵌入式SQL数据库引擎。与大多数其他SQL数据库不同,SQLite没有单独的服务器进程。SQLite直接读写普通磁盘文件。包含多个表、索引、触发器和视图的完整SQL数据库包含在单个磁盘文件中。

2020-12-05 19:05:01 4644

原创 Android -- 让我一个外行来告诉你Android的多Activity切换中保持Socket长连接的一个实现方法

主要介绍并实现在android中的socket客户端在多个界面切换时保持socket的长链接的实现说明。

2020-11-25 10:16:44 6226 38

原创 数据结构(廿四) -- C语言版 -- 图 - 图的存储结构 -- 十字链表、邻接多重表、 边集数组

在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。从图的逻辑结构定义来看,图中任何一个顶点都可以看成是第一个顶点。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。

2020-09-05 22:56:42 7701 9

原创 数据结构(廿三) -- C语言版 -- 图 - 图的存储结构 -- 邻接表、逆邻接表

在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。从图的逻辑结构定义来看,图中任何一个顶点都可以看成是第一个顶点。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。那么本博文将带你就 “邻接表(逆邻接表)” 来窥探一二。。。

2020-08-15 19:22:48 14848 1

原创 VSCode -- VSCode美化、设置等项目代码设置

VSCode美化、设置等项目代码设置,就是几个配置文件的内容,以及一张显示效果图。

2020-08-13 23:11:09 5401

原创 数据结构(廿二) -- C语言版 -- 图 - 图的存储结构 -- 邻接矩阵

在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。那么本博文将带你就“邻接矩阵”来窥探一二。。。

2020-08-02 01:01:24 9243 19

原创 数据结构(廿一) -- C语言版 -- 图 - 图的基本概念

图(Graph)是一种较线性表和树更为复杂的数据结构,在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中 ,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素(即其孩子节点)相关 但只能和上一层中一个元素(即其双亲节点) 相关,而在图形结构中,结点之间的关系可以是任意的 ,图中任意两个数据元素之间都可能相关。

2020-07-26 20:08:00 10051 40

原创 Linux -- VMware虚拟机配置文件(.vmx)恢复或者修改

在windows下Vmware虚拟机文件出现“无法打开虚拟机…未找到文件”的问题,本文将带你立马解决。。。。

2020-07-13 14:49:43 13132 19

原创 数据结构(二十) -- C语言版 -- 树 - 霍夫曼树(哈夫曼树、赫夫曼树、最优二叉树)、霍夫曼编码

霍夫曼树也称为称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度霍夫曼编码,又译为哈夫曼编码、赫夫曼编码,。是一种用于无损数据压缩的熵编码(权编码)算法。由美国计算机科学家大卫·霍夫曼(David Albert Huffman)在1952年发明。

2020-07-04 21:04:42 5282 15

原创 数据结构(十九) -- C语言版 -- 树 - 树、森林、二叉树的江湖爱恨情仇、相互转换

在满足树的条件下,树可以是任意形状,一个节点可以有任意多个孩子。在前面的存储结构中,提到了树的孩子兄弟方法可以将一个树用二叉链表进行存储,所以借助二叉链表,树和二叉树可以进行相互转换,从物理结构来看,他们的二叉链表是相同的。因此,只要我们设定一定的规则,用二叉树来表示树甚至森林是可以,森林与二叉树也可以相互转换。

2020-06-28 22:34:11 6243 28

原创 数据结构(十八) -- C语言版 -- 树 - 二叉树的线索化及遍历 -- 线索化后的直接前驱、后继获取

二叉树的线索化的目的就是为了方便二叉树节点的遍历和访问,那么既然要遍历,那么也就说明有顺序,也就是前后,但是既然提到了线索化,那么还是会很好奇线索化后某个节点的前驱节点、后继节点应该怎么取获取。那么本博文就带你了解。

2020-06-26 00:02:05 12510 17

linux环境下网络调试助手

linux环境下网络调试助手,对标win环境下的netAssist,调试TCP、UDP非常方便

2024-09-05

一种简单易用的通用循环队列的C语言解决方案

博文《一种简单易用的通用循环队列的C语言解决方案》实现的代码。 在实际的嵌入式编程中,消息队列的使用还是比较频繁的,已经在文章《一种简单安全的消息队列的C语言解决方案》中说明了一种队列的解决方案,但是那种设计其中还是存在一些不方便的用法,对于嵌入式系统中一些要求或者性能限制下,可能会用到循环队列,但是对于不使用操作系统的情况下,队列相关的功能就需要手动实现。所以下面将会介绍一种简单的循环队列的实现方式。

2024-08-12

一种简单安全的消息队列的C语言解决方案

基于嵌入式编程,对于有安全等级要求的项目,一般都会对编码有诸多安全性考虑的规则限制。在实际的编程中,消息队列的使用还是比较频繁的,但是对于不使用操作系统的情况下,消息队列相关的功能就需要手动实现。 本资源中主要通过C语言实现消息队列的基础功能,并对相关代码做详细的说明与测试。

2024-08-01

linux内核相关分支的说明资料

linux内核相关分支的说明资料

2024-07-01

linux下基于setitimer高精度多通道软件定时器

基于Linux环境下的setitimer的延时/定时器的使用, setitimer 在同一个进程中只能使用一个的缺点,作为一个嵌入式的开发人员总觉得有点说不出的苦恼,那么本资源即为基于linux环境的一些函数,编写一个满足基本要求的软件定时器。 本资源为博文同步的实现的源码,已经经过了金本测试,效果较为理想,有需要或者有兴趣的可以下载试试。 原文链接:https://blog.csdn.net/songshuai0223/article/details/124799672

2022-05-19

Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录

Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录,主要实现的功能入校描述: 1. myMath、myRecord、myString要分别能够单独生成各自对应的 .a 静态库文件 2. 将生成的 .a 文件统一放在根目录下 lib 专用文件夹中 3. myString 下要将以来的.a文件包含到生成的 .a 文件中 4. 文件的目录具有可扩展性,后续可随时添加文件或者文件夹 5. 在根目录下进行 make 同样生成上述三个 .a 文件到固定文件夹中 6. 在根目录下进行 make 需要将生成的这些 .a 文件和外部提供的其他的 .a 最终编译成一个可执行文件 7. 将最终生成的可执行文件放置在 bin 文件专用的文件夹中 8. … 原文链接:https://blog.csdn.net/songshuai0223/article/details/124676839

2022-05-15

数据结构-树的实现代码(C语言版).rar

数据结构 -- C语言版 -- 树的部分实现代码(树的创建、遍历、线索化、线索化的前驱和后继等、霍夫曼编码),详细介绍参考数据结构--树的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

2021-10-27

数据结构-队列的实现代码(C语言版).rar

数据结构 -- C语言版 -- 队列的部分实现代码,详细介绍参考数据结构--队列的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

2021-10-27

数据结构-栈的实现代码(C语言版).rar

数据结构 -- C语言版 -- 栈的部分实现代码(栈的实现、栈的应用),详细介绍参考数据结构--栈的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

2021-10-27

数据结构-链表的实现代码(C语言版).rar

数据结构 -- C语言版 -- 链表的部分实现代码(单向链表、双向链表、循环链表、约瑟夫环等),详细介绍参考数据结构--链表的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

2021-10-27

数据结构-图的实现代码(C语言版).rar

数据结构 -- C语言版 -- 图的部分实现代码,详细介绍参考数据结构--图的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

2021-10-27

Android的多Activity切换中保持Socket长连接的一个实现方法

主要介绍并实现在android中的socket客户端在多个界面切换时保持socket的长链接的实现说明。博文https://blog.csdn.net/zhemingbuhao/article/details/108807065的配套实现源码

2020-09-26

SerialPortTest.rar

本资源为在Visual Studio 2010工具下使用C#开发语言编写的串口助手的源代码以及工具,基本完成串口的查找,打开,关闭,数据的发送,接收,数据基本的转换等功能,基本属于比较基础的功能,可以根据个人的需求直接进行继续开发

2020-05-05

字符串转换工具-含源码.rar

一、在C语言的开发、数据分析、尤其是跟别人进行联合编程、联合调试的过程中,经常会遇到各种各样的数据的格式,有时候各个样式的数据转换花去大量的时间,最后还不一定就能百分百的转换正确,所以,在空余时间自己弄了一个简单的工具,来在需要的时候解决转换的问题。 说明,目前使用的数据格式要求是 用两个字符来表示一个数字,有效字符为0-9,A-F,a-f 如果数字小于16,用十六进制表示的时候,在前面加0,比如:0A 除了CRC计算对字符有特殊要求外(0-9,A-F,a-f),其他的各项对字符不做判断,默认为有效字符 在计算CRC校验和的时候,最好保证数字字符均为有效字符 二、目前支持的转换 1、主界面显示效果 2、增删空格功能 3、增删十六进制前缀0x 4、增删逗号(数据分割) 5、计算CRC 6、大小写转换 7、退出

2020-02-15

nfqueue-tcpip-socket.rar

在linux环境下,使用libnetfilter_queue进行网络数据内容的修改并且将数据返回到用户空间给对应的应用程序使用,其中: 1、文件夹nfqueue-tcpip中实现数据抓取-修改-发送的工作,只需要在linux环境下使用 make 即可生成对应的可执行程序,需要以root权限去执行 2、文件夹socket-tcp中实现socket的tcp客户端和服务端的代码,只需在linux下环境下make即可生成 server和client的可执行程序

2019-11-24

C#下TCPIP的客户端和服务端的代码-winform

本资源是C#语言编写的关于TCP/IP的实现服务端和客户端的通讯的工程代码,主要编程IDE使用的Microsoft Visual Studio 2010。需要先运行服务器端,然后再运行客户端才能正常工作

2019-02-25

生成MD5 32byte(256bit)的方法

本资源是在Linux环境下生成文件的md5检验和,以十六进制字符串和十六进制的方式输出,在运行之前,先修改Makefile中TestFile为你需要计算MD5的文件名称,然后可以直接在终端使用命令make直接运行

2019-02-25

基于单片机的液压马达转速和温度监测系统设计

基于瑞萨单片机的液压马达温度和转速检测系统,分为现场检测节点和适配器两个部分,各部分功能均已实现。经本人实测,绝对好用!

2015-07-20

空空如也

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

TA关注的人

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