自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux之线程及线程安全详解

在操作系统中,进程是资源分配的基本单位,那么线程是什么呢?线程是调度的基本单位,我们该怎么理解呢?

2024-06-03 20:33:37 1125 1

原创 Linux学习之信号

前言:信号是Linux里面一个重要的部分,信号是什么呢?我们将会以进程为单位来学习信号。

2024-05-27 17:58:25 686 2

原创 C++11续——智能指针(出现原因至源码模拟)

在C++11里面提出了一个新的语法 try catch用来捕捉异常,这样子能不使用return和exit的前提下退出程序就得到错误信息,但是随之而来的就是一个新的问题,try catch退出程序之后可能带来了无法释放的内存泄露问题,原因是try catch是跳跃式捕捉的。

2024-05-14 18:52:15 780 2

原创 Linux学习之进程间的通信

在Linux操作系统里面,每个进程都是独立的,两个不同的进程是无法直接进行数据的访问,传输和修改的,在这种情况下,虽然保证了进程的独立性,但是如果两个进程之间因为某些情况需要进行通信,我们有什么办法在不打破进程的独立性下完成通信呢?——管道与共享内存。

2024-05-06 17:47:52 634 4

原创 C++学习之C++11标准

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。接下来我将会以通俗易懂和亲切的话讲解C++11里面处理线程库之外其他重要部分

2024-04-22 18:35:39 983 1

原创 C++之海量数据处理(位图+布隆过滤器)

在现实中我们经常会碰到问题的数据量特别大的情况,无法将所有数据都加载到内存里面,这个时候,更不要说对数据进行处理了,该怎么办呢?

2024-04-01 17:46:41 1061 2

原创 C++AVL树拓展之红黑树原理及源码模拟

红黑树原理及细节讨论

2024-03-31 18:21:22 847 2

原创 Linux学习之软硬链接及动静态库

在之前的文章我们已经对Linux 系统里面的文件具有一定的理解了,现在我们将继续学习Linux里面的软硬连接和动静态库以及学习它们之前的准备知识,这些是Linux里面的一些重要内容。

2024-03-31 11:17:42 744 2

原创 C++STL学习之unordered_map与unordered_set(底层Hash)

我们前面已经学习论map和set,现在又冒出来一个unordered_map和unordered_set,这两个有啥差别吗?前面我们已经说过,map和set的底层是红黑树,那unordered_map和unordered_set的底层是什么呢?接下来我们会逐渐揭开它神秘的面纱。

2024-03-26 18:55:48 1045 5

原创 Linux学习之C/C++文件操作底层调用及原理

我们都知道,我们学习的C/C++是无法直接与底层硬件进行交互的,所有需要与底层硬件的交互都是通过操作系统作为中介完成的,那Linux到底是怎么做到的呢?接下来我们将揭开它神秘的面纱。

2024-03-20 20:37:11 1042 3

原创 C++之map与set的使用与原理+拓展avl树(详解)

前言:map和set是C++里面的两种常用STL容器,他们被设计为关联式容器,这两个容器存储的元素都是唯一的,并且每个元素与键(key)相关联,简单来说就是两个存储不重复元素的容器。那就有人有疑问了,我们已经有了vector和list等容器了,为什么还要这两个容器呢?这个问题算是问到点子上了,假设一个场景,我们已经插入了很多个元素,我们突然需要找到这个元素的位置,我们该怎么办,如果是vector等容器,我们一般就会遍历,这样子的查找效率是O(N),有没有办法降低查找效率呢?当然有,就是把元素存储在map或者

2024-03-10 09:06:19 867 6

原创 C++之多态

通俗来说就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个例子:不同的人去买高铁票,同样的行为,因为身份的不同,有的人买的是学生票,有些人是儿童票,有些人是普通票,也就是多种形态去做同一个事会产生不同的状态。

2024-02-26 13:13:22 416 1

原创 STL常用之vector,list,stack,queue,deque总结与对比

没有哪一种容器是绝对优秀的,在使用的时候我们需要根据自己的需求来判断使用什么容器,比如删除插入频繁扩容频繁建议使用list,如果有很强的随机访问需求建议使用vector,如果兼有这些需求建议使用deque。

2024-02-20 20:04:19 304 1

原创 C++之继承

虚拟继承是如何实现的呢。现在又出现了一个问题,构造函数会不会重复调用(因为有最原始的父类有两个类能直接调用它的构造函数,即上例person),但代码只有一份,这如果不处理好会直接报错,特别是带参的,这个时候我们可以在最子类(即上例的Assistant)显示的调用person的构造函数,这样子系统识别到虚拟继承就不会走其他类中包含的重复的类的构造函数,问题就这样完美解决了。在继承的时候如果出现了,子类中的成员和父类中的成员命名一样怎么办,如果不指定类名,一般是子类优先,那我们想要用父类中的东西怎么办呢。

2024-02-11 20:51:02 745

原创 linux学习之虚拟地址

在以往的学习中我们经常接触地址,电脑像一个小房间,它的空间是有限不可重叠的,但是可以覆盖。想象一下如果我们要放很多东西进去,如果没有合理的安排,所有东西乱放,那么我们需要寻找某一个东西的时候需要把房间找一个遍,也就是遍历,但是如果我们把房间的每一个地方都打上标签或者起个名字,然后把每个东西放在哪里记录下来放在一张纸上,我们就可以通过纸来快速定位物品。纸上写的物品信息,就是我们俗称的地址。但是我们有没有想过,我们接触的Linux地址有没有可能不是真正的地址,这就是我接下来要讲的东西了。

2024-02-11 11:53:49 461

原创 C++STL模板之——list(简化源码,模拟源码)

众所周知,C++给我们底层搬砖人提供了很多便捷的数据结构,让我们能偶尔偷懒,list就是其中之一,现在让我们来了解一下它吧。

2024-02-07 11:09:43 1514

原创 C++利剑string类(详解)

大家都知道在C语言里面的有 char 类型,我接下来要讲的 string 类功能是使用 char 类型写的类,当然这个是C++官方写的,接下来我们将会学会使用它,我们会发现原来 char 这种类型是还能这么好用,授人以鱼不如授人以渔,接下来我将会讲不少干货,不仅仅是教会我们使用,还会教我们如何模拟实现一个 string 类,我也会教大家如何去读英文文档,话不多说,正文开始。

2023-12-02 10:40:54 555 1

原创 C++函数模板与内存管理详解

在new和delete的底层原理其实就是调用了被封装的malloc和free,malloc被封装在new的函数重载里面,free被封装在delete的函数重载里面,为什么要封装呢?这是因为malloc分配空间出错是直接返回0,而C++的要求的抛错,为了达到这个效果,必需封装一下malloc和free,并且不要忘记new里面会调用构造函数delete里面会调用析构函数。new的函数重载只负责开辟空间,delete的函数重载只负责释放空间,调用析构函数和构造函数还是在new运算符里面。

2023-11-11 15:47:45 371 3

原创 Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)

在我的上一篇Linux博客我已经讲了基础指令和权限,现在我们来学习如何在Linux上运行和执行代码。

2023-11-11 09:56:44 891 2

原创 C++运算符号重载详解

细节:类内成员函数方式重载的第一个参数是this指针,因为输入输出流的第一个参数是iostream,所有无法用成员函数的方式重载,而赋值符号重载 = 因为系统有一个默认的符号重载,所以无法以全局函数方式重载。其次我们要考虑运算符支持的操作,从而考虑返回类型。授人以鱼不如授人以渔,我虽然没有列举出来所有的重载,类型,但我将重载如何入手以及需要的注意点和细节全部传授出来了,只要你认真阅读本文章,是能掌握运算符重载的。

2023-11-04 11:32:10 191

原创 Linux入门指令和权限讲解

Linux21个基础指令及权限讲解

2023-11-01 18:08:25 313 3

原创 C++构造函数,析构函数

析构函数和构造函数详解

2023-10-31 17:25:34 197 2

原创 C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)

现在我来给大家解释。首先我们要明白命名空间是什么,我们可以理解命名空间是一个与其他的空间隔离开来的一块空间,里面可以有C++的库函数,也可能有我们自己创建的变量,函数,这样做的原因是为了避免当我们不使用库函数时命名与库函数的冲突,或者大型项目之中与其他程序员的代码命名冲突,相当于独立包装起来了,我们使用时需要解开包装,上面这段代码就是解开包装,但是这个太粗暴了,一下子就拿出了这个包装里面所有的东西,那我们如何单独拿出我们想要的呢?在 :: 后面是我们要使用的东西,而 :: 前面是它的来源。

2023-10-16 20:27:01 172 4

原创 C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)

各个排序的详细讲解,代码和理论结合,以小白角度讲解

2023-09-30 18:28:55 474 4

原创 小白的二叉树(C语言实现)

二叉树属于数据结构的一个重要组成部分,很多小白可能被其复杂的外表所吓退,但我要告诉你的是“世上无难事,只怕有心人”,我将认真的对待这篇博客,我相信只要大家敢于思考,嘻嘻大胆肯定会有所收获的,当我们攀过一座山,回头看去,可能当初畏惧的大山也不过如此。有基础的可以跳过基础知识直接上干货

2023-09-21 16:52:44 406 9

原创 数据结构零基础入门篇(C语言实现)

数据结构属于C++学习中较难的一部分,对应学习者的要求较高,如基础不扎实,建议着重学习C语言中的指针和结构体,万丈高楼平地起。

2023-09-05 15:29:05 1449 8

原创 C/C++动态内存开辟(详解)

C/C++中动态内存开辟的方法和函数有许多,我们这里主要讲解malloc,calloc,realloc。细节和注意事项在最后小结。

2023-07-15 11:27:50 531 5

原创 C/C++自定义类型(详解struct,enum,union)

所有成员共用一块空间,所有它们不能数据成员同时存在,改变一个数据成员所有的数据成员都会改变,数据成员的地址都一样。2)每个数据的存储位置必须是这个数据的对齐数的整数倍字节位置(对齐数为系统默认的对齐数和自身字节大小中的较小值。无名结构体就是没有名称,意味着,除了在'}'后面,';5)如果是数组的话对齐数是数组类型,但是空间必须大于数组,而且是对齐数整数。由于篇幅有限,如果有不了解的概念等,可以评论区告诉我,我会为诸位一一解答。4)如果嵌套了结构体,则这个结构体的对齐数是结构体中数据中最大的对齐数。

2023-07-12 16:42:49 605 1

原创 C/C++库函数之——str类和mem篇(常用速学)

如果移动的是通一个数组,那么可能会一边改变数组,一边复制,可能会出错,因此我们要分类,如果目的地地址在源头地址之后的话,我们就要从后往前拷贝。用法:三个参数,第一个是一个是目的地字符串地址,第二个是源头字符串地址,第三个是复制字节大小,返回值仍然是第一个字符串地址。用法:有三个参数,一个是目的地字符串地址,第二个是源头字符串地址,第三个是复制字节大小,返回值仍然是第一个字符串地址。用法:两个参数,第一个被寻找的母串,第二个是子串,如果寻找到返回寻找到的母串中子串的地址,没找到则返回NULL。

2023-07-11 17:53:00 519 1

原创 C/C++指针从0到99(详解)

在电脑中所有的数据都会被存储,我们大多数时候只需要一部分数据,那我们如何准确找到那些数据呢,这个时候就需要一些编号来找到数据,像我们身份证上的编号一样,在计算机中每个字节都有自己的编号,而指针是用来存储这些地址编号的。

2023-07-08 16:33:54 817 2

原创 C/C++数据类型从0到内存具体分配详解

然后存储1.5这个部分,但是要转化为二进制,也就是转化为只有 0 和 1,在存储的时候它会自动省略 1 ,也就是只存小数部分,在拿出来的时候会自动加 1,然后就是存指数部分了,同样先转化为二进制,但是在存储的时候它会加上127再转化为二进制存储,如果有兴趣可以自己去找相关资料,这里不再过多解释,指数部分拿出来的时候分三个可能,1)第一个二进制存储之后全0,因为存储的时候加上了127,此时出现0,代表它是一个极小的数,把所有的数拿出来时系统会省略之前的1,直接是0.00000……float(四个字节)

2023-06-01 10:33:13 600 11

原创 C/C++函数从零到底层原理

小白也能学会的函数使用及底层原理

2023-05-21 20:05:44 122 13

原创 类型提升和不同类型计算时的痛点和难度

类型提升和不同类型计算时的痛点和难度(以二进制讲解)

2023-05-18 16:21:44 76 7

原创 C/C++中位操作符(&,|,^,~)的详解使用

位操作符(&,|,^,~)与,或,异或,按位取反的详解

2023-05-13 14:48:40 1739 11

原创 C语言实现网页版扫雷

C语言实现扫雷

2023-05-09 17:56:15 9343 16

原创 C语言实现递归版多子棋的设计

自定义多子棋游戏

2023-05-07 19:18:41 138 13

原创 循坏语句的认识与细节(C语言)

for ,while 和do while详解和细节处理

2023-05-04 18:47:57 83 13

原创 C分支的具体掌握

我将总体讲解C语言的分支语句,我将会将语法规则和常见错误和误解

2023-04-22 17:56:22 89 18

原创 C/C++中三目运算符(条件运算符)的使用详解

三目运算符由两大部分组成,“?”前面的是判断条件,如果前面的运算结果是1,即前面的条件成立,执行“:”前面,“?”后面的执行结果,反之则执行“:”后面的表达式。c=a>b?a:b;让我们看一下这行代码,首先最外面的括号是为了输出最后的结果,如果a>b,前面的表达是为真执行c=a,如果a

2023-04-05 11:41:53 1096 7

原创 C++中的格式控制

进来看看吧,绝对清楚

2023-04-02 17:38:57 487 4

空空如也

空空如也

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

TA关注的人

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