自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到jiantaoyab博客

学习过程的记录

  • 博客(87)
  • 收藏
  • 关注

原创 Linux信号

大家好,我是jiantaoyab,本篇文章将给大家介绍信号,在认识信号之前,先看看什么是。平时在Linux下运行程序,当我们想终止这个程序可以在键盘下按下[ctrl + c]就会终止程序,程序会停止是因为收到信号,所以信号是进程之间事件异步通知的一种方式,属于软中断。信号类似硬件中断,但没有优先级,内核平等的对待所有的信号。每个信号都有一个编号和宏定义的名称,这些宏定义可以在signal.h中找到。

2024-04-24 20:57:41 819

原创 系统中断浅谈

大家好,我是jiantaoyab,本篇文章给大家介绍中断,我们可以把操作系统理解成一个“死循环”,它本身什么都做不了,是被动工作的,得用事件来驱动,这个事件是以中断形式通知操作系统的。

2024-04-24 15:08:36 758

原创 c++多态

被virtual修饰的函数就称为虚函数,这里的virtual和继承解决菱形继承用的virtual含义是不一样,只是用了同一个关键字。一会在多态的原理会更详细的介绍。

2024-04-21 23:45:10 896

原创 Linux管道共享内存

当没有数据可读时1.O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。2.O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。当管道满的时候1.O_NONBLOCK disable: write调用阻塞,直到有进程读走数据2.O_NONBLOCK enable:调用返回-1,errno值为EAGAIN。

2024-04-20 20:14:41 780

原创 c++IO

大家好,我是jiantaoyab,本篇文章给大家介绍c++中文件操作。先回忆一下c语言文件操作再看看c++中流的概念,是对一种有序连续且具有方向性的数据(单位可以是bit,byte,packet 的抽象描述。C++流是指信息从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程。这种输入输出的过程被形象的比喻为“流”。它的特性是:有序连续、具有方向性。为了实现这种流动,C++定义了I/O标准类库,这些每个类都称为流/流类,用以完成某方面的功能。

2024-04-20 14:39:07 664

原创 c++继承

大家好我是jiantaoyab,本篇文章给大家介绍继承。继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。继承的方式有访问限定符一样有三种,分别是public、protected、private。基类时,基类的成员也是派生类的成员,基类的成员也是派生类的成员,基类的。

2024-04-19 20:00:00 1171

原创 STL-List

我们将进入到C++STL 的学习。STL在各各C++的头文件中,以源代码的形式出现,不仅要会用,还要了解底层的实现。

2024-04-19 12:09:55 1097

原创 Linux读写文件

学习了文件系统,就能理解为什么说Linux下一切皆文件。在c语言的学习中我们可以使用fopen()函数对文件进行操作。FILE在c语言上是一个结构体,包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行。上面提到的这些函数都是库函数,而像open()、close()、read()、write()都是属于系统提供的接口。

2024-04-18 18:44:22 914

原创 STL-Stack&Queue

我们将进入到C++STL 的学习。STL在各各C++的头文件中,以源代码的形式出现,不仅要会用,还要了解底层的实现。stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。

2024-04-18 13:50:04 476

原创 内存分页分段

在段式内存中,当申请内存的时候就划分一块内存给它,假如一个空间有4096MB大小内存,实际使用了3000MB,假如想运行一个程序是1024MB大小的看起来是能满足,但是数据段或者代码段对于内存的要求必须是连续了,实际的物理内存占用是非常碎片化的,所以不一定能满足这个程序的要求。为了解决这个问题,提出了分页的管理方式。把内存切分成等大的页面,常见的页面大小是4096,也就是2^12字节,这就是一个访问单位。寻找一个分页只需要知道高20位就可以了,低12位可以忽略(全是0)。

2024-04-13 14:30:00 968

原创 刷题之动态规划-两个数组

大家好,我是jiantaoyab,开始刷动态规划的两个数组类型相关的题目。这道题目和上一道题目很像,不过是在数组中最长公共的子序列。这里的*是根据前面的字符来匹配的,不能单独使用。

2024-04-13 09:14:46 237

原创 刷题之动态规划-回文串

大家好,我是jiantaoyab,开始刷动态规划的回文串类型相关的题目。

2024-04-10 15:09:28 550

原创 实模式和保护模式

GDT只是一个段描述类型的数组,用于内存的寻找,为了对内存区域进行保护,将段描述符号设计成三部分。LDT和GDT类似,可以理解成GDT为1级描述符表,LDT为2级描述符表。LDT不在GDT中,GDT包含LDT描述符一个指向LDT起始地址的指针。

2024-04-10 14:02:41 597

原创 刷题之动态规划-子序列

大家好,我是jiantaoyab,开始刷动态规划的子序列类型相关的题目,子序列元素的相对位置和原序列的相对位置是一样的。在(0,i-1)中取一个j,是数对链的话得满足pairs[j] [1] < pairs[i] [0]dp[i]: 表示以i位置为结尾的最长数对链的长度。

2024-04-08 16:14:29 238

原创 STL-Vector

vector()无参构造构造并初始化n个val拷贝构造使用迭代器进行初始化构造。

2024-04-08 15:30:00 1243

原创 Linux环境变量

最大的差异就在于会不会被子进程继承继续用,当我们登录Linux的时候,我们获取的bash的一个独立的子进程,当我们执行一个命令,是由这个bash衍生出的子进程帮我们去执行,所以如果我们在bash定一个自定义变量在进入子进程之后就不见了,当离开子进程回到bash这个变量才又出现。

2024-04-04 14:02:20 923

原创 刷题之动态规划-子数组

大家好,我是jiantaoyab,开始刷动态规划的子数组类型相关的题目。dp[i] : 到达 i 位置所有子数组中的最大和。初始化:新增加一个数初始化为0。返回值:dp表中最大的元素。

2024-04-03 09:51:06 250

原创 Linux进程PCB|创建|优先级

大家好,我是jiantaoyab,这篇文章给大家介绍进程。,程序是一个可执行的文件,而进程(process)是一个执行中的程序实例。利用分时技术,在 Linux操作系统上同时可以运行多个进程。分时技术的基本原理是把 CPU 的运行时间划分成一个个规定长度的时间片,让每个进程在一个时间片内运行。当进程的时间片用完时系统就利用调度程序切换到另一个进程去运行。因此实际上对于具有单个 CPU 的机器来说某一时刻只能运行一个进程。但由于每个进程运行的时间片很短,所以表面看来好象所有进程在同时运行着。

2024-04-02 14:58:30 560

原创 刷题之动态规划-多状态

*初始化:**dp[0] [0] = -prices[0];**返回值:**min(dp[n] [0],dp[n] [1],dp[n] [2]);f [i] : 到达 i 位置 nums[i] 选上,此时的最大点数。g [i] : 到达 i 位置 nums[i] 不选,此时的最大点数。返回值:max(f[n - 1], g[n -1]);**填表顺序:**从左到右,3个表同时填。初始化:f[0] = arr[0];和上一道题目是类似的。

2024-04-01 16:28:45 713

原创 Disruptor

CPU 从内存加载数据到 CPU Cache 里面的时候,不是一个变量一个变量加载的,而是加载固定长度的 Cache Line。如果是加载数组里面的数据,那么 CPU 就会加载到数组里面连续的多个数据。对于类里面定义的单独的变量,就不容易享受到 CPU Cache 红利了。因为这些字段虽然在内存层面会分配到一起,但是实际应用的时候往往没有什么关联。于是,就会出现多个 CPU Core 访问的情况下,数据频繁在 CPU Cache 和内存里面来来回回的情况。

2024-03-30 21:01:06 984

原创 C++String类

在cplusplus中,对String有着下面的介绍。stringThestringcharandallocatortypes (see可以看到string类不是STL的容器,string类是basic_string类模板的实例化。为什么basic_string要设计成类模板呢?

2024-03-30 20:48:08 1102

原创 malloc是如何分配内存|malloc(1)分配多大内存|free释放内存,会还给操作系统吗?

大家好, 我jiantaoyab,这篇文章给大家介绍mallo和free面试中常问到的问题。

2024-03-29 23:30:03 953

原创 刷题之动态规划-路径问题

大家好,我是jiantaoyab,开始刷动态规划的题目了,要特别注意初始化的时候给什么值。动态规划5个步骤我们用动态规划来解决优化一下,可以看到只需要三个变量也能完成这个操作。

2024-03-29 11:06:04 1158

原创 大型DMP系统

大家好,我是jiantaoyab,这是我作为学习笔记总结应用篇第一篇,本章大量的参考了别的博主的文章。我们今天就先从搭建一个大型的 DMP 系统开始,利用组成原理里面学到的存储器知识,来做选型判断,从而更深入地理解计算机组成原理。

2024-03-28 21:00:41 887

原创 分布式处理

大家好,我是jiantaoyab,这是我作为学习笔记原理篇的最后一章,一台计算机在数据中心里是不够的。因为如果只有一台计算机,我们会遇到三个核心问题。第一个核心问题,叫作,第二问题叫作(High Availability),第三个问题叫作。

2024-03-27 20:49:45 763

原创 刷题之贪心3

如果出现的数字次数小于 n + 1 / 2,那更不可能相邻了,如果有相邻的说明这个数字出现的次数一定比 这个数字出现的次数多,那它就是最多出现次数的数字了,所以先放次数最多的,放下的数字的顺序怎么放都可以。大家好,我是jiantaoyab,这篇文章将给大家介绍贪心算法和贪心算法题目的练习和解析,贪心算法的本质就是每一个阶段都是局部最优,从而实现全局最优。题目一定是有解的,那么出现最多的那个数字不能超过 n + 1 / 2次,因为如果有n个抽屉,放n + 1 个东西,必然有一个抽屉放2个,分情况讨论。

2024-03-26 20:50:07 696

原创 奇偶校验|ECC内存|海明码

大家好,我是jiantaoyab,本篇文章给大家介绍数据出错和有什么方法能减少出错。

2024-03-26 19:07:01 739

原创 DMA控制器

大家好,我是jiantaoyab,这是我作为学习笔记的25篇,本篇文章给大家介绍DMA。无论 I/O 速度如何提升,比起 CPU,总还是太慢。如果我们对于 I/O 的操作,都是由 CPU 发出对应的指令,然后等待 I/O 设备完成操作之后返回,那 CPU 有大量的时间其实都是在等待 I/O 设备完成操作。但是,这个 CPU 的等待,在很多时候,其实并没有太多的实际意义。

2024-03-25 22:13:38 862

原创 SSD硬盘读写原理|FTL|TRIM|写入放大效应

大家好,我是jiantaoyab,本篇文章我们来看看SSD硬盘和FTL、磨损均衡,SSD 硬盘,适合读多写少的应用,使用寿命受限于可以擦除的次数。

2024-03-24 20:32:19 1082

原创 硬盘I/O性能 | 机械硬盘

大家好,我是jiantaoyab,在开发应用系统的时候,遇到的性能瓶颈大部分都在 I/O 上。这是我作为学习笔记的23篇,本篇文章大家我们就来看看硬盘 I/O 性能。

2024-03-23 20:11:29 895

原创 LinuxYUM&&Vim&&g++/gcc&&gdb&&Git使用

大家好,我是jiantaoyab,前面的文章给大家介绍了Linux的基础命令和权限,学会了命令行的模式使用Linux,今后要开始在Linux上写代码了,在这篇文章将介绍YUM、vim、gdb、git等常用的工具。

2024-03-23 14:27:28 1156

原创 刷题之贪心2

大家好,我是jiantaoyab,我们接着刷贪心算法的题目。在这篇文章中很多题目没有证明,是因为在分析题目的过程中就已经证明了。给你一个整数数组nums,判断这个数组中是否存在长度为3的递增子序列。如果存在这样的三元组下标(i, j, k)且满足i < j < k,使得,返回true;否则,返回false。

2024-03-22 20:40:29 543

原创 总线--通信的“道路“

大家好,我是jiantaoyab,前面讲了CPU和内存,那么CPU 从我们的键盘、鼠标接收输入信号,向显示器输出信号,这之间究竟是怎么通信的呢?换句话说,计算机是用什么样的方式来完成,CPU 和内存、以及外部输入输出设备的通信呢?本篇文章大家讲讲总线。

2024-03-22 16:50:13 459

原创 虚拟内存页表和内存保护

大家好我是jiantaoyab,这是我所总结作为学习的笔记第21篇,在这里分享给大家,这篇文章讲虚拟内存和内存之间的页表和内存安全问题。

2024-03-21 19:56:05 1004

原创 c++模板

模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-03-21 12:47:03 599

原创 CPU的Cache和MESI协议

大家好我是jiantaoyab,这是我所总结作为学习的笔记第九篇,在这里分享给大家,这篇文章讲CPU的Cache。

2024-03-20 16:59:56 775

原创 c++内存管理

栈又叫堆栈,非静态局部变量/函数参数/返回值等等都是放在栈中的,栈是向下增长的,运行时自动分配和自动回收空间。堆用于程序运行时动态内存分配,堆是向上增长的。静态区又叫数据段:存储全局数据和静态数据代码区又叫代码段:可执行的代码/只读常量(函数编译出来都是指令在代码段)

2024-03-20 11:33:36 1635 2

原创 Linux文件权限

大家好,我是jiantaoyab,本篇文章给大家介绍Linux的文件权限。文件权限系统是确保文件和系统安全的关键组成部分。正确理解和配置文件权限对于维护系统安全至关重要。在Linux下,有拥有者user、用户组group、其他人others之分。什么的group?假设在一个班里面有2个小组A和B,A和B要对同一个问题进行作答,存在竞争关系,A组员之间能修改和查看对方的数据,但是B组的成员不能看到和修改A组的数据。那么A成员组成的A就是一个group。在Linux默认中,系统上所有账号的信息都记录在/etc/

2024-03-19 21:44:17 1007

原创 存储器的层次结构和局部性原理

大家好我是jiantaoyab,这是我所总结作为学习的笔记第19篇,在这里分享给大家,这篇文章讲存储器的一部分内容。

2024-03-19 19:24:09 661

原创 虚拟化技术

大家好我是jiantaoyab,这是我所总结作为学习的笔记第十八篇,在这里分享给大家,这篇文章讲虚拟技术就是大家平时用到的云服务器是什么。

2024-03-18 16:49:52 661

空空如也

空空如也

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

TA关注的人

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