自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 内存泄漏及检测

一、What? 内存泄漏:由于程序员的疏忽或错误造成程序未能释放已不在使用的内存,导致减少可用内存,降低计算机性能,导致程序崩溃。 内存溢出:是指已有的数据超过了其获得到的内存所能存储的范围,比如用一个字节存放1000这个数字就属于内存溢出。int *p = new int;return 0;new之后没有delete,那么return后就会发生内存泄露。 虽然看上去这样并不造成什么严重后果

2016-07-14 17:39:54 514

原创 进程间通信-消息队列

一、What? 消息队列做为进程间通信的一种方式,提供了一种从一个进程向另一个进程发送一个数据块(接收一部分无意义)的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个消息都有一个最大长度的限制(MSGMAX),每个消息队列的总字节数有上限(MSGMNB)

2016-07-06 13:12:45 546

原创 fork()函数

fork() 函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。fork() 函数创建进程成功则多了一个PCB,有新的代码和数据,它们中大多数都来自父进程。也就是说,使用 fork() 函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控

2016-06-22 18:25:31 378

原创 vfork()函数

vfork() 函数用来创建一个新进程,它具有以下特点:(1)fork 创建的子进程拷贝父进程的数据段;vfork 创建的子进程共享父进程的数据段。 (2)fork 父子进程执行次序不确定;vfork 保证子进程先执行,子进程调用 exit 或 exec 后父进程被调度。运行结果(正确):把上面代码稍作修改,子进程执行体里的 exit 改成 return运行结果:程序未退出。why?如上所述,由

2016-06-22 17:44:08 936

原创 atexit()函数

进程终止的方式有8中,其中有exit系列的三个用来终止进程的函数 exit() 、_exit() 和 _Exit()这三个函数的本质区别在于是否立即将控制权交还给内核 (1)_exit() 和 _Exit() 函数都是强硬终止。在调用后立即进入内核,不管资源的释放,直接让OS干掉其PCB; (2)exit() 则会执行一些清理处理。进程退出,有可能一部分数据还在缓冲区,该函数调用就会在退出时让

2016-06-16 18:18:40 302

原创 常见进程调度算法

进程调度:实质是一种资源分配。决定将CPU分配给就绪队列中的某个进程。 发生进程调度原因: (1)正在执行的进程执行完毕; (2)执行中的进程因发生I/O请求或等事件而暂停执行 (3)时间片用完; (4)在进程通信或同步过程中执行了某项原语操作,如P操作(wait操作); (5)高优先级进入。作业调度:简单来说就是决定将外存后备队列的哪一作业调入内存。进程调度与作业调度的关系: 作业调

2016-06-15 22:43:08 872

原创 STL空间配置器

一、STL为什么需要空间配置器?(内存有关) 1、解决内存碎片(外碎片) 外碎片:小块内存频繁分配导致小块空间不连续,分配不出大块的空间。 内碎片:比如需要3个字节,向上对齐取整new了8个字节,那么这5个未使用的为内碎片。 解决外碎片会引入内碎片 比如list、map、set、hashtable等push(new)或pop(delete)操作都有小空间。 2、提高效率:

2016-06-06 13:52:40 403

原创 Linux的task_struct

进程:程序的执行过程;即把二进制文件(程序)从磁盘加载到内存之后的操作; 同时操作系统给这个文件创建了一个描述它的结构体,称为PCB。 每个进程都有一个PCB。 Linux下的PCB结构:task_structstruct task_struct { volatile long state; //进程状态(可执行、可中断等) #1 unsigned long flags;

2016-05-31 20:51:52 426

原创 Linux下的进度条小程序

一个简单的进度条需要两个属性:最大/最小范围和步长。 例如,创建一个范围为0到100的载入进度条,把进度条初始为0,当载入一个资源的时候用单位长度来让进度条前进一个步长。 (1)当进度条前进时,它都会重画自身(也就是每次从最左端开始显示比上一次多一个步长,就有了动态效果),那么就需要执行一次回车,让光标回到最左端;printf("[%-101s]\r",bar);(2)为了更清楚的显示进度,加上

2016-05-31 19:56:57 478

原创 Linux中find命令用法

Linux下的find命令,顾名思义,它是在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的命令参数,也就是以何种条件进行查找。命令格式:find [路径] [命令参数] [表达式] 默认路径是当前路径,默认表达式是 -print; -print:将查找到的文件输出到标准输出; 例如:在终端执行命令 find 或者 find. 或者find. -pri

2016-05-20 13:04:23 441

原创 二叉搜索树

二叉搜索树又称二叉查找树,它是一颗空树或者是具有以下特征的树: 1、若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; 2、若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值; 3、它的左、右子树也分别为二叉搜索树。二叉搜索树有查找,插入,删除等操作;有递归和非递归两种实现方法。查找一个节点:树为空则返回空;若要查找的节点等于根节点,返回根节点

2016-05-04 20:56:59 286

原创 快速排序递归与非递归

快速排序思想:以升序为例;在要排序的序列中选一个基准,使它左边的数都比它小,右边的数都比它大。具体步骤:1、区间选一个key,可以选区间右边界的那个数;2、让begin从区间左边界开始往后找大于key的数,找到后停下来,再让end从区间右边界-1开始往前找小于key的数,找到后让它和begin找的大的数交换;3、begin继续找大的,end继续找小的,如果begin和end相遇了,那么比较相遇点的数

2016-04-09 13:12:41 391

原创 levelDB简单认识

LevelDB是一个google实现的非常高效的kv数据库。它是一个c/c++编程语言的库,不包含网络服务封装,无法像一般的存储服务器(如MySQL)那样用客户端来连接它,使用者应该自己封装自己的网络服务器。

2016-04-06 21:36:09 493

原创 选择排序

选择排序和堆排序

2016-04-06 21:28:43 335

原创 插入排序

直接插入排序和希尔排序

2016-04-05 21:47:45 319

原创 大数运算

大数基本运算

2016-04-05 13:27:07 325

原创 注释转换

将c语言的注释转换成c++的注释

2016-04-03 11:40:54 272

原创 levelDB编译

levelDB编译

2016-04-03 11:32:50 1120

原创 两个队列实现一个栈,要求实现Push以及Pop等方法

用两个队列实现一个栈,要求实现Push以及Pop等方法。

2016-03-12 20:21:12 1468

原创 两个栈实现一个队列

用两个栈实现一个队列,要求实现Push以及Pop等方法。

2016-03-12 20:16:08 407

原创 实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)

实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)

2016-03-11 11:57:39 6922 2

原创 一个数组实现两个栈

用一个数组实现两个栈

2016-03-09 21:23:20 543

原创 单链表基本操作

单链表的基本操作及相关题目

2015-11-29 21:43:20 460

原创 c++日期类

日期类Date

2015-11-29 21:15:22 421

原创 找出数组中只出现一次的两个数字

# include <stdio.h>int findFirstOne(int num){ int flag = 1; int count = 0; while (flag) { if (num & flag == 1) break; flag << 1; count++; }

2015-11-05 20:04:30 347

原创 进制转换

# include <stdio.h># include <assert.h># include <string.h>void swap(char *p1,char *p2){ char tmp = *p1; *p1 = *p2; *p2 = tmp;}void reverse(char *start,char *end){ assert(start !=

2015-11-05 19:48:23 258

原创 猜拳游戏

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<windows.h>//宏定义#define NAME_SIZE 20#define PASSWD_SIZE 20#define NAME "zhangsan"#define PASSWD "123456"#define TRU

2015-11-05 19:37:31 362

原创 旋转字符串

# include <stdio.h># include <string.h># include <assert.h>/*char *left_rorate(char *str,int n){ int i = 0; int j = 0; char tmp = str[0]; int len = strlen(str); assert(str); f

2015-11-05 18:52:41 396

原创 实现strstr函数

# include <stdio.h># include <assert.h># include <string.h>char *my_strstr(const char *str,const char *sub_str){ const char *p = str; const char *q = sub_str; assert(str); assert(sub

2015-08-28 12:02:20 407

原创 宏与函数的不同

宏与函数的不同点

2015-08-28 11:58:13 537

原创 实现函数itob

# include <stdio.h># include <assert.h># include <string.h>void swap(char *p1,char *p2){ char tmp = *p1; *p1 = *p2; *p2 = tmp;}void reverse(char *start,char *end){ assert(start !=

2015-08-27 22:16:05 538

原创 从键盘接收字符并输出对应大写或小写

# include <stdio.h># include <string.h>int main(){ char c = 0; while ( (c = getchar()) != EOF) { if (c >= 'a' && c <= 'z') { printf ("%c ",c-32);

2015-08-27 22:08:15 822

原创 打印杨辉三角

杨辉三角

2015-08-27 22:01:01 303

原创 文章标题

将一个字符串反向排列,不使用库函数中对字符串的的操作

2015-08-26 22:17:56 302

原创 c语言棋盘游戏

C语言棋盘游戏

2015-08-26 22:07:45 683

BigData源代码

c++实现大数的基本运算

2016-04-04

BigData代码

BigData代码

2016-04-04

空空如也

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

TA关注的人

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