自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(840)
  • 资源 (1)
  • 收藏
  • 关注

原创 Git 无差异文件自动忽略脚本使用指南

虚假修改:文件权限变化、行尾符改变等导致 Git 显示文件被修改权限冲突:多用户协作时 Git 索引文件权限不一致效率低下:手动检查每个修改文件耗时耗力。

2025-11-19 10:38:57 921

原创 VirtualBox经验笔记

配置项推荐值说明虚拟机内存4GB - 6GB保留足够内存给宿主机及其他应用处理器数量2 - 4 核心不超过宿主逻辑处理器一半执行峰值(Cap)70% - 80%避免虚拟机长期满占 CPU,影响宿主机响应通过合理配置虚拟机的资源参数,可以在满足虚拟机性能需求的同时,保障宿主机系统的整体流畅与稳定,避免因资源过载而引发的各类异常问题。

2025-11-17 10:46:36 434

原创 difftime函数深度解析

摘要:difftime函数是C语言标准库中的时间差计算工具,用于精确测量两个time_t时间点之间的秒数差。通过程序性能分析、用户体验监控和系统管理等实际案例,difftime展现出其在时间测量领域的重要价值。函数原型简单清晰,返回double类型的秒数差,支持不同时间单位的转换。典型应用包括程序性能分析、操作时长统计和任务执行时间监控等场景,是开发者进行精确时间测量的得力助手。

2025-11-16 22:52:47 659

原创 fprintf函数深度解析

摘要: fprintf是C语言中功能强大的格式化输出函数,能够将数据按指定格式写入文件流。作为标准I/O库的核心成员,它通过文件指针、格式字符串和可变参数实现对输出的精确控制。文章详细介绍了fprintf的返回值、参数解析和丰富的格式说明符,并通过日志记录案例展示了其在系统日志管理、错误处理和性能监控等场景中的实际应用,体现了其作为"数据的格式化妆师"的重要价值。

2025-11-16 22:47:14 810

原创 mysql_options函数深度解析

想象一下,你要去一家高级餐厅用餐。在出发前,你可以先打电话预订座位、说明饮食禁忌、确认着装要求——这就是函数在做的事情!它让你在实际连接到MySQL数据库之前,能够预先设置各种连接参数和选项。fill:#333;color:#333;color:#333;fill:none;mysql_options选项超时控制类字符编码类连接行为类SSL安全类高级特性类函数就像数据库连接的"预演导演",让我们在实际建立连接前精心编排每一个连接参数。核心价值。

2025-11-16 22:15:48 1002

原创 电商用户数据测试数据生成完整案例

本文介绍了电商数据库用户表的设计与测试数据生成存储过程的实现。首先创建了包含用户ID、用户名、邮箱等关键字段的用户表,并设置了适当的索引。然后实现了一个完善的存储过程,可批量生成包含注册时间、登录记录、消费金额等真实模式的测试数据。该存储过程支持事务分批提交、进度提示和错误处理,确保数据生成的高效可靠。最后通过实际执行验证了数据生成功能,并展示了生成的示例数据。该方案为电商系统开发提供了便捷的测试数据准备方案。

2025-11-16 22:02:47 323

原创 MySQL的存储过程

MySQL存储过程:数据库的自动化脚本工具 存储过程是MySQL中预编译的SQL指令集,类似自动化脚本或预设工具箱。它允许将复杂操作封装为单个可调用单元,显著提升效率。主要优势包括:减少网络开销(只需一次调用执行多条SQL)、代码复用(多应用共享)、增强安全性(权限控制)和降低客户端负担。不过也需权衡数据库耦合度高、调试复杂等缺点。 通过电商订单处理实例可见:存储过程配合事务和错误处理,能确保订单创建与日志记录的原子性,LAST_INSERT_ID()获取新ID实现数据关联。调用时只需传递参数即可完成整套操

2025-11-16 19:52:27 741

原创 sleep函数:给程序按下“暂停键“的神奇魔法

sleep函数:程序中的"暂停键"与应用解析 摘要: sleep函数是操作系统提供的程序暂停执行功能,相当于程序的"定时器"。本文通过生活类比和编程实例,介绍了sleep函数的核心机制与典型应用。主要内容包括:1) sleep函数的工作原理,如POSIX标准接口和返回值处理;2) 参数设计特点,支持秒级精确控制;3) 三大实用场景:用户交互倒计时、生产者-消费者模型节奏控制、以及系统维护任务调度。通过完整代码示例展示了sleep在多线程协调、资源等待等场景下的实际应用

2025-11-16 18:18:56 544

原创 Ubuntu中挂载Windows共享文件夹

本文介绍了在Ubuntu系统中访问Windows共享文件夹的多种方法:1)使用cifs-utils工具手动挂载;2)通过凭据文件安全挂载;3)配置fstab实现开机自动挂载;4)图形界面挂载方式。文章详细说明了每种方法的操作步骤,包括命令参数解释、权限设置和常见问题解决方案,并推荐了最完整的操作流程。重点强调了如何安全处理Windows凭据、设置文件权限以及处理特殊字符等细节问题,最后提供了验证和卸载共享文件夹的方法,帮助用户实现稳定可靠的跨平台文件共享。

2025-11-15 23:01:43 499

原创 VSCode源代码管理树形显示配置

本文提供了VSCode源代码管理面板切换为树形视图的完整解决方案。核心方法包括:1)通过面板菜单或命令面板手动切换;2)在.vscode/settings.json中配置"scm.defaultViewMode": "tree"等持久化设置。配置层级分析显示工作区级设置优先级最高。还包含问题排查清单、常见问题解决方法、预期效果图示及推荐的Git相关扩展插件。关键要点强调正确配置后可能需要手动触发,并注意远程开发时的设置同步问题,配合文件嵌套功能可获得更优的树形展示效果

2025-11-15 20:28:42 676

原创 mysql_use_result:数据库查询的“自助餐“模式

本文通过生动的自助餐比喻,详细解析了MySQL C API中的mysql_use_result函数。该函数采用流式处理方式,适用于大数据量查询场景,如电商数据导出、实时监控等。文章从函数声明、参数说明、返回值含义到实际应用示例,全面介绍了该函数的使用方法和注意事项。重点包括:函数与mysql_store_result的区别,参数mysql连接句柄的使用要求,成功/失败返回值的处理,并通过电商用户数据导出的完整代码示例,展示了如何高效处理大规模数据查询。最后还提供了错误处理建议和性能优化技巧。

2025-11-15 20:11:04 642

原创 VirtualBox + Ubuntu 探险笔记:我的三个“顿悟”时刻

作为一名踏入Linux世界的探险家,我选择VirtualBox作为我的魔法马车,Ubuntu 20.04作为我的新大陆。我的Ubuntu虚拟磁盘空间并不富裕,而开发环境又经常需要安装不同的、占用空间巨大的软件包(比如不同的Python环境、Docker镜像等)。虽然保存快照会占用宿主机的硬盘空间,但这笔交易太划算了——我用宿主机(Windows)的硬盘空间,换来了虚拟机里多个隔离、可随意切换的平行世界!这趟旅程让我明白,在技术的世界里,遇到的每一个“坑”都不是终点,而是一扇通往更深层理解的大门。

2025-11-15 19:32:35 483

原创 ubuntu用户添加超级权限

摘要:本文提供了三种为Linux用户xuehy添加sudo权限的方法。最佳方案是使用root账户将用户加入sudo组(usermod -aG sudo xuehy)。其他方法包括直接修改/etc/sudoers文件或检查用户组配置。文章还包含完整的操作流程:从切换到root账户、添加用户到sudo组到验证权限。针对忘记root密码的情况,详细说明了通过GRUB恢复模式重置密码或添加权限的步骤。所有操作均附有具体命令示例,确保用户能安全有效地获取管理员权限。

2025-11-15 09:54:57 420

原创 VMware与VirtualBox的虚拟化实战手册:场景配置精要

文章摘要 VMware与VirtualBox分别适合不同场景:VMware适合高性能、自动化的企业级开发(如全栈Web开发、Android模拟),支持嵌套虚拟化和快照链管理;VirtualBox则以灵活性和可控性见长,适合轻量级开发与安全测试(如Vagrant集成、Kali Linux渗透测试)。VMware在复杂网络拓扑和集群模拟中表现优异,而VirtualBox通过命令行工具和轻量级设计,更适合个人用户与软硬件兼容测试。选择取决于需求:追求极致性能选VMware,注重灵活性和开源生态选VirtualBo

2025-11-14 22:15:54 630

原创 Ubuntu 20.04 LTS (Focal Fossa) 更换国内源的方法

本文介绍了两种为Ubuntu 20.04系统更换国内软件源的方法:图形界面法和命令行法。图形界面法通过"软件和更新"工具操作,简单直观;命令行法则提供了详细的修改步骤,并给出了阿里云、清华大学和中科大三种国内镜像源的配置内容。文章还推荐了一键换源脚本,可快速完成替换操作。更换后需执行sudo apt update验证是否成功。这些方法能有效提升国内用户的软件下载速度。

2025-11-14 19:55:39 1525 1

原创 MySQL 表格创建的艺术:从入门到精通

MySQL表格创建与管理指南 本文详细介绍了MySQL表格的创建与管理方法。主要内容包括: 表格基础概念:将MySQL表格比作"数据城市"中的"精装公寓楼",解释表格作为数据容器的核心作用。 创建表格语法:展示完整的CREATE TABLE语法结构,包含列定义、约束条件、索引等元素,并通过员工信息表示例进行说明。 数据类型详解:重点介绍三类关键数据类型: 数值类型(整数、小数) 字符串类型(定长、变长、文本) 日期时间类型(DATE、TIME、DATETIME等) 实

2025-11-13 23:10:27 1020

原创 为什么需要数据库连接池?—— 从“每次握手”到“长久友谊”的进化

本文深入解析数据库连接池的核心机制与实战应用。首先通过TCP握手与认证开销分析,揭示了传统连接方式的性能瓶颈,并提出连接复用的破局思路。随后剖析了连接池的精密架构,包括连接管理器、状态追踪器等核心组件,以及连接复用、状态管理等关键技术实现。最后结合高并发场景实战案例,展示了连接池配置策略与缓存配合的优化方案。全文从理论到实践,系统阐述了连接池如何通过"连接特区"设计显著提升数据库访问性能。

2025-11-12 22:49:42 969

原创 查询MySQL用户的方法

摘要:查询MySQL用户主要通过命令行工具(如SELECT User, Host FROM mysql.user;)或图形界面工具(如phpMyAdmin)。命令行方法需使用具备权限的账户登录后查询mysql.user表,可获取用户、主机及权限信息。安全起见,建议避免直接修改系统表,而使用专用SQL命令管理用户。核心查询命令简洁高效,是用户管理的首要步骤。

2025-11-12 22:12:40 883

原创 文件描述符设置为非阻塞的用途

本文通过餐厅点餐的类比,生动介绍了操作系统I/O处理的两种核心策略:阻塞模式和非阻塞模式。阻塞I/O会导致进程在等待时被挂起,而非阻塞I/O则允许进程在I/O未就绪时处理其他任务,极大提高了效率。文章深入解析了文件描述符的概念,对比了两种I/O模式的工作原理,并阐述了非阻塞I/O与I/O多路复用技术(如epoll)结合的重要性。这种组合能够实现单线程并发处理多路I/O,是高并发服务器的关键技术。文章还通过伪代码展示了非阻塞I/O在实际应用中的实现方式。

2025-11-11 22:43:05 826

原创 互联网接入网与PPP协议:从拨号时代到全光网络的连接密码

摘要 互联网接入技术经历了从拨号上网到光纤宽带的革命性变革。早期的电话线拨号上网速度仅56Kbps,下载文件耗时漫长;而现代光纤接入已实现千兆速率,配合5G和Wi-Fi6实现无缝覆盖。这一演进的核心在于接入网技术和PPP协议的发展。接入网作为连接用户与核心网的"最后一公里",其技术从铜线ADSL演进到光纤FTTH,通过光分路器等设备实现高效传输。同时,PPP协议作为早期的认证和传输标准,其核心逻辑至今仍影响现代上网方式。这些技术进步不仅提升了网络速度,更支撑了视频、云游戏等新型应用场景,

2025-11-09 21:59:04 616

原创 vscode调试脚本task.json深度解析

本文详细介绍了在VSCode中如何通过task.json配置C++多文件项目的构建任务。首先分析了VSCode模块化设计理念和C++项目的独特需求,然后深入解析了task.json的声明式配置架构、任务类型系统和变量替换机制。文章提供了三个典型配置案例:简单控制台应用的通用配置、复杂工程的模块化构建任务链,以及与CMake的跨平台集成方案。通过层次化的任务依赖关系和智能变量替换,task.json能够实现灵活高效的C++项目构建管理,满足从简单到复杂的各种开发场景需求。

2025-11-08 15:03:55 608

原创 sigfillset:信号世界的全员集合令

Linux信号处理中的sigfillset函数像一个"全员集合令",能初始化信号集包含所有已知信号。通过三个典型应用场景展示了其强大功能:1)作为信号屏蔽盾牌保护关键代码段不被中断,2)创建信号处理白名单机制,3)实现多线程信号精确控制。该函数通过简单但强大的方式,让开发者能够像信号指挥官一样全面管理进程信号行为,确保程序关键部分的原子性和稳定性,是多线程和信号密集型程序的必备工具。

2025-11-08 14:58:04 917

原创 Python字符串查找函数find详解

Python中的find()函数是字符串处理的重要工具,用于在字符串中查找子字符串。它接受必需的子字符串参数和可选的起始/结束位置参数,返回子字符串首次出现的索引(未找到则返回-1)。典型应用包括关键词查找、日志分析和数据验证。通过购物清单和电话簿的类比,可以形象理解其查找功能。find()是Python内置方法,无需额外导入模块,使用简便高效。

2025-11-04 23:06:19 1082

原创 munmap:内存映射的优雅清理者

munmap:内存管理的优雅终结者 摘要:munmap是Linux系统中用于释放内存映射的系统调用,扮演着内存资源回收的关键角色。它接收两个参数:起始地址和映射长度,负责解除mmap创建的映射关系。当参数有效时,munmap会同步脏页数据并释放虚拟内存,返回0表示成功;否则返回-1并设置errno。作为内存管理的"清洁工",munmap在文件操作、动态内存管理和进程通信中不可或缺,确保系统资源得到及时释放。

2025-11-03 21:52:13 560

原创 ara::Runtime::GetInstance 深度解析:Adaptive 平台的运行时核心

本文深入解析了AUTOSAR Adaptive平台中的ara::Runtime::GetInstance组件。作为系统的"中央神经系统",Runtime采用单例模式设计,负责协调应用程序的运行生命周期,包括服务发现与管理、生命周期管理和状态管理等核心功能。文章详细剖析了其线程安全的单例实现、初始化时机与依赖关系、错误处理机制,以及服务发现接口等重要技术细节,揭示了Runtime如何确保系统各组件协同工作、安全通信和执行管理的内部原理。

2025-11-03 14:01:41 958

原创 ara::core::Initialize 深度解析:自动驾驶框架的基石

摘要 本文深入探讨了 AUTOSAR Adaptive 平台中的关键初始化函数 ara::core::Initialize。首先介绍了 AUTOSAR 从 Classic 到 Adaptive 的演进背景,强调了 Adaptive 平台的服务导向架构、动态部署等核心特征。随后详细分析了 ara::core::Initialize 的设计哲学,包括确定性行为、资源管理和依赖关系处理三大原则,并通过架构图展示了其作为"启动协调器"的角色。技术解析部分深入剖析了函数签名设计、初始化流程的五个阶

2025-11-03 13:55:15 646

原创 ADAPTIVE-APPLICATION-SW-COMPONENT-TYPE的ARXML深度解析:从架构本质到实战落地

本文解析了AUTOSAR Adaptive平台中的核心组件ADAPTIVE-APPLICATION-SW-COMPONENT-TYPE,重点关注其在自动驾驶中的关键作用。文章首先对比了Classic与Adaptive平台的差异,指出后者更适合处理高算力、动态性需求。随后详细拆解了Adaptive应用组件的ARXML结构,包括功能标识、接口定义、执行需求和安全配置四大核心模块,并通过实际代码片段说明各元素功能。特别强调了接口设计(PROVIDED/REQUIRED端口)和算力调度(执行优先级、采样时间)对组件

2025-11-03 11:14:31 1047

原创 揭秘C语言字符串的“拼接魔法“:从多行HTML到内存深处的字符世界

本文探讨了C语言中字符串常量的定义和特性,重点分析了代码中多行字符串的拼接规则。字符串常量是以空字符'\0'结尾的只读字符数组,存储在程序只读数据段。编译器会自动拼接相邻的字符串常量,这种特性使长字符串可以拆分成多行书写,提高代码可读性。文章详细区分了代码中的换行排版与字符串内部的'\n'转义字符的区别,指出前者不影响字符串内容。最后通过可视化流程图展示了多个字符串片段的拼接过程,帮助理解编译器如何将分散的字符串合并为最终完整的HTML字符串。

2025-11-02 20:48:34 742

原创 writev:向量I/O的集大成者

摘要:writev是Linux系统的高效向量I/O系统调用,通过一次操作实现多个缓冲区的数据写入。本文以物流配送为比喻,阐述了writev相比传统write的性能优势,详细解析了其函数声明、参数特性和返回值含义。文章还通过HTTP服务器响应等实际案例,展示了writev在网络编程和文件操作中的关键应用,帮助开发者理解并运用这一强大的I/O优化工具。

2025-11-02 20:09:21 640

原创 va_list:C语言的可变参数魔法师

va_list是C语言处理可变参数函数的强大工具,它允许函数接受不确定数量的参数,如同灵活的魔术师。通过va_start、va_arg、va_end和va_copy等宏,可以创建类似printf()的变参函数。这种机制广泛应用于格式化输出、日志系统和包装函数等场景。本文通过餐厅点餐的生动比喻和实际案例(如增强版printf函数),深入解析了va_list的基本概念、工作原理和使用方法,包括参数在栈中的处理流程,帮助开发者掌握这一核心C语言特性。

2025-11-02 13:57:07 804

原创 stat:文件系统的“身份证“读取器

Unix/Linux系统中的stat调用是一个强大的"文件侦探",它能获取文件的完整元数据而不需打开文件内容。stat通过查看文件的inode信息,提供大小、权限、所有者、时间戳等关键数据,广泛应用于文件管理、备份、安全检查等场景。本文以生动比喻结合实例,详细解析stat函数家族的工作原理、参数结构及常见应用场景,帮助开发者深入理解这个系统调用的核心功能。

2025-11-01 22:16:18 1084

原创 mmap:内存映射的魔法桥梁

mmap是Unix/Linux系统中的高效系统调用,能够将磁盘文件直接映射到进程虚拟地址空间,使程序像访问内存一样读写文件,避免频繁I/O操作。它通过建立虚拟内存映射实现高性能文件访问,支持共享或私有映射方式。mmap不仅用于文件操作,还广泛应用于进程通信、内存管理等场景。本文通过图书馆比喻和代码示例,详解mmap函数参数、工作机制及实际应用,展现其在大文件处理、零拷贝网络传输等场景下的优势。

2025-11-01 22:05:14 1144

原创 `map<string, string>`查找模式:C++中的智能侦探系统

本文深入解析了C++ STL中map<string,string>的find()查找机制。当使用obj.find(key) == obj.end()时,该模式能安全有效地检测键是否存在:找到键则返回对应迭代器,否则返回end()表示键不存在。相比count()和[]操作符等方法,这种模式具有类型安全和意图明确的优势。文章通过图书馆查询的生动比喻和配置管理系统的实际案例,展示了该模式在字典应用、缓存机制等场景中的典型应用,并分析了其基于红黑树的O(log n)查找效率。这种查找模式是C++中处理映

2025-11-01 21:16:00 953

原创 strcat:字符串世界的装配专家

strcat是C标准库中用于连接字符串的函数,位于string.h头文件中。它将源字符串追加到目标字符串末尾,覆盖原终止符并添加新的终止符。虽然简单易用,但存在缓冲区溢出风险,使用时需确保目标缓冲区足够大。文章通过拼图、火车等生动比喻解释其工作原理,并给出安全使用示例,如动态构建消息、安全连接函数实现等。通过完整代码演示了如何正确使用strcat并避免常见安全隐患。

2025-11-01 20:57:21 581

原创 CGI深度解析:从Web交互的“初代功臣”到现代技术的思想源头

摘要(148字) CGI技术作为早期Web动态交互的核心协议,解决了90年代静态网页无法响应的问题。其工作原理是Web服务器通过环境变量传递请求信息,外部程序处理数据后返回动态HTML。CGI的优势在于语言无关性(支持Perl、Python等)和简单实现,推动了早期论坛、电商等交互应用的发展。虽然现代Web框架已取代CGI,但其"请求-处理-响应"的基础模式仍深刻影响着当今Web技术架构,是理解动态网页演进的重要起点。

2025-11-01 20:55:26 1011

原创 strrchr:字符串世界中的反向侦探

strrchr函数是C标准库中的字符串反向查找工具,用于定位字符串中指定字符最后一次出现的位置。它接收两个参数:待搜索字符串和要查找的字符,返回指向该字符位置的指针或NULL(未找到时)。本文通过生动的比喻(如"反向阅读的侦探")和实际应用案例(文件路径解析、日志分析等),详细解析了strrchr的工作原理和使用场景。配合代码示例和流程图,展示了如何利用这个函数高效处理字符串操作。

2025-11-01 20:42:23 657

原创 TCP窗口机制:从一条“拥堵的公路”说起

摘要 TCP窗口机制通过动态调整数据发送量,在保证可靠传输的同时最大化网络效率。核心由三个窗口协同控制:接收窗口(rwnd)反映接收方处理能力,拥塞窗口(cwnd)评估网络状况,发送窗口(swnd)取两者较小值作为实际发送量。 拥塞控制算法采用四阶段策略:慢启动阶段指数增长快速探测带宽;达到阈值后转为线性增长的拥塞避免;出现丢包时通过快速重传/恢复机制降速;最后重新进入拥塞避免阶段。这种"探测-调整"的闭环设计,实现了在未知网络环境下自主优化传输效率的目标。

2025-10-31 23:05:50 538

原创 Python toml库深度解析:从配置文件到数据交换的艺术

TOML作为一种新兴配置文件格式,凭借其直观性、可读性和灵活性在Python生态中崭露头角。文章首先对比了TOML与JSON、YAML等传统格式的优势,重点分析了其人性化设计理念。随后详细介绍了Python中的TOML处理工具,包括标准库tomllib和第三方库tomli、tomlkit的使用方法。通过丰富的语法示例,展示了TOML从基础数据类型到高级表系统的完整语法体系,并提供了pyproject.toml等实际应用案例。全文系统性地呈现了TOML作为现代Python项目标配配置格式的核心价值和技术细节。

2025-10-31 19:06:37 286

原创 Python subprocess.Popen深度解析:掌握进程管理的艺术

想象一下,你是一位交响乐团的指挥,面前坐着各种乐器演奏家。你不能要求小提琴手同时吹小号,也不能让鼓手去拉大提琴。每个音乐家都专注于自己的乐器,而你作为指挥,负责协调整个乐团的演奏。subprocess.Popen就是Python世界中的"乐队指挥"。通过本文的深入探讨,我们可以看到就像是一位多才多艺的乐队指挥,能够优雅地协调各个"乐手"(子进程)完成复杂的任务。总是检查返回值和处理错误及时清理子进程资源避免创建僵尸进程在长时间运行的程序中注意资源泄漏。

2025-10-31 18:57:51 895

原创 docker run 高频场景实战手册

本文提供Docker运行的5个常用场景指南,重点介绍其中3个核心场景:1)交互模式临时测试(使用-it --rm选项快速启动用完即删的容器);2)后台服务长期运行(通过-d -p启动Nginx等服务并管理);3)数据持久化(用-v挂载卷确保MySQL数据不丢失)。每个场景包含详细操作步骤、选项解析、验证方法和常见问题解决方案,帮助用户快速上手容器技术并避坑。

2025-10-31 18:33:29 367

cpp中文帮助文档_xhy.rar

包含c++11的中文帮助文档

2021-06-28

空空如也

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

TA关注的人

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