自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 性能的平衡——红黑树

为了追求效率,红黑树不似AVL树那般完全平衡,前辈们选择牺牲部分搜索效率以换取整体性能的提升。但总的来讲,红黑是比AVL树更简单,但也比其更抽象,其最关键的点在与如何对节点的颜色修改或对节点进行旋转,以保证各路径黑节点总数的一致,而这个关键点的难点又在于理解u节点为黑时的情况——这又得对其下抽象子树进行理解。

2024-12-10 00:40:59 291

原创 平衡二叉搜索树——AVL树

本文以非平衡二叉树作为切入,主要聚焦AVL树的节点旋转进行讨论分析,以具象的代数思维理解抽象的更新思想,在梳理逻辑的同时呈现具体实现

2024-12-02 05:17:46 778

原创 进程地址空间与写时拷贝

本文以一段简短的C代码为引入,简要介绍进程地址空间,突出了其为进程与进程间数据代码解耦的便利性,又以其引出写时拷贝这项在操作系统中不可或缺的技术

2024-10-10 23:15:28 438

原创 环境变量与进程控制

各种shell指令本质上也是可执行程序,但不需要加上./即可执行(./是为了指明路径,在当前目录下寻找可执行程序)下有两种不加./即可执行程序的方法——1.将这个程序移至/usr/bin/下(可能会污染指令库,不建议)2.修改默认路径,也就是环境变量PATH,指令为——export PATH=该程序所在绝对路径(会覆盖原有路径,致使shell瘫痪)export PATH=$PATH:该程序所在绝对路径。

2024-10-10 21:47:46 517

原创 进程与多进程实现

程序是什么,进程是什么,二者的区别又是什么——程序是存放在磁盘的可执行文件——也就是一系列的指令集合,而进程可以说是被加载到内存的程序,是程序的一次执行过程——同一程序可能会有多个进程执行。也就是说程序是静态的,进程是动态的。进程的组成——进程是由内核数据结构和进程对应的磁盘代码组成的。在Windows下,这个内核数据结构是PCB(Process Control Block);在Linux下,这个内核数据结构是task_struct,本文围绕Linux讨论。

2024-10-09 20:19:16 915

原创 部分排序算法的源代码实现

部分排序算法的实现

2024-10-07 23:00:04 360

原创 集合论与位运算的结合

—如:现有集合(集合中元素皆为非负整形)A = {1,2,3},那么这个集合就可以用二进制1110₂来表示——集合中的元素n如果存在,其对应二进制的(n - 1)位就为1,不存在就为0。如果要对两个哈希表取交集,这就需要遍历两个哈希表,效率不高。增加元素对应着将该元素所对应的二进制位改为1:如在上述的集合A中加上5这个元素,就是A∪{5},也就是将其二进制数0011110变为0111110,这里设 a = 0011110,将1左移五位再与a按位或即可实现,(1 << 5) | a = 0111110。

2024-09-28 15:59:12 440

原创 系统编程基础与Linux下的集成开发环境

Linux下一切皆文件,Linux中的权限自然也就是与文件相关的权限。用户:owner, grouper , other文件属性:r(read) , w(write) ,x(execute)文件类型:- 普通文件——如源代码,库文件,可执行程序,文件压缩包等d 目录文件;l 链接文件;p 管道文件;c 字符设备文件;b 块文件;s socket文件有了以上认识,再看下文件的各个属性:第一个字符为-, 说明是一个普通文件;

2024-09-18 20:50:36 635 1

原创 C++类和对象——进阶

本文围绕类和对象进行讨论,探究了部分难以理解的C++语法,帮助理解面向对象的封装思想

2024-07-14 20:33:14 1085

原创 C++类和对象——入门

后C++引入class(此时还不叫“C++”,而是“C with Classes”,在1983被正式更名为C++),可以理解为一个可以定义函数的结构体(二者略有不同)由inline修饰的函数会在编译阶段于调用函数处展开,并不会调用函数(这种情况仅在被inline修饰函数的内容较少时出现,具体由编译器判断)类的大小为成员变量之和,但成员函数被放在公共代码段,不被算入大小,空类大小为一。对象则是其具体化实现、是类的实例,具体实现类定义的属性和行为。类的成员变量是另一个类的实例,上述代码中;

2024-06-16 23:06:15 838

原创 C++引用——类型+&+对象

事实也确实如此,在C++语法中,引用无法重新被赋值。返回值如果为非引用类型,编译器就会创建一个临时变量来持有返回值,引用类型返回值则不会(具体原因和证明就不再赘述,以后再详细展开吧)所以为了追求极致的性能,C++在能用的地方肯定是选择引用类型的返回值。但引用不一样,如果引用不进行初始化,代码是直接无法运行,并且引用的初始化赋值只能是一个对象,无法用NULL或者是nullptr对其初始化。并非如此,用引用变量接收后,它就变成了一个纯正的引用变量,编译器会自动处理,不再像指针一样需要自己去进行解引用操作。

2024-06-14 00:36:10 1351

原创 C++函数重载——拙见

原因分析:main函数位于.cpp文件之中,自然按照.cpp语法编译,此时的Add函数被重载为Add@@YAHHH@Z,Add函数的实现在.c文件中,按照c语法编译为Add。代码经过预处理->编译->汇编,到链接时,主函数用Add@@YAHHH@Z去找.c文件之中的Add,能找到吗?例如:main函数位于test.cpp文件,且main函数前已申明Add函数。用extern "C"声明函数,编译器就会以C的标准去编译这个函数,自然也就能用Add去找到Add函数的地址。

2024-06-10 01:26:47 417

空空如也

空空如也

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

TA关注的人

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