- 博客(35)
- 收藏
- 关注
原创 通过设计list类深入理解iterator迭代器
原文及更多原创文章见我的网站:设计模式介绍:TODOIterator迭代器实际上也是一种设计模式,它提供了一种方法一个聚合对象中下面先迅速地搓一个list类。
2025-05-24 14:46:06
476
原创 network初识计算机网络
原文及更多原创文章见我的网站:----这是第一条ARPANET信息,发送于1969年10月29日,从加州大学洛杉矶分校(UCLA)发往斯坦福大学。这条消息本来想说的是“登录”(LOGIN),但是系统崩溃了。因特网初创于20世纪60年代,其初衷在于建造一个网络来如今的因特网由几百万个松散连接的,其中的每个网络都连接到另外一个或多个网络。邻近的计算机通过本地的局域网相互连接,这些局域网通常为无线以太网。网络之间通过网关或路由器相互连接。
2025-05-24 14:45:15
890
原创 Cpp售货机类模拟实现
原文及更多原创文章见我的网站: www.supdriver.top这是一篇复习类的博客,主要综合运用以下知识:为了简便,就把类的声明和实现写在同一个文件里了这里一次性给出所用的头文件,后文便不再添加了售货机当然要管理商品啦,那怎么管理呢?依然是先描述,再组织怎么描述?把它封装成商品类怎么组织?用储存,用建立以为键,为值的索引,统一管理所有商品实现增加货物和销售货物这里就要使用子函数的概念了。将实际增加货物的功能和IO功能进行解耦合,封装在两个函数中。负责实现增加货物,负责和回调销售货物也是同理
2025-05-24 14:44:38
416
原创 logSystemLinux日志系统
本次要用到的头文件依然较多,而用到的宏定义有文件名和缓冲区大小,因为有时日志要打印到文件中,所以要准备一个文件名#define LOG_FILE "log.txt"//日志文件名#define SIZE 1024 //缓冲区大小。
2025-05-24 14:43:51
759
原创 C++继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用下面用一个简单的示例演示一下继承示例public:protected:public:private:int main()stu.Info();return 0;不可见。
2025-05-24 14:42:47
704
原创 RBTree手撕红黑树
原文及更多原创文章见我的网站: www.supdriver.top虽然作为绝对的平衡搜索二叉树,有着极高的查询效率,但正因为其严格的要求,修改的某个结点时,可能要一路调整到根节点,效率低下。为了解决这一痛点,略微没那么严格的近似平衡搜索二叉树,即被提出红黑树,是一种二叉搜索树,但在每个结点上,可以是或。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。首先与一般的定义不同,在红黑树中将(上图为)作为,然后我们来讨论具体的性质思考:为什么满
2025-05-24 14:42:07
771
原创 进程间通信–匿名管道与命名管道
首先,管道是Unix中最古老的进程间通信的形式。它用于进程间的单向通信那么具体是怎样实现的呢?从标题里就可以发现,是基于文件既然一个文件可以被多个进程打开,那么不妨将文件作为两个进程通信的媒介。但是一般位于磁盘上的文件,IO效率相比于CPU内存之类的读写速度慢了几个数量级,但文件是可以被加载到内存中的,而专门建立在内存中,而没有磁盘文件,专门用于进程间通信的内存级文件,我们就叫它管道文件管道文件由内核维护管道文件是单向的,可以是父进程->子进程,也可以子进程->父进程。
2025-05-24 14:39:55
640
原创 【Linux】简易进程池
原文及更多原创文章见我的网站: www.supdriver.top可用于父子进程间的通讯,于是可以有父进程创建多个子进程形成,并通过文件向各个子进程戳我去管道原理🔗这里使用C++编写进程池代码,在程序中创建多个进程,并在父进程中使用自定义类用于描述和管理子进程,然后在中模拟一些任务给主程序随机派发这次对形参有了新的规范,这里用代指形参名这里使用编译,规定语法标准为准备任务文件首先要准备前后需要用到的头文件,然后构建模拟任务,并提供加载任务列表的函数编写主程序主程序文件名为,我们按类和接口从上往下编
2025-05-24 14:30:39
613
原创 Linux原生线程 与 互斥锁
在一个程序(进程)里的一条执行流就叫做线程(thread),也就是说有多线程功能的进程内,可以有多个线程同时执行一个进程至少有一个执行进程线程在进程内部运行,本质是在进程提供的地址空间内运行而对于Linux实现的线程,本质上是轻量化的进程,还是用的去维护的每一个线程关于线程间内存共享如上图所示,线程之间只有栈区是相互独立的, 像是全局变量堆区数据都是共享的。
2025-05-24 14:29:24
927
原创 【数据结构】一步到胃,键值对版二叉搜索树
二叉搜索树的定义根的左右孩子存在时,满足 左孩子 < 根 < 右孩子递归定义左子树的根根右子树的根左子树是二叉搜索树右子树是二叉搜索树二叉树的节点用于储存键值对和左右指针,并提供默认构造函数,使用初始化列表初始化成员变量public:{}//指向左子树//指向右子树K _key;//储存键V _value;//储存值。
2025-05-24 14:28:22
853
原创 Linux文件系统
原文见我的网站: www.supdriver.top这里介绍一下里的分区内容Linux中,每一个文件都有自己的inode,而每一个inode有自己的inode编号(按分区为单位)特别的:尽管inode储存了文件的属性,文件名并不属于inode也是!目录也有自己的和数据块目录的数据块储存了该目录下,文件的文件名和文件的映射关系创建文件主要有以下4个操作Linux文件系统中特别重要*的一点是:文件系统使用管理文件,而不是文件名,所以使用唯一指定文件。也就是说找到了才是真正找到了基于此理论,我们可以更好地理解和使
2025-05-24 14:27:12
533
原创 初识动静态库
原文见我的网站: www.supdriver.top程序在编译链接的时候把库的代码链接到可执行文件中。编译出的程序运行时不再需要静态库这里使用编译获得链接文件,再用归档工具中的指令配合选项(replace and create)封装库文件,最后借助简化文件目录的封装操作使用第三方库时,还可以使用查看库中的目录列表使用静态库:编译时使用第三方静态库必须包含以下选项:否则编译器不知道头文件在哪,或者不知道链接哪个库库的搜索会按照一定的顺序测试程序(共个文件)然后我们编写文件作为中的变量,储存了,默认的指令用
2025-05-24 14:26:09
607
原创 【python项目实践】ACVA航空公司客户价值分析
本项目的目标是客户价值分析,即通过航空公司客户数据识别不同价值的客户,识别客户价值应用最广泛的模型是RFM模型。RRecency)指的是最近一次消费时间与截止时间的间隔。通常情况下,最近一次消费时间与截止时间的间隔越短,对即时提供的商品或是服务也最有可能感兴趣。FFrequency)指顾客在某段时间内所消费的次数。可以说消费频率越高的顾客,也是满意度越高的顾客,其忠诚度也就越高,顾客价值也就越大。MMonetary)指顾客在某段时间内所消费的金额。
2025-05-18 20:50:39
776
原创 Ssystem V 共享内存
原文见我的网站:共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据,而是直接使用内存中的共享区。我们接下来认识一下常用的接口。
2025-05-18 20:48:36
899
原创 Linux环境变量
原文见我的网站: www.supdriver.top构成:环境变量是一系列的统称,所以一个环境变量由和构成这么说还是太抽象了,我们接下来会举几个具体样例,体会在获取系统全局的变量,系统指令路径等方面的作用 NAME为变量名以为例,查看的值的指令为https://picbed0521.oss-cn-shanghai.aliyuncs.com/blogpic/PixPin_2024-07-08_12-46-35.png可以看到的内容为多个文件路径,互相以分隔而若要查看当前的全部环境变量,可以使用指令,将当前所
2025-05-18 20:44:24
654
原创 =Linux=一步步自己写一个shell程序
为了统一修改部分参数,以及使参数更易读,这里使用部分宏定义myshell.c#define LABEL "# "//注意有个空格#define DLIM " \t" //可能有多个分隔符#define EXIT_CODE 446 //特殊的退出码,表示程序未正常退出,具体数字目前没有约定。
2025-05-16 14:57:19
987
原创 C++文件操作
原文见我的网站:注:追求代码简洁,有一致的C++风格,可参阅本篇博客,若追求更高的读写效率,建议参阅C语言篇本篇文章主要研究头文件fstream中的和目前C++文件操作主要有两种流派,一种是声明fstream对象,另一种是分开声明ifstream和ofstream。
2025-05-16 14:46:24
806
原创 堆排序实现详解
原文见我的网站: www.supdriver.top大堆的特性:每一个节点的值都比左右孩子都大,的值是整个大堆中最大的小堆的特性:每一个节点的值都比左右孩子都小,的值是整个大堆中最小的后面以大堆为例任何一个数组可以看成一个,下标0为二叉树的根而非常方便的是,已知一个节点的下标,可以利用数学关系求出根或孩子的下标在已有一个大堆的前提下,把一个新的数据插入到堆的最后一个节点(此时破坏大堆的结构),再一路向上调整,可以重新建堆向下调整法在已有一个大堆的前提下,把根的值改变(此时破坏大堆的结构),再一路向下调
2025-05-16 14:41:37
568
原创 =C入门=深入研究 字符串与字符数组
我们最先遇到的字符串,一般是程序中用到的,也就是两个双引号括起来的一串字符,输出时的占位符是%s,可以直接拿去传值,代码如下。
2025-05-16 14:40:37
638
原创 如何在VS里使用scanf
*先来看怎么做:**首先搜索找到电脑中叫做的文件。(这里推荐使用everything后半段路径应与图片一致,注意不是快捷方式注意:由于权限原因,无法直接修改此文件所以先将这个文件复制粘贴到别处,例如桌面,下文用副本代称。用记事本类软件(记事本就行)打开副本,在第一行输入上文提到的宏定义代码,然后ctrl+s保存。关闭编辑窗口,将该副本移动到原始文件所在文件夹,弹出如下窗口,然后选择替换文件接着弹出下一个提示,点接续等待它替换完成,然后大功告成!。之后新建的每一个.c或.cpp。
2025-05-16 14:39:16
326
原创 玩转N组输入和多组输入
原文见我的网站: www.supdriver.top当我们在写IO型OJ时,便是我们绕过不开的话题了,但不用担心,可能初见多组输入会觉得难以理解,但用多了之后就会发现, 花样并不多,混熟了就很简单了如图:一组输入时,用获取一组输入,并在主体部分完成数据的处理,产生结果,最后用输出产生的一组结果。以下用实现加法的程序做演示然后升级到N组输入有的OJ题在一个测试文件中会先输入一个,告诉你接下来有组输入,你就要产生组输出,也就是说要将重复性地完成。难道我们要把代码重复吗?显然不现实。所以是时候使用循环了,具体
2025-05-16 14:38:20
815
原创 =C语言实践= 手把手教你做高端cmd简单扫雷
为了便于阅读和维护代码,在game.h中的宏定义如下//显示行列//实际数组大小//地雷信息//难度//显示区至此游戏所需的代码全部完成,已经可以编译出来玩耍啦。该实践项目主要练习了二维数组函数函数递归宏定义等内容,代码量在入门学习中算较大的,本人在初次编写的时候也写出了不少bug,debug的过程是相当快乐//统计没排雷的格子数i <= ROW;if (count == EZ_RANK)//统计数==雷数。
2025-05-16 14:37:33
746
原创 =算法=按位异或^的种种玩法
首先将不同数制的数写成二进制,例如9->0b1001然后最末位对齐,依次按位异或0 ^ 0= 0;1 ^ 1 = 0;1 ^ 0 = 1推论:任意整数x,都有0^x = x;x ^ x = 0来看看应用。
2025-05-16 14:34:19
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人