自定义博客皮肤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博客

学习过程的记录

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

原创 c++类型转换

强类型语言也称为强类型定义语言,是一种总是强制类型定义的语言。常见的强类型语言包括Java、C/C++、.NET等。

2024-05-22 15:30:00 564

原创 c++特殊类的设计

如果单例对象构造十分耗时或者占用很多资源,比如加载插件, 初始化网络连接,读取文件等等,而有可能该对象程序运行时不会用到,那么也要在程序一开始就进行初始化,就会导致程序启动时非常的缓慢。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。

2024-05-22 08:59:56 454

原创 c++11

C++11是C++编程语言的一个版本,它是ISO/IEC 14882:2011标准的简称,由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布,并于2011年9月出版。C++11是C++98发布后13年来的第一次重大修正,也是C++编程语言的第三个官方标准。C++11引入了很多新特性,例如类型推导(auto关键字)、Lambda表达式、线程库、列表初始化、智能指针、右值引用、包装器等。

2024-05-17 15:00:00 603

原创 socket编程

网络字节序是指多字节变量在网络传输时的表示方法,它采用大端字节序的表示方式。大端字节序是指将高序字节存储在起始地址,而低序字节存储在后续地址。

2024-05-12 18:28:49 870

原创 STL-Hashtable

hashtable是通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,这样在查找的时候就可以很快的找到该元素。直接定制法:取关键字的某个线性函数为散列地址:Hash(Key)= A*Key + B优点:简单、均匀 缺点:需要事先知道关键字的分布情况使用场景:适合查找比较小且连续的情况除留余数法:设散列表中允许的地址数为m,取一个不大于m,但最接近或者等于m的质数p作为除数,按照哈希函数:Hash(key) = key% p(p

2024-05-12 13:46:11 660

原创 STL-Set&map

大家好,我是jiantaoyab,我们将进入到C++STL 的学习。STL在各各C++的头文件中,以源代码的形式出现,不仅要会用,还要了解底层的实现。与map/multimap不同,map/multimap中存储的是真正的键值对<key, value>,set中只放value,但在底层实际存放的是由<value, value>构成的键值对。set中的元素不可以重复(因此可以使用set进行去重)。multiset能插入重复的值,如果查找的话找的第一个节点是中序遍历的第一个节点。

2024-05-11 12:44:44 590

原创 信号量&线程池&读者写者模型

大家好,我是jiantaoyab,本篇文章接着给大家介绍线程有关的信号量及线程池的基本理解。

2024-05-06 22:57:35 1151

原创 AVL树浅谈

大家好,我是jiantaoyab,本篇文章给大家介绍AVL树。

2024-05-06 18:28:00 705 4

原创 Linux线程

创建一个新线程的代价要比创建一个新进程小得多与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多线程占用的资源要比进程少很多,能充分利用多处理器的可并行数量在等待慢速I/O操作结束的同时,程序可执行其他的计算任务计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现,I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作。

2024-05-01 22:34:44 955 2

原创 搜索二叉树模拟实现

大家好,我是jiantaoyab,在学习map和set之前,先来认识一下BST,搜索二叉树(Binary Search Tree,简称BST)是一种特殊的二叉树,它的每个节点都包含一个可比较的键(key)以及相关联的值。对于树中的每个节点X,其左子树中所有节点的键都小于X的键,而其右子树中所有节点的键都大于X的键。搜索二叉树的主要应用之一是高效地查找、插入和删除数据项。

2024-05-01 16:31:08 317

原创 Linux信号

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

2024-04-24 20:57:41 840

原创 系统中断浅谈

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

2024-04-24 15:08:36 767

原创 c++多态

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

2024-04-21 23:45:10 905

原创 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 787

原创 c++IO

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

2024-04-20 14:39:07 669

原创 c++继承

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

2024-04-19 20:00:00 1174

原创 STL-List

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

2024-04-19 12:09:55 1105

原创 Linux读写文件

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

2024-04-18 18:44:22 920

原创 STL-Stack&Queue

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

2024-04-18 13:50:04 498

原创 内存分页分段

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

2024-04-13 14:30:00 978

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

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

2024-04-13 09:14:46 241

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

大家好,我是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 605

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

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

2024-04-08 16:14:29 242

原创 STL-Vector

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

2024-04-08 15:30:00 1250

原创 Linux环境变量

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

2024-04-04 14:02:20 925

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

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

2024-04-03 09:51:06 255

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

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

2024-04-02 14:58:30 585

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

*初始化:**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 716

原创 Disruptor

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

2024-03-30 21:01:06 989

原创 C++String类

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

2024-03-30 20:48:08 1110

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

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

2024-03-29 23:30:03 1000

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

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

2024-03-29 11:06:04 1168

原创 大型DMP系统

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

2024-03-28 21:00:41 894

原创 分布式处理

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

2024-03-27 20:49:45 767

原创 刷题之贪心3

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

2024-03-26 20:50:07 700

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

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

2024-03-26 19:07:01 807

原创 DMA控制器

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

2024-03-25 22:13:38 868

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

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

2024-03-24 20:32:19 1135

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

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

2024-03-23 20:11:29 960

空空如也

空空如也

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

TA关注的人

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