- 博客(130)
- 收藏
- 关注
原创 算法:组合数学
本文系统介绍了组合数学中的核心概念与计算方法。主要内容包括:1)排列组合的基本定义与计算公式;2)四种求组合数的实用方法(循环法、杨辉三角、阶乘逆元表、卢卡斯定理);3)隔板法及其应用场景;4)错排问题的递推公式与实现;5)卡特兰数的五种计算方法及其在括号序列、出栈顺序等问题中的应用;6)容斥原理的数学表达与实现模板。文章通过典型例题和代码实现,展示了如何根据数据范围选择最优解法,涵盖了组合数学中的经典问题和实用技巧。
2026-03-10 17:09:12
383
原创 算法:基础数论
本文系统介绍了数论中的核心概念与算法,主要包括:1. 最大公约数(gcd)与最小公倍数(lcm)的定义及欧几里得算法;2. 质数判定与筛法(埃氏筛、线性筛);3. 算术基本定理与质因数分解;4. 约数求解与欧拉函数;5. 费马小定理与乘法逆元;6. 同余方程与中国剩余定理(CRT及扩展CRT)。重点阐述了gcd与lcm的关系(gcd×lcm=ab)、欧几里得算法的时间复杂度(O(logn))、质数筛法的优化(线性筛)、欧拉函数的积性性质、逆元的四种求法(费马小定理、扩展欧几里得、递推法、阶乘逆元),以及同余
2026-03-10 14:21:03
549
原创 Linux:匿名管道(实现个进程池)和命名管道
摘要:本文详细介绍了Linux系统中的管道通信机制,包括匿名管道和命名管道。匿名管道通过pipe()函数创建,仅适用于有血缘关系的进程间单向通信,具有字节流、进程同步等特性。命名管道通过mkfifo()创建,允许无关进程通信,通过文件系统路径标识。文章深入分析了管道的工作机制、4种通信场景及特性差异,并提供了进程池的实现代码,展示了父子进程间任务分发的具体应用。最后通过命名管道实现了server-client通信模型,演示了实际应用场景。全文从原理到实践,系统性地讲解了Linux管道通信的核心概念和技术实现
2026-01-17 14:02:16
815
原创 认识ELF格式文件,理解库链接过程
文章摘要:本文详细解析了ELF(Executable and Linkable Format)文件的结构及其在程序编译、链接和运行中的作用。ELF文件包含四种类型:可重定位文件(.o)、可执行文件、共享目标文件(.so)和内核转储文件。其结构由ELF头、程序头表、节头表和节(Section)组成。静态链接通过合并.o文件和库生成可执行文件,而动态链接则推迟到程序运行时,利用全局偏移表(GOT)实现地址无关代码(PIC)。文章还探讨了ELF文件加载到内存的过程,包括节合并为段(Segment)的机制,以及进程
2026-01-17 14:01:32
662
原创 动静态库的制作和使用
本文详细介绍了C语言中的静态库和动态库。静态库(.a/.lib)在编译时链接到可执行文件,运行时无需依赖;动态库(.so/.dll)在运行时加载,可被多个程序共享。文章详细讲解了静态库的创建方法(使用ar工具)、使用方式(通过-L、-I、-l选项)以及三种应用场景。对于动态库,重点说明了生成方法(使用gcc的-shared和-fPIC选项)、运行时的搜索路径问题及四种解决方案(系统路径拷贝、软链接、环境变量配置、ldconfig更新)。最后通过具体示例展示了如何在实际项目中应用这两种库。
2026-01-13 17:28:25
600
原创 Linux:硬链接与软链接
本文介绍了Linux系统中硬链接和软链接的概念、创建方式及核心特性。硬链接是给文件inode新增的别名,与原文件共享同一inode,不能跨分区或为目录创建;软链接是存储原文件路径的独立文件,可跨分区并为目录创建。两者关键区别在于:硬链接与原文件共用inode,删除原文件不影响访问;软链接有独立inode,原文件删除后链接失效。硬链接适用于文件备份,软链接适合创建快捷方式和版本管理。通过ln命令创建硬链接(无参数)和软链接(-s参数),ls -l可查看链接信息。
2026-01-13 17:28:02
772
原创 Linux:Ext系列文件系统
本文深入探讨了文件系统的底层原理与实现机制。首先从机械硬盘的物理结构入手,详细介绍了磁头、磁道、扇区等基本概念,以及CHS和LBA两种寻址方式。然后阐述了文件系统的核心组件,包括块(Block)、分区(Partition)、inode等概念,重点解析了ext2文件系统的结构设计,包括超级块、块组描述符、块位图、inode位图等关键数据结构。文章还详细说明了inode如何通过直接、间接指针映射数据块,以及目录文件如何通过存储文件名与inode号的映射关系构建文件系统层次结构。最后通过实际操作演示了分区挂载的过
2026-01-06 14:44:02
1024
原创 Linux:深刻理解缓冲区
本文详细介绍了计算机系统中的缓冲区机制及其实现原理。主要内容包括:1)缓冲区的分类(输入/输出缓冲区)及其作用;2)三级缓冲区体系(用户级、内核级、语言级)的工作原理;3)缓冲区刷新机制(全缓冲、行缓冲、无缓冲)及验证方法;4)标准输入/输出/错误的区别与重定向实现;5)自定义文件操作函数的封装实现。通过代码示例和现象分析,阐述了缓冲区如何提高I/O效率,以及不同刷新策略的应用场景。最后展示了如何通过重定向分离标准输出和标准错误信息,并实现了一个简单的文件操作函数库。
2026-01-06 14:43:29
746
原创 Linux:理解IO,重定向
本文介绍了Linux系统级文件操作的基础知识,重点讲解了文件描述符和重定向的实现原理。主要内容包括:1)系统调用open、close、read、write等函数的使用方法;2)文件描述符的分配规则及其底层实现机制;3)重定向的本质是通过修改文件描述符指向来实现;4)使用dup2系统调用实现输入/输出重定向;5)在自主shell中实现重定向功能的具体代码实现。文章通过大量代码示例详细演示了文件描述符的操作方式,以及如何在自定义shell程序中处理重定向命令。
2026-01-01 14:42:51
632
原创 写给迷茫时的自己
我的人生没有白走的路,对了,我就是庆幸,错了我就长知识了。我的人生没有敌人,全都是老师,要么得到,要么学到就。我的人生没有失败,要么就是成功,要么就是成长,。我允许一切的事情发生,终将都有利于我。所以,朋友,少去想一点,多去干一点,才能知道答案。我是不会被任何事情所困扰的。
2025-12-03 19:43:13
200
2
原创 C语言的取地址取的是物理内存的地址吗?(简单验证)
我们在用C/C++语言所看到的地址,全部都是虚拟地址!物理地址,用户一概看不到,由OS统一管理OS必须负责将虚拟地址转化成物理地址。所以说,这里的地址不是物理地址,是虚拟地址。
2025-11-19 18:05:13
291
原创 C++11:引用折叠,完美转发,可变参数模板,defult和delete,final和override,委托构造函数,继承构造函数
C++11:引用折叠,完美转发,可变参数模板,defult和delete,final和override,委托构造函数,继承构造函数
2025-11-12 18:20:21
908
原创 C++:用哈希表封装unordered_map,unordered_set(代码版)
用哈希表封装unordered_map,unordered_set(代码版)
2025-11-04 22:14:34
692
原创 Linux中编译代码(gcc/g++),自动化构建(make/Makefile)
详细介绍Linux中编译gcc/g++,详细介绍自动化构建工具make/makefile
2025-08-27 18:26:06
1109
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅