【项目】文件的压缩与解压

项目平台 Windows     VS2013    Beyond Compare4 项目技术 Huffman树 优先级队列 项目描述 统计文件中每个字符出现的次数,根据优先级对列,构建Huffman树,出现次数多的编码短,出现次数少的编码常 根据构建好的H...

2018-08-19 11:42:08

阅读数 337

评论数 0

【C++学习笔记】容器迭代器

1、迭代器(Iterator)的介绍 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。 定义:迭代器是一种检查容器内元素并遍历元素的数据类型。 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象...

2018-08-17 11:10:18

阅读数 85

评论数 0

【C++学习笔记】C++中的异常安全性

一个函数如果说是“异常安全”的,必须同时满足以下两个条件: 1.不泄漏任何资源; 2.不允许破坏数据。 我们先通过两个反面的例子开始。 1、第一个是造成资源泄漏的例子。 一个类Type,内含一个互斥锁成员 Mutex mutex,以及一个成员函数void Func()。假设Func函...

2018-08-07 18:35:49

阅读数 70

评论数 0

【C++学习笔记】类

一、类的概念 在C语言中,“数据”和“函数”是分开的,为了支持“数据和函数”的关联性,C++里引入类,让所有的数据有一组“分布在各个以功能为导向的函数中”,它们处理的是共同的外部数据。类的关键字是class。 class className { //类体:由函数和变量组成 }; c...

2018-07-15 10:55:03

阅读数 71

评论数 0

【C++学习笔记】C++和C的混合编译

在C++中将一个函数按照C风格来编译 #ifdef __cplusplus extern "C"{ //n个函数描述 int Add(int a, int b) { return a + b; } ...

2018-07-15 00:29:44

阅读数 74

评论数 0

【C++学习笔记】函数重载

1、什么是函数重载 C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。 int Add(int a, int b) { return a + b; } double Add(do...

2018-07-15 00:07:31

阅读数 55

评论数 0

【C++学习笔记】计算函数运行时间的七种方法

目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录. 方法1,利用time()函数...

2018-06-12 10:35:35

阅读数 123

评论数 0

【C++学习笔记】获取函数运行时间的两种方法

1.GetTickCount() GetTickCount是windows下的API函数,检索自系统启动以来经过的毫秒数,最多为49.7天。 //头文件 #include <windows.h> //函数原型 DWORD WINAPI GetTick...

2018-06-12 10:22:06

阅读数 129

评论数 0

【Linux学习笔记】动态库、静态库的生成

什么是动态库、静态库? 静态库(.a): 程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。 动态库(.so): 程序在运行的时候才去链接动态库的代码,多个程序共享使用的代码。 动态链接和静态链接的区别 静态链接(Static Linking): ...

2018-06-11 20:46:53

阅读数 61

评论数 0

【Linux学习笔记】标准IO缓冲:行缓冲、全缓冲、无缓冲

首先介绍一下UNIX里面关于标准IO的几种缓冲机制 全缓冲 :全缓冲指的是系统在填满标准IO缓冲区之后才进行实际的IO操作;注意,对于驻留在磁盘上的文件来说通常是由标准IO库实施全缓冲。 行缓冲 :在这种情况下,标准IO在输入和输出中遇到换行符时执行IO操作;注意,当流涉及终端的时候,通常使用...

2018-06-11 01:00:55

阅读数 868

评论数 1

【Linux学习笔记】文件描述符

文件描述符 文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。 0&1&2 Linux进程默认情况下会有...

2018-06-11 00:28:13

阅读数 76

评论数 0

【Linux学习笔记】文件相关系统调用接口

我们在C语言中学习了很多文件相关的接口,如fopen,fclose,fwrite,fread等等。并且,C会默认打开三个输入输出流u,分别是stdin,stdout,stderr。这三个流的类型都是*FILE,文件指针。接下来我们看一下文件相关的系统调用接口,看看它和C语言的文件接口有什么关系。 ...

2018-06-10 23:51:27

阅读数 97

评论数 0

【Linux学习笔记】僵尸进程、孤儿进程

僵尸进程 僵尸状态(Zombies)是一个比较特殊的状态。当进程退出并且父进程没有读到子进程 退出的返回代码时就会产生僵尸进程。 僵尸进程会 以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。 所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。 ...

2018-06-10 16:33:17

阅读数 61

评论数 0

【Linux学习笔记】进程间的调度算法

一、先来先服务和短作业(进程)优先调度算法 1.先来先服务调度算法(FCFS) 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配...

2018-06-10 00:36:40

阅读数 96

评论数 0

【Linux学习笔记】linux进程描述符task_struct详解

struct task_struct { //这个是进程的运行时状态,-1代表不可运行,0代表可运行,>0代表已停止。 volatile long state; /* flags是进程当前的状态标志,具体的如: 0x000000...

2018-06-10 00:10:06

阅读数 111

评论数 0

【C++学习笔记】引用及引用的本质

代码运行环境:Win10 32bits Vs2013 引用的概念及用法 1.引用的概念 引用不是新定义一个变量,而是给已存变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间, 类型&引用变量名(对象名)= 引用实体...

2018-06-09 23:50:47

阅读数 127

评论数 0

常见的排序算法—— 非比较排序

计数排序 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用 操作步骤: 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 代码如下: 基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(buc...

2018-06-07 16:29:49

阅读数 190

评论数 0

【Linux学习笔记】阻塞和非阻塞、同步和异步的区别

同步和异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication) 同步 同步就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。 换句话说,就是由调用者主动等...

2018-06-07 15:23:57

阅读数 80

评论数 0

常见的排序算法——归并排序

基本思想 将待排序的元素序列分成两个长度相等的子序列,对每一个子序列排序,然后将他们合并成一个序列。合并两个子序列的过程称为二路归并。 归并排序核心步骤: 分组 归并 代码如下 递归 void _MergeData(int array[], int left, int ...

2018-05-29 16:50:54

阅读数 118

评论数 0

常见的排序算法——交换排序

交换排序 利用交换元素的位置进行排序的方法称作交换排序。 常见的交换排序的方法:冒泡排序和快速排序。 冒泡排序 基本思想 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素就是是最大的数。 针对所...

2018-05-29 16:38:40

阅读数 526

评论数 0

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