自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】网络基础

早期使用计算机的大多是进行实验的科学家,他们需要将数据从一个计算机传输到另一个计算机时,常通过软盘拷贝,这种方式非常低效。于是世界各地的实验室都开发了自己的通信方式,但随着时间的推移,只有那些经过竞争筛选出的更优秀的网络通信方式被保留下来。计算机作为人类的工具,人们需要协同工作,这决定了网络的产生是必然的。其中网络分为局域网和广域网,局域网:计算机的数量太多通过交换机和路由器连接在一起网络;广域网:通过多个路由器相互连接起来的网络。

2024-09-21 18:37:31 532

原创 【Linux】线程&锁&条件变量&信号量&生产消费者模型&线程池

线程池模型本质上是生产消费者模型的一种应用,它通过预先创建一批线程来准备处理任务,这些线程可以视为消费者,而任务队列则充当了存储任务的缓冲区。当有新任务到来时,它们被推送到任务队列中,等待线程池中的线程来处理。休眠的线程在检测到队列中有任务时会被唤醒,然后开始执行任务。 线程池具有应对突发性大量任务请求的能力,当大量任务请求到来时,无需再开销创建线程,直接让休眠的线程去处理任务,同时还能复用已经处理完任务的线程,让它继续处理下一个任务。

2024-09-16 18:06:44 1043

原创 【Linux】信号

信号(signal)是一种软中断,它本质上是在软件层次上对硬件中断机制的一种模拟。信号可用于进程间通信、处理异常,它通过操作系统向一个进程或者线程发送一种异步通知,用于通知该进程或线程某种事件已经发生,需要做出相应的处理。同时,进程收到信号到处理这个信号之前,必须具备保存这个信号的能力。

2024-07-27 02:17:21 978

原创 【Linux】管道通信和 system V 通信

因为它们的第一个字段 ipc_perm 是一样的,所以可以维护一个 struct ipc_perm* 的指针数组,存共享内存、消息队列、信号量它们三者中,第一个元素的地址,也就是 &ipc_perm。这样就可以把共享内存、消息队列和信号量三个部分直接管理起来了。而我们知道结构体的第一个成员的地址和结构体对象的地址在数值上是相同的,并且操作系统在内部可以识别这个对象是共享内存、消息队列和信号量中的哪一个,因此我们拿到这个数组中的 ipc_perm 地址便能访问这结构体的其它成员,将它们管理起来

2024-07-24 01:17:50 885

原创 【Linux】inode 软硬链接和动静态库

文件=内容+属性, 要理解 inode 是什么,首先得知道文件的内容和属性是分开存储的。文件数据(内容)储存在硬盘的数据块中,那么还得必须找到一个区域来存储文件的元信息(属性),这种存储文件元信息的区域就叫做 inode(索引节点)

2024-07-14 22:48:52 596

原创 【Linux】 文件读写&描述符&重定向& Linux 一切皆文件&缓冲区

站在操作系统内核数据结构上层来看,所有的软硬件设备和文件统一都是 file 对象,它是操作系统当中虚拟出来的一层文件对象,我们将这一层称为 虚拟文件系统 VFS,通过它,我们就可以摒弃掉底层设备的差别,统一使用文件接口的方式来进行文件操作,即 Linux 下一切皆文件!

2024-07-13 22:36:13 1130

原创 【Linux】进程终止和等待和程序替换

父进程通过等待,可以获取子进程的退出状态,并回收子进程占用的资源,避免资源泄漏。上面提到过,进程等待能够获取子进程的退出状态:即父进程可以通过等待获取子进程的退出码,从而了解子进程的执行结果是正常结束还是异常终止。2、获取子进程的退出状态:父进程可以通过等待获取子进程的退出码,从而了解子进程的执行结果是正常结束还是异常终止,以便做出相应的处理。4、同步和协调:在一些复杂的程序架构中,父进程可能需要根据子进程的执行结果来决定后续的操作,通过等待可以实现进程之间的同步和协调。而等待的方法有两种,阻塞和非阻塞。

2024-07-11 00:56:01 823 1

原创 进程地址空间和页表

现在我们对进程有了更加深入的理解,进程 = 内核数数据结构(task_struct&进程地址空间&页表)+ 程序的代码和数据。进程地址空间的存在可以让进程以统一的视角看待内存,虚拟地址空间可以让我们访问内存的时候,增加一个转换的过程,在这个转化的过程中,可以对我们的寻址请求进行审查,所以一旦异常访问,直接拦截,该请求不会到达物理内存,保护物理内存。因为有地址空间和页表的存在,将进程管理模块,和内存管理模块进行解耦合!

2024-01-24 12:58:16 986 2

原创 【C++】set 和 map 简单了解使用

文章目录关联式容器set 和 multisetmap 和 multimap关联式容器set 和 multisetmap 和 multimap

2023-08-10 21:39:13 760 3

原创 【C++】BSTree 模拟笔记

中序遍历它便可以得到一个升序序列。

2023-08-03 21:44:44 313 3

原创 【Linux】fork父子进程简单理解

我们此时需要一个将被视为成功且不能为实际PID的值,0不是真实的PID(否则,孩子可能会认为它是父母)。同时, 0返回值也是系统调用指示成功的标准返回值。fork函数再执行return语句前,已经完成了子进程的创建工作,而return语句也是代码,父子共享,因此父进程在调度时返回一次,子进程调度时返回一次。为什么将子进程id返回给父进程,而返回0给子进程?为什么代码可以共享,数据不能被共享?进程=内核数据结构+代码和数据。

2023-07-30 20:49:43 122

原创 【C++】多态,虚函数表相关问题解决

虚表位置,虚函数表多继承相关问题,父类指针或者引用相关问题……可是细心一点发现,两张表中的func1地址不一样,它们不是都重写了func1函数吗?而且用父类指针调用会发现,它们调的是同一个函数,那么这里为什么地址不一样呢?

2023-07-28 00:23:29 358 3

原创 【C++】解决菱形继承而产生的虚基表(偏移量表)

菱形继承对象模型,菱形虚拟继承对象模型,虚基表分析,为什么存偏移量而不直接存地址?

2023-07-27 00:04:25 284 1

原创 【C++】优先级队列和反向迭代器 模拟笔记

优先级队列和反向迭代器

2023-07-22 17:00:00 316 19

原创 【C++】list 模拟笔记

list 模拟遇到的相关问题解决

2023-07-20 21:00:00 728 76

原创 【C++】vector 模拟笔记

由上面的扩容逻辑可以知道,插入数据有时候需要扩容,而扩容是异地扩容,原来空间已经被释放了,那么指向原来空间的迭代器自然失效了。扩容是异地扩容,需要开一块新的空间,然后把数据拷贝过去,再将原来的空间释放掉。写成模板,同时不能与库里面的空间产生冲突,我们需要自己定一个命名空间,具体代码看最下面的整体带代码。虽然有时候插入迭代器并没有失效,但是考虑不同平台实现的封装和代码的可移植性,默认它就是会失效,,且第二个用迭代器区间初始化函数,两个形参相同,此时更匹配第二个函数。等各种容器的迭代器,它们都不是原生指针。

2023-07-19 08:00:00 644 72

原创 【C++】string类模拟

类主要接口模拟实现,加深对的理解

2023-07-15 18:00:00 679 94

原创 Linux 进度条

看完小白也能从0到1的实现Linux进度条,加深对回车换行的理解,认识行缓冲,实现简单倒计时和进度条

2023-07-11 17:09:04 2535 80

原创 Linux 软件安装及vim详细用法和配置

Linux软件安装及vim详细用法和配置

2023-05-27 18:52:16 5410 121

原创 C++模板详解

C++模板实例化等等

2023-05-25 11:17:45 1251 31

原创 C++ new和delete详解

C++ new和delete详解

2023-05-24 22:00:41 3210 21

原创 Linux权限

Linux权限理解,粘滞位,以及如何更改权限

2023-05-17 20:03:12 1398 32

原创 Linux基本指令-3

date、cal、find、grep、zip、tar、uname……等指令详细使用教程

2023-05-15 22:05:11 757 25

原创 类和对象下

C++初始化列表、友元函数,static成员函数…………

2023-05-14 11:06:18 464 18

原创 C++实现日期类

=>=<=!==−−−−−−−−。

2023-05-10 13:10:51 957 25

原创 类和对象中(2)

2、实现程序的通用性和泛化:通过运算符重载,可以将一些类似的操作进行统一化处理,从而实现程序的通用性和泛化,避免了程序中出现大量重复的代码,提高了程序的可维护性和可扩展性。1、使得程序的可读性更强:通过运算符重载,可以在类中实现对于运算符的自定义操作,使得程序代码更加简洁、直观,符合人们的习惯,从而增强了程序的可读性。下一篇博客我们将用这篇博客的知识实现日期类,期待我们下一篇博客见面!3、提高程序的效率:通过对运算符的重载,可以在不增加程序复杂度的情况下,提高程序的效率,从而提高程序的运行速度。

2023-05-08 19:36:52 604 19

原创 类和对象中(1)

C++把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的数据类型,如:int/char……,自定义类型就是我们使用class/struct/union等自己定义的类型,就会发现编译器生成默认的构造函数会对自定类型成员调用的它的默认成员函数。注意:有些编译器会对自定义类型进行处理,仅仅为个性化行为,在这里我们默认当作编译器不会处理当我们写的默认构造函数重载时,如果一个无参,一个带参给了缺省值,就会出问题.同时,只要你手写了默认构造,就不会调用编译器生成的默认构造函数。

2023-05-07 10:59:25 375 27

原创 类和对象上

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理C++类和对象是面向对象编程的基础,也是C++中最为核心的概念之一。掌握类和对象的定义、作用域等只是基础知识,下一篇我们深入学习构造、析构等相关知识。类是对对象的抽象和描述,两者相辅相成,构成了C++面向对象的核心。

2023-05-04 10:14:35 348 18

原创 Linux指令-2

manmancpmvechocatmorelesshead或者tail。

2023-04-27 22:21:30 526 14

原创 认识Linux及其基本指令

基本概念:操作系统是一种系统软件,它通过管理计算机硬件和软件资源来控制和协调计算机的各种操作。它提供了用户与计算机之间的接口,并为应用程序提供服务和资源。操作系统负责分配和调度计算机的处理器、内存、输入/输出和其他资源,并提供文件管理、网络支持和安全等功能。常见的操作系统包括Windows、macOS、Linux和Android等。简单理解操作系统就是一款大型的做软硬件管理的软件,其核心工作要求就是对下管理好资源软件,对上提供安全、快速、稳定的使用环境。

2023-04-25 17:21:41 162 21

原创 C++引用

1、避免复制:通过使用引用作为函数参数,可以避免将参数复制到新的变量中,从而节省了内存空间和时间开销。2、减少指针的使用:引用可以起到类似指针的作用,但是相比于指针,引用更加简洁、易读,并且不需要进行解引用操作,这可以降低代码的复杂度和错误的可能性。3、快速访问:引用可以提高程序的访问速度。因为引用是变量的别名,所以它们共享同一块内存地址,在访问时可以直接访问到原始数据,而不需要额外的寻址操作,这可以减少程序的运行时间。最后,期待我们在下一篇博客见面!!!

2023-04-20 12:11:47 173 17

原创 c++命名空间和函数重载

我们对一个变量命名时,可以采用不同的方式,可初学者却并不了解库里面已经命名的变量,这时候就会出现命名冲突。当把某个命名空间域展开后,可能出现以下情况,两个都是全局变量指代不明。语法:using namespace +需要展开的空间域。展开命名空间域,让局部变量变为全局变量。语法:(指定命名空间域 ::a。

2023-04-16 15:30:23 207 10

原创 万字详解八大排序

八大排序

2023-04-12 13:11:42 278 15

原创 二叉树相关问题求解及其OJ巩固

求结点数目我们不能在函数里面创建临时计数变量,形参的改变不影响实参,递归的时候出来作用域就销毁了,因此我们需要传临时变量的地址。这些知识还在初阶的二叉树知识,基础巩固好了以后学复杂的二叉树知识也会轻松不少,期待下一篇博客见面。

2023-04-08 18:53:57 173 4

原创 二叉树基础知识

树有很多种,二叉树,三叉树之类的,二叉树就是只有左右两个分支(孩子)的树。而二叉树又分为满二叉树和完全二叉树。这些都是二叉树的基础知识,下一篇会运用到一些二叉树的相关性质并且附上相关OJ。

2023-04-05 23:25:34 152 3

原创 堆的相关问题思考和二级结论求堆排序时间复杂度

附二级结论带你快速求堆排序的时间复杂度

2023-04-01 12:01:34 324 8

原创 栈、队列和环形队列实现及其相关OJ

循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。通过这篇博客,希望大家对队列、栈和环形队列的类型、性质和用法又有了更深的理解,从学习基本性质到综合应用,一步步提升,一点点提高。今天博客我们就说到这里,期待我们下篇再见。

2023-03-24 12:42:03 145 7

原创 第一篇博客

数列是按照特定的规律或者次序排列的有限的数的集合,可以用来描述某种具有一定规律性的存在,在这个题中数列 一般式子为。将一个数组右移动k位,可以等价于先把数组整体翻转,再把数组前k个翻转,在把数组的后numsSize-k个翻转。前言:这是我的第一篇博客,历时时长超过两时半,我希望用博客来记录自己编程的学习生活,种一颗树最好的时间的是。以上就是我对这两个题的理解啦,初写博客的我没有什么经验,期待各位大佬的指点!,即异或的运算满足结合律,运算结果得到的最后一个数便是缺少的那一个数。的时候就把后k个元素从。

2023-03-13 12:20:36 325 15

空空如也

空空如也

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

TA关注的人

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