摘要: 时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某 阅读全文
posted @ 2012-12-09 22:47 梓涵VV 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 1.简单的define定义#define MAXTIME 10002.define的“函数定义”define可以像函数那样接受一些参数,如下#define max(x,y) (x)>(y)?(x):(y);因为这个“函数”没有类型检查,就好像一个函数模板似的,没有模板那么安全就是了。但是这样做的话存在隐患,例子如下:#define Add(a,b) a+b;如果遇到如:c * Add(a,b) * d的时候就会出现问题。另外举一个例子:#define pin (int*);pin a,b;本意是a和b都是int型指针,但是实际上变成int* a,b;a是int型指针,而b是int型变量。 阅读全文
posted @ 2012-12-09 22:46 梓涵VV 阅读(1038) 评论(0) 推荐(0) 编辑
摘要: 1引用与指针的区别:1)引用必须初始化,指针不必;2)引用初始化后不能被改变,指针可以改变所指的对象3)不存在指向空值的引用,但存在指向空值的指针NULL.指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作2实时系统的基本特性:在特定时间内完成特定的任务,实时性与可靠性。3平衡二叉树:左右子树都是平衡二叉树,且左右子树的深度差值绝对值不大于1。4堆栈溢出原因:1.没有回收垃圾资源 2.层次太深的递归调用5什么函数不能声明为虚函数:constructor构造函数,因为它是在对象产生之前被调用 阅读全文
posted @ 2012-12-09 22:39 梓涵VV 阅读(1140) 评论(0) 推荐(0) 编辑
摘要: 总体上必须清楚的:1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。3)计算机的数据在电脑中保存是以 二进制的形式. 数据存放的位置就是 他的地址. 4)bit是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语 阅读全文
posted @ 2012-12-09 22:37 梓涵VV 阅读(1902) 评论(0) 推荐(0) 编辑
摘要: Bootloader启动大多数都分为两个阶段。第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现;第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。U-Boot的启动代码分布在start.S、low_level_init.S、 board.c和main.c文件中。start.S 是U-Boot整个程序的入口,该文件使用汇编语言编写,不同体系结构的启动代码是不同的;low_level_init.S 是特定开发板的设置代码;board.c 包含开发板底层设备驱动;main.c 是一个与平台无关的代码,U- Boot应用程序的入口在此文件中 阅读全文
posted @ 2012-12-09 22:34 梓涵VV 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 一、ARM 微处理器的指令的分类与格式 ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。下面是ARM微处理器的基本指令。助记符 指令功能描述ADC 带进位加法指令ADD 加法指令AND 逻辑与指令B 跳转指令BIC 位清零指令BL 带返回的跳转指令BLX 带返回和状态切换的跳转指令BX 带状态切换的跳转指令CDP 协处理器数据... 阅读全文
posted @ 2012-12-09 22:32 梓涵VV 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 1 thumb指令集概述为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。Thumb指令集是ARM指令集的一个子集,是针对代码密度问题而提出的,它具有16位的代码宽度。与等价的32位代码相比较,Thumb指令集在保留32位代码优势的同时,大大的节省了系统的存储空间。Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令集而不支持ARM指令集。当处理器在执行ARM程序段时,称ARM处理器处于ARM工作状态,当处理器在执行Thumb程序段时,称ARM处理器处于Thumb工作状态(CPSR的T=0:arm 阅读全文
posted @ 2012-12-09 22:31 梓涵VV 阅读(3051) 评论(0) 推荐(0) 编辑
摘要: 一、C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。1 数据类型关键字(12个):(1) char :声明字符型变量或函数(2) double :声明双精度变量或函数(3) enum :声明枚举类型(4) float:声明浮点型变量或函数(5) int: 声明整型变量或函数(6) long :声明长整型变量或函数(7) short :声明短整型变量或函数(8) signed:声明有符号类型变量或函数(9) struct:声明结构体变量或函数(10) union:声明共用体(联合)数据类型(11) unsigned:声明无符号类 阅读全文
posted @ 2012-12-09 22:11 梓涵VV 阅读(240) 评论(0) 推荐(0) 编辑
摘要: u-boot源码结构 在顶层目录下有18个子目录,分别存放和管理不同的源程序。这些目录中所要存放的文件有其规则,可以分为3类。 第1类目录与处理器体系结构或者开发板硬件直接相关; 第2类目录是一些通用的函数或者驱动程序; 第3类目录是u-boot的应用程序、工具或者文档。u-boot的源码顶层目录说明目 录 特 性 解 释 说 明board 平台依赖 存放开发板相关的目录文件,每一套板子对应一个目录。如RPXlite(mpc8xx)、 fsc100(arm_cortexa8)、sc520_cdp(x86) 等目录,子目录仅存放与开发板相关的c文件和配置文件, 不包含开发板CPU架构通用的实现文 阅读全文
posted @ 2012-12-09 22:09 梓涵VV 阅读(250) 评论(0) 推荐(0) 编辑
摘要: BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 BootLoader 几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。BootLoader的操作模式一般分为自启动模式和交互模式。自启动模式:BootLoaderd从目标机上 阅读全文
posted @ 2012-12-09 22:08 梓涵VV 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 1、创建一个带头结点的单链表(头指针为head),输出链表中各结点的值;2、查找单链表中的第i个结点,并输出结点元素的值;3、在单链表中的第i个结点前插入一个结点值为e的正整数(从外部输入)4、删除单链表中的第j个结点;5、将单链表中的各结点就地逆序(不重建另外的一个链表);6、输出链表中所有元素7、将单链表中的负数移动到链表尾0、退出程序代码如下: 1 /* 2 *快速学习单链表的及其操作 3 *AUTHOR:CplusHua 4 *DATE:2012-10-28 DATE :2012-12-09 5 * 加入将链表中的元素移动到链表尾的功能 6 *Vertion:0.1.1 7 */ 8 阅读全文
posted @ 2012-12-09 16:46 梓涵VV 阅读(1715) 评论(0) 推荐(0) 编辑
摘要: 1.当文件有hole时,cp命令会同时拷贝这些hole为'\0'。这里是一个实现了拷贝时跳过文件hole的程序。ps:我用的buffer是一个字节的,效率很低,但如果用大的buffer就会使得hole被移除,使得原先分开的字符被连上。我没想好如何解决这个问题。如果您知道,请您告诉小弟我,非常感谢!View Code#include <apue.h>#include <my_error.h>#include <fcntl.h>int main(){ char buf[1]; int fd,fd_to; int n; if( (fd=open(& 阅读全文
posted @ 2012-12-09 16:42 梓涵VV 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 1. 控件位置的确定控件的位置一般来说是相对其父的其左上角的坐标:QWidget *w = new QWidget(this);QPoint p = w->pos();int x = p.x();int y = p.y();若要得到其针对全局界面的坐标值,则需要转换一下,用mapToGlobal():QPoint p(0, 0);int x = mapToGlobal(p).x();int y = mapToGlobal(p).y();2. QWidget(1) 对widget的显示和隐藏QWidget *w = new QWidget(this);w->setHidden(tru 阅读全文
posted @ 2012-12-09 16:35 梓涵VV 阅读(1610) 评论(0) 推荐(0) 编辑