自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C 语言小白入门】彻底搞懂堆、栈与内存

本文用通俗易懂的方式讲解了C语言中堆和栈的核心区别。栈是由编译器自动管理的临时空间,采用先进后出原则,存放局部变量和函数参数;堆则是程序员手动管理的灵活空间,需要malloc申请和free释放。文章通过餐盘架和自由市场的比喻形象说明了两者的特点,并详细对比了它们在管理方式、空间大小、生长方向等五大层面的差异。最后给出了堆栈操作的代码实例和避坑指南,帮助初学者正确使用内存,避免栈溢出和内存泄漏等常见问题。

2025-12-26 11:02:16 580

原创 深入解析C++输出缓冲区的五种刷新机制:从理论到实践

本文深入解析C++输出流缓冲机制及其五种刷新情况:1)程序正常结束时自动刷新;2)缓冲区满时自动刷新;3)通过endl/flush操纵符强制刷新;4)使用unitbuf设置自动刷新模式;5)关联输入流(tie)在读操作前刷新。文章指出理解缓冲区机制对优化I/O性能至关重要,并建议:关键信息使用flush/endl确保显示;大量输出时优先用\n避免性能损耗;程序崩溃时改用无缓冲的cerr输出。掌握这些机制能有效解决输出顺序错乱、调试信息丢失等问题。

2025-12-01 11:36:39 1351

原创 深入解析 Rust 派生宏 (Derive Macro) 的工作原理与专业实践

在 Rust 的生态中,我们无时无刻不在享受带来的便利。但“便利”往往隐藏着“复杂”。作为追求技术的开发者,我们不能只停留在“会用”,更要探究“为什么”。本文将带你深入 Rust 派生宏的核心,从工作流到实现一个具有“深度”的自定义派生宏,彻底搞懂它。

2025-10-30 09:54:38 715

原创 【Rust 深度剖析】语句 (Statement) 还是表达式 (Expression)?Rust 语言设计的“第一性原理”

Rust是一门基于表达式的语言,其设计哲学将几乎所有结构都视为能返回值的表达式,包括if、match等控制流。这一特性从根本上提升了安全性:强制变量初始化、要求处理所有分支、确保类型一致。Rust中语句仅包含声明语句和带分号的表达式语句,分号的作用是将表达式转为语句并丢弃值。这种表达式优先的设计带来极高的代码组合性和明确意图表达,要求开发者从命令式思维转向函数式思维,是掌握Rust的关键转折点。理解表达式与语句的区别对编写健壮、类型安全的Rust代码至关重要。

2025-10-29 18:19:45 939

原创 【Rust 深度剖析】超越 O(n)!数据结构选择对性能的“致命”影响

摘要:Rust中的数据结构选择需超越传统时间复杂度考量,重点关注内存布局与缓存局部性对性能的影响。Vec<T>因连续内存特性实现最优缓存命中率,远胜于链表;BTreeMap通过多路搜索减少I/O次数,优于红黑树;HashMap默认采用SipHash保障安全性,但允许替换更快的哈希器。Rust开发者应优先选择连续内存结构(Vec/VecDeque),理解硬件层级优化(BTreeMap),并在安全边界内权衡性能(HashMap),通过性能分析工具而非直觉做出决策。

2025-10-29 18:04:37 652

原创 Rust BTreeMap深度解析:从B树原理到红黑树实现的工程实践

本文深入剖析Rust标准库BTreeMap的内部实现机制,澄清B树与红黑树的关系,探讨有序映射的设计权衡,并结合真实生产场景分析BTreeMap的应用策略与性能优化实践。

2025-10-29 17:51:09 733

原创 Rust HashMap深度剖析:从哈希算法到冲突解决的工程实践

本文深入探讨Rust标准库HashMap的内部实现机制,从哈希算法选择、冲突解决策略到性能优化实践,结合真实生产场景分析HashMap的设计哲学与工程权衡。

2025-10-29 17:25:11 947

原创 Rust零拷贝技术深度解析:从内核机制到工程实践

本文深入探讨Rust语言在零拷贝技术领域的独特优势与实践经验,结合操作系统内核机制、语言特性和真实生产场景,剖析零拷贝技术的本质、实现路径及架构设计思考。

2025-10-29 16:59:06 672

原创 计算机网络体系结构:搞懂 OSI 七层与 TCP/IP 四层

本文介绍了计算机网络的两大核心模型:OSI七层和TCP/IP四层。OSI是国际标准组织的理论框架,分为应用层到物理层七层,虽未广泛应用但仍是教学和面试重点。TCP/IP则是实际互联网使用的精简四层模型(应用层、传输层、网络层和网络接口层)。文章对比了两者差异,解答了常见疑问,并强调OSI用于理解概念,TCP/IP用于实际应用。掌握这两个模型能帮助学习者更好地理解和分析网络协议。

2025-10-23 21:15:27 561

原创 Linux fork(纯享)

本文介绍了Linux中的fork系统调用,通过图解、代码示例和表格说明其核心机制。fork用于创建子进程,采用写时拷贝(COW)优化性能,避免立即复制整个地址空间。文章详细解析了fork的返回值、文件描述符继承规则,并提供了最小实现示例和经典应用场景(如与exec配合实现外部程序调用)。同时指出了常见误区(如不处理僵尸进程)和最佳实践,最后展示了利用fork实现并发下载器的10行代码范例,帮助开发者深入理解多进程编程的核心技术。

2025-10-10 20:53:06 948

原创 VScode做Linux远程操作(前期环境配置)

本文分享了mingw编译工具和VScode的环境配置流程。首先下载mingw并解压,注意路径不能有中文,复制bin文件夹路径后配置环境变量。接着在VScode中删除.json文件,运行测试代码完成配置。文章强调仔细按照流程操作,并指出配置完成后远程连接会更方便。作者表示如有需求可提供更多初学者配置建议,认为VScode编程比虚拟机更便捷。

2025-09-28 20:50:52 343

原创 Linux远程操作(VScode编写程序不识别头文件)

本文分享了使用VScode进行Linux远程编程时遇到的一个常见问题:当头文件过多时,通过.h文件集中引用可能导致远程环境下头文件无法识别。作者提供了一个解决方案,并附上操作流程图以供参考。该方法可能不适用于所有情况,建议读者先尝试,若无效可按流程撤回修改。全文内容简洁,重点突出解决方案,便于开发者快速参考应用。

2025-09-28 20:10:03 355

原创 结构体数组、结构体指针

本文分享了结构体数组和结构体指针的使用方法。结构体数组的定义与普通数组类似,元素需为同一结构体类型,并通过示例演示了候选人投票统计的实现。结构体指针指向结构体变量或数组的起始地址,介绍了三种访问成员的方式:变量名.成员、(*p).成员和p->成员。通过学生信息管理的例子展示了如何用指针遍历结构体数组。文中强调结构体指针不能直接指向成员变量,并提供了完整的代码示例和运行结果。欢迎读者补充讨论后续学习内容。

2025-08-14 22:48:50 595

原创 结构体(用户自定义的数据类型)

本文介绍了C语言中结构体的基本概念和使用方法。主要内容包括:1.结构体类型的定义方法,使用struct关键字声明包含不同类型成员的自定义类型;2.结构体变量的三种定义方式(先声明后定义、声明同时定义、直接定义无名结构体);3.结构体变量的引用规则,包括成员访问运算符"."的使用、同类型变量赋值、嵌套结构体访问等注意事项;4.结构体成员的基本操作,如运算、地址引用等。文章通过学生信息管理的代码示例展示了结构体的实际应用,并指出后续将介绍结构体数组和指针等内容。

2025-08-13 23:44:23 1749

原创 内存操作(C语言)

本文介绍了C语言中常用的内存操作函数,包括memset、memcpy、memmove、memcmp和memchr。这些函数声明在<string.h>头文件中,用于内存初始化、拷贝、移动、比较和查找操作。memset用指定值填充内存,memcpy和memmove用于内存拷贝(后者支持重叠区域拷贝),memcmp比较内存内容,memchr查找特定值。文中通过代码示例演示了每个函数的用法,并强调学习过程中应及时掌握新知识。这些函数是C语言内存管理的重要工具,程序员应理解其参数和返回值特点。

2025-08-12 21:44:10 939

原创 动态内存分配与指针变量

本文介绍了C语言中动态内存分配的实现方法。主要内容包括:1)内存分配区域的分类(静态存储区、栈区和堆区);2)四个关键内存管理函数:malloc(分配连续空间)、calloc(动态数组分配)、free(释放内存)和realloc(调整分配空间大小);3)void指针类型的特点和使用注意事项。文章强调动态分配的内存只能通过指针引用,并详细说明了各函数的使用方法和返回值特性,为C语言内存管理提供了实用指导。

2025-08-10 22:45:39 592 1

原创 数组指针 vs 指针数组

本文区分了C语言中数组指针和指针数组的概念差异。数组指针(int(*p)[N])指向整个数组,存储数组首地址,移动时跳过整个数组长度;指针数组(int *p[N])则是存储多个独立指针的数组,每个元素可指向不同变量。两者在类型、内存布局和使用场景上存在本质区别:数组指针适合处理整体数组操作,指针数组适合管理多个独立变量。理解这些区别有助于编写更高效、清晰的代码,应对复杂编程问题。

2025-08-07 22:41:10 784

原创 C语言结构体(用户自定义的数据类型)

摘要:本文介绍了结构体类型与变量的定义方法。结构体类型通过struct关键字声明,包含成员列表,可自定义多种类型并支持嵌套定义。定义结构体变量有三种方式:先声明类型后定义变量、声明同时定义变量、直接定义无名结构体变量。结构体类型仅定义数据结构,不分配存储空间,需通过变量才能使用。注意事项包括:类型与变量概念不同、成员名可与程序变量同名、成员可单独使用等。

2025-08-04 22:42:22 313

原创 指向函数的指针

函数指针是存储函数入口地址的变量,通过类型标识符 (*指针变量名)(参数列表)形式定义。函数名本身代表函数地址,可将其赋给函数指针,通过(*指针变量)(实参)调用函数。文中展示了三种应用:1)直接通过函数名调用;2)用指针变量间接调用max函数;3)根据用户选择动态调用max/min函数。需注意:赋值时只需函数名,调用前必须初始化指针,且不支持指针运算。示例代码演示了如何通过函数指针实现灵活的函数调用。

2025-07-31 20:06:24 360

原创 C语言练习(函数、指针部分)

本文介绍了三个C语言指针操作实例:1) 使用指针形参实现字符串处理功能,包括求长度、统计大写字母和数字字符;2) 利用指针遍历输出字符数组;3) 通过首尾指针交换实现数组反转。每个示例都包含完整代码和运行结果,展示了指针在字符串操作和数组处理中的灵活运用。代码注重指针移动、边界判断和交换操作,体现了指针在C语言中的核心作用。

2025-07-31 15:47:30 287

原创 字符指针变量和字符数组的讨论

字符数组与字符指针变量主要区别体现在:(1)存储方式:数组存储字符元素,指针存储字符串首地址;(2)赋值方式:数组需逐个元素赋值,指针可直接赋字符串;(3)初始化差异:指针可初始化字符串,数组需显式初始化;(4)内存分配:数组编译时分配固定空间,指针需后续指定地址;(5)可变性:指针可重新指向,数组元素可修改但指针指向的字符串常量不可更改;(6)访问方式:指针可通过下标访问字符,但指向的字符串内容不可修改。这些区别在使用时需特别注意。

2025-07-30 23:05:28 205

原创 C语言基础练习(续)

总共可以输入密码3次。如果登录成功,提示“密码正确,欢迎进入系统。如果3次机会用完,还没有登录成功,给出提示“卡已被锁,明天带身份证来。如果3次机会没有用完,提示“还要%d次机会”、“请输入密码”。9、计算1+1/2 - 1/3 + 1/4 - 1/5 ...+1/n=?(1,2,3,4,5,6,7,分别表示星期一至星期天)和工作小时数(假定都是整数),其中工资的4.5%是税金。6、假设星期一至星期五每工作一小时的工资是20元,星期六和星期日每工作一小时的工资是平时的3倍,计算该天的工资及税金。

2025-07-17 15:40:09 120

原创 C语言基础练习

本篇是对C语言练习题的一个分享,只是使用了一种解法,有想法的可以评论区分享

2025-07-15 16:08:32 218

空空如也

空空如也

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

TA关注的人

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