自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

涛哥不知何许人也,亦不详其姓字。闲静少言,不慕荣利。好读书,求甚解。常著文章自娱,颇示己志。忘怀得失,有始有终...

  • 博客(68)
  • 资源 (19)
  • 收藏
  • 关注

原创 链队列的建立、判空、入队、出队、求长、访头、清空和销毁

#includeusing namespace std;typedef struct node{ int data; struct node *next;}Node;//头指针和尾指针typedef struct{ Node *front; Node *rear;}Queue;void initQueue(Queue &Q){

2012-10-31 11:04:30 22428 6

原创 判断表达式中括号是否匹配(栈的典型应用)(某公司校园招聘笔试试题)

#includeusing namespace std;typedef char Type;typedef struct node{ Type data; struct node *next;}Node, *Stack;void initiateStack(Stack &s){ s = new Node; s->next = NULL;}

2012-10-30 14:34:15 8946 1

原创 JM8.6编码器中的Configure函数究竟做了什么?(编程思想:抽象,间接)

从字面意思来看,configure就是配置的意思,顾名思义,Configure函数就是配置函数了。配置函数的作用是给程序配置(设定)一些初始的值,这些值在很大程度上相当于一个开关. 在用别人写的软件的时候,我们经常在软件的界面的某一个对话框里面输入一个参数,然后软件里的程序就会捕捉到这个对话框里面的参数,这样就把用户设定的参数传到了程序里面。细想一下,在JM8.6编码器中就

2012-10-30 12:44:33 9482 5

原创 在JM8.6解码端提取DCT系数和残差并模拟验证itrans函数的功能

如何在JM8.6的解码端提取DCT系数呢?自然而然会想到的问题是:DCT系数从哪里来,要到哪里去,所以,要提取DCT系数,可以看它是哪里产生的,也可以看它要到哪里去,然后在任意一条路上"截击"它,必然能找到DCT系数. 下面找DCT系数的思路是要看DCT系数到哪里去. 很显然,在解码端,DCT系数的下一个动作是进行反DCT变换,所以自然而言找到反DCT变换函数,找了一下,发现itans函数正是反D

2012-10-29 17:58:17 10380 5

原创 warning和error的区别

场景:  一程序员在办公大楼抽烟,一妇女刚好撞见.             妇女:“你知不知道这东西会危害你的健康?香烟盒上有警告(Warning)啊!”        程序员:“没事儿,我是一个程序员”。            妇女:“这又怎样?”        程序员:“我从来不关心Warning,我只关心Error”

2012-10-29 14:21:28 13952 3

原创 H.264中整数DCT变换,量化,反量化,反DCT究竟是如何实现的?(无代码,无真相)

H.264中采用的是整数DCT变换,在实现的时候,该变换和量化又杂糅在一起,那么这些错综复杂的关系究竟是怎样纠缠的呢?在参考H.264乐园论坛会员cs1860wd的帖子和H.264 and MPEG-4 VIDEO COMPRESSION(第一版)这本书后,基于帖子和书上的讲解,给出相应的实现代码,并验证代码的正确性. 还是以foreman视频第一帧第一个宏块第一个4*4块

2012-10-27 18:12:33 20971 17

原创 如何在JM8.6编码端提取QDCT?

毫无疑问,编码端的QDCT和解码端的QDCT完全相同,下面从编码端提取QDCT. 为简便起见,仅提取第一帧第一个宏块第一个4*4块的QDCT.JM8.6编码器最核心的编码函数是encode_one_macroblock,该函数找到了残差并进行了整数DCT变换及量化,然后Zigzag scan和Run-Level编码. 在write_one_macroblock函数中进行了熵编码和写码流, 故在

2012-10-27 13:37:37 10452 4

原创 《风雨张居正》 郦波

书评:        很不错,值得一读,读张居正,读一个改革家的人生历程,张居正不愧为千古名相. 书的唯一缺点是:感觉郦波老师多少有点美化张居正, 这个就不好了,历史人物之所以伟大,之所以值得大家学习,是因为他和普通人一样,都有弱点. 一个人没有弱点的人是不值得大家学习的. 有缺点才会有优点. 本人很喜欢张居正.

2012-10-27 10:47:24 8001

原创 深入剖析H.264帧间预测(P宏块)

工具:foreman_qcif.yuv, JM8.6, H.264visa. 下面仅讨论P宏块的亮度Y分量,为简便起见,只讨论整数像素.步骤1:用JM8.6编码foreman_qcif.yuv的3帧(IPP), 得到test.264,用H.264visa打开test.264. 在第二帧中,用H.264visa选中第4行的第9个宏块(宏块共有9行11列),在H.264visa中该宏块位置显

2012-10-26 14:52:01 13355 15

原创 深入剖析H.264帧内预测(I宏块)

工具: foreman_qcif.yuv, JM8.6, H.264visa. 下面仅讨论第一帧第一个宏块MB(16 * 16)的亮度Y分量. 步骤1:用JM8.6编码foreman_qcif.yuv的第一帧, 得到test.264,用H.264visa打开test.264, 然后用H.264visa打开foreman_qcif.yuv. 从H.264visa中的结果可以看出,第

2012-10-26 13:21:22 12498 17

原创 链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁

#includeusing namespace std;typedef struct node{ int data; struct node *next;}Node, *Stack;void initiateStack(Stack &s){ s = new Node; s->next = NULL;}bool isEmptyStack(S

2012-10-25 20:53:49 14619 3

原创 利用循环链表(单链)实现Josephus环(某公司校园招聘笔试试题)

#includeusing namespace std;typedef struct node{ int data; struct node *next;}Node;Node *createRing(int n){ Node *p = new Node[n]; //批量生成结点 int i; for(i = 0; i < n; i++) {

2012-10-25 19:03:38 8056 4

原创 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)

#includeusing namespace std;typedef struct node{ int data; struct node *next, *prior;}Node, *DList;//建立带头结点的双链表(最终成环状)DList createDList(){ int num; Node *head, *p1, *p2; he

2012-10-25 18:58:17 8240 4

原创 ifstream类用法入门 (可以避免在控制台上手动输入数据)

在目录下建立myData.txt, 在其中输入: 1 2 3 4 567执行下面程序:#include#includeusing namespace std;int main(){ ifstream cin("myData.txt"); int n; while(cin >> n) { cout << n << endl

2012-10-25 15:59:39 8163

原创 单链表的就地逆置 (单链表带头结点)(某公司校园招聘面试试题)

面试腾讯,被问此题,由于紧张,程序有误,甚为遗憾!下面给出正确的程序:#includeusing namespace std;typedef struct node{ int data; struct node *next;}Node, *List;List createList(){ Node *head, *p1, *p2; p1 = p2

2012-10-25 15:35:52 8918 3

原创 骇人听闻的二分查找(某公司校园招聘笔试试题)(据说只有10%的程序员可以写出没有bug的二分查找)

二分查找思路很简单,但要把程序写对,却很难,有兴趣的话,可以在网上查一下相关资料,下面给出两种常见的错误:(至于具体错误原因,可以分析程序的执行)错误程序1:#include <iostream>using namespace std;int binarySearch(int a[], int n, int key){ int low = 0;...

2012-10-24 21:16:06 9940 14

原创 顺序查找

#include using namespace std;int seqSearch(int a[], int n, int key){ int i = 0; while(i < n && a[i] != key) i++; //跳出循环的条件必然为i等于n或者a[i]等于key if(n == i) //也就是说i为n-1时,a[i]不等于key

2012-10-24 19:26:49 7809

原创 类模板stack小试牛刀

#include #includeusing namespace std;int main(){ stack s; int n = 100; int r = 8; // r进制 while(n)//范式 { s.push(n % r); n /= r; } while(!s.empty()) //stack没有遍历器 {

2012-10-24 18:56:31 7440

原创 类模板vector入门

#include #include#includeusing namespace std;int main(){ // vector是类模板, vector是类(类似于string) vector v; int i; for(i = 0; i < 10; i++) v.push_back(i); //可以用下标方式对v

2012-10-24 18:35:43 7686 2

原创 类string入门

#include #include#includeusing namespace std;int main(){ string s; //s是string类的对象 cout << s.length() << endl; // 0 s = "123456"; cout << s.length() << en

2012-10-24 18:14:22 7661 2

原创 A升杯子和B升的杯子如何倒出C升的水?(某公司校园招聘笔试试题,某另外公司校园招聘笔试试题)

从数学角度进行分析,可以给出一个规律:A升杯子和B升的杯子可以倒出的水为 k * gcd(A, B)升, 下面我将给出一个简要的数学说明:(只考虑整数) 假设A = 5, B = 7吧,我们可以把这两个杯子等价为A = 5, B = 2, 继续等价为A = 3, B = 2, 继续等价为A = 1,B= 2, 继续等价为A = 1, B = 1, 继续等价为A = 1, 也就是说,A

2012-10-24 14:14:40 9760

原创 整数数组中大于或等于平均数的元素个数(某公司校园招聘机试试题)

题目很简单,但要注意:不要把平均数求出来,因为浮点数可能导致不准确,程序如下:#includeusing namespace std;int getNumber(int a[], int n){ int sum = 0; //总和 int number = 0; //总个数 int i; for(i = 0; i < n; i++) sum += a

2012-10-24 13:39:41 8050

原创 回文串的判断(某公司校园招聘机试试题)

#includeusing namespace std;bool isSymmetric(char str[]){ int length = strlen(str); int i; for(i = 0; i < length/2; i++) if(str[i] != str[length - i - 1]) return false; return

2012-10-24 13:29:05 8194

原创 如何判断平面上两条线段(注意是线段)是否相交?(某公司校园招聘面试试题)

看到题目,很多人想,这个问题太简单了,直接求直线方程,然后求交点,看方程组是否有解,你晕不晕?我在网上搜索了一下,很多思路都是求直线方程,求交点或求距离,不一而足。回顾高中学的线性规划知识,下面将给出一个我认为相对较好的算法,如果算法或程序有什么bug, 欢迎指正,谢谢。       已知线段AB,线段CD. 先来判断直线AB与线段CD是否相交,如果不相交,那么线段AB和线段CD肯定不相交。如

2012-10-24 11:45:07 12536 1

原创 如何判断两个矩形是否有重叠部分?(某公司校园招聘笔试试题)

做游戏的公司,自然会关注游戏中物体是否碰撞的问题。我们知道:判断两个圆是否有重叠很简单,当且仅当 r1 + r2 #include#includeusing namespace std;typedef struct rectangle{ float centerX; float centerY; float width; float height;}

2012-10-23 23:25:10 14442 2

原创 如何判断点P是否在三角形ABC内?

本题最好不要用直线方程或线段夹角来判断,因为这涉及到分类与讨论,下面的算法是相对比较好的算法,代码如下:#include#includeusing namespace std;typedef struct point{ float x; float y;}Point;float side(Point A, Point B){ float xL

2012-10-23 22:47:25 9051

原创 JM8.6中看起来让人不寒而栗的 int ******究竟是怎么回事?

最近又在看H.264的编码器JM8.6, 遇到了很多类似于int ******这样的指针,看起来让人不寒而栗,其实也不过如此,下面用实例来剖析一下:(特此说明一下:为了让程序更简单,下面的程序省略了释放内存的部分)程序1:#includeusing namespace std;int main(){ int a = 0; int b = 1; int

2012-10-23 22:05:56 8917 5

原创 O(log n)和O(n)折射出思维的差异

早晨一女生背着一堆书进了阅览室,结果警报响了,大妈让女生看看是哪本书把警报弄响了,那女生把书倒出来,准备一本一本的测。大妈见状急了,把书分成两份,第一份过了一下,响了。又把这一份分成两份接着测,三回就找到了,大妈用鄙视的眼神看着女生,仿佛在说O(n)和O(log n)都分不清。

2012-10-23 08:25:43 10932 5

原创 JPEG编解码器的简要仿真(无代码,无真相)

图像、视频压缩的必要性: 设图像为720* 480,且为RGB图,每个色道位深为8,故该图像的大小为:720 * 480 * 3 B= 0.99 MB(很大,很吓人.),如果是视频,就更是吓人. 图像、视频压缩的可行性: 1. 视觉冗余(下采样,量化) 2. 空间时间冗余 (帧内帧间预测

2012-10-22 11:22:05 8608

原创 视频编解码原理及如何在VC6.0中运行JM8.6

视频编解码的思路很简单,具体算法有点复杂,下面用一个例子来类比说明视频编解码的原理: 假设你的工资是20000,你要把这个信息告诉父母,打电话就可以了,为了不说废话,你可以提前(比如春节在一起的时候)跟父母做一个约定,就是将你的实际公司除以10000, 也就是20000/10000,然后打电话的时候直说工资是2, 父母就得到了2,这时候,父母根据提前的约定,就知道你的实际工资是2

2012-10-22 10:40:14 11009 4

原创 视频资源下载网站汇集

H.264/AVC Reference Software (Joint Model)下载网站:http://iphome.hhi.de/suehring/tml/download/old_jm/

2012-10-22 10:01:17 29500 1

原创 一个小程序入门matlab

clearclctotal = 0;for i = 1 : 2 : 99 total = total + i;endtotal %输出totalsum = sum(1 : 2 : 99)结果为:total =        2500sum =        2500

2012-10-22 09:23:08 10920 3

原创 字符串递归求长(不用任何其他变量,不用goto,不用循环)

#includeusing namespace std;int getStrLen(char str[]){ return *str ? getStrLen(str + 1) + 1 : 0;}int main(){ char str[] = "abc"; cout << getStrLen(str) << endl; return 0;}

2012-10-21 23:09:41 8161 1

原创 计数排序(线性复杂度的排序,且不需要进行大小比较)

计数排序思想很美妙,不需要进行元素间大小的比较,时间复杂度是线性的,在实践中,经常采用计数排序,该排序稳定。计数排序要求元素大小限定在一定范围内,比如[0, k], 算法代码如下: #includeusing namespace std;// 0 <= a[i] <= k (其中i = 0, 1, 2,..., n-1)void countSort(int a[], int

2012-10-21 22:59:40 8983 3

原创 堆排序(某公司校园招聘面试题目)

堆排序是一种高级的选择排序,算法代码如下: #includeusing namespace std;void heapAdjust(int a[], int low, int high){ int pivotKey = a[low - 1]; int i; for(i = 2 * low; i <= high; i *= 2) { if(i < hi

2012-10-21 22:48:53 9842 9

原创 快速排序(某公司社招面试试题)

快速排序是对冒泡排序的改进,算法代码如下: #includeusing namespace std;int partition(int a[], int low, int high) //划分{ int pivotKey = a[low]; while(low < high) { while(low = pivotKey) high--; a

2012-10-21 22:37:12 8520 3

原创 模幂算法(某公司校园招聘网测题目)

712的n次方,结果后三位为696,满足这个条件的n的个数为多少?(0        这是一个典型的模幂算法问题,下面证明: (a * b) % n = [(a % n) * (b % n) ] % n   (把*换成+也成立)     设 a = k1*n + r1, b = k2*n + r2,     于是有:     (a * b) % n = ( k1*k2*n*n

2012-10-21 20:51:08 8689 2

原创 时间复杂度为O(n)来判断数组a[N](1 <= a[i] <= N)中是否有重复元素 (某公司校园招聘笔试题目)

判断数组中是否有重复元素,最直接的思路是用双层循环判断(O(n^2)); 也可以先排序,后比较,但基于比较的排序时间复杂度至少为O(n*logn). 所以,这些思路都不行。根据题目的限制条件,很容易想到用计数排序,时间复杂度为O(n),这当然满足题意,但是,把计数排序用在此处,无疑是大材小用了。在计数排序中,有一个关键的步骤是计数,本题就可以利用计数排序中的计数思想(有点类似于哈希),程序代码如下

2012-10-21 17:34:46 9570 8

原创 上楼时间到底是多少?

可以考考村里的小朋友:某人从1楼到4楼需要1分钟(匀速),问按相同速度,从1楼到8楼需要多少分钟。    ans : 7/3

2012-10-21 13:47:14 8688

原创 汉诺塔游戏(经典递归)

#includeusing namespace std;int times = 0;void move(char src, char dst){ times++; cout " << dst << endl;}void hanNuoTower(int n, char first, char mid, char last){ if(1 == n)

2012-10-21 13:38:33 8437 1

ipscanner.rar

获取网络的ip, host name和mac地址。我想免费让大家下载, 但csdn规定了必须设置积分, 没办法。

2017-12-01

linux protobuf安装文件

linux, google protobuf, 安装文件。 使用方法:http://blog.csdn.net/stpeace/article/details/53029812

2016-11-04

linux tree命令的源码

很多linux上没有tree命令, 该资源提供了tree命令的源码, 大家可以下载, 编译并安装, 具体请参考:http://blog.csdn.net/stpeace/article/details/49524273

2015-11-01

编译好的openssl库和头文件

编译好的openssl库, 欢迎使用, 具体使用方法, 请见http://blog.csdn.net/stpeace/article/details/41921287

2014-12-14

入门数据库sqlite3的最佳实践资料

入门数据库sqlite3的最佳实践资料, 里面是我打包好的程序, 附加一些数据库工具, 非常可以。 当然你也可以参考我的博文http://blog.csdn.net/stpeace/article/details/38503843

2014-08-12

Wireshark抓包工具

Wireshark抓包分析工具, 非常好用, 非常实用。

2014-06-08

优秀的截图软件

截图软件fast stone. 解压即可使用。 解压后, 可能会产生一些依赖性文件, 请不要轻易删除。

2014-05-25

获取网卡信息所需的头文件和库

获取网卡信息所需的头文件和库:IPEXPORT.H Iphlpapi.h IPHLPAPI.LIB IPRTRMIB.H IPTYPES.H

2013-10-19

哈希值计算软件

可以计算md5, sha1, sha256等哈希值的工具软件,我无法形容它的优秀。

2013-10-18

在Windows下学习Linux命令

在Windows下想学linux命令的同志,你终于找到了该资料。用法:解压,然后双击其中的cmd.exe, 然后就可以输入linux命令了,比如ls等(千万要注意,不要进行路径切换,否则linux命令就执行不了,总之,要确保相应文件在当前目录下)。

2013-08-08

计算机网络第5版谢希仁编配套光盘资料

计算机网络第5版谢希仁编配套光盘资料,这是计算机考研的指定教材对应的资料,你应该拥有它。

2013-07-19

OllyDBG反汇编工具

OllyDBG反汇编工具,非常强大。深化功底,需此工具。

2013-07-19

masm汇编器

微软的汇编器,其中有关键的masm.exe和link.exe,我试过,发现可用。

2013-07-19

word转pdf的插件

word转pdf的插件,直接安装即可,安装完后,“另存”word文档的时候,可以选择pdf(我用的word版本为2007)。

2013-07-18

音频处理软件Gold Wave

一款强大的音频处理软件,可以对音频进行各种处理。例如:如果你在准备某考试,需要听音频资料,但是,你嫌音频太慢,而且你的MP3播放器无法加速,那么你可以用该软件对音频本身进行加速,即改变音频本身,使之变快。另外,在处理的时候,可以实现批处理(我亲自实践过,发现可行)。

2013-07-17

H.264visa软件

一款非常强大的H.264视频码流的解析软件,可以看到解码后视频的像素值,运动矢量,宏块等非常多的信息(也可以打开原始的YUV视频,并看到像素值,但必须先用该软件打开某一H.264视频码流),比Elecard StreamEye软件(有bug)更为强大,我一直用H.264visa,目前没有发现有什么bug. 另外,该软件安装后1个月就会过期,没有关系,1个月后,你重新安装一次即可。

2013-07-13

Elecard StreamEye

Elecard StreamEye,一款分析H.264视频码流的工具,如果你在学习H.264,那么,你应该拥有它。

2013-07-13

YUVviewer :原始的YUV视频的播放器

原始的YUV视频的播放器(软件不是我写的),如果你做视频处理、视频压缩编码、视频通信、视频检索、视频取证,那么你很可能需要它。该软件的缺点是:你无法看到YUV视频的像素值。

2013-06-24

经典的C语言编译器:TC2.0

一款经典的C语言编译器:Borland Turbo C 2.0. 怀念Borland产品的人可以用一下,体验一下DOS下的编程。如果是C语言初学者,建议用MS的VC++6.0. 我试过,该TC2.0可以正常使用。

2013-06-23

空空如也

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

TA关注的人

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