自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [linux]-------线程池

上一篇博客我们实现了读者写者模型,在这篇博客中更进一步的完成线程池。线程池概念开辟一块内存空间,里面存在大量的(未死亡的)线程,池中的线程调度由池管理器来处理,当有线程任务时,从池中选一个线程运行,当运行完毕后,该线程又返回池中,这样就避免了反复创建线程所带来的性能开销,节省了系统资源。如果对线程概念不清晰的话,不妨先看看我是一个线程这篇文章线程池的应用场景需要大量的线程来完成任务...

2019-10-30 20:23:13 144

原创 [Linux]--------读者写者模型

在之前的博客中我们说明了生产者消费者模型,在这篇博客中我们讨论类似的模型读者写者模型。概念读者写者模型是操作系统的一种同步与互斥机制,与生产者消费者模型相似,区别在于多个读者可以共享缓冲区,但是对于写者而言相互是竞争关系,一次只能有一个写者,写入缓冲区。读者写者模型具有的条件写者排他性:有多个写者的情况下,只有一个写者能够占用缓冲区。读者的并行机制:可以有多个读者同时使用缓冲区。如...

2019-10-30 14:16:56 359

原创 [Linux]——基于信号量的生产者消费者模型

生产者消费者模型在上一篇博客[Linux]------基于阻塞队列的生产者消费者模型中,我们实现了单生产者消费者模型,在本篇博客中,我们的生产者消费者模型会有两个改变不是用一般队列作为缓冲区,而是用环形队列作为缓冲区不使用pthread_mutex,而使用信号量来实现生产者消费者的同步。POSIX信号量使用的是POSIX信号量而不是之前的system_v,因为这两个信号量作用相同,都...

2019-10-29 22:00:30 310

原创 [Linux]------基于阻塞队列的生产者消费者模型

生产者消费者概念在实际的开发中,通常会碰到一个场景,有一个模块产生数据被称为生产者,另一个模块来接受数据被称为消费者(此处的模块是指广义的模块 函数,类,进程等),但是有生产者和消费者的场景还不能称为生产者消费者模型,还需要一个缓冲区在生产者和消费者之间作为中介,生产者把数据放到缓冲区中,消费者从缓冲区中取数据。这个关系类似生活中我们到超市买东西,供货商将商品送到超市,我们就是消费者,供货商...

2019-10-29 17:11:17 213

原创 C语言复习:const ,static ,sizeof,宏

这篇博客是对于我个人的知识的复习,当然如果有某位大佬能够指出这里面有哪些概念含糊不清或者难懂,麻烦指出来感激不尽。1.constconst:用const修饰的变量是“可读的”,即可以被访问,但是无法修改。const可以修饰指针,数据成员,成员函数,类对象修饰指针指针常量和常量指针顾名思义,类似int* const p;//指针常量,const修饰pconst int* q;...

2019-10-28 12:17:58 199

原创 C语言复习:面试题memmcpy和memmove的区别及原因,itoa和atoi的实现

常见的面试题1.请说一下memcpy和memmove的函数用途?memcpy和memove都是string.h的函数,声明为void* memcpy(void* dest,const void* str,int n);void* memove(void* dest,const void* str,int n);作用是把源内存复制n个字节到目标内存中,作用是相同的。2.请说出他们的区别...

2019-10-27 19:46:36 245

原创 C语言复习:指针

这篇博客是对于我个人的知识的复习,当然如果有某位大佬能够指出这里面有哪些概念含糊不清或者难懂,麻烦指出来感激不尽。1.指针指针恐怕C里最常见,最不起眼,但也比较难以掌握的知识。计算机内存中的每个位置都由一个地址标识,通常,在邻近的内存位置合成一组,这样就允许存储更大的值,指针就是它的值表示内存的变量。(这里我们不考虑虚拟内存等问题)通常无法通过值的位模式来判断它的类型。类型是通过...

2019-10-27 17:39:19 234

原创 C语言复习:大小端

这篇博客是对于我个人的知识的复习,当然如果有某位大佬能够指出这里面有哪些概念含糊不清或者难懂,麻烦指出来感激不尽。关于大端小端的概念小端:数据的高位字节存放在高地址内,数据的低位字节存放在低地址内。大端:数据的高位字节存放在低地址内,数据的低位字节存放在高地址内目前有两种方法判断机器的大小端int变量的地址强转为char*的指针,最后用指针取值得到的就是低地址的值#incl...

2019-10-27 16:26:14 146

原创 C语言复习:原反补码

这篇博客是对于我个人的知识的复习,当然如果有某位大佬能够指出这里面有哪些概念含糊不清或者难懂,麻烦指出来感激不尽。原反补码放出链接原返补码深入探究在大学的C语言课堂上,可能就接触到了原反补码的概念,大学老师说,正数的原反补码就它本身,负数的反码就是符号位不变,其他数值取反,补码则是反码+1.但是为什么,我从大一开始就有这个疑惑,为什么正数就不用变,负数则要这么复杂?直到我拜读了刀斧手...

2019-10-25 17:14:52 481

原创 海量数据判重——布隆过滤器(Bloom filter)

布隆过滤器布隆过滤器(Bloom filter)是一个高空间利用率数据结构,由Burton Bloom于1970年提出。被用于测试一个元素是否在集合中(由于集合无重复元素的性质,可用来判重)。布隆过滤器的优势布隆过滤器的思想类似位图,主要是由一个很长的二进制向量和若干个(k个)散列映射函数组成。因为每个元数据的存储信息值固定,而且总的二进制向量固定。所以在内存占用和查询时间上都远远超过一般的...

2019-10-06 16:15:40 574

原创 位图

位图今天介绍的数据结构叫做位图,在介绍之前,首先看一道“简单”的题目,给出40亿个数据,给出一个四位数字,判断该数字是否在这四十亿个数字中。这道题难点并不在思路,之前我们使用的链表红黑树等算法思想都能解决这个问题,但是有一点无法解决,40亿个数太太太太大了,换算成int类型大约16G大小的空间,计算机的内存可不一定够,聪明的读者可能想到了char类型来出错结构,从16G的需求降低到4G的...

2019-10-06 13:24:16 177

原创 leecode刷水题

大佬估计对水题没什么兴趣,所以就轮到我刷刷水题,提高一点自信心了:D1021.有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(prim...

2019-10-06 11:20:43 152

原创 哈希表

哈希表在之前实现的数据结构中,查找一个数据在顺序表中的时间复杂度为O(n),在平衡二叉树和树的高度有关,为O(logn)。但是理想状态下的数据的查询为O(1),有没有数据结构能够实现?从标题就知道今天要介绍的数据结构是哈希表,但是在介绍之前,先介绍哈希。哈希是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。通过映射的方式将数据存在表中,...

2019-10-04 21:46:13 306

原创 红黑树

之前博客实现了AVL树,但是AVL树的频繁的插入和删除,会引起频繁的rebalance,导致效率下降;红黑树不是高度平衡的,算是一种折中,插入最多两次旋转,删除最多三次旋转。所以红黑树在查找,插入删除的性能都是O(logn),且性能稳定,所以STL里面很多结构包括map底层实现都是使用的红黑树。红黑树也是一种二叉平衡树,它不使用平衡因子来维护树的形状,而是使用红黑节点来决定,使得最长节点的长度...

2019-10-03 16:07:19 199

原创 AVL树

之前的博客实现了二叉搜索树,但是二叉搜索树本身有一定的局限性,二叉搜索树在时间性能上是具有局限性的二叉搜索树的局限性同样的数据,可以对应不同的二叉搜索树,如下:二叉搜索树可能退化成链表,相应的,二叉搜索树的查找操作是和这棵树的高度相关的,而此时这颗树的高度就是这颗树的节点数n,同时二叉搜索树相应的算法全部退化成 O(n) 级别显然,说二叉搜索树的查找、插入、删除这三个操作都是O(lgn...

2019-10-02 17:58:53 196

空空如也

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

TA关注的人

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