自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 问答 (1)
  • 收藏
  • 关注

原创 Orangepi Zero2 全志H616开发学习

摘要:本文介绍了基于ARM架构的Linux系统学习必要性,重点分析了OrangePi开发板的学习优势。主要内容包括:1)Linux系统在智能设备开发中的不可替代性;2)OrangePi开发板硬件配置(全志H616处理器、1GB内存等)及特性;3)系统刷机步骤(镜像烧写、串口登录);4)基础配置方法(密码修改、WiFi连接、SSH远程登录)。该开发板适合Linux系统学习,能为后续嵌入式开发打下基础,配套Ubuntu系统方便入门者快速上手。

2025-07-02 16:45:14 1200

原创 Linux系统环境编程之网络编程

本文主要介绍了TCP/UDP网络编程的核心概念和实现方法。TCP与UDP的主要区别在于:TCP是面向连接的可靠传输协议,保证数据有序到达;而UDP是无连接的不可靠协议,适合实时应用。文中详细说明了端口号的作用、"IP地址+端口号"的服务识别机制、字节序转换API,并给出了完整的Socket服务器和客户端开发步骤(创建套接字、绑定信息、监听连接、数据交互等)。最后通过C语言代码实例,展示了TCP服务器和客户端的实现过程,包括socket创建、bind绑定、listen监听、accept接受

2025-07-01 18:41:41 1010

原创 Linux系统环境编程之线程

摘要:本文详细介绍了Linux系统中的线程概念及其相关API。线程是进程中的执行单元,相比进程更轻量级,共享进程资源但拥有独立的栈和寄存器。文章比较了进程与线程的区别,指出线程具有更高的创建效率和便捷的通信机制,但需要同步机制保护共享数据。重点讲解了pthread库中的线程创建(pthread_create)、退出(pthread_exit)、等待(pthread_join)等基本操作,以及互斥锁(mutex)和条件变量(condition variable)两种同步机制的使用方法。

2025-06-30 17:36:50 609

原创 Linux简单操作代码指令

Vim编辑操作摘要:在命令模式下,复制操作使用"yy"复制单行,"nyy"复制n行;粘贴用小写"p"(下一行)或大写"P"(上一行);删除用"dd"删除当前行,"ndd"删除n行;增行用小写"o"(下方插入)或大写"O"(上方插入)。这些快捷键提供高效的文本编辑功能。(149字)

2025-06-30 14:06:21 483

原创 Linux系统环境编程之进程间的通信

进程间通信(IPC)是不同进程间交换信息的重要机制。常见IPC方式包括无名/命名管道(半双工、仅亲缘进程)、消息队列(随机读取、优先级)、共享内存(最快但需同步)、信号量(PV操作)、信号(软中断处理)以及Socket(跨主机通信)。其中,管道适用于父子进程通信,消息队列支持类型过滤,共享内存配合信号量实现同步,信号处理异步事件。文章以Linux C为例,详细介绍了各机制的API使用、特点及示例代码,如pipe()、mkfifo()、msgget()、shmget()、sigaction()等系统调用

2025-06-29 15:33:06 974

原创 Linux系统环境编程之进程2

本文介绍了Linux系统中的exec族函数、system函数和popen函数。exec族函数用于在当前进程中执行新程序,替换原进程映像,常用于配合fork创建子进程执行不同程序。system函数通过创建子进程调用shell执行命令,适合执行简单shell命令但无法获取输出。popen函数则更为灵活,能通过管道获取命令执行结果,适用于需要处理命令输出的场景。文章通过具体代码示例展示了三种函数的典型用法,并对比了它们的适用场景和优缺点,为Linux进程管理和程序执行提供了实用参考。

2025-06-28 22:59:23 674

原创 Linux系统环境编程之进程1

本文介绍了进程的基本概念和操作。程序是静态的可执行文件,进程是程序的运行实例。进程通过PID唯一标识,其中PID 1是init进程。使用fork()创建子进程时,父进程获得子进程PID,子进程返回0;vfork()则直接共享父进程空间且子进程先运行。父进程需用wait()等待子进程退出,否则会产生僵尸进程;若父进程先退出,子进程成为孤儿进程并被init进程接管。文中提供了多个C代码示例,演示了进程创建、退出状态获取及孤儿进程的处理。

2025-06-28 22:35:47 1039

原创 Linux系统环境编程之文件

本文介绍了Linux系统下文件编程的基本操作流程,包括文件创建、读写、光标定位和关闭等API函数的使用方法。主要内容涵盖:1) open函数参数说明及文件权限设置;2) write/read函数实现文件读写;3) lseek函数控制文件指针位置;4) 文件操作的一般步骤及实际应用案例,如实现Linux cp命令、修改配置文件参数以及存储整数、结构体和结构体数组等数据。通过多个C语言代码示例,演示了如何利用系统调用完成文件的自动化操作。

2025-06-24 22:24:38 1070

原创 P7 QT项目----会学天气预报(完结)

摘要:本文介绍了在Qt中使用QMap解析JSON数据的方法,并通过一个天气应用实例展示了具体实现。首先说明了如何将JSON键值对存入QMap的基本步骤,包括创建QJsonDocument、遍历JSON对象等。然后详细展示了一个天气应用的开发过程,包括网络请求获取天气数据、JSON解析到自定义结构体、UI更新(显示温度曲线、天气图标等)以及城市搜索功能。文中还包含了错误处理、鼠标交互事件和自定义绘图等高级功能的实现代码。该示例完整呈现了从数据获取到界面展示的Qt应用开发流程。

2025-06-20 21:27:57 828 1

原创 P7 QT项目----会学天气预报

本文摘要介绍了天气预报数据接口解析和软件开发中的网络通信架构。首先展示了一个福州天气预报的JSON接口响应示例,包含温度、天气状况、空气质量等实时数据。接着对比了BS(浏览器-服务器)和CS(客户端-服务器)两种架构的特点与适用场景。文章详细讲解了HTTP协议的基本概念,包括请求响应模型、状态码等核心要素。最后通过Qt编程实例,演示了HTTP请求的实现方法以及JSON数据的生成、解析技术,包括使用QJsonDocument处理嵌套JSON结构和数组数据。这些内容为开发网络应用程序提供了基础技术参考。

2025-06-19 17:28:40 972

原创 P7 QT项目----会学天气预报

摘要:本文记录了一个Qt界面开发项目的技术要点,主要包括:1)使用stylesheet设置控件样式,包括边框弧度、背景颜色和父控件样式继承;2)实现无边框窗口和右键菜单退出功能;3)窗口拖拽移动的实现逻辑,通过计算鼠标位置与窗口位置的偏移量,在鼠标移动时更新窗口位置。项目还涉及JSON解析、HTTP通信和自定义温度控件开发等内容,展现了Qt界面开发的多个核心功能实现方法。(139字)

2025-06-18 21:04:53 923

原创 P6 QT项目----汽车仪表盘(6.4)

摘要:本文实现了一个基于Qt的仪表盘控件,主要功能包括绘制圆形表盘、刻度线、指针、渐变内圆和动态速度显示。代码通过QPainter进行图形绘制,使用240度刻度范围(210°至-30°)表示0-240km/h车速,红色渐变圆环表示高转速区域,指针随定时器动态摆动(50ms刷新)。关键功能还包括:坐标原点平移至画布中心、抗锯齿处理、径向渐变效果实现,以及通过数学计算精确控制刻度位置和指针角度。该控件采用分层绘制策略,依次完成背景、刻度、指针、装饰元素的渲染,最后显示当前车速数值和单位标识。

2025-06-17 17:59:19 1189

原创 P6 QT项目----汽车仪表盘(6.3)

摘要:本文展示了一个使用Qt框架实现的仪表盘控件开发过程。代码通过QPainter绘制了具有径向渐变效果的圆形表盘,包含刻度线、数值显示和动态指针。指针数值在0-50之间循环变化,通过QTimer实现动画效果。仪表盘采用抗锯齿技术提升视觉效果,并绘制了扇形区域作为指针背景。开发中处理了坐标变换、刻度标注旋转和数值显示等关键问题,最终实现了一个具有专业外观的动态仪表盘控件。

2025-06-16 19:36:37 796

原创 小综合----雷达图

摘要:该代码实现了一个动态雷达图的绘制功能,使用Qt框架中的QPainter进行图形渲染。主要特点包括:1)通过定时器实现扇形扫描动画效果,每100毫秒更新角度;2)绘制7个同心圆作为雷达背景;3)添加十字交叉坐标轴;4)使用锥形渐变(QConicalGradient)实现扫描区域的渐隐效果;5)支持抗锯齿渲染。雷达图以窗口中心为原点,背景为黑色,扫描区域为半透明绿色,具有类似真实雷达的视觉效果。

2025-06-16 00:47:22 958

原创 P6 QT项目----汽车仪表盘(6.2)

本文介绍了Qt框架中的三种渐变效果实现方法:线性渐变(QLinearGradient)、径向渐变(QRadialGradient)和圆锥形渐变(QConicalGradient)。线性渐变沿直线平滑过渡颜色,径向渐变从中心向外辐射,而圆锥渐变则沿圆周方向变化颜色。每种渐变类型都通过创建对应对象、设置颜色停靠点、生成QBrush并应用QPainter来完成渲染。文章提供了每种渐变的具体代码示例,说明了参数设置方法,并给出使用建议,如启用抗锯齿效果、调整渐变位置和添加多个颜色停靠点等技巧。

2025-06-15 18:00:13 1042

原创 P6 QT项目----汽车仪表盘(6.1)

摘要:QPaintEvent是Qt中处理绘图事件的类,触发场景包括窗口显示、大小改变、遮挡重现和手动调用update()/repaint()。开发者通过重写QWidget的paintEvent方法,使用QPainter进行自定义绘制。QPainter提供丰富绘图功能,包括设置画笔/画刷、绘制线条/图形/文本等(如drawLine、drawRect),必须在paintEvent等事件处理函数中使用。典型流程为:创建QPainter对象、设置绘制属性、调用绘图方法、自动结束绘制。

2025-06-15 14:44:35 961

原创 P5 QT项目----会学网络调试助手客户端(5.2)

本文详细介绍了基于QTcpSocket的TCP客户端开发流程。首先需要在.pro文件中添加网络权限,然后通过实例化QTcpSocket建立连接。核心开发步骤包括:创建QTcpSocket实例、连接服务器、收发数据和关闭连接。文章提供了模块化代码示例,展示了如何利用Qt信号与槽机制处理网络事件(如connected和readyRead信号)。同时介绍了UI设计要点,包括连接按钮、发送按钮的状态控制,以及使用不同颜色区分收发信息的功能实现(通过QTextCursor和QTextCharFormat)。

2025-06-14 01:00:53 645

原创 P5 QT项目----会学网络调试助手服务端(5.1)

本文介绍了基于Qt的TCP网络调试助手开发过程,主要包括服务端实现与网络通信核心功能。内容涵盖TCP协议的特点(面向连接、可靠传输等)、Socket编程接口以及Qt中的QTcpServer和QTcpSocket类使用。通过示例代码详细展示了TCP服务器的创建流程:监听端口、处理客户端连接、数据收发和连接关闭等关键步骤。项目实现了服务端与客户端的通信功能,包括端口监听、消息收发、连接状态检测等,并提供了UI界面进行交互控制。该TCP调试工具可用于测试和学习网络编程相关知识。

2025-06-13 17:33:51 1103

原创 P4 QT项目----会学串口助手(解析笔记)

摘要:本文详细介绍了基于Qt框架的串口通信程序开发流程,包含串口配置(波特率、数据位等参数设置)、数据发送(按键触发、定时发送、HEX格式转换)、数据接收(文本/HEX显示、自动换行、时间戳)、多文本操作(批量管理、保存/载入配置)等功能模块的实现方法。重点阐述了信号槽机制的应用(如QTimer定时触发、QSerialPort数据接收)、QByteArray数据转换以及QFileDialog文件操作等关键技术,并提供了UI控件动态遍历、状态提示等优化方案。整个系统通过模块化设计实现了完整的串口通信功能。

2025-06-12 21:33:24 1059

原创 P4 QT项目----会学串口助手完结版

串口助手是一款用于调试串口通信的工具软件,支持RS-232、RS-485等接口,广泛应用于嵌入式开发和工业控制领域。主要功能包括:串口参数配置(波特率、数据位等)、数据收发(支持文本和HEX格式)、高级功能(协议解析、波形显示)等。使用步骤分为设备连接、参数配置、数据发送与接收三个环节。文中还提供了完整的QT实现代码,包含串口开关、数据收发、定时发送、多文本处理等核心功能模块,并支持十六进制转换、自动换行、历史记录保存等实用特性。该工具解决了串口通信调试中的常见问题,如数据乱码、收发延迟等。

2025-06-12 14:27:54 731

原创 P4 QT项目----串口助手(4.3)

该文章介绍了串口助手软件的多个功能优化与实现,主要包括:1.接收区时间显示功能,通过复选框控制是否显示系统时间;2.HEX显示功能实现,包括接收和发送数据的HEX格式转换与验证;3.面板隐藏/显示功能,可折叠界面面板;4.自定义ComboBox类实现串口号列表刷新;5.定时器实现循环发送功能,支持多文本按键绑定。这些功能通过Qt框架实现,涵盖了串口通信中常见的数据显示、格式转换和界面优化需求。

2025-06-12 00:25:01 740

原创 P4 QT项目----串口助手(4.2)

file.open(QIODevice::WriteOnly | QIODevice::Text)) /* 如果文件未打开,跳出函数 */ui->checkBox_HexSend->setEnabled(false);

2025-06-10 22:55:50 843

原创 P4 QT项目----串口助手(4.1)

摘要:本文介绍了基于QT框架的串口助手设计与调试方法。主要内容包括:1)使用QT ui工具设计串口助手界面;2)通过QComboBox控件添加波特率、数据位等参数选项;3)利用QSerialPort类获取串口配置信息;4)使用QSerialPortInfo类自动检测可用串口。开发中需在.pro文件中添加QT+=serialport模块支持。该设计实现了串口参数配置和自动检测功能,为串口调试提供了便利工具。

2025-06-10 00:42:24 586

原创 P3 QT项目----记事本(3.8)

这是一个基于Qt框架开发的记事本应用程序项目总结。项目主要实现了以下功能:文件操作功能:支持打开、保存和关闭文本文件,并提供文件编码选择功能(通过combobox实现)文本编辑功能:支持字体缩放(通过Ctrl+滚轮或快捷键Ctrl+Shift+=/-实现)界面增强功能:包含光标位置显示、当前行高亮显示 快捷键支持:Ctrl+O打开文件、Ctrl+S保存文件等 文件编码处理:解决文本文件的乱码问题。

2025-06-09 16:09:12 898

原创 P3 QT项目----记事本(3.7)

本文介绍了Qt框架中的事件处理机制及相关实现案例。Qt采用基于事件驱动的编程模型,事件处理流程主要包括事件派发、过滤、分发和处理四个阶段。开发者可以通过重写事件处理器函数(如mousePressEvent、closeEvent等)实现自定义行为。文章展示了多个实用案例:1) 窗口关闭确认、鼠标进出检测和大小调整等基础事件处理;2) 自定义按钮控件实现鼠标交互效果;3) 通过重写wheelEvent和键盘事件实现Ctrl+滚轮调整字体大小;4) 使用事件过滤器机制在更高层级拦截和处理特定事件。

2025-06-09 15:42:21 957

原创 P3 QT项目----记事本(3.6)

本文介绍了Qt记事本程序的文件保存、关闭和快捷键功能优化方案。在文件保存方面,优化了逻辑判断:若已有打开文件则直接写入,否则弹出保存对话框创建新文件。关闭功能增加了QMessageBox提示保存修改,提供保存/放弃/取消三种选择。快捷键实现使用QShortcut类,为打开(Ctrl+O)、保存(Ctrl+S)操作添加快捷方式,并新增字体缩放功能(Ctrl+Shift++/-),通过获取当前字体大小并调整实现文本缩放。这些优化提升了记事本程序的用户体验和操作效率。

2025-06-07 11:00:01 1004

原创 P3 QT项目----记事本(3.5)

本文介绍了基于Qt框架实现文件打开功能的开发过程。主要功能包括:通过QFileDialog选择文件,使用QTextStream以指定编码读取文本内容,并在QTextEdit控件中显示。文章详细说明了编码处理(UTF-8等)、光标位置显示、当前行高亮等优化功能的实现方法,并提供了QComboBox控件用于字符编码选择。代码示例展示了文件打开、编码转换(QString转const char*)以及QTextEdit相关操作的具体实现,包括ExtraSelection结构体用于文本高亮。

2025-06-06 22:59:13 536

原创 P3 QT项目----记事本(3.4)

Qt中QFileDialog使用指南 摘要:本文介绍了Qt框架中QFileDialog对话框的基本使用方法。开发流程包括实例化对象、设置模式(打开/保存)、添加文件过滤器、显示对话框等步骤。通过selectedFiles()方法可获取用户选择的文件路径,实现文件操作功能。文章还提供了两个具体案例:1)文件打开案例,展示如何读取选中的文本文件内容;2)文件保存案例,演示如何将内容写入指定文件。这些方法既可以使用实例化的方式实现高度自定义,也可以选择Qt提供的静态方法简化操作。

2025-06-06 15:44:18 1192

原创 P3 QT项目----记事本(3.3)

Qt框架提供了QFile和QTextStream两个类用于文件操作。QFile继承自QIODevice,支持文件读写、信息获取、基本操作(重命名/删除)及错误处理,常用方法包括open()、read()、write()等。QTextStream则专注于文本处理,支持字符编码和格式化,通过示例代码展示了文本文件的读写流程,包括设置编码(如UTF-8)和逐行读取。这两个类共同构成了Qt中高效灵活的文件处理解决方案,适用于文本和二进制文件操作。

2025-06-06 12:53:58 1088

原创 P3 QT项目----记事本(3.2)

摘要:文章介绍了Qt框架中信号与槽机制的基本概念和应用。信号是由对象在特定事件发生时发出的消息,槽则是响应信号的函数。通过QObject::connect()方法实现信号与槽的连接,当信号触发时会自动调用对应的槽函数。以QPushButton为例说明按键响应的实现方式,并详细讲解了自定义信号与槽的实现步骤:定义信号(signals)、定义槽(slots)、连接信号与槽、发射信号(emit)。该机制是Qt实现对象间通信的核心特性,具有松耦合、灵活性强等特点。

2025-06-03 19:48:30 1039

原创 P3 QT项目----记事本(3.1)

摘要:本文介绍了Qt开发中MainWindow与Widget的主要区别,前者适用于复杂应用(含菜单栏等),后者适合简单界面。详细说明了QApplication类的作用、GUI概念及Qt关键功能如事件循环(exec())、命名空间管理(QT_BEGIN_NAMESPACE)和元对象系统(Q_OBJECT)。同时概述了UI设计师工具的核心组件,包括按钮设计(QPushButton)、水平/垂直布局(QHBoxLayout/QVBoxLayout)、文本编辑(TextEdit)以及窗体元素设计方法。重点强调了Qt

2025-06-03 19:33:36 611

原创 P2 C++基础(2.17)

C++模板机制详解:类模板允许定义通用类,通过类型参数处理不同数据类型,如示例中的MyTemplate类。函数模板实现了通用函数,如add()可处理各种类型运算。模板特化包括完全特化(针对特定类型定制实现,如const char*版本的最大值函数)和部分特化(对特定参数组合定制类实现)。模板机制显著提升了代码复用性和可维护性,是泛型编程的核心工具。

2025-05-30 16:17:42 465

原创 P2 C++基础(2.16)

C++中的友元机制允许外部函数或类访问某类的私有和保护成员,包括三种形式:友元函数、友元类和友元成员函数。友元函数常用于运算符重载,如输入输出运算符;友元类让整个类获得访问权限;友元成员函数则提供更精细的访问控制。使用时需谨慎,过度使用会破坏封装性,建议仅在必要时使用以保持代码的清晰性和维护性。示例展示了各种友元的具体实现方式及其应用场景。

2025-05-30 15:54:54 501

原创 P2 C++基础(2.15)

本文以生动的遥控器类比阐释了C++多态的核心概念,通过基类指针调用虚函数时,程序会根据实际对象类型执行不同派生类的实现。具体展示了通过虚函数、继承和指针/引用实现多态的完整流程同时深入剖析了抽象类的特性,强调其通过纯虚函数强制派生类实现统一接口的设计优势,并以教师类体系为例演示了抽象类的应用场景。最后介绍了利用纯虚函数模拟接口的技术方案,通过篮球运动员和生物行为两个接口类展示了C++实现多重接口继承的典型模式。全文系统性地揭示了多态在增强代码灵活性和可扩展性方面的重要价值。

2025-05-30 15:18:42 356

原创 P2 C++基础(2.14.2)

C++继承机制核心要点摘要 虚函数与多态 virtual:声明基类函数为虚函数,支持派生类重写 override:显式标记派生类中的重写函数,增强安全性 重要规则:虚析构函数、自动虚函数传递、编译器检查 多重继承 允许类继承多个基类 典型问题:菱形继承导致数据冗余 解决方案:使用虚继承(virtual public)确保基类单一实例 初始化规则:最派生类负责虚基类初始化 虚继承机制 专门解决多重继承中的菱形问题 内存代价:增加虚基类指针开销 设计建议:优先考虑组合替代复杂继承

2025-05-29 21:28:55 830

原创 P2 C++基础(2.14.1)

本文介绍了C++中面向对象编程的核心概念——继承。主要内容包括:1)继承基本概念,通过Vehicle类和Roadster类的示例展示了代码重用、扩展性和多态性;2)权限对继承的影响,说明public/protected/private继承对基类成员访问权限的改变;3)基类构造函数的调用机制,通过Vehicle和Roadster的构造函数调用示例演示了派生类如何初始化基类成员。文中提供了多个代码实例,包括交通工具类和动物园动物类的继承实现,帮助理解继承在实际编程中的应用。

2025-05-29 19:36:20 452

原创 P2 C++基础(2.13)

摘要:C++中的静态成员包括静态变量和静态函数。静态成员变量由类的所有对象共享,只需在类外初始化一次,可用于存储类级别的共享数据(如实例计数)。静态成员函数可直接通过类名调用,但不能访问非静态成员。示例展示了使用静态变量跟踪实例数量:构造函数增加计数,析构函数减少计数。静态成员的优势在于数据共享、节省内存以及提供独立于对象的功能,适合管理类级别状态和全局数据。

2025-05-29 18:54:07 218

原创 P2 C++基础(2.12)

C++析构函数是对象生命周期结束时自动调用的特殊成员函数,用于资源清理。它以~类名()命名,无返回值参数,不可重载。核心功能包括释放动态内存等资源,防止内存泄漏。基础要点包括:语法格式(~ClassName())、自动调用机制、资源管理必要性。重点注意事项:多态基类需虚析构函数、析构函数不应抛出异常。析构函数配合RAII原则,是C++资源管理的关键机制,对避免资源泄露至关重要。

2025-05-29 18:33:30 383

原创 P2 C++基础(2.11)

本文介绍了C++中构造函数的多种用法及相关概念。主要内容包括: 基本构造函数:在对象创建时自动执行,用于初始化成员变量,名称与类名相同且无返回值。 带参数构造函数:通过参数为对象赋初始值。 拷贝构造函数:用于创建对象副本,在对象复制、参数传递和返回值等场景自动调用。 初始化列表:直接在构造过程中初始化成员变量,提高效率且适用于引用和常量成员。 this关键字:指向当前对象的指针,用于区分成员变量和参数,支持链式调用。 new关键字:动态内存分配工具,需与delete配合使用以避免内存泄漏。

2025-05-29 14:59:53 470

原创 P2 C++基础(2.10)

本文介绍了C++中的两种重载机制:函数重载和运算符重载。函数重载允许在相同作用域内定义多个同名函数,通过参数类型、数量或顺序的差异来区分,但不能仅通过返回类型不同来重载。文中展示了print()函数处理不同数据类型的示例。运算符重载则允许自定义类中运算符的行为,需遵循不能创建新运算符、至少一个操作数为用户定义类型等规则。通过Person类的==运算符和Point类的+运算符重载示例,说明了其实现方法及注意事项,强调要保持运算符的原始语义和合理使用。这两种重载机制可提高代码的可读性和灵活性。

2025-05-29 13:56:48 303

空空如也

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

TA关注的人

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