- 博客(33)
- 收藏
- 关注
原创 解锁C语言的隐藏技能:va_list
《揭秘C语言可变参数函数:va_list的魔法与风险》摘要 本文深入解析了C语言中printf等可变参数函数的实现原理。通过日志函数案例,展示了va_list类型及其四大核心操作:va_start初始化参数列表、va_arg获取参数、va_end清理资源。文章演示了如何使用va_list构建类似printf的日志工具,同时强调其两大风险:类型安全问题和参数数量不确定性。最后指出,尽管C++提供了更安全的可变参数模板,理解va_list仍对掌握底层机制至关重要。va_list作为C语言的经典特性,体现了贴近底
2025-10-15 01:46:46
714
原创 【Linux】线程同步与互斥 (生产者消费者模型)
多线程编程中的线程安全问题及其解决方案。通过“抢票”案例揭示了数据竞争的本质,并引入互斥量(mutex)实现临界资源的串行访问,确保线程安全。进一步分析了互斥量的底层原理(原子性交换指令)与封装设计(RAII风格的LockGuard)。针对线程协作问题,提出条件变量(condition variable)实现同步,避免竞态条件。基于生产者消费者模型,结合阻塞队列和环形队列,展示了多线程任务调度与资源管理的典型模式,并利用POSIX信号量优化环形队列的并发效率。
2025-04-16 23:21:46
704
原创 【Linux】进程信号(下)
信号的保存用数据结构的方式去理解,提出了三张表block pending handler表。理解了信号的递达,信号捕捉流程倒着的无穷大一条横线。另一个是地址空间第二讲,内核态到用户态切换的成本问题,CPU寄存器的认识,有对应的寄存器表征进程当前所处的状态,是用户态还是内核态CR3。用户空间和内核空间,内核级地址空间,唯一的内核页表。无论进程如何切换,系统调用在我们的代码调用时,本质是从我们的代码区跳转到内核空间上下文中,去执行虚拟地址转化,找到物理地址中操作系统的代码,必须保证当前是内核身份。。
2025-04-10 00:06:35
925
原创 【linux】线程概念与控制
Linux线程模型以轻量级进程为核心,平衡效率与实现复杂度,在多核时代成为高性能计算基石,但其共享资源机制对开发者线程安全提出更高要求。理解其底层机制是优化多线程程序的关键。
2025-03-22 02:40:14
1107
原创 【Linux】文件系统深度解析:从基础到高级应用
Linux文件系统通过inode管理元数据、数据块存储内容、目录维护文件名映射,实现了高效的文件操作。结合动静态库与缓冲区机制,开发者可以灵活控制程序的资源管理和性能优化。理解这些机制,是掌握Linux系统编程的关键基础。
2025-02-27 02:40:29
986
原创 【算法系列】荷兰国旗问题:三指针法原地排序
三指针法通过巧妙的分区策略,将荷兰国旗问题的时间复杂度优化到极致。该算法不仅是一道经典面试题,更体现了分治思想在实际工程中的应用价值。掌握这一方法,可轻松应对类似的多分类排序问题。
2025-02-22 21:45:14
453
原创 【Linux】Linux之yum的使用
介绍了yum install/list/remove 知道了yum的整个生态 服务器是谁提供的 他为什么能提供软件是谁提供的 下载的时候yum在哪下载 yum源是什么 如何修改yum源的配置文件
2024-11-19 02:45:10
803
2
原创 C++之多态
本文主要从多态的定义及实现、抽象类、单继承和多继承关系中的虚函数表四个方面来介绍C++中比较重要的面向对象的语法多态,另外还给出了一些常见的问题,希望对大家有所帮助
2024-10-23 22:28:43
1046
原创 C++ STL之容器适配器详解
适配器没有提供与元素的保存形式有关的真正数据结构实现,并且它不支持迭代器。适配器本质上是使一事务的行为类似于另一类事务的行为的一种机制。
2024-10-15 23:03:27
736
原创 C++ STL之序列式容器详解
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。首先是容器部分。STL容器就是将运用最广泛的一些数据结构实现出来,容器分为序列式容器和关联式容器,我们今天主要介绍了STL六大组件中的容器的序列式容器部分
2024-10-15 01:32:00
1250
原创 C++的基础语法补充C语言的不足
C++兼容C语言,可以说是对C语言的扩展和延伸。C++新增的一些语法解决或者优化了C语言之前不能解决的问题,我们以栈的实现为例。
2024-08-06 01:08:44
389
原创 C++入门
主要总结了C++一些入门的基础语法供大家参考。涉及 C++关键字、命名空间、C++输入&输出、缺省参数、函数重载、引用、内联函数、 auto关键字、基于范围的for循环、指针空值---nullptr等内容。
2024-07-31 06:18:14
1136
原创 简单实现--基于动态顺序表的比赛流程管理系统(c语言实现)
通过编写这个项目,我不仅学会了更多关于C语言知识,还提高了解决问题的能力、团队合作能力以及项目管理技能。
2024-06-18 23:40:10
1120
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅