- 博客(135)
- 收藏
- 关注
原创 C++之set/map相关实现
看着上面的图片,你可能对set和map的多样变化产生疑惑,下面我们就来详细讲解他们的区别以及实现首先,在这里我们要声明,如果你对二叉搜索树一点都不了解的话,建议你先去将搜索二叉树学会再来学习这里的内容!!!我也实现过一个二叉搜索树的内容,如下,仅供参考:数据结构之搜素二叉树-CSDN博客如果你了解过一些map/set的内容可能会知道,其实实现其是有两种方法的,注意:如果你连map和set是什么都不知道的话,建议Reference - C++ Reference对于AVLTree实现和红黑树实现,STL中使用
2024-05-02 15:15:24 1037
原创 linux进程地址空间
代码:我们发现确实是符合上速规则的。代码如下:我们发现将子进程中该变量:g_val的值变化之后,地址没变,即父进程和子进程指向的地址一样,但是访问的结果却不一样,这是什么原因呢???所以这个地址绝对不是物理地址,我们应该叫虚拟地址/线性地址所以我们会发现在我们C、C++中常说的地址都是虚拟地址,而非内存中的物理地址我们知道进程具有独立性,所以每一个进程都有其所对应的虚拟地址,我们管其叫进程虚拟空间地址,所以上面子进场继承父进程在虚拟地址中位置,当其改变数据时,操作系统会将其在物理地址中位置改变,
2024-04-18 10:00:41 410
原创 Linux环境变量(一)
如果你仔细看过编程书籍就会发现,对于主函数main函数也是有参数的:首先,我们先来认识两个参数:对于这两个参数:第一个参数int类型表示为第二个的个数,第二个参数表示为字符串参数它们也称为命令行参数,下面我们来看看运用:输出结果:你会发现我们的命令行输入会决定输出!!!此时请展开联想,你会发现linux中很多命令的选项就可以通过这样来控制,例如:所以我们就可以用这方面来控制命令行的选项下面我们就可以回到环境变量上面了。首先,我们来明确一些环境变量的概念:1.环境变量不是一个,而是一堆2.环境变量
2024-04-16 21:41:47 457
原创 计算机网络基础(一)
需要注意点:1983年,TCP/IP协议成为ARPANET的标准协议,因此人们将1983年认为是Internet的诞生时间。主干ISP、地区ISP和本地ISP(从层次关系上我们也称为第一层ISP、第二层ISP、本地ISP)这些用户有时也称为端用户,强调是末端的用户。主干网、地区网和校园网(或企业网)注意点:中国入网时间:1994年。
2024-04-05 17:24:21 959
原创 算法---矩阵的乘法及其运用
相信我们都做过一个题叫斐波那契数列,对于一般的题,n的取值范围通常在1000以内,但是如果你遇到的是下面这题呢?斐波那契数列 - 洛谷发现了吗?我的n取值范围连long long都会爆出,所以下面我们通过矩阵乘法和快速幂结合来解决该类问题,如果你不知道矩阵乘法和快速幂,这篇文章可能不适合你下面我们利用矩阵乘法和快速幂来解决该问题:代码如下:可以优化:下面我们给出矩阵乘法和快速幂结合模版,该类问题解题关机是构造矩阵关于这类问题,很多网址都有大量题目,大家可以自行去学习,感谢大家的支持!!!
2024-03-26 22:22:02 592
原创 C++之多态
注意点:需要注意的是如果是成员函数的隐藏,只需要函数名相同就构成隐藏,,可以使用 基类::基类成员 显示访问基类同名成员。(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同)2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。1. 必须通过基类的指针或者引用调用虚函数。关键可以看指针或者引用或者对象的类型。析构函数也是不能继承的。
2024-03-23 22:08:33 708
原创 C++之继承详解
成员在子类的访问方式 == Min(成员在基类的访问限定符,继承方式),public > protected。有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面。派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,原有类特性的基础上进行扩展,增加功能,这样产生新的类。成员函数的隐藏,只需要函数名相同就构成隐藏。成员函数的隐藏,只需要函数名相同就构成隐藏。这里的不可见是指基类的私。
2024-03-21 20:21:55 1067
原创 C++之deque与vector、list对比分析
对于vector和list,前一个是顺序表,后一个是带头双向循环链表,前面我们已经实现过,这里就不再讲解了,直接上deque了。deque:双端队列常见接口大家可以查看下面链接:deque - C++ Reference这里我们直接讲底层逻辑。deque是开了一个指针数组,称之为中控,当我们插入数据时,就会从中间一个随机位置,开一个长度可以保持不变的数组,用中控指针指向,这样就可以在里面插入数据了。如果想要头插,那么需要在中控最前面位置用指针指向一段开辟的空间,然后在该空间结尾插入数据,如果中控满了,就需要
2024-03-17 22:13:25 420
原创 C++vector简单实现
由于我们之前已经详细讲解了string接口,而vector接口大都在string上有,所以大家只需自行翻阅前面文章就可以明白接口的使用了,所以,这里我们只实现vector,注意:vector会有迭代器失效的情况,大家一定要仔细看看代码。最后,感谢大家的支持!
2024-03-09 22:08:23 243
原创 深入理解计算机操作系统书籍阅读感悟(一)
1.sp:表示为空格,ASCII为322.在我们写的每行程序结尾都有一个隐藏的'\n'(ASCII码值为10)3.在书上的P2页上说:文本文件是指以ASCII码字符构成的文件,其余都是二进制文件除了这种理解,更常见的划分是:基于值编码,可以理解为自定义的编码。 如果某文件的数据使用基于值的编码,那么该文件即为“二进制文件”基于字符编码,即每个我们肉眼可读的字符都有唯一对应的0/1字符串,我们读、写这些字符都使用同一套编码方式。 如果某文件的数据使用基于字符的编码,那么该文件是文本文件4.为啥C语言要先转换为
2024-03-05 21:36:08 139
原创 操作系统之进程(一)
用户操作窗口中有一个lib,这其实是我们的标准库,当我们使用scanf时,就会调用标准库中scanf接口,而在该接口中有调用。再仔细一想,我们平时写的那么多标准库中的接口是不是都是封装了。再调用操作系统,而硬件是通过相应的驱动程序来调用的。指令,所以我们调用了操作系统,从而控制硬件输入。来调用操作系统,也可以通过用户操作窗口来调用。后面我的博客会深入讲解,大家可以先看看即可。是通过C语言实现的函数调用接口!用户就只能访问到自己的信息了。通过用户操作窗口来调用。
2024-03-04 17:15:04 503
原创 string(三)--实现
大家看了这么久的string了,可能对string的简单实现有兴趣,所以我实现了一个string类的常用接口,大家可以自行查看:我是分多文件写的:string.cpp:test.cpp:最后,感谢大家的支持!!!
2024-03-03 12:34:07 579
原创 冯诺依曼体系结构理解
我们知道CPU=运算器+控制器的,什么是运算器呢?什么又是控制器呢?其实运算器=算数运算+逻辑运算算数运算即是指数学体系中的运算,而逻辑运算则是计算机相关的逻辑运算,这就是运算器的作用及相关的内容而控制器是指通过指令来控制运算器进行的相关运算过程简单理解就是:控制器是老板,运算器是工人;控制器是老师,运算器是学生输入/输出设备大家就了解的非常多了,主要如下:除了这些我们只剩下储存器没了解了,那么什么是储存器呢?a. 磁盘 b.寄存器 c. 内存
2024-03-01 17:51:37 363
原创 git标签操作
标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名,当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位到 ⾸先,切换到需要打标签的分⽀上,然后,敲命令 git tag [name] 就可以打⼀个新标签 默认标签是打在最新提交的 commit 上的。那如何在指定的commit上打标签呢?⽅法是找到历史提交的commit id,然后打上就可以 两个指令:注意,标签不是按时间顺序列出,⽽是按字⺟排序的查看标签信息:注意:git show 默认是最新
2024-02-28 09:23:22 502
原创 git之远程操作
分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了(⽐如运⽓差,硬盘坏了,上⾯的所有东西全部丢失,包括git的所有内容)如图:我们这里讲解就通过gittub来实现,网址如下:开源软件 - Gitee.com至于新建远程仓库,大家可以自行去注册账号,我们直接用linux来操作:链接是指远程仓库网址,操作如下:点击克隆:这里就会显示不同协议的网
2024-02-26 11:19:59 1488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人