- 博客(26)
- 收藏
- 关注
原创 初步了解Linux中文件描述符-fd
本文探讨了文件描述符的相关概念。首先回顾了文件的基本知识,包括文件内容与属性的区别、打开与未打开文件的存储位置等。接着通过C语言文件IO操作示例,对比了"w"和"a"模式与重定向符号的关系。重点介绍了Linux系统调用接口open、write、close等函数的使用,解释了比特位级别传参方式的实现原理。文章深入分析了文件描述符的本质,指出它是进程文件指针数组的下标,并详细说明了文件描述符的分配规则:系统会优先使用当前未被使用的最小下标作为新文件的描述符。通过代码示例验
2025-12-07 14:40:05
599
原创 什么!这就是前缀和算法,竟然如此简单!
先预处理出来⼀个「前缀和」数组:⽤ dp[i] 表⽰: [1, i] 区间内所有元素的和,那么 dp[i - 1] ⾥⾯存的就是 [1,i - 1] 区间内所有元素的和,那么:可得递推公式: dp[i] = dp[i - 1] + arr[i];第⼀步:搞出来前缀和矩阵 ,这⾥就要⽤到⼀维数组⾥⾯的拓展知识,我们要在矩阵的最上⾯和最左边添加上⼀⾏和⼀列0,这样我们就可以省去⾮常多的边界条件的处理(同学们可以⾃⾏尝试直接搞出来前缀和矩阵,边界条件的处理会让你崩溃的)。sum[i]的位置。
2025-11-30 13:32:05
1014
原创 从0开始,带你了解Linux中的进程控制
我们在代码中,出现创建子进程的目的就为了,让我们的子进程可以帮助我们完成一些任务,但是当我们的这个任务是另一个程序的时候,我们将该程序的所以代码放入子进程中似乎有点不太可能,所以我们有了进程的程序替换,将我们的子进程替换成我们所需要的进程程序即可。就是用来存储上一个进程退出码的,所以我们可以通过$?我们看到我们的退出信号位0,我们的退出码是11,和我们的结论是相同的,这里还有一个细节,在我们上述的信号中,信号是从1开始编号的,并不是从0号开始,所以我们的0号信息代表的就是进程是正确退出的。
2025-11-22 00:04:13
728
原创 什么!原来这才是真正的二分算法!
本文介绍了二分查找算法及其在7个典型题目中的应用。文章首先解释了二分查找的基本原理和"二段性"概念,即通过中间值将数组分为两部分并舍弃其中一部分的能力。然后提供了三种二分查找的模板:一般查找、最左值查找和最右值查找。接着详细讲解了7道应用二分查找的题目解法,包括:1)基本二分查找;2)查找元素的起止位置;3)求平方根;4)搜索插入位置;5)山脉数组峰顶索引;6)寻找峰值;7)点名问题(找出缺失数字)。每道题目都给出了解题思路和代码实现,重点分析了如何根据题目特点调整二分查找的条件判断和边
2025-11-15 19:46:11
1030
原创 什么!滑动窗口原来如此丝滑
本文总结了7道常见滑动窗口问题的解法,主要涉及数组和字符串处理。这些问题包括:求最短满足条件的子数组、无重复字符的最长子串、最大连续1的个数、将x减到0的最小操作数、寻找字母异位词、水果分类问题,以及最小覆盖子串。每个问题都通过滑动窗口算法进行优化,使用双指针和哈希表来高效解决问题。文章详细阐述了每种情况下的解题思路,并提供了相应的C++代码实现,展示了如何通过调整窗口大小来满足不同条件,最终求得最优解。这些解法都具有O(n)的时间复杂度,是处理子数组/子串问题的典型范例。
2025-10-30 22:42:34
886
原创 双指针算法+详细题目分析
本文总结了8个数组相关的算法题解,主要运用双指针和单调性思想解决问题:1.移动零使用快排分区思想,将非零元素前移;2.复写零通过反向遍历避免数据覆盖;3.快乐数通过快慢指针检测循环;4.盛水容器利用宽度收缩策略;5.有效三角形个数通过排序和双指针优化;6/7/8题分别解决两数、三数和四数之和问题,通过排序+双指针+去重策略实现,其中三数和四数问题逐步转化为更小规模的子问题。这些解法都体现了通过指针移动和数组特性来降低时间复杂度的思路。
2025-09-15 22:51:58
648
2
原创 Linux环境基础开发工具使用
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过软件包包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.
2025-09-01 00:53:18
941
原创 C++——多态
概念:多态简单来说就是指多种形态,具体点就是不同的对象做一件事会产生不同的结果,更加专业一点的说是指:同一操作作用于不同对象时,会产生不同的执行结果。简单来说,就是 "同一个接口,不同实现"。
2025-08-24 11:32:53
919
原创 C++——C++重点知识点复习2(详细复习模板,继承)
本文系统介绍了C++模板和继承两大核心机制。模板部分包括函数模板和类模板的定义与实例化、非类型模板参数、模板特化(全特化和偏特化)以及模板声明与定义必须放在同一文件的原因。继承部分详细阐述了继承概念、对象切片、成员隐藏规则、派生类默认成员函数特点,重点分析了菱形继承问题及其解决方案——虚拟继承的原理(通过虚基表指针实现)。最后指出多继承的复杂性,建议优先使用组合而非继承,仅在实现多态等必要场景使用继承。全文揭示了C++通过模板实现编译时多态、通过继承实现运行时多态的设计哲学。
2025-08-21 13:50:20
1062
原创 初步理解Linux中的权限问题
在Linux中有两种用户:超级用户(root),普通用户。超级用户:可以在Linux系统下做任何事情,不受任何的限制普通用户:在Linux系统下做有限的事情超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。在Linux中可以使用指令 su [用户名] 来切换用户要从root用户切换到普通用户user,则使用su user。要从普通用户user切换到root用户则使用surootroot可以省略),此时系统会提示输入root用户的密码。
2025-08-20 09:50:03
1008
原创 C++——C++重要知识点复习1
默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。4 . 编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了,但是对于开辟空间了的类型需要进行深拷贝,需要自己实现5. 拷贝构造函数典型调用场景:使用已存在对象创建新对象函数参数类型为类 类型对象函数返回值类型为类 类型对象。
2025-08-17 10:28:15
890
1
原创 C语言重点复习
本文系统介绍了C语言中的指针、数组、内存管理、数据类型存储以及编译链接过程。重点内容包括:指针与数组的区别(数组指针int(p)[5]与指针数组intp[5]);函数指针和const修饰符的使用规则;strlen与sizeof的区别;常用库函数如memcpy、strcpy等的模拟实现;结构体和联合体的内存对齐规则;整数和浮点数的存储方式(原码、反码、补码及IEEE 754标准);宏定义的优缺点及使用注意事项;程序从预处理到链接的完整编译过程。这些知识点涵盖了C语言编程中的核心概念和底层实现原理。
2025-08-15 13:56:36
750
原创 C++中的类型转换和IO流
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?1.使用itoa()函数2.使用sprintf()函数但是两个函数在转化时,都得。
2025-08-14 11:44:03
1018
原创 C++中一些特殊类的设计
为什么会产生设计模式这样的东西呢?就像人类历史发展会产生兵法。最开始部落之间打仗时都是人拼人的对砍。后来春秋战国时期,七国之间经常打仗,就发现打仗也是有。
2025-08-13 10:29:44
713
原创 详细理解C++11中的智能指针
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。2.2内存泄漏的分类C/C++程序中一般我们关心两种方面的内存泄漏:堆内存泄漏堆内存指的是程序执行中依据须要分配通过等从堆中分配的一。
2025-08-12 12:21:35
2449
原创 C++11实用语法3(function包装器,bind)
function包装器:function包装器 也叫作适配器。C++中的function本质是一个类模板,也是一个包装器。那么我们来看看,我们为什么需要function呢?当我们看见下面这个表达式时,我们可能会猜想func可能是什么呢?比如func是函数名?函数指针?还是函数对象(仿函数对象),还是lambda表达式对象呢?这些都有可能,因此我们把以上的类型统一叫作可调用类型。有如此丰富的类型,可能会导致模板效率低下,有没有什么办法让他们都变成一个类型呢?这就是我们要提到的function包装器啦!!
2025-08-10 12:33:49
925
原创 C++11实用语法2(万能引用&&,完美转发,可变参数模板,lambda)
模板中的&&不代表右值引用,而是万能引用,其既能接收左值又能接收右值,模板的万能引用只是提供了能够接收同时接收左值引用和右值引用的能力。如下面的代码,T&&在这里就代表了万能引用,既可以接收左值,又可以接收右值。我们看以下代码:PeffectForward分别接收了左值,右值,const左值,const右值,由它调用的func函数应当调用相对的func函树。但是调用结果却和我们想象的不一样,这就是我们万能模板的存在的缺点,当他引用右值的时候,会退化成左值,知道这点之后这样的结果就说的通了。
2025-08-09 17:36:08
1738
原创 C++11实用新增语法详解1(列表初始化,auto,decltype,nullptr,范围for)
左值是一个表示数据的表达式如变量名或解引用的指针。
2025-08-09 14:28:25
1972
原创 哈希杂谈(位图,布隆过滤器)
哈希思想在计算机领域应用广泛,位图和布隆过滤器是其典型应用。位图通过二进制位表示数据存在与否,适用于海量数据去重判断,可以高效实现40亿整数的存在性查询。布隆过滤器结合哈希和位图,解决了字符串等非整型数据的存储问题,通过多个哈希函数减少误判率,常用于推荐系统去重等场景。文章详细介绍了位图的实现原理(set/reset/test操作)及其应用案例(如统计整数出现次数、查找文件交集),并阐述了布隆过滤器的设计思想和基本实现方法。这两种数据结构在空间效率和查询性能上都具有显著优势。
2025-08-05 18:58:39
826
原创 unordered_set_map模拟实现
在解释操作时会详细解析为什么这样定义.//将自己重定义为self 方便代码书写//在set模拟是会解释public:,_pht(pht)
2025-08-04 10:20:26
382
原创 哈希表,哈希桶
中,元素关键码与其存储位置之间没有对应的关系,因此在。,搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以。。当向该结构中:根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功该方式即为哈希散列方法,哈希表的实现哈希表的实现有两种方法:一是直接定址法(适用于值分布范围集中的数据),二是除留余数法(适用于值的范围比较分散)
2025-08-02 11:07:49
875
原创 map_set的简单模拟实现
包含了构造红黑树的过程以及旋转操作:不懂可以看看我的红黑树和AVL树的笔记public://const类型迭代器elsereturn cur;else//到达插入位置else//开始构建红黑树while (parent && parent->_color == RED)//父亲存在并且颜色为红色//找到祖父结点if (parent == grandfather->_left) //如果父亲是祖父的左孩子。
2025-07-29 09:44:49
348
原创 红黑树简单模拟
红黑树是一种自平衡二叉搜索树,通过颜色标记(红/黑)和旋转操作保持平衡。其特性包括:根节点为黑色、红节点的子节点必须为黑、从任一节点到叶子节点的路径上黑节点数相同。插入操作先按二叉搜索树规则定位位置,新节点默认为红色。若父节点为红,则需调整:若叔叔为红则变色处理;若叔叔为黑则旋转(单旋或双旋)并调整颜色。最终根节点保持黑色。红黑树通过颜色约束和旋转确保最长路径不超过最短路径的两倍,维持近似平衡。
2025-07-27 12:14:47
195
原创 C++入门(namespace,using)
有人就会想我们可以不定义rand变量用别的,但是在项目开发中很难知道是否有函数的命名与定义的一样。域就是一块空间,我们熟悉的就有全局与,与局部域,列如在main函数中定义的变量就是在局部域中,所以namespace就可以认为是我们自己命名的一块域。这里的using和上面的作用是一样的std时c++标准库的域名,因此在平常的见到的C++代码中都会有using namespace std。他的作用可以展开命名空间域,我们需要知道在a在打印时的访问顺序为 局部域>全局域>展开了的域 or 指定了命名空间域。
2025-03-23 15:20:40
244
原创 初入编程自我介绍
对于我对编程的学习看法,编程是一门需要多次并且反复敲打的过程,他不是靠模仿可以完成的,只有从中汲取他人的优点和发现自己的不足才可以完善自己,想要学好编程必要的就是自己多加练习,多练是学习编程的必要条件。大家好,我是来自湖南第一师范学院的普通计科生,在以师范为主的学校选择了计算机专业,这是我对自己的挑战,也是对自己的信任,相信自己可以通过努力改变学习资源的欠缺。我的目标便是在大三时能通过校招进入IT企业,不敢说要进入腾讯,网易等行业巨头,希望可以进入一家普通公司,用我的知识能帮助公司发展。
2024-10-20 11:32:19
169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅