自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 生产者和消费者模型

一:条件变量: 我们知道多线程访问时会出现冲突的问题,为了解决这个问题我们引入互斥锁的概念,即多个线程同时访问理解资源时,获得锁多线程可以完成”读-修改-写”操作,然后释放锁给其他线程.没有获得锁的线程只能挂起等待. 与互斥锁不同,条件变量时挂起等待而不是上锁,条件变量用来自动阻塞一个线程,直到某特殊情况的发生,通常条件变量和互斥锁同时使用. 原理:条件变量是利用线程间共享的全局变量进行同步的

2017-06-24 17:01:53 453

原创 哈夫曼树

huffman树,又称最优二叉树,是加权路径长度最短的二叉树 [贪心算法]是指在问题求解时,总是做出当前看起来最好的选择,通俗的说贪心算法不是整体最优的选择,而是局部最优解 使用贪心算法构建Huffman树 构建哈夫曼树主要包括两部分: 1:建小堆 2:将加权路径长度最短,构建最短二叉树 一:建小堆:#pragma once#include<vector>#include<ass

2017-06-14 17:33:52 574

原创 进程间通信--管道

我们知道进程都有各自不同的地址空间,任何有一个进程的全局变量在在另外一个进程都看不到的,所以进程之间交换数据时在内核进行,通俗的说A进程把数据拷贝到内核,B进程从内核中把数据读走,我们把内核提供的这种机制叫做进程间通信,(IPC). 管道: 管道:(pipe) 管道是一种基本的ipc机制,由pipe函数创建;#include<unistd.h>int pipe(int filedes[2

2017-06-11 14:08:14 360

原创 线程死锁

一:mutex(互斥量) 多个线程同时访问共享数据时可能会冲突,比如两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成: 1:从内存读取变量值到寄存器 2:寄存器的值加1 3:将寄存器的值写回内存 如:我们创建两个线程,各自把全局count增加5000,我们希望最后的count应该是10000次,可是每次运行的结果都不一样.如:#include<stdio.h>#inc

2017-06-06 17:51:15 451

原创 剑指offer--替换空格

题目:实现一个函数,把字符串中的每个空格替换成”%20”,例如输入”we are happy”则输出”we20%are20% happy”; 常规的思路: 我们遍历这个字符串,没遇到一个空格的时候我们把1个空格替换成3个空格,也就是空格后面的字符向后移两个字节,否则就会把后面的字符覆盖了; 如:我们从头打到尾把”we are happy”中的一个空格替换成两个空格 方案一:遇到空格向后挪两位

2017-06-06 16:55:16 633

原创 linux线程

一:线程的概念: 我们回到进程在过日子独立的地址空间运行,进程间公用护具需要用mmap或者进程间通信机制,我们也知道线程其实就是进程的一个执行分支,同一个进程的多个线程它们公用着进程的地址空间。因此数据段,和全局变量都是共享的。出IC之外各线程还共享一下进程资源和环境: 1:文件描叙符表file_struct; 2:每种信号的处理方式(SIG_IGN,SIG_DFL或者自定义的信号处理函数)

2017-06-05 14:51:21 614 2

原创 空间配置器

一:为什么需要空间适配器? 我们知道地址空间的结构如下: 假设系统分配16byte,8byte,16byte,4byte,我们仅仅只是使用了16个字节的空间,当我们下次载要开一个32个字节的大小的空间,虽然内存够却开不了空间,因为空间不连续,只好在内存从新分配一个更大的空间, 1:出现小内存块的问题, 2:频繁的分配小块内存,效率比较低 二:我们看下STL中关于空间配置器: 一级

2017-06-04 15:38:22 501

空空如也

空空如也

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

TA关注的人

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