- 博客(38)
- 资源 (4)
- 收藏
- 关注
原创 C# COM组件注册
<br /><br /> <br />为了C# COM组件的注册,浪费了我一天半的时间。现把经验分享出来。<br /> <br />C# COM组建的注册过程:<br /> <br />用Regsvcs /c DllName.dll注册新的COM组件,发现已有该组件则报错。<br />用Regsvcs /fc DllName.dll注册新的COM组件,发现已有该组件则覆盖。<br />用Regsvcs /u DllName.dll卸载COM组件。<br />Regsvcs.exe在Microsoft.NET
2010-12-30 10:35:00 5495 2
原创 隐马尔可夫模型应用于人脸识别
<br /><br />对于HMM应用于人脸识别,以下是我的心得。<br />先给出一张5X5的图片,<br />[100,101,102,103,104] 额头,<br />[200,201,202,203,204] 眼睛<br />[300,301,302,303,304] 鼻子<br />[400,401,402,403,404] 嘴巴<br />[500,501,502,503,504] 下巴<br /> <br />假设,第一行描述了额头的信息,第二行描述了眼睛的信息,第三行描述了鼻子的
2010-12-20 15:32:00 1021 1
原创 程序内存膨胀问题
发现自己公司的程序执行一段时间以后,会内存膨胀。后来利用截取CallStack的方法发现,是1b0b31fd:orinal55中Sleep造成。用Windbg在1b0b31fd设个断点,发现这是MsJet40.dll一个Error处理函数。所以,确定问题应该是SQL语句出错导致。
2010-04-21 14:58:00 340
原创 驱动关机卡死的问题
1、自己编写了一个键盘过滤驱动,启动驱动以后,关闭操作系统, 操作系统无法关闭。用WINDBG可以发现“Waiting On:...SetPower-shutdown” 信息。 原因是: 驱动没有处理IRP_MJ_POWER命令。 正确如下: DriverObject->MajorFunction[IRP_MJ_POWER] = PowerProc; #pragma P
2010-02-27 12:03:00 1681 1
原创 断电导致的BUG
1、断电导致的BUG——程序无法启动,甚至连WINMAIN函数都没有执行。原因:DBGHEL.DLL被损坏。解决方案:(1)重启。 (2)拷贝正确的DBGHEL.DLL。 解决该类问题,可以参考以下转载文章。 设有一个Win32下的可执行文件MyApp.exe,这是一个Win32应用程序,符合标准的PE格式。MyApp.exe的主要
2010-01-26 11:12:00 270
原创 Release版下的问题
1、ASSERT引起的BUG。 如, Release版Search单路播放有问题。(是ASSERT断言导致。因为Release版会把ASSERT断言的表达式去掉,于是"ASSERT(WaitSingleObject(...))"表达式被删除,导致程序没有等待播放器结束又开始播放。)2、变量未初始化导致的BUG。 如,计算Stretch板卡视频帧时间时,有两个变量,
2009-12-30 15:52:00 203
原创 CRT检测内存泄漏技巧以及注意问题
用CRT检测内存泄漏的技巧:(1)使用以下宏来对某CPP文件的内存泄漏进行检测。VC2005:#ifdef _DEBUG#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif或VC6#ifdef _DEBUG#define new DEB
2009-11-24 15:46:00 446
原创 Manifest使用经验
关于VC2005的一个变态的问题。目前在多个地方被这个问题困扰:a、采用MFC Shared DLL方式编译出来的程序拷贝到测试部门会出现问题。所以只能采用静态DLL方式,但这导致 DLL变得太大。b、内存泄漏、溢出检测时,需要使用MSVCR80.dll的函数,但是采用LoadLibrary的方式也会出现这个问题。 这个问题是:程序报R60
2009-11-18 11:30:00 1698
原创 Call指令详解
一、FF/2,间接相对寻址(指令长度:2、3、6字节)(1)FF 55 F4推理:FF:OpcodeMod/RM:01010101=>01+010+101=> mod = 01,定义 [register + disp8],有8位displacemnet 偏移值。 reg = 010,表示FF/2 r/m = 101,ebp寄存器F
2009-09-06 12:57:00 2794
原创 HOOK HeapAlloc注意的问题:
1、怎么调试Hook到X进程的动态库D。(1)用WINDBG.exe调试X进程,此时动态库D还没有进驻X进程。(2)用Hook工具把动态库D Hook到进程X里。(3)注意要在D动态库需要中断的地方插入以下代码:__asm{int 3}(4) 当Hook成功后,D动态库运行到INT 3处时,WINDBG.exe会自动定位到动态库D中断的代码处。2、汇编注意的问题:(1)在__declspec(
2009-08-28 14:42:00 522
原创 解BUG的一些心得
目前,软件BUG一直是程序员的梦魇,但其实只要掌握一定的技巧和基本知识, 是可以轻松解决掉这些BUG的。 以下一些BUG是在程序开发中相对比较棘手的问题: 1、程序跑一段时间以后会越跑越慢。 2、程序无缘无故Crash。 3、程序内存越变越大,直至程序Crash。4、程序跑着突然死掉了。 一、定位线程。以上解决问题的关键是先定位到程序变慢的代码,对于第1、4点,可
2009-08-22 19:21:00 493
原创 计算代码运行时间
代码执行时间的计算在以下场合需要用到:1、代码出现运行瓶颈,需要找到瓶颈所在。2、程序运行一段时间以后变慢,需要找到变慢的代码。 出于以上目的,你或许可以使用代码时间测试工具(如Rational Quantify)。但,这些工具可能运行速度太慢,让你心烦。而且,Release给客户的程序,有时会出现以上问题,这时你不可能还用Rational Quantify来运行程序。
2009-08-19 20:04:00 1202
原创 多路h264回放方案
h264/SVC 编解码,让普通PC实现16路视频数据回放成为可能。普通PC是能支持16CIF视频数据回放的,所以如果这16路视频数据都是D1的话,则利用SVC编码原理从D1视频数据中提取CIF视频数据,再解码回放。
2009-06-16 22:23:00 419
原创 虚拟内存应用
虚拟内存的重要性体现在下面几个方面:1、虚拟内存可以映射到硬盘,以达到扩展内存的作用, 这样系统在物理内存已经用满的情况下,就不会因为没有内存可用, 而导致系统崩溃。2、虚拟内存是以进程空间为寻址空间的,一般情况,进程用户模式下的寻址空间 是2G,为了避免内存的碎片,可以把2G进程空间划分为若干个块,对于长度分配 一样的内存处于同一个块,这样就因为
2009-06-16 21:42:00 255
原创 H264视频数据多路播放大内存分配问题
问题描述:现在因为H264本身的原因,一路需要维护30帧的YUV数据(因为一个I帧循环30帧。) 为了避免当这30帧数据播放完后,程序会卡的问题,其实需要2个30帧的YUV数据(一个当缓冲), 也就是60帧YUV数据。那一路(D1)总共的最大内存为:720×576×1.5 × 60 = 36M,因为要求16 路同时播放,因此需要36 × 16 = 576M。可见分配如此大的
2009-06-16 16:54:00 557
原创 Rational Quanlity使用体验
1、源码级性能统计。(1)实现源码级性能统计,首先必须在Line模式下,才能使用Annotated Source,然后就可以使用右键->switch to->Annotated Source跳转到函数对应的Source code。 (2)在“(1)”的基础上,当然还需配置对应的PDB以及Source code。首先,必须在Selected Modules中选择对应的模块。例如,如果要调
2009-06-11 23:38:00 258
原创 串行化IO
驱动串行化IO的理解一、对于IoStartParket的理解:VOID NTAPI IoStartPacket(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PULONG Key, IN PDRIVER_CANCEL CancelFunction){ BOOLEAN Stat; KI
2009-06-02 17:58:00 971 1
原创 怎么正常结束多媒体定时器
怎么正常结束多媒体定时器。一、采用TIME_CALLBACK_EVENT_SET。#define PLAYERTICK_Hclass _DS_EXT_DVRBASE_CLASS CTickUser{ public: CTickUser(); virtual ~CTickUser(); void SetSpeed(int nSpeed); void SetMiniSecs(int nMinise
2009-05-27 17:00:00 521 1
原创 线程使用率监控
有时候需要知道进程各个线程的CPU使用率,以平衡这些线程。那怎么知道线程的CPU使用率呢?以下是本人编写的类:#ifndef _WZ_THREADCONTROL_H#define _WZ_THREADCONTROL_H struct ThreadInfo{ char szThreadName[15]; HANDLE hThread; int nPercentCPUUsag
2009-04-23 10:46:00 737
原创 try catch
下面情况只能try catch,而不用if else.一、如fun(){ fun1();}fun1(){ fun2();}fun2(){ fun3();}fun4(){ }fun执行了一个连贯动作,如果此时在fun4出现错误,整个连贯动作应立即取消,用if else的话,需逐层返回,灵活性很差。用try catch马上可以跳到fun函数的catch中,
2009-03-23 15:36:00 613
原创 多线程问题
1、UI的多线程问题。 (1)UI线程和工作线程 UI线程:当在某线程中使用窗口操作API时,就会为该线程创建一个UI线程。这UI线程负责把队列消息放到对应的消息队列中,该UI线程无法由用户使用。如: int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
2009-01-01 01:00:00 427
转载 FREfast使用
转载:C++代码静态分析工具-Prefast <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/r
2008-12-28 00:11:00 343
原创 车牌识别
车牌识别的技术难点包括(以下是自己的理解,不代表权威,大家不要尽信):1、车牌定位。 方法一:利用车牌位置跳变点比较丰富的特点可以找到车牌可能的区域,这些区域中有些是非车牌区域,可根据车牌自身尺寸的比例或它和整幅图的比例来排除非车牌区域。 方法二:投影法。2、车牌识别。 方法一:BP神经网络,它通过对字符的训练可以比较准确地识别不同的字符。这里的训练
2008-12-21 13:33:00 873
原创 UI规划
一、进行UI规划的原因。1、由于现在程序大多采用Microsoft的窗口机制,各模块之间密切相关,牵一发而动全身。如,当想从界面中更改某界面功能时,会导致一系列程序代码需要修改。 当想添加或者抽离某功能界面时,需要花很多时间去整理代码。2、程序没有美感,很混乱。二、UI规划步骤。1、把UI划分为几个子部分,划分的原则是:划分以后,UI各子部分的耦合性比较弱并且合理。2、对各子
2008-12-19 11:54:00 323
转载 有用网站
个人数字图书馆:http://epub.cnki.net/grid2008/library/Template01/DigitalPersonal.aspx?targetname=wzchen2008,该网站可下载最新技术资料。
2008-12-17 13:08:00 162
原创 BoundsChecker使用
转载:http://www.cnitblog.com/qiuyangzh/archive/2005/07/14/975.html1 前言我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。NuMega是一个动态测试工具,主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuMega共有三个独立的子功能——BoundsCh
2008-12-12 23:48:00 16298 7
原创 Rational Purify使用
下面的代码集中显示了上述问题的典型例子: 1 #INCLUDE 2 USING NAMESPACE STD; 3 INT MAIN(){ 4 CHAR* STR1="FOUR"; 5 CHAR* STR2=NEW CHAR[4]; //NOT ENOUGH SPACE 6 CHAR* STR3=STR2; 7 COUT1、 COM: COM API/INTERFACE FAILURE CO
2008-12-11 14:00:00 825
原创 rational rose & rational purify & rational quanlity 安装
1、下载Rational suite,包括:b-irscd1, b-irscd2, b-irscd3。2、下载Rose破解包rose2003crack(包括flexlm,license.dat,lmgrd.exe, rational.exe)。3、下载合适的shw32.dll。4、安装Rose。注意:rose2003.exe安装程序解压后不要运行C:/Program Files/
2008-12-10 15:44:00 3249 6
原创 调试和优化随笔
1.发现Assert断言出错,此时知道被断言的指针值为NULL,怎么知道到底在哪给它赋NULL呢?(1)用VC->breakpoint->data->enter the expression... 注意:如果出现cannot set break point...,必须先调试进入表达式变量所在类或函数,再编辑。 但是对于频繁改变的变量,调试速度会很慢,这种方法行不通,怎么办呢?(2)在
2008-12-06 11:20:00 2248
原创 纯G.711音频文件播放
作者:wezer 博客:http://writeblog.csdn.net/PostList.aspx 下面程序实现纯G.711文件的播放。 所谓纯G.711文件在这定义为:只有G.711的音频数据,没有多余的其它信息数据。 Alaw和Ulaw是编码方式,可以任选一种,Start可以打开磁盘里任一个双声道G.711文件,Stop停止播放。
2008-11-07 20:12:00 3176 4
原创 H264 在一般PC上的多路同时解码
对于H264编解码,(一)如果是D1(720×576)分辨率的话,在一般PC上只能支持大约1~5路(跟硬件配置有关),那如果需要同时播放16路,而且CPU利用率不能太大,怎么办?(硬件资源不能改变。)假设H264 I 帧周期帧情况如下: 帧类型:I P B P B P B P ... I P B P B P B P 序号: 1 2 3 4 5 6
2008-11-04 22:53:00 639
原创 控件自绘技术
对于控件自绘技术,有些程序员不是很注重,因为如果自己注册创建一个窗口,同样可以做成如控件一样效果。 但其实控件自绘有以下好处:(1)降低工作量,控件提供了一些基本功能,只要在这些功能基础上进行修改,可以很快实现所需的界面元素。(2)减少程序bug。如果自己创建窗口,那所有功能需自己实现,必须考虑周到,稍有疏忽,就导致bug跳出。(3)从系统设计角度来看,它可以使界面美化层和功能
2008-11-04 22:01:00 665
原创 ComboBox自绘
ComboBox,即组合框,由Edit、Button、ListBox组成。下面程序实现自绘ComboBox,效果如图所示 #if !defined(AFX_CBEX_H__DB51125A_4B4E_45A0_A855_854D850EBE1A__INCLUDED_)#define AFX_CBEX_H__DB51125A_4B4E_45A0_A855_854D850
2008-11-04 21:34:00 3544 2
原创 怎么把采集到的影像数据显示出来,并且绘制字幕并贴logo图?
第一种方法:为显示设备创建内存兼容DC,然后在内存DC中绘制影像,同时叠加字幕、位图,再拷贝到设备DC进行显示。 第二种方法:利用DirectDraw技术,原理是:为每幅图片创建离屏表面1,创建用于叠加字幕、位图的离屏表面2,把影像数据拷贝至离屏表面1上,然后获取离屏表面1的DC,对它进行字幕、位图叠加,再放到离屏表面2,最后一次性拷贝到主表面。可完成所需功能。 总结
2008-11-03 22:38:00 418
转载 directsound抓取麦克风PCM数据封装类
网上有很多方法从麦克风读取PCM数据,不想一一举例。只是在这里发布一个我自己写的directsound的麦克风PCM数据采集类,通过 它,可以很方便的利用directsound技术把麦克风的数据采集到,而且本身,开发者不必太在意自己会不会directsound编程,可以很方便的 让开发者的主要精力集中于程序本身,而不是细节。这个是头文件:#pragma once#ifndef _
2008-11-03 15:26:00 714
协助你解决程序的BUG动态库
2011-06-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人