- 博客(39)
- 收藏
- 关注
原创 嵌入式第三十九课!!!poll的特点与epoll实现IO多路复用!!!
本文比较了三种IO多路复用技术的特点:select使用位图存储文件描述符,最多监测1024个;poll改用链表存储,无数量限制;epoll采用红黑树存储,效率更高。重点介绍了epoll的实现机制,包括创建描述符集合(epoll_create)、操作集合(epoll_ctl)和事件监测(epoll_wait)等关键函数接口,并提供了TCP并发模型的代码示例。文章还解释了边沿触发和水平触发两种模式的原理差异:边沿触发检测信号跳变瞬间,水平触发则持续检测特定电平状态。epoll支持这两种触发模式,相比select
2025-08-28 17:48:46
470
原创 嵌入式第三十八课!!!TCP并发服务器创建
本文介绍了TCP并发服务器的几种实现方式:1)多进程模型,通过fork()创建子进程处理客户端请求,资源开销大但安全性高;2)多线程模型,使用pthread_create创建线程处理请求,资源消耗小于进程;3)线程池模型,预先创建线程池避免频繁创建销毁线程;4)IO多路复用技术(select),单个进程监控多个文件描述符,无需创建新进程/线程。文中给出了多进程、多线程和select三种实现的具体代码示例,包括套接字初始化、事件处理和通信流程。这些方法各有优缺点,可根据实际需求选择适合的并发处理方案。
2025-08-27 18:06:48
729
原创 嵌入式第三十七课!!!TCP机制与HTTP协议
TCP协议通过头部标志位(SYN、ACK、FIN等)和多种机制确保可靠传输,包括三次握手、超时重传、滑动窗口等。HTTP作为应用层协议基于TCP实现,通过URL定位资源,使用80/8080端口通信。HTTP报文包含请求和响应两种类型,请求报文包含请求方法、URL和协议版本等信息,响应报文包含状态码和内容类型等。连接方式分为长连接(keep-alive)和短连接(close)。开发者可通过浏览器开发者工具或Wireshark抓包分析HTTP报文内容。
2025-08-26 18:00:00
1078
原创 嵌入式第三十六课!!!Linux下的网络编程——TCP网络协议
本文介绍了TCP协议的核心特性及其编程实现。主要内容包括:1)TCP与UDP的对比,突出TCP面向连接、可靠传输的特点;2)TCP三次握手和四次挥手机制;3)关键网络编程函数(connect、send、listen等)的使用方法;4)TCP粘包问题的成因及解决方案(如调整发送速率、使用分隔符等)。文章通过客户端/服务端代码示例演示了TCP通信流程,并针对跨平台数据传输提出了结构体对齐的注意事项,全面涵盖了TCP协议的核心知识点。
2025-08-24 20:57:02
902
原创 嵌入式第三十五课!!Linux下的网络编程
本文主要介绍了网络编程的基本概念和实现方法。首先阐述了网络通信的两个基本前提:物理层面的主机互联和软件层面的进程互通。其次详细讲解了TCP/IP协议栈的分层结构,包括OSI七层模型和TCP/IP五层模型,并重点介绍了IP地址的分类、子网划分和端口号的作用。最后通过UDP协议的编程实例,展示了客户端和服务端的基本通信流程,包括套接字创建、数据收发等核心操作。全文系统性地梳理了网络编程的基础知识,为理解网络通信机制提供了清晰的框架。
2025-08-22 19:52:05
2476
原创 嵌入式第三十四课!!!IPC机制——共享内存
共享内存是最高效的进程间通信方式,通过内存映射技术避免数据反复拷贝。其操作流程包括:1)使用ftok创建IPC key;2)通过shmget创建共享内存;3)用shmat建立内存映射;4)通过返回地址读写数据;5)用shmdt解除映射;6)用shmctl删除共享内存。相关命令包括ipcs查看IPC对象,ipcrm删除共享内存等。该系统调用实现了内核空间与用户空间的高效数据共享。
2025-08-22 18:28:36
809
原创 嵌入式第三十三课!!IPC机制——信号
本文介绍了信号机制及其在进程间通信中的应用。系统支持多种信号,如SIGINT(ctrl+c)、SIGKILL(强制终止)等,可通过kill -l查看。信号处理有三种方式:默认处理、忽略或自定义捕获。文中详细说明了信号注册函数signal()的使用方法,并列举了6种发送信号的方式:kill命令、kill()函数、子进程结束信号、raise()、alarm()定时信号和pause()挂起。通过代码示例展示了父子进程间信号交互的实现,强调信号处理应尽早注册并注意避免死循环。最后指出pause()需配合信号捕获使用
2025-08-19 18:55:24
1086
原创 嵌入式第三十二课!!线程间的同步机制与进程间的通信(IPC机制)
本文介绍了线程间的同步机制与进程间通信方法。线程同步方面,详细讲解了信号量的原理及操作步骤(定义、初始化、P/V操作、销毁),并通过代码示例展示如何实现线程顺序控制。同时分析了死锁的四种必要条件及解决方法(锁成对出现、统一加锁顺序等)。进程通信部分涵盖无名管道(亲缘关系进程)和有名管道(任意进程)的实现原理及代码示例,比较了单工/半双工/全双工通信特性,并说明管道阻塞条件和删除管道的注意事项。全文通过具体代码演示了多线程同步和进程通信的实际应用场景。
2025-08-18 20:04:15
1285
原创 嵌入式第三十一课!!!线程消亡与线程间通信!!!
本文介绍了线程管理的核心概念。线程消亡包括线程退出(通过return或pthread_exit)和线程回收(使用pthread_join)。线程通信可通过全局变量实现,但需注意临界资源访问时的竞争问题,可通过互斥锁机制(创建、初始化、加锁、解锁、销毁)解决。线程属性分为分离属性(由系统回收)和非分离属性(默认),可通过pthread_detach设置分离属性。文章详细说明了相关函数的参数、返回值及使用方法。
2025-08-17 23:35:11
464
原创 嵌入式第三十课!!!多任务(并发)——多线程篇!!!
本文介绍了线程的基本概念及其应用。线程作为轻量级的进程,可实现多任务并发,是操作系统任务调度的最小单位。与进程相比,线程资源开销小(仅需8M栈空间),通信简单(通过共享区域),但安全性较低。文章详细讲解了线程的创建(pthread_create)、调度(操作系统负责)、退出(pthread_exit)和回收(pthread_join)等操作,并提供了创建线程的代码示例。同时,通过表格对比了进程与线程在资源分配、调度效率、通信方式和安全性等方面的差异,帮助读者理解两者的区别与应用场景。
2025-08-16 12:00:00
679
原创 嵌入式第二十九课!!!回收子进程资源空间函数与exec函数
本文介绍了Linux系统编程中进程管理的三个关键函数: wait() - 阻塞等待回收子进程资源,通过wstatus参数获取子进程退出状态,返回回收到的子进程PID; waitpid() - 更灵活的进程回收函数,支持指定进程组、非阻塞模式(WNOHANG)等选项; exec函数族 - 用于在一个进程中执行另一个程序,包括execl()、execlp()、execv()等变体,可通过系统路径或指定路径执行外部命令。 文中通过代码示例演示了这些函数的典型用法,包括父子进程的创建、资源回收策略(阻塞/非阻塞),
2025-08-15 19:28:20
838
原创 嵌入式第二十八课!!!多任务(并发)——多进程篇
本文介绍了操作系统中的多任务处理机制,重点讲解了进程相关知识。主要内容包括:1)进程与程序的区别,程序是静态存储的代码,进程是动态执行的实例;2)进程的内存空间分配,包括内核区、栈区、堆区等;3)进程调度算法,如时间片轮转、优先级调度等;4)进程的状态转换,包括就绪态、运行态、阻塞态等;5)进程相关命令,如ps、top、kill等;6)进程编程中的fork函数使用、进程退出和资源回收。最后还介绍了僵尸进程和孤儿进程的概念及处理方法。
2025-08-14 20:08:58
2658
原创 嵌入式第二十七课!!!不同文件使用的IO方式与framebuffer!!!
本文介绍了Linux系统中不同文件类型的IO处理方式,重点讲解了framebuffer技术的实现原理。文件IO方式包括:块设备文件(硬盘)、字符设备文件(输入输出设备)、目录文件、普通文件等。framebuffer作为Linux图形显示接口,通过显存存储像素点颜色值(支持RGB888和RGB565格式),使用内存映射技术实现用户空间到显存的间接操作。具体实现步骤包括:1)打开显示设备;2)获取设备参数;3)建立内存映射;4)写入颜色值;5)解除映射;6)关闭设备。文中提供了相关代码示例,并说明了ioctl和
2025-08-13 20:14:18
934
原创 嵌入式第二十六课!!!文件IO与文件定位函数
摘要:本文介绍了Linux系统中文件IO的基本操作,包括open()、read()、write()和close()等系统调用。重点讲解了文件描述符的概念(0-1023范围)、open()函数的flags参数(如O_RDONLY、O_CREAT等)以及标准IO与文件IO的对应关系。同时说明了标准IO的缓冲区类型(行缓冲1K、全缓冲4K、无缓冲)及其刷新机制,并提供了lseek()函数进行文件定位的方法。最后给出了两个练习:实现cat功能和文件拷贝功能。
2025-08-12 22:49:43
369
原创 嵌入式第二十五课!!!文件读写操作补充与应用、以及文件流定位相关函数接口
本文介绍了C语言中文件读写操作的相关函数及其应用。主要内容包括:1. fgets/fputs函数用于文本文件读写,对比了gets和fgets的区别;2. fwrite/fread函数用于二进制文件读写,演示了结构体数据的读写方法;3. 文件流定位函数fseek和ftell的使用;4. 实际应用案例:解析BMP文件头信息和模拟迅雷下载的磁盘空间抢占功能。文章详细讲解了各函数的参数、返回值和使用注意事项,并提供了完整的代码示例,帮助理解文件操作的核心概念和实现方法。
2025-08-11 19:44:19
2274
原创 嵌入式第二十四课!!linux应用软件编程与文件操作!!!
在标准IO里,FILE 就是文件流,FILE * 就是文件流指针,指向已打开文件;"a+" 以读写的方式打开,文件不存在创建,,文件存在追加写。"w" 以只写的方式打开,文件存在则清空,文件不存在则创建。"w+" 以读写的方式打开,文件存在则清空,文件不存在则创建。linux应用软件编程实际上就是操作系统相关的编程,也就是使用不同的函数接口、搭建不同的流程框架;"a" 以追加写的方式打开,文件不存在创建。"r+" 以读写的方式打开,文件必须存在。
2025-08-10 23:08:54
766
原创 嵌入式第二十三课 !!!树结构与排序(时间复杂度)
摘要:本文介绍了二叉树的基本概念和特性。二叉树是n个结点的有限集合,具有根节点和左右子树结构,其结点最多有两个子树。文中阐述了特殊的二叉树类型(斜树、满二叉树、完全二叉树)及其特性,如第i层最多有2^(i-1)个结点。同时介绍了二叉树的三种遍历方式(前序、中序、后序),并提供了C语言实现代码,包括创建二叉树、三种遍历方法以及销毁树结构的程序编写。最后提及了各种排序算法的时间复杂度。
2025-08-08 20:26:26
383
原创 嵌入式第二十二课!!!链式队列与哈希表
本文介绍了链式队列和哈希表的数据结构实现。链式队列部分详细说明了创建队列、入队(尾插)、出队(头删)、判空、获取队头元素、销毁队列和遍历等操作的C语言实现代码。哈希表部分重点讲解了哈希存储原理、哈希冲突解决方法(开放地址法和链地址法),并给出了哈希表的创建、插入数据(按字母顺序排序)、查找数据、销毁哈希表和遍历等功能的实现代码,其中哈希表用于存储通讯录信息,使用首字母作为哈希函数的关键字。全文通过具体代码示例展示了这两种数据结构的实现方法。
2025-08-07 20:51:56
540
原创 嵌入式第二十一课!!内核链表、栈结构与队列
本文主要讲解了数据结构中的栈和队列实现方式及应用。在栈部分,详细介绍了顺序栈的四种类型(满增栈、满减栈、空增栈、空减栈)及其操作特点,以及链式栈的实现方法。队列部分重点讲解了顺序队列的假溢出问题和循环队列的解决方案,包括空满判断方法和越界处理。文章还通过代码示例展示了链式栈和顺序队列的具体实现,包括创建、入栈/入队、出栈/出队、判空、销毁等操作。最后简要提及链式队列的特点和应用场景,并预告后续课程内容。这些数据结构在程序设计中有着广泛应用,如系统调用、递归实现、缓冲区管理等场景。
2025-08-06 20:15:07
1552
原创 嵌入式第二十课!!!Makefile文件与双向链表!!!
本文介绍了Makefile文件的基本语法和GCC编译的四个步骤:预处理、编译、汇编和链接。详细讲解了Makefile的编写规则,包括目标文件与依赖文件的定义、变量的使用、clean清除操作以及系统变量$^、$<、$@的应用。同时说明了如何指定头文件和库文件路径,并解释了Makefile的时间戳特性。此外,文章还介绍了双向链表的实现,包括创建链表、头插/尾插数据、头删/尾删数据、销毁链表和遍历操作的具体代码实现。通过对比单向链表,展示了双向链表在遍历操作上的灵活性。
2025-08-05 20:15:02
1229
原创 嵌入式第十九课!!!单向链表的应用!!!!
本文介绍了单向链表的几种高级操作:1. 使用valgrind工具检测内存泄漏,通过销毁函数确保所有堆内存被释放;2. 快慢指针技术:用于高效查找链表中间节点和倒数第K个节点;3. 链表逆序实现:通过头插法重新连接节点;4. 链表插入排序:通过断开和重新插入节点实现数据排序。文章详细讲解了每种操作的实现原理、流程图解和完整代码,并强调了特殊情况的处理。这些技术提升了链表操作的效率,是数据结构学习中的重要内容。
2025-08-04 20:40:42
1302
原创 嵌入式第十八课!!数据结构篇入门及单向链表
本文系统介绍了数据结构的基本概念和单向链表的实现方法。首先阐述了数据结构的定义,包括逻辑结构(集合、线性、树形、图形)和物理结构(顺序、链式、索引、散列)的分类。重点讲解了单向链表的实现,包括创建链表对象、头插/尾插数据、头删/尾删数据、查找修改数据以及销毁链表等核心操作。通过C语言代码示例,详细说明了链表节点的结构定义和各种操作的实现逻辑,强调指针和结构体的应用技巧。文章指出单向链表作为动态存储结构,具有插入删除方便、内存利用率高的特点,是数据结构的重点内容之一。
2025-08-02 20:15:04
1240
原创 嵌入式第十七课!!!!位运算!!!
本文介绍了C语言中常用的位运算符及其用法。主要内容包括:1)运算符优先级:算术>位运算>逻辑运算;2)基本位运算(&、|、^、~)的功能和示例;3)位移运算符(<<、>>)的使用方法;4)如何通过位运算实现特定位的置0/1操作。文章通过具体代码示例展示了每种运算符的实际应用场景,为后续学习数据结构和C语言项目开发奠定了基础。这是C语言基础知识的最后一节内容。
2025-08-01 18:29:44
269
原创 嵌入式第十六课!!!结构体与共用体
摘要:本文介绍了C语言中结构体的基本概念和使用方法。结构体是一种自定义数据类型,通过struct关键字定义,包含多个不同类型的成员变量。文章详细说明了结构体的声明、初始化、嵌套使用、指针传递、数组应用以及内存对齐规则。此外,还简要介绍了共用体(union)、枚举类型(enum)和typedef类型定义的相关知识,包括它们的特点和使用场景。这些复合数据类型能够有效组织和管理复杂数据,提高程序的可读性和运行效率。
2025-07-31 23:03:06
1088
原创 嵌入式第十五课!!!!指针函数(续)+函数指针+二级指针+指针数组!!!
本文介绍了C语言中与指针相关的几个重要函数:1. malloc函数用于堆区动态内存分配,需注意申请失败返回NULL以及内存释放问题;2. free函数用于释放malloc分配的内存,防止内存泄漏;3. realloc函数用于重新调整已分配内存块大小;4. calloc函数以数组形式分配内存并初始化为0。文章还详细讲解了函数指针的概念和使用方法,包括回调函数应用,以及qsort标准库函数的使用示例。最后介绍了二级指针、指针数组的概念和标准主函数的参数形式。文中通过代码示例和比喻,帮助理解这些指针操作的关键要点
2025-07-30 20:21:54
1247
原创 嵌入式第十四课!!!指针在字符数组的应用与数组指针
本文主要讲解了字符数组指针作为函数参数的应用及注意事项。首先介绍了Strcpy函数的使用,强调字符串常量不可修改的特性。接着讲解了const修饰符的作用和指针运算限制,并介绍了万能指针void*的应用。文章详细说明了多种字符串处理函数(如Strcat、Strcmp、Strncpy等)的实现原理和使用方法,以及它们在二维数组中的应用。最后讲解了指针函数的定义和注意事项,特别强调了返回局部变量地址的危险性。通过多个实例展示了如何正确使用指针处理字符串和数组操作。
2025-07-29 19:31:42
1043
原创 嵌入式第十三课!!!指针(续)!!!
本文介绍了C语言中指针与数组操作的核心知识。主要内容包括:指针运算规则(加减n相当于移动n*基类型字节)、数组与指针关系(数组名即首元素地址)、常见数组操作(打印、求和、逆序、排序、二分查找等),以及使用指针作为迭代器的技巧(如快速排序qSort实现)。特别强调了空指针判断、指针运算限制(不能相加但能相减)和字符数组指针操作。通过多个代码示例展示了指针在数组处理中的灵活应用,同时提醒注意野指针风险和递归时的参数传递问题。
2025-07-28 20:05:45
768
原创 嵌入式第十二课!!!预处理命令与指针!!!!
本文介绍了C语言预处理命令的三种主要应用:宏定义、文件包含和条件编译。宏定义部分详细说明了无参宏和带参宏的语法及使用注意事项,强调宏名应大写、不加分号,表达式需加括号避免优先级问题。文件包含部分对比了本地文件与系统头文件的包含方式,并展示头文件的实际应用。条件编译部分讲解#ifdef和#ifndef的用法,说明其在调试和防止重复包含中的作用。此外,文中还简单提及指针的基础概念和操作,包括指针定义、内存访问方式及地址运算符的使用规则。预处理命令能有效提升代码复用性和灵活性,合理使用可优化程序结构。
2025-07-27 23:39:03
579
原创 嵌入式第十一课!!!函数参数补充以及标识符的作用域和可见性
本文主要介绍了二维数组作为函数参数的传递规则和标识符的作用域与生存期。在二维数组传参时,需同时传递数组名和行数,列数必须固定。作用域分为局部和全局两种:局部作用域变量仅限内部访问,全局作用域变量可全局访问。生存期包括静态(程序运行全程)和动态(作用域内有效)。存储类别涵盖auto、register(建议寄存器存储)、static(保持值不变)和extern(引用外部变量)四种类型。文章还强调了标识符的可见性规则,包括定义顺序、同名标识符处理等注意事项。
2025-07-25 20:27:44
954
原创 嵌入式第十课!!!函数调用详解(底层逻辑+递归+数组参数)
本文介绍了C语言中函数调用的参数传递机制。主要内容包括:1) 值传递的原理,即形参修改不影响实参;2) 指针传递实现参数修改的方法;3) 函数调用时参数从右向左压栈的机制;4) 递归调用的实现及注意事项;5) 数组作为函数参数时的地址传递特性。通过多个代码示例详细说明了不同传递方式的特点、函数调用时的内存分配机制,以及递归和数组参数的使用方法。
2025-07-24 19:42:08
1067
原创 嵌入式第九课!二维数组与函数!!!
本文系统介绍了二维数组与函数在C语言中的使用。对于二维数组,详细讲解了其定义、引用、初始化方法,以及通过sizeof计算行列数的技巧,并比较了二维数组与指针的关系。在函数部分,阐述了无参函数和有参函数的定义方式、调用规则及注意事项,包括返回值处理、参数传递等关键点。通过求二维数组元素和、判断最大字符串等实例演示了二维数组的实际应用,并以闰年判断程序为例展示了函数的定义与调用过程。最后强调了编程规范、错误检查(如assert函数使用)及常见问题的解决方法。
2025-07-23 20:16:45
1372
原创 嵌入式第八课!二分法查找与字符数组!
本文介绍了C语言中字符数组的相关操作。主要内容包括:1)字符数组的定义与初始化,强调字符串末尾的'\0'结束符;2)字符数组处理函数如puts()、gets()、fgets()等的使用方法及注意事项;3)字符串长度计算函数strlen()及其实现原理;4)字符串拷贝函数strcpy()和连接函数strcat()的实现逻辑;5)字符串比较函数strcmp()的工作原理及使用场景。文中通过代码示例详细说明了这些函数的底层实现机制,如遍历比较、数组越界处理等,并比较了不同函数的安全性差异。文章最后还解释了为什么不
2025-07-22 19:23:24
1021
原创 嵌入式第七课!难度爆表的——C语言数组!!
本文介绍了C语言中数组的基本概念、性质和操作方法。主要内容包括:1)数组的三大特性(单一性、连续性、有序性);2)一维数组的定义、引用和初始化规则;3)数组元素的访问方式及常见错误(如越界);4)四种典型数组排序算法(逆序、选择排序、冒泡排序和插入排序)的实现代码及运行示例。文章通过具体代码演示了各种排序算法的实现过程,并提醒读者注意数组使用中的常见问题。
2025-07-21 21:16:32
630
原创 嵌入式第六课!循环控制!!!
这篇文章介绍了编程中的循环控制结构及相关概念。首先补充了条件运算符的使用方法,然后详细讲解了循环结构的注意事项,包括变量初始化、执行条件和结束标志等。文章依次介绍了goto循环、while循环、do...while循环和for循环的语法特点及使用场景,并比较了break和continue语句的区别。最后通过打印特定三位数和寻找素数两个实例,演示了循环嵌套的实际应用。文章强调编程规范,如循环体使用花括号、避免无限循环等,并提供了具体的代码示例和运行结果。
2025-07-19 19:45:13
1058
原创 嵌入式第五课!选择结构程序设计
摘要:本文详细讲解了C语言选择结构程序设计,重点补充了scanf函数的使用技巧(返回值判断和缓冲区处理),分析了关系运算符和逻辑表达式的使用要点(包括优先级和短路特性)。系统介绍了if语句的三种格式及嵌套使用,强调了大括号规范和分号注意事项。同时讲解了switch语句的语法结构、break作用和合并规则。最后提到用return退出函数的方法,为选择结构程序设计提供了全面的指导。文章内容详实,涵盖了选择程序设计的核心知识点。
2025-07-18 21:29:40
961
原创 嵌入式第四课!C语言基本程序设计与数据的输入输出
摘要:本文介绍了C语言程序设计基础,重点讲解逗号运算符的优先级特性,以及C语言的5类执行语句(控制语句、函数调用语句、表达式语句、空语句和复合语句)。详细说明了输入输出函数的使用方法,包括printf/scanf、putchar/getchar等函数的具体用法和格式控制符(如%d、%f、%s等)的差异及注意事项。特别强调了scanf函数输入时的格式要求和地址运算符&的使用,以及不同类型数据对应的格式控制符选择。
2025-07-17 19:45:25
1060
原创 嵌入式学习第三课!运算符、各类数据的混合运算以及赋值
鉴于详细的表格,此处对于转义字符不再多加赘述,只强调一些容易误会其含义的字符。\t ,在使用这个字符的时候,会发现会与前面的字符加起来。当前面没有字符的时候,则前面会空出8个字符。\b,左移一位,后面的字符会到其原字符。\x,后+数字,会输出字符。
2025-07-16 20:20:34
836
原创 嵌入式第二课!C语言数据的类别与存储分析
本文介绍了计算机存储的基本原理和数据类型分类。存储系统由RAM(临时存储)和ROM(永久存储)组成,RAM读写速度快但断电数据丢失,ROM则相反。数据分为常量和变量,变量命名需遵循特定规则。整型数据包含4种类型(short/int/long/longlong),各有符号和无符号版本,存储方式分大端和小端,负数用补码存储。浮点型数据分为float和double,采用科学计数法存储(符号位+阶码+尾数)。字符型数据用单引号表示,分为char和unsigned char。文章最后区分了'1'、1和"1&
2025-07-15 19:53:57
439
原创 嵌入式学习第一课!正确认识基本框架以及学习基本Linux指令
本文分享了嵌入式开发的学习路径,从基础到高阶分为四个层次:底层C语言和数据结构是核心基础;中层包括裸机驱动和Linux驱动开发;上层是Linux系统编程;补充层则涉及C++的复杂系统开发。同时介绍了Linux基础操作指令,如ls、cd、mkdir等,为后续嵌入式开发打下环境基础。文章通过清晰的层次划分,为初学者提供了系统化的嵌入式学习指南,强调从硬件操作到系统调用的完整知识体系构建。
2025-07-14 22:03:32
856
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅