自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 Linux系统之网络基础概念(下)

• 发送主机通常将发送缓冲区中的数据。

2026-08-29 17:06:13 175 4

原创 Linux系统之网络基础概念

摘要 本文系统介绍了计算机网络的发展历程与协议概念。第一部分阐述了计算机网络从独立模式到广域网的演进过程,重点描述了局域网和广域网的组成结构。第二部分深入解析了协议概念:1)通过生活实例说明协议是通信双方约定的规则;2)强调标准协议对异构设备互联的重要性;3)详细讲解TCP/IP五层模型(物理层、数据链路层、网络层、传输层、应用层)及各层功能;4)指出协议本质是结构化的数据类型约定,通过分层实现解耦,使不同操作系统设备能相互通信。文章通过图示和代码示例生动展现了协议如何确保通信双方对数据格式的理解一致。

2026-08-20 20:42:32 371 26

原创 MySQL数据库原理与实践(五):内置函数

本文系统介绍了MySQL常用内置函数,包括日期函数(now()、date_add()、datediff()等)、字符串函数(concat()、substring()、replace()等)、数学函数(abs()、rand()、mod()等)及其他实用函数(user()、md5()、ifnull())。通过具体案例演示了这些函数在日期处理、字符串操作、数值计算和数据转换中的应用场景,如计算日期差值、字符串拼接、大小写转换、随机数生成等。掌握这些内置函数能有效简化SQL语句,提高数据处理效率,为数据查询、统计分

2026-08-02 21:17:37 353 43

原创 MySQL数据库原理与实践(四):基本查询

本文介绍了MySQL数据库的基本操作,包括表的增删改查、条件查询、排序、分页以及聚合函数的使用。主要内容包括:1.表的创建、插入和更新操作;2.基本查询语法(全列查询、指定列查询、表达式查询、别名设置);3.where条件筛选(比较运算符、逻辑运算符、范围查询、模糊查询);4.结果排序(order by)和分页(limit);5.聚合函数(count、sum、avg等)和分组统计(group by);6.删除操作(delete和truncate的区别)。文中通过大量实例演示了各种SQL语句的用法,并强调了执

2026-07-28 16:08:10 578 31

原创 数据结构之堆

本文系统介绍了堆数据结构及其应用,主要内容包括:1. 堆的基本概念:作为完全二叉树,堆分为大堆(父节点≥子节点)和小堆(父节点≤子节点),通常用数组实现以优化空间利用和访问效率。2. 核心操作实现:重点讲解了插入时的向上调整和删除堆顶时的向下调整算法,通过动态数组管理堆空间,保持堆的性质不变。3. 建堆方法:比较了向上建堆(O(nlogn))和向下建堆(O(n))的时间复杂度差异。4. 堆排序应用:通过建大堆和反复交换堆顶元素实现升序排序。5. Top-K问题解决方案:使用大小为K的小堆高效筛选海量数据中的

2026-07-27 12:49:58 800 28

原创 硬核拆解:Linux 静态库从原理到实战

简单来讲,库是写好的现有的,成熟的,可以复用的代码,我们可以把它想象成一个装备齐全的工具箱,假设我们正在造一辆汽车时,我们并不需要从零开始去炼钢、做轮胎、造发动机,而是直接从仓库里把现成的轮胎和发动机拿过来组装,那么库就是提供给程序员的就是这些现成的零部件。现实中每个程序都要依赖很多基础的底层库,就比如说我们常用的printf,如果没有了库,那么每个程序员都要自己写printf的实现,这就会导致每个人printf实现的都不相同,所以为了方便写代码,世界上的顶级程序员就联合起来,编写了库,这样以后,

2026-07-24 16:42:05 746 36

原创 MySQL数据库原理与实践(三):表的约束

本文系统介绍了MySQL中表约束的概念与应用,重点讲解了8种核心约束及其使用场景:1. NOT NULL约束:强制字段非空,确保数据完整性 2. DEFAULT约束:为字段设置默认值,简化数据插入 3. COMMENT描述:为字段/表添加说明文档,提高可维护性 4. ZEROFILL属性:数值显示宽度不足时自动前补零 5. PRIMARY KEY主键:唯一标识记录(非空、唯一、单表唯一) 6. AUTO_INCREMENT自增长:自动生成递增值(需配合主键/索引) 7. UNIQUE唯一键:保证字段业务唯一

2026-07-24 16:38:50 843 44

原创 MySQL数据库原理与实践(二):数据类型

本文介绍了MySQL中常用的数据类型,包括数值类型(TINYINT、INT、BIT)、小数类型(FLOAT、DECIMAL)、字符串类型(CHAR、VARCHAR)、日期时间类型(DATE、DATETIME、TIMESTAMP)以及枚举和集合类型(ENUM、SET)。重点分析了各类型的存储范围、语法格式和使用场景,并通过实例演示了数据越界处理、精度差异等特性。文中对比了CHAR和VARCHAR的定长/变长特性,解释了ENUM和SET的数值存储原理,特别强调了SET类型的位图查询方法。整体上,文章系统梳理了M

2026-07-20 17:47:56 993 21

原创 线程同步与线程互斥(中)

本文介绍了线程同步中的条件变量及其应用,重点讲解了生产者-消费者模型。主要内容包括:1. 线程同步概念:通过条件变量让线程按照特定顺序访问临界资源,避免饥饿问题。2. 条件变量工作原理:当条件不满足时线程释放锁并等待;条件变化时通知等待线程。3. 生产者-消费者模型:通过阻塞队列解耦生产者和消费者,支持并发操作。4. 关键实现细节:使用互斥锁保护共享资源,条件变量实现等待和唤醒机制,注意伪唤醒问题需用while循环判断条件。文章还提供了基于阻塞队列的生产者-消费者模型代码实现示例。

2026-07-16 17:46:44 325 13

原创 线程同步与线程互斥(上)

本文主要介绍了线程互斥的原理和锁的概念。首先解释了共享资源、临界资源、临界区等基本概念,以及互斥的必要性。通过代码示例演示了多线程访问共享资源时可能出现的数据不一致问题(如票数减为负数),并分析了原因:非原子操作和线程切换导致。接着介绍了Linux提供的互斥量(mutex)接口,包括初始化、加锁、解锁和销毁操作,并通过修改后的代码展示了如何正确使用互斥锁来保护临界资源。最后探讨了锁的实现原理,说明其原子性保证机制,并提出了一种锁的简单封装方法,采用RAII风格管理锁的生命周期。全文重点阐述了线程互斥的必要性

2026-07-10 13:43:48 1483 19

原创 线程概念与控制(中)

本文介绍了Linux线程控制的基本概念与操作,主要内容包括:1. 线程库引入:Linux通过pthread库在用户层封装线程接口,底层使用轻量级进程(LWP)实现。通过pthread_create创建线程时需链接-lpthread库。 2. 线程控制接口: 线程等待:pthread_join获取线程返回值,需处理退出方式(return、pthread_exit或pthread_cancel)。 线程终止:可通过函数return、pthread_exit或pthread_cancel实现,注意资源释放问题。

2026-06-28 16:43:57 760 17

原创 线程概念与控制(上)

本文系统探讨了Linux线程与进程的核心概念及其底层实现机制。首先从资源视角区分进程(资源分配单位)与线程(CPU调度单位),揭示Linux通过轻量级进程模拟线程的本质。重点剖析了分页存储管理:详细阐述物理内存以4KB页框为单位的管理方式,深入解析多级页表(页目录+页表)的地址转换机制,包括TLB快表的作用和缺页中断处理流程。通过虚拟地址空间管理(mm_struct/vm_area_struct)阐明资源分配本质是地址空间划分。最后对比线程与进程特性:分析线程在创建开销、切换效率等方面的优势,以及存在的健壮

2026-06-27 19:19:57 2117 17

原创 Linux信号机制(终)

本文围绕操作系统核心概念展开:1. 用户态与内核态:解释了进程地址空间的划分(0-3GB用户空间/3-4GB内核空间),通过CPU的CS寄存器权限位实现状态切换(CPL=0内核态/CPL=3用户态),内核空间由所有进程共享但受权限保护。2. 可重入函数:通过链表插入示例说明函数重入可能导致的数据错乱问题,强调信号处理函数应使用只访问局部变量的可重入函数。3. volatile关键字:演示编译器优化可能导致信号修改的全局变量未被及时读取,volatile强制每次从内存读取最新值。4. SIGCHLD信号:分析

2026-06-25 15:47:54 485 11

原创 Linux信号机制(下)

本文深入解析了操作系统的信号捕获机制和运行原理。信号处理并非即时完成,而是由内核在返回用户态前检查并递达,通过修改执行现场让信号处理函数以用户态运行。操作系统通过四种主要入口获得执行权:硬件中断(如键盘输入)、时钟中断(实现进程调度)、异常(如除零错误)和软中断/系统调用。其中,硬件中断实现了外设主动通知机制,时钟中断周期性触发使内核能维护系统状态,而系统调用通过中断指令和调用表实现功能服务。这些机制共同构成了操作系统响应外部事件、管理硬件资源和提供服务的基础架构。

2026-06-18 17:08:15 416 14

原创 Linux信号机制(中)

本文深入探讨了Linux系统中的信号机制,重点分析了信号产生和保存的机制。在信号产生方面,详细讲解了通过alarm函数实现软件条件触发的信号产生方式,并演示了周期性信号处理的实现方法。在信号保存方面,系统阐述了信号从产生到处理的完整生命周期,包括阻塞、未决和递达三种状态,以及对应的三张核心表:block表(阻塞信号集)、pending表(未决信号集)和handler表(信号处理函数表)。通过代码实验验证了信号屏蔽与解除的过程,并解释了SIGKILL和SIGSTOP信号的特殊性。

2026-06-13 18:13:59 591 22

原创 Linux信号机制(上)

本文介绍了Linux信号的基本概念与产生方式。信号是操作系统向进程发送的异步事件通知机制,类似于生活中的各种提醒信号。主要内容包括:1. 信号概念:通过生活类比解释信号是异步事件通知,进程可以预先定义处理方式(默认、自定义或忽略)。2. 信号产生方式:- 键盘输入(如Ctrl+C产生SIGINT)- 系统调用(kill、raise、abort等)- 硬件异常(如除零错误产生SIGFPE,段错误产生SIGSEGV)3. 信号处理原理:信号产生后被记录在进程PCB的位图中,由操作系统在合适时机递送给进程处理。

2026-06-07 18:14:29 651 27

原创 vibe coding之opencode的使用

随着 AI 编程工具的发展,Vibe Coding 正在改变传统的软件开发模式。本文以开源编程代理 OpenCode 为例,介绍其安装配置、模型切换、Plan 与 Build 工作模式、AGENTS.md 初始化机制及常用命令的使用方法。同时结合 C++ 数据结构项目,演示如何利用 OpenCode 与 Google Test(gtest)完成单元测试的生成、运行与验证。通过本文的学习,读者能够快速掌握 OpenCode 的基本使用流程,并了解 AI 编程代理在代码开发、测试与项目管理中的实际应用。

2026-06-06 13:48:16 512 17

原创 数据结构之单链表

本文系统介绍了单链表的基础概念与实现方法,主要内容包括:1. 单链表概念:通过节点指针链接实现非连续存储,相比顺序表具有按需申请空间和插入删除高效(O(1))的优势;2. 核心操作实现:详细讲解了初始化、查找(按值和按索引)、插入(头插/尾插/任意位置)、删除(头删/尾删/指定位置)等操作的实现逻辑与注意事项,重点分析了指针操作的顺序问题;3. 带头节点设计:解释了使用哨兵位头节点避免二级指针的必要性;4. 完整代码示例:提供了各操作的C语言实现及测试用例,强调内存管理和边界条件处理。

2026-06-04 19:10:32 428 21

原创 文件操作全解析:打开关闭读写技巧

本篇目标:1.文件的作用与什么是文件2. 学会文件的打开,关闭 ,读写的操作3. ⽂件读取结束的判定4. 知道文件缓冲区的存在及作用作用: 如果没有文件,我们写的程序数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运行程序,是看不到上次程序的数据的,所以要想将数据进行持久化的保存,我们就可以使用⽂件进行操作。什么是文件?磁盘(硬盘)上的文件是文件,然而在程序设计中,我们⼀般谈的⽂件有两种:程序文件、数据文件,以下是关于文件的具体分类。程序文件包括源文件(后缀为.c),目标文件(win

2026-05-31 17:54:08 332 20

原创 数据结构之顺序表

本文详细介绍了动态顺序表的实现方法。顺序表采用动态内存分配,通过malloc申请空间,并用realloc进行扩容。文章阐述了顺序表的核心操作:初始化、插入(头插/尾插/指定位置插入)、删除(头删/尾删/指定位置删除)、查找(按位置/按值)等功能的实现原理和代码示例。重点讲解了插入和删除操作时的元素移动逻辑,以及扩容策略(通常按2倍扩容)。同时提供了顺序表的基本接口如打印、判空、获取元素个数等,并通过测试代码验证了各项功能的正确性。所有操作都通过指针传递顺序表结构体,确保数据一致性。

2026-05-30 20:15:41 371 17

原创 MySQL数据库原理与实践(一):MySQL安装与基础操作

本文详细介绍了在CentOS系统下安装MySQL数据库的完整步骤,包括获取官方yum源、版本匹配、安装配置及服务启动等关键环节。同时讲解了数据库的核心概念,通过对比文件存储方式,突出数据库在查询速度、安全性、存储效率和并发控制方面的优势。文章还系统梳理了数据库基础操作,涵盖库表创建、修改、删除以及字符集设置等实用技能,并提供了可视化操作示意图,帮助读者快速掌握MySQL的基本使用方法。从环境搭建到实际操作,形成了一套完整的MySQL入门指南。

2026-05-24 17:28:58 552 22

原创 进程间通信的基本概念(上)

本文介绍了进程间通信中的匿名管道机制。主要内容包括:1. 环境准备:从CentOS切换到Ubuntu系统,配置VSCode远程连接Linux服务器;2. 进程通信原理:解释进程隔离导致通信需求,介绍POSIX标准统一接口;3. 匿名管道详解:通过fork创建父子进程共享管道文件描述符,实现单向通信;4. 代码示例:演示管道创建、读写操作及五种特性验证;5. 管道特性总结:血缘关系限制、单向通信、进程生命周期绑定、同步机制和字节流传输。文章通过理论结合实践,帮助读者掌握匿名管道的核心原理和实际应用。

2026-05-23 17:57:02 525 22

原创 硬核拆解:Linux动态库从原理到实战

此时在执行,就成功了。4.

2026-05-10 14:17:20 689 18

原创 进程控制之进程等待

本文介绍了Linux系统中进程等待的必要性及相关函数wait和waitpid的使用。重点讲解了进程等待的三种方式:1)阻塞等待(wait和waitpid默认模式),父进程会一直等待子进程退出;2)非阻塞等待(WNOHANG选项),父进程轮询检查子进程状态,期间可以执行其他任务;3)状态参数status的解析方法,包括WEXITSTATUS获取退出码和WIFEXITED判断正常退出。通过代码示例演示了不同等待方式的特点和应用场景,帮助理解父进程如何正确处理子进程终止并回收资源。

2026-04-18 14:52:56 465 25

原创 进程之虚拟地址空间

以小李与小李为例:幼儿园里,小李不爱干净、小李小李爱干净,两人同用一张桌子,就在桌面正中间画了一条直直的线,把桌子分成左右两块区域,左边归小李、右边归小美,谁都不能越过线占对方的地方,也不能把脏东西弄到对方区域里,小李的桌子的开始到这条线就是小李的。

2026-04-10 13:48:22 426 23

原创 C++入门基础知识

文章摘要: 本文系统介绍了C++基础核心语法,包括标准输入输出(cin/cout流操作)、命名空间(namespace)的定义与使用(解决命名冲突、作用域控制及展开方式)、缺省参数(全缺省与半缺省规则)、引用(别名特性、传参优势及与指针的区别)、函数重载(参数类型/数量/顺序差异)、nullptr关键字(替代NULL避免歧义)以及inline函数(编译期展开优化性能)。重点剖析了各语法的使用场景、易错点及底层逻辑(如引用与临时对象的关系、函数重载的编译原理),并通过代码示例对比C语言实现,突显C++在类型安

2026-01-26 01:30:00 1004 16

原创 Linux系统之网络基础概念

本文介绍了网络传输的基本流程,包括局域网通信原理、MAC地址和IP地址的作用、数据包封装和解包过程。重点分析了以太网通信中MAC地址的识别机制,以及数据从应用层到物理层的逐层封装和解包流程。文章通过类比教室点名和唐三藏取经等生动例子,解释了IP地址和MAC地址的区别:IP地址标识通信的起点和终点,保持不变;MAC地址则负责当前链路的交付,每经过路由器都会改变。最后展示了跨网络传输时数据包经过路由器的重新封装过程,说明了网络协议栈"后进先出"的特点。全文深入浅出地讲解了网络通信的核心概念和

2026-08-23 15:15:00 433 1

原创 数据结构之双链表

本文介绍了双向链表的结构与实现方法,重点对比了链表与顺序表的优缺点。双向链表通过在节点中增加前驱指针,解决了单链表查找前驱节点效率低的问题,并详细实现了初始化、插入、删除等核心操作接口。与顺序表相比,链表在插入删除已知位置节点时效率更高(O(1)),但不支持随机访问;顺序表则具有随机访问优势(O(1)),但插入删除需要移动元素。文中还特别说明了带头双向循环链表的结构优势,并通过代码演示了各种操作的具体实现,最后对两种存储结构的适用场景进行了总结:顺序表适合随机访问和尾部操作,链表更适合频繁的中间插入删除。

2026-07-11 15:32:30 836 19

原创 数据结构之栈

本文系统介绍了栈数据结构的基本概念、实现原理及代码实现。首先阐述了栈作为线性表的特性(后进先出LIFO),通过弹夹和羽毛球桶等生活实例进行类比。重点讲解了栈的顺序存储实现方式,包括静态和动态两种方案,详细说明了动态顺序栈的结构设计(包含top指针和capacity容量)。在代码实现部分,提供了完整的接口函数:初始化、入栈(带扩容检查)、出栈(带空栈检测)、获取栈顶元素、销毁栈等核心操作,并配有示意图辅助理解。最后通过测试代码验证了栈的基本功能,包括多元素入栈、出栈顺序及异常处理。

2026-06-11 14:38:11 580 18

原创 C++IO库的超详细讲解

本文系统介绍了C++中的IO流操作,主要包括:1. IO流状态管理:讲解goodbit、eofbit、failbit、badbit四种状态标志及其处理方法,演示如何通过cin.clear()恢复流状态。2. 输出缓冲区机制:解释缓冲区的必要性及刷新条件,包括手动刷新(std::endl/std::flush)和系统强制刷新等情况,通过代码示例验证缓冲行为。3. 标准IO流:分析cin/cout等标准流的特性,演示流状态转换和错误处理方法。4. string流:介绍ostringstream/istrings

2026-05-03 18:55:40 603 11

原创 现代C++讲解之变量模板,泛型lambda,函数返回类型推导的使用

本文介绍了C++14中三个重要新特性:变量模板、泛型lambda和函数返回类型推导。首先,变量模板允许直接对变量进行模板化,避免了冗余的类包装,如定义类型自适应的圆周率常量。其次,泛型lambda支持auto参数,使lambda能够处理多种类型,同时介绍了初始化捕获和C++20的模板参数扩展。最后,函数返回类型推导在C++14中得到增强,普通函数可直接使用auto推导返回类型,并通过decltype(auto)保留引用和const属性。这些特性显著提升了代码的简洁性和灵活性。

2026-05-02 11:21:28 283 22

原创 现代C++讲解之enum class,static_assert,tuple的使用

本文介绍了C++11引入的三个重要特性:强类型枚举(enum class)、静态断言(static_assert)和元组(tuple)。强类型枚举解决了传统枚举的隐式转换和作用域污染问题,支持指定底层类型;static_assert提供编译时断言检查,可用于类型约束和环境验证;tuple则是一个灵活的异构容器,支持多种创建、访问和解包方式。这些特性增强了类型安全、编译期检查和数据结构灵活性,是C++现代化编程的重要工具。

2026-04-27 09:15:00 540 10

原创 现代C++精讲之处理类型

本文主要介绍了C++11中auto和decltype的类型推导机制以及using别名的使用。auto通过初始化表达式自动推导类型,能简化复杂类型声明但需注意引用、const等特殊情况的处理规则。decltype则直接返回表达式的类型,保留所有修饰符,适用于模板编程等场景。using提供了比typedef更强大的类型别名功能,支持模板参数化。文章详细讲解了auto的6条使用规则、3种引用形式,decltype的3种推导情况,以及尾置返回类型的应用,并对比了typedef和using的异同。通过多个代码示例,帮

2026-04-24 19:23:22 446 9

原创 现代C++讲解之constexpr的使用

本篇目标:了解constexpr的使用与注意事项,将其可以运用到函数中,并且知道constexpr在不同的C++标准下的使用C++把本身被const修饰叫做顶层const,把指向的对象被const 修饰叫做底层const。概念:• 大多数对象被const修饰都叫顶层const,指针被const修饰时,*左边的const叫底层const,*右边的const叫做顶层const。• const修饰引用时,这个const是底层const。例如:注意:其实只需要记住,const修饰指向的的内容的就是底层cons

2026-04-19 16:19:44 462 12

原创 进程的控制

本文主要介绍了进程创建和终止的相关知识。在进程创建方面,重点讲解了fork函数的工作原理,包括父子进程的内存共享机制和写时拷贝技术,分析了这种设计在节省空间和时间上的优势。在进程终止部分,详细说明了进程退出的三种场景,介绍了main函数返回值作为进程退出码的作用,以及如何通过echo $?查看退出码。同时对比了exit和_exit函数的区别,指出exit会在调用_exit前刷新缓冲区,而_exit直接终止进程。文章还探讨了错误码处理机制,展示了如何使用strerror将errno转换为可读的错误信息。

2026-04-14 18:00:00 458 4

原创 进程之环境变量

本文介绍了环境变量的概念及其在操作系统中的作用。首先通过命令行参数示例说明程序如何接收参数,然后重点讲解环境变量PATH的功能,即自动搜索可执行文件的路径。文章还探讨了环境变量的来源,包括.bashrc等系统配置文件,并列举了HOSTNAME、USER等常见环境变量。最后介绍了获取环境变量的多种方法,包括env命令、C语言代码实现(通过main函数的第三个参数、environ变量和getenv函数),以及如何创建和使用自定义环境变量。通过代码示例展示了环境变量的全局性和继承特性,以及如何利用环境变量实现程序

2026-04-06 17:39:32 478 24

原创 C语言之结构体

仍然以书来举例,例如:先定义变量<1>.声明类型的同时定义变量 p1// 书名// 作者// 出版社// 定价}b1;<2>.定义结构体变量// 书名// 作者// 出版社// 定价//全局的int main()//main函数里的return 0;注意:可以看出写一个结构体变量是要带上struct的,如果我们嫌麻烦,可以用typedef一下// 书名// 作者// 出版社// 定价}b1 = {"修仙","张三","天上",99.99};

2026-04-04 17:01:03 443 4

原创 基础开发工具(下)

程序的发布方式有两种,debug模式和release 模式, Linux gcc/g++ 出来的⼆进制程默认是release 模式,所以要使用gdb调试,必须在源代码上成⼆进制程序的时候,加上-g 选项,如果没有添加,程序无法被编译成debug模式。由于我已经安装了git,自然是nothing to do,而未安装的,看到complete就代表安装成功了,而。<3>.在创建好的仓库里,点击克隆,再点击复制git clone +"地址"",然后在新的页面,根据需要填写仓库名称与路径,记得要勾选初始化。

2026-03-28 16:07:17 641 3

原创 基础开发工具(中)

本文介绍了Linux下的自动化构建工具make/Makefile和进度条程序的实现。首先讲解了Makefile的基本使用,包括依赖关系与依赖方法的定义、项目清理操作以及.PHONY指令的作用。然后详细说明了回车与换行的区别,并通过缓冲区刷新机制解释了输出顺序问题。最后给出了一个完整的进度条程序实现方案,包含头文件process.h、源文件process.c和主程序processmain.c。文章通过具体示例演示了如何利用Makefile自动化编译过程,以及如何实现带百分比和旋转标记的动态进度条效果。

2026-03-24 00:45:00 821 1

原创 基础开发工具(上)

在Linux下安装软件,⼀个办法是下载到程序的。

2026-03-21 11:31:34 644 1

空空如也

空空如也

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

TA关注的人

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