51CTO博客开发
H.264rtp封装代码H.264rtp封装代码H.264rtp封装代码
周期约束:简易方法,推荐方法1、简易方法NET"clk_100MHZ"PERIOD=10nsHIGH5ns;周期约束作用到时钟信号驱动的所有元件,指定了信号clk_100MHZ的周期为10ns,周期内的第一个电平为高电平,且高电平持续5nsTIMEGRP”FFS“PERIOD=10nsHIGH5ns;约束到TIMEGRP定义的信号组上。2、复杂方法NET”clk_100MHZ"TNM_NET="s
第2章进程现代操作系统追求的一个主要目标就是计算机的整体工作效率和利用率,为了达到这个目标,就必须让程序尽可能多的并发执行(同时执行),最大化的共享计算机的的所有资源。在硬件设计上,通过多CPU和多核CPU增加了程序的执行单元,在软件设计上,操作系统通过进程和线程来提高程序的并发度。程序的并行执行提高了计算机的效率,但也带来了许多复杂的问题。2.1进程1、程序:指令的有序集合,由它规定计算机完成某
1)Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。2)Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。16bit宽的数0x1234在Little-endian模式(以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:内存地址小端模式存放内容大端模式存放内容0x40000x340x1
1、函数中某一个形参设置了默认值,则其后面的所有形参需设置默认值2、函数声明时可以设置默认值,函数定义时也可以设置默认值,但是不能同时设置默认值,或者在声明时设置,或者在定义时设置。3、假如调用函数在定义函数之前使用,且函数定义时设置了默认形参,且调用时也用了默认实参,则编译时会出错,因为编译时按文件的前后顺序进行的,调用函数时,只看到了声明函数,声明函数没有默认形参,而调用时,省略了实参,会出错
设计一个电路输入set,reset输出Y当set为1时,Y置高电平,当reset为1时,置低电平。其它情况Y保持不变电路图如下:
功耗:功率的损耗。指设备,器件等输入功率和输出功率的差额。功耗一般分为两种,来自开关的动态功耗(电容充放电),和来自漏电的静态功耗。1、使用MOS管门电路,尽量少使用TTL门电路。2、给电路设置休眠,待机状态,能够进入省电模式。3、将电路设计最简化。模块分布合理,减少布线。4、降低工作频率。SOC低功耗设计动态功耗管理的思想是有选择的将不被调用的模块挂起,从而降低功耗。静态功耗管理是检测的整个系统
KMP算法kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是根据给定的模式串W1,m,定义一个next函数。next函数包含了模式串本身局部匹配的信息。next数组的长度就是T串的长度,有如下定义:当j=0时,next[j]=-1;当j>0时,next
拓扑排序和关键路径是基于无环的有向图。主要用来表示工程进度中各个事件之间的关系。 拓扑排序和关键路径 使用邻接表存储数据,最小生成树和最短路径用 邻接矩阵 存储数据。1、拓扑排序AOV网:在一个表示工程的有向图中,用固定点表示活动,用弧表示活动之间的优先级关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Activity On V
最短路径一般是基于网图来说的(带有权值的连通图),不带权值可以考虑权值为1来计算。最短路径是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。求解最短路径的两种算法。迪杰斯特拉算法和弗洛伊德算法。1、迪杰斯特拉(Dijkstra)算法 用来求某个顶点到其余所有顶点的最短路径算法介绍求V0到其余各个顶点的最
生成树和最小生成树均是在无向连通图中进行的。生成树:含有连通图的全部节点n,且含有n-1条边。一个连通图可以有多个生成树。最小生成树:是基于带权的无向连通图,根据权值,按一定规则,代价最小的生成树为最小生成树。找最小生成树,经典的两种算法,普利姆算法和克鲁斯卡尔算法。1、普利姆(Prim)算法  
7.5 图的遍历图的遍历和树的遍历类似,从图中某一顶点出发访遍其余顶点,且使每一个顶点仅被访问一次,这一过程叫做图的遍历。分为深度优先遍历和广度优先遍历7.5.1深度优先遍历深度优先遍历(Depth_First_Search),也称深度优先搜索,简称为DFS。深度优先搜索其实是一个递归的过程,就像是一棵树的前序遍历,它从图中某个顶点V出发,访问此顶点,然后从V的未被访问的邻接点出发深度优
7.4 图的存储结构图是无法以数据元素在内存中的物理位置来表示元素之间的关系,下面提供5种图的不同的存储结构。7.4.1邻接矩阵(又叫数组表示法)考虑到图由定点和边或弧组成,和在一起比较困难,那就很自然的考虑分两个结构来分别存储。顶点不分大小、主次,所以用一个一维数组来存储是不错的选择。而边或弧由于是顶点与顶点之间的关系,一维搞不定,那就考虑用一个二维数组来存储。于是我们的邻接矩阵的方案
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。7.2 图的定义线性表:数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继,是一对一的关系。树:数据元素之间有明显的层次关系,每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关,这和一
1、基本概念所谓泛型编程:以独立于任何特定类型的方式编写代码。使用泛型程序时,我们需要提供具体程序实例所操作的类型或值。标准库的容器、迭代器和算法都是泛型编程的例子。每种容器(如:vector)都有单一的定义,但可以支持定义许多不同种类的vector,他们的区别在于所包含的元素类型。模板是泛型编程的基础。泛型编程与面向对象编程一样,都依赖于某种形式的多态性,面向对象编程依赖的多态性称为
1、简介标准库容器定义的操作非常少,标准库没有给容器添加大量的功能函数,而是选择提供一组算法,这些算法大都不依赖特定的容器类型,是“泛型”的,可作用在不同类型的容器和不同类型的元素上。标准容器定义了很少的操作:添加和删除元素,访问第一个和最后一个元素,获取容器的大小,并在某种情况下重设容器的大小,以及获取指向第一个元素和最后一个元素的下一位置的迭代器。用户还希望对容器元素进行更多的其他
对于类中存在指针变量,指针变量的内存是动态分配的。会存在主要两个问题。(1)在赋值,复制等方面,浅复制,只是讲指针的值相互复制,但指针指向的对像却是公用的,假如某一个对象析构后,会将公用的指针指向的对象删去,另一个对象会出现悬垂指针。解决办法:(1)深复制,每次重新创建一个对象,赋予相同的值。(2)引用计数,直到的对象为0时,才删除公共的对象。(2)动态创建一个类对象时,此类中含有动态
1、先介绍几个常用函数(1)、getline(istream is,string s)将输入流is中读取到的字符(一直遇到\n结束,或文件结尾或读取错误)放到字符串s中。就相当于读取一行的字符到s中。(2)、getline(istream is, string s, char c) 将输入流is中读取字符(
在程序的任意点需要统计已创建的特定类类型对象的数量,或者类的错误处理历程的一个指针(即类的所有对象出错后的处理方法),或者类中的对象需要访问一个共同的变量时(如银行中的账户类,每个账户都有用户名,余额,利率等信息,而利率对所用用户是相同的)。在上述情况下,可以定义一个全局变量,然而全局对象会破坏封装,不
第6章树6.1 树的定义线性结构:一对一。树形结构:一对多。图形结构:多对多。1、树(Tree)是n(n>=0)个节点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的节点;(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,......,Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree
对于索引查找,或者连续表查找,都要进行关键字和查找值的比较,有没有不用比较,通过关键字,按一定的计算,得到关键字对应的地址,那就是散列表查找。 存储位置=F(关键字); 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系F,使得每个关键字key对应一个存储位
8.5 二叉排序树有序线性表在查找时很方便,但是插入和删除操作,会消耗大量的时间,因为插入和删除后,为了保持线性有序,会移动大量的数据。可以用二叉排序树来解决这个问题。二叉排序树,又称为二叉查找树。它或者是一棵空树,或者具有下列性质的二叉树:(1)若它的左子树存在,则左子树上所有节点的值均小于它的根节点的值;(2)若它的右子树存在,则右子树上所有节点的值均大于它的根节点的值;(3)它的左
根据关键字在索引表中查找其对应的存储位置,然后从存储位置读取记录。每个索引项至少包含关键字和其对应的记录在存储器中的位置信息。8.4.1稠密索引 数据中的每个记录对应一个索引项。当数据量很大时,索引项也会很大,效率会降低。如果索引项按有序排列,则可用折半,插值,斐波那契等有序算法查找,如果索引项没有顺序排
我们如果仅仅是把书整理在书架上,要找到一本书还是比较困难的,也就是用8.2节的顺序查找表,但如果我们在整理书架时,将图书按书名的拼音排序放置,那么要找到一本书就相对容易了。简单的说,就是对图书做了有序排列,一个线性表有序时,对于查找总是很有帮助的。8.3.1折半查找折半查找:又叫二分查找(binary search)。它的前提是线性表中的记录必须是关键码有序(通常从小到大),线性表必须采
试想一下,要在散落的一大堆书中找你需要的一本书有多麻烦,如果把书摆列整齐,比如竖起来放到书架上,这样从左往右(或从右往左)依次查找你所需要的书,会变得很容易。 把散落的一堆书可理解为一个集合,将它们摆列整齐放在书架上,就相当于构建了一个顺序查找表,查找起来会容易一些。如果在摆列整齐的基础上,将书名字按字母
查找表:由同一类型的数据元素(或记录)构成的集合,也就是所有需要被查的数据所在的集合,我们给一个统称叫查找表。 关键字:数据元素中某个数据项的值,又称为键值,用它可以标识(不一定唯一)一个数据元素。也可以表示一个记录的某个数据项(字段),我们称它为关键吗。 主
归并排序就是利用归并的思想实现的排序方式。他的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度是1,然后两两合并,得到[n/2]([x]表示不小于x的最小整数)个长度为2或1的有序子序列;再两两归并,......,如此重复,直至得到一个长度为n的有序序列为止,这种排序方法称为2路归并排序。 #include <stdio.h> #include
简单选择排序中,没一趟比较的结果没有保存下来,在下一趟的比较过程中,有许多比较在前一趟已经做过了,因而比较的次数较多。如果可以在每次比较的同时,将比较结果保存下来,那样排序的总体效率就会非常高了,堆排序就是一种改进。堆是具有下列性质的完全二叉树:每个节点的值都大于或等于左右孩子节点的值,称为大顶堆;或者每个节点都小于或等于其左右孩子节点的值,称为小顶堆。堆排序思路:1、初始化堆。将待排序的关键字存
冒泡排序,是不断的在进行比较,若小,则交换,而简单选择排序,是在一个循环比较完成后,才交换一次,交换次数比冒泡排序要少#include <stdio.h> #include <stdlib.h> void swap(int arr[] ,int i, int j) { int temp; temp = arr[i]; arr[i] = arr[j]; arr[
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号