自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】多线程

一般而言线程:是在进程内部运行的一个执行分支(执行流),属于进程的一部分,粒度要比进程更加细和轻量化。所谓的在进程的内部指的是线程在进程的地址空间中运行执行分支:CPU调度时只看PCB,每一个PCB曾经被指派过指向方法和数据,CPU可以直接调度Linux与Windows等系统不同,并没有直接的线程控制块,而是通过进程去模拟线程。

2022-12-31 20:41:59 1165 1

原创 【Linux】进程信号

生活中有很多的信号闹钟,红绿灯等等,这些信号还没有发出,我们就知道要干什么,对于信号的处理动作我们是早于信号产生就知道了,我们知道的原因是因为我们早就记住了“信号”进程对于信号的处理也是这样,进程收到某种信号,它不一定会立即处理,在它合适的时机才会处理信号,所以在处理信号之前,我们需要保存信号,信号的本质是数据,向进程发送信号本质是向进程的PCB中写入信号数据。以上就是今天要讲的内容,本文仅仅简单介绍了进程间的信号。

2022-12-22 19:44:28 937

原创 【C++】继承与面向对象设计

C++继承多态的进阶应用

2022-12-19 15:37:42 535

原创 【C++】Pimpl

如果只是因为若干成本原因而放弃使用Pimpl是严重错误的,virtual也带来了若干成本,应该以渐进的方式使用这些技术,在工程中使用以求得代码有所变化时对服务带来最小冲击。

2022-12-17 17:36:05 999

原创 【Linux】进程间通信

想象现实中的管道,它一定是有一个出口有一个入口,用来传输资源,资源只能从一端流向另一端进程间通信的管道也同理,一个进程发送数据另一个进程接收数据。管道是由操作系统所提供的最古老的进程间通信的形式。以上就是今天要讲的内容,本文仅仅简单介绍了进程间通信的管道和共享内存。

2022-12-17 11:03:29 1282

原创 【数据结构与算法】跳表

跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。它采用随机技术决定链表中哪些节点应增加向前指针以及在该节点中应增加多少个指针。跳表结构的头节点需有足够的指针域,以满足可能构造最大级数的需要,而尾节点不需要指针域。采用这种随机技术,跳表中的搜索、插入、删除操作的时间均为O(logn),然而,最坏情况下时间复杂性却变成O(n)。

2022-12-13 17:49:32 884

原创 【数据结构与算法】B_树

我们已经有很多索引的数据结构了例如:顺序查找 、二分查找 、二叉搜索树 、二叉平衡树(AVL树和红黑树) 、哈希以上结构适合于数据量相对较小,能够一次性存放在内存中,进行数据查找如果数据量很大,一次性无法放进内存中,那么只能存放到磁盘上,如果要进行搜索,只能将关键字映射的数据的地址存放到搜索树的节点中,要访问数据,就要先去磁盘中读取磁盘的速度是远低于内存的,虽然平衡搜索树的时间复杂度是O(log H)(H是高度)

2022-12-12 18:44:27 628

原创 【数据结构与算法】图

以上就是今天要讲的内容,本文仅仅简单介绍了图论相关简单内容。

2022-12-10 15:51:17 620

原创 【数据结构与算法】并查集

并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-fifind-set)。 通俗的来说就是找朋友问题假如现在有10个人,分别是{0,1,2,3,4,5,6,7,8,9}他们有些人之

2022-12-05 20:44:52 428

原创 【C++】IO流

以上就是今天要讲的内容,本文仅仅简单介绍了C++IO。

2022-11-30 23:44:02 655

原创 【C++】特殊类的设计

以上就是今天要讲的内容,本文仅仅简单介绍了特殊类的设计。

2022-11-29 22:43:35 356

原创 【C++】类型转换

以上就是今天要讲的内容,本文仅仅简单介绍了C++的类型转换。

2022-11-29 16:17:55 953

原创 【C++】异常

以上就是今天要讲的内容,本文仅仅简单介绍了C++异常。

2022-11-22 15:49:30 544

原创 【C++】C++11部分特性

例如:以上就是今天要讲的内容,本文仅仅简单介绍了C++11相关特性。

2022-11-20 20:20:12 564

原创 【C++】哈希相关问题

我们可以采取这样的思路:把1这个数放到下标为0的位置,2放到下标为1的位置,按照这个思路将数组整理一遍,然后再遍历一遍数组,第一个遇到的它的值不等于下标+1的那个数就是我们要寻找的数字。首先要实现迭代器,通过查看stl源码可以知道,HashTable的迭代器中不但有节点的指针,还有,哈希表的指针,这是为了方便++时,跳转到下一个哈希桶。=这几个运算符重载,这里扩容也是有一定的学问的,我们不能直接粗暴的将哈希表扩容到原来的2倍,为了降低冲突的概率,我们每次扩容时都会扩容到原哈希表的二倍左右的素数。

2022-11-13 17:33:31 785

原创 【Linux】文件系统及动静态库

以上就是今天要讲的内容,本文仅仅是简单介绍了Linux文件系统及动静态库的制作和使用。

2022-11-06 22:32:56 366

原创 【C++】set和map

map与set也十分的相似,map是K/V的模型,set是K的模型map也有两种区别与set和multiset相同,只是键值是否允许冗余的差别不过map的插入就比较特别了我们发现insert的参数是一个value_type类型然后我们发现它实际上是一个pair{T1 first;T2 second;{}{}};用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。

2022-11-06 17:45:23 7164

原创 【C++】红黑树简单实现

以上就是今天要讲的内容,本文仅仅简单介绍了红黑树的基本结构和插入操作。

2022-11-03 17:27:01 132

原创 【C++】AVL树的简单实现

AVL树是为了弥补搜索树插入时,效率问题而提出来的一种树形结构二叉搜索树在搜索时的效率比较高是O(logH),也就是说搜索树的搜索效率依赖于树的高度,当搜索树插入数据是有序或者接近有序时,树的高度是N(有N个数据),搜索效率就会退化到O(N),因此要提高搜索树的效率,就是要尽量使树的高度低,AVL树就是一颗高度平衡的二叉搜索树。

2022-11-03 11:48:50 429

原创 【C++】二叉搜索树

二叉搜索树的简单应用及实现。

2022-10-24 10:06:39 1918

原创 【C++】浅谈多态

C++多态相关知识详解

2022-10-23 16:12:00 1093

原创 【Linux】缓冲区及重定向相关概念

linux缓冲区及minishell的模拟实现

2022-10-18 21:43:34 646

原创 【C++】继承

继承简谈

2022-10-16 21:01:09 606

原创 【Linux】基础IO

基础IO

2022-10-13 22:34:26 601

原创 【Linux】shell的简单模拟实现

shell模拟实现

2022-10-09 21:01:54 1688 1

原创 【C++】模板进阶

函数模板的简单介绍

2022-10-02 16:01:29 554

原创 【C++】反向迭代器

反向迭代器的简单模拟实现

2022-10-02 14:38:41 1104

原创 【C++】stack && queue && priority_queue的模拟实现

容器适配器的模拟实现,及仿函数的相关内容

2022-09-25 22:29:19 347

原创 【C++】list的模拟实现

list的简单模拟实现

2022-09-25 14:29:05 644

原创 【刷题日记】11.反转链表

反转链表

2022-09-23 15:30:06 167

原创 【刷题日记】10.长度最小子数组

leetcode209长度最小的子数组

2022-09-22 19:52:35 403

原创 【Linux】进程控制——终

进程替换,及简单的shell实现

2022-09-22 17:22:19 296

原创 【刷题日记】9.移除元素

leetcode 27移除元素

2022-09-21 16:43:05 832

原创 【刷题日记】8.二分查找

二分查找基本介绍

2022-09-21 16:05:42 216

原创 【Linux】浅谈进程等待

waitpid简单使用

2022-09-20 16:29:26 388

原创 【C++】vector的模拟实现

vector是STL中特别常用的容器,它能够给我们提供类似于C语言的数组的用法,[ ]是它最常用的遍历方式它具有多个构造函数在后面我们会一一实现vector是一个模板类,类中的元素可以是任意数据类型,最常用的就是二维数组vector 最外层的vector的每个元素都是vector类型,内部的vector的每个元素的数据类型是int,这种结构使用起来就特别像C语言的二维数组vector的其它成员函数,与string中的类似,就不一一赘述了。

2022-09-18 16:25:16 639

原创 【linux】进程控制——1

进程控制相关内容

2022-09-16 09:54:28 672

原创 【linux】——程序地址空间_终

进程地址空间相关内容

2022-09-15 20:52:48 281

原创 【Linux】——初识程序地址空间

所谓进程地址空间(process address space),就是从进程的视角看到的地址空间,是进程运行时所用到的虚拟地址的集合。我们看这个定义有一些懵,也不知道具体的概念。我们还是看一个例子:有一个美国的富豪,他具有10亿美元的家产,同时他有三个私生子a,b,c三个私生子并不知道彼此的存在。

2022-09-10 17:29:19 632

原创 【Linux】——初识进程

Z状态就是僵尸进程,我们看到僵尸进程的旁边有失效的说明。僵尸进程是进程退出,但是父进程没有读取到子进程退出的返回代码,就会产生。子进程的代码和数据退出了,但是PCB没有被释放,因为维护僵尸进程也是一种状态,也需要被维护。占用内存资源,会产生内存泄漏。进程退出的状态必须被维持,如果父进程一直不读取子进程的退出状态,子进程一直处于Z状态。维护退出状态本身也属于进程的基本信息,保存在task_struct中,Z状态一直不退出,PCB一直都要维护。...

2022-08-28 15:05:46 564 2

空空如也

空空如也

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

TA关注的人

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