- 博客(57)
- 资源 (3)
- 收藏
- 关注
原创 多态性
多态性是指具有不同功能的函数可以用同一函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为——每个对象可以用自己的方式去响应共同的消息。从系统实现的角度看,多态性可分为两类:静态多态与动态多态。静态多态:在程序编译时系统就能决定调用的是哪个函数,又称为编译时的多态性,通过函数重载实现。
2011-06-27 14:09:00
931
转载 windows内存结构
进程的虚拟地址空间每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,(这是个虚拟地址空间,不是物理地址空间)。32位指针可以拥有从0x00000000至0xFFFFFFFF之间的任何一个值。这使得一个指针能够拥有4 294 967 296个值中的一个值,它覆盖了一个进程的4GB虚拟空间的范围。对于64位进程来说,这个地址空间是16EB(1018字节),64
2011-06-27 01:53:00
586
转载 内存管理(1)
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区、常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
2011-06-27 00:36:00
438
原创 C++文件操作
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准
2011-06-27 00:15:00
406
原创 关于WIN32 API
内核对象它一般由OS创建与管理的对象,内核对象其实是由系统内核分配的一块内存。这个内存是一个数据结构,包含了关于该对象的信息。内核对象数据结构只能由内核访问,应用程序不能在内存中定位这些数据结构,也不可能直接改变它们的内容,而只能通过WIN32提供的一套API函数来操纵这些内核对象和相应的数据结构。当用户调用创建内核对象的API函数时,函数返回一个用于代表该对象的句柄,它可以被进程内的所有
2011-06-24 15:24:00
478
原创 extern
注:外部变量即为全局变量 1.在一个文件内声明外部变量如果外部变量不在文件的开头定义,则它的作用域仅限于定义处到文件结尾。若想在定义点前引用该变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”(表示该变量是已经定义的外部变量)。
2010-12-13 21:55:00
442
原创 变量的存储类别
<br />用户区可分为程序区、静态存储区、动态存储区;<br />(1)auto变量:动态存储区,函数调用后马上释放,也是默认的存储类别<br />(2)static变量:使函数中的局部变量的值在函数调用结果后不消失而保留原值,即其占用的存储单元不释放。<br />(3)register变量:变量放在寄存器中。只有局部自动变量和形式参数可以作为寄存器变量<br />
2010-12-13 21:42:00
446
原创 友元函数与友元类
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。友元函数: 友元函数是可以直接访问类的私有成员的
2010-12-13 21:18:00
459
原创 面试题
<br />1、百度面试题:正向最大匹配分词,怎么做最快?<br /><br />用所有词生成一个字典树,匹配的过程就是查字典的过程(hash就是这种思想的体现)。<br />假设我们有两个词”百度“,”百家姓“,那么生成的字典树就是:<br /><br />百---度*<br />|<br />|-----家----姓*<br /><br />其中“度”和“姓”旁边的星号表示这是一个有效词。<br />对于句子“百度面试题“,首先在字典中找”百“,找到了;继续向下查找”度“,又找到了;继续向下查找”面“,
2010-12-03 09:58:00
602
原创 查看调试信息
<br />驱动程序运行在内核模式下,很难像一般Win32程序一样进行调试。一般来说,驱动程序的调试主要有两个途径:在关键的地方打印出调试信息调用内核调试工具,诸如Softice或WinDbg等,进行内核调试<br />对于第一种方法,用到的是KdPrint,它并不是函数,而是宏,类似于MFC下的TRACE。编写驱动程序时,应尽量使用KdPrint,因为该宏只在Checked版本(即Debug)下起作用,而在Free版本(即Release)下不起作用。<br />注意:因为KdPrint为宏,使用时要用双括
2010-08-11 14:38:00
897
原创 调用约定
<br />Windows驱动程序的编写中,需要使用标准调用约定(_stdcall),尤其是入口函数(DriverEntry):系统会寻找_DriverEntry@8作为驱动程序的入口点。<br />若用C语言调用约定(_cdecl)则会将DriverEntry编译成_DriverEntry,而不是_DriverEntr@8,那么会导致链接错误。<br /> <br />在默认情况下,VC或DDK提供的编译器会根据源文件的扩展名,来判断使用哪种试编译。当扩展名为.cpp时,编译器会用C++方式编译;当扩展名
2010-08-11 14:23:00
717
原创 Windows系统架构图
<br />(1)Native APINative API函数一般都是在Win32 API上加前Nt,如Win32 API下的CreateFile对应的Native API的函数为NtCreateFile。所有的Native API都在Ntdll.dll中实现,而Win32子系统的三个核心dll文件都依赖于Ntdll.dll。Win32 API从Windows NT到Windows 2000,再到Windows XP基本保持不变,变化的是只是Native API。(2)系统调用Native API从用户模式
2010-08-11 12:02:00
7624
原创 用户模式与内核模式
<br />谈到用户模式与内核模式,一般要与CPU的特权层联系起来。<br />CPU一般有多个特权层,例如:Intel的386CPU有四个特权层,分别是Ring 0、Ring 1、Ring 2、Ring 3。其中,Ring 0的特权级别最高,可以执行任意的代码,Windows的内核模式就运行在该级别;Ring 3的特权级别最低,Windows的用户模式运行在该级别。<br />下图为CPU特权层与操作系统两种模式的关系早期的DOS系统是没有用户模式与内核模式的区别,所有程序都运行在Ring 0特权层。应用
2010-08-11 11:40:00
1052
转载 PostMessage与SendMessage、GetMessage与PeekMessage
<br />Windows编程中一个比较原始的问题就是消息循环,现在很少有人关心这些了;<br /> 我个人对消息循环比较感兴趣,对底层的很多细节想深入了解!<br /> 以下说明几个消息循环中的常用函数进行对比<br />1 PostMessage 与 SendMessage 函数对比<br /> SendMessage把消息直接发送到窗口,并调用此窗口的相应消息处理函数,等消息处理函数结束后SendMessage才返回!SendMessage发送的消息不进入系统的消息队列;SendMessage函
2010-08-10 21:50:00
754
原创 音频文件格式
<br />经典的WAVE<br /> WAVE文件作为最经典的Windows多媒体音频格式,应用非常广泛,它使用三个参数来表示声音:采样位数、采样频率和声道数。 <br />声道有单声道和立体声之分,采样频率一般有11025Hz(11kHz)、22050Hz(22kHz)和44100Hz(44kHz)三种。<br />WAVE文件所占容量=(采样频率×采样位数×声道)×时间/8(1字节=8bit)。
2010-08-09 11:39:00
531
原创 按钮加载图片
<br />CBitmapButton是一个MFC内置的按钮类,提供图片按钮的功能,并且支持在不同状态下显示不同图片。 <br /><br />由于使用方法比较简单,比CButton更美观,比其它的第三方Button类更简洁,因此博鸽的下一版本将要使用它。 <br /><br />博鸽网的地址是: <br /><br />http://www.blogdove.com <br /><br />CBitmapButton的简易攻略如下: <br /><br />1.在MFC Dialog工程中,在一个Dial
2010-06-26 23:14:00
1428
原创 语音识别引擎的安装
<br />There is no Speech Recognition Engine (SRE) built directly in to Windows XP. You need to install a compatible engine, and in most cases, you'll install it from one of two sources. <br /> •<br />The Microsoft SRE for Windows XP is available in Office
2010-06-25 17:36:00
942
原创 语音合成
<br />1、网上很多程序都可以朗读英文和中文,典型的就是金山词霸<br /> <br />2、要使用TTS必须安装微软的TTS引擎,作为用户需要下载两个文件MSTTS.EXE和SPCHAPI.EXE(http://download.csdn.net/source/1664029),如果需要阅读中文,还需要下载中文发音包SimpChinese Speech Package。这三个软件都可以在微软主页上找到,如果您发布程序,则需要将其打包在一起。作为程序员,您可以去微软主页下载Microsoft Speec
2010-06-25 16:51:00
1195
原创 Windows 多线程一(问题提出)
<br />一、问题的提出<br />编写一个耗时的单线程程序:<br /> 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒}<br /> 编译并运行应用程序,单击“延时6秒”按钮,你就会
2010-06-03 22:44:00
630
原创 MFC-Dialog-Based 执行顺序
先执行theApp全局对象对话框类的执行顺序又分为:<br /> (1)构造函数<br /> (2)OnInitDialog<br /> (3)OnPaint
2010-06-03 17:24:00
664
原创 HANDLE
核心对象以HANDLE为使用时的参考依据;句柄(HANDLE),其实是个指针,指向操作系统内存空间的某个东西,这东西是不允许你直接取得的,你的程序不能够直接取用它,为的是维护系统的安全性与完整性。GDI对象和核心对象之间的一个主要不同GDI对象有单一拥有者,不是进程就是线程核心对象可以有一个以上的拥有者,甚至可以跨进程。为了保持对每一位主人的追踪,核心对象保持了一个引用计数(reference count),以记录有多少handles对应到此对象。对象中也记录了哪一个进程或线程是拥有者。当你调用Create
2010-06-03 17:20:00
477
原创 extern用法说明
在一个文件内声明外部变量 如果外部变量(即全局变量)不在文件的开头定义,其作用域只限于定义处到文件结束。 若想在定义点之前的函数内引用该外部变量,则应该在引用之前用extern对该变量作“外部变量声明”——表示该变量是一个已经定义的外部变量。例如: int max(int a,int b) { ret
2010-05-30 18:47:00
520
原创 windows多线程编程
一、MFC线程介绍MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是
2010-05-28 23:51:00
416
原创 stdafx.h头文件
当使用visual C++时,总是包含了头文件stdafx.h当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CPP都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。
2010-05-28 21:33:00
662
转载 核函数简介
(1)核函数发展历史 早在1964年Aizermann等在势函数方法的研究中就将该技术引入到机器学习领域,但是直到1992年Vapnik等利用该技术成功地将线性SVMs推广到非线性SVMs时其潜力才得以充分挖掘。而核函数的理论则更为古老,Mercer定理可以追溯到1909年,再生核希尔伯特空间(ReproducingKernel Hilbert Space, RKHS)研究是在20世纪40年
2010-05-26 16:56:00
1445
1
原创 随机数种子与随机数
本文要讨论的内容就是,在C语言中,是如何取得这个随机数的? 一个语句:rand(); 它的作用就是随机取0到RAND_MAX之间的任何数。ANSI标准指出,RAND_MAX值的范围到少是32767,也就是双字节整数的最大值。 下面我们用一个例子来取得从1到6的随机整数: #include #include mai
2010-05-11 22:24:00
993
原创 Audio Sampling
Most ASV systems use 8 bits and around 8KHz sampling frequency for their input.The largest reason for this is probably that most research is performed on telephone lines, where the bandwidth is ev
2010-05-10 13:37:00
374
原创 SkinMagic皮肤使用
一、把SkinMagicLib.h、SkinMagicTrial.lib、skin.smf和SkinMagicTrial.dll这四个文件拷贝到工程目录中。二、在stdAfx.h中添加代码: #endif // _AFX_NO_AFXCMN_SUPPORT(在这一行后添加如下两行) #include "SkinMagicLib.h" #pra
2010-05-04 14:42:00
703
1
转载 top详解
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48Tasks: 29 total, 1 running, 28 sleeping, 0 stopp
2010-04-27 17:10:00
438
原创 Windows 网络编程
Winsock的服务是以动态链接库Winsock DLL实现的,所以使用之前必须先调用下面这个函数对Winsock DLL初始化,协商Winsock的版本支持,并分配必要的资源; int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData); 参数wVersionRequested指定欲加载的Winsock版本:
2010-04-24 12:04:00
536
原创 pragma预编译
指令详解 #pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 格式与参数 其
2010-04-22 10:23:00
513
转载 LibSvm使用说明
SVM的使用为什么写这个指南我一直觉得 SVM 是个很有趣的东西,不过一直沒办法去听林智仁老師 的 Data mining与SVM的课,后来看了一些Internet上的文件,后来听 kcwu 讲了一下 libsvm 的用法后,就想整理一下,算是对于并不需要知道完整 SVM 理论的人提供使用 libsvm 的入门。 原始 libsvm 的README跟FAQ也是很好的文件, 不过你可
2010-04-17 13:23:00
2700
原创 Cross-Validation
交叉验证(Cross Validation)方法思想简介以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),
2010-04-17 09:45:00
797
原创 SVM
SVM - Support Vector MachinesSVM - Support Vector MachinesIntroduction to Support Vector Machine (SVM) Models A Support Vector Machine (SVM) performs classification by constructing an
2010-04-13 14:14:00
1418
1
原创 SVM简介(一)
由V. N. Vapnik教授等人创立的统计学习理论是一种专门的小样本理论,这一方法数学推导严密,理论基础坚实。基于这一理论近年提出的支持向量机(Support Vector Machines 简称SVM)方法,为解决基于数据的非线性建模问题提供了一个新思路。SVM方法是一种具有严密理论基础的计算机学习的新方法,它已经成为计算机学习、模式识别、计算智能、预测预报等领域的热点技术,受到国内外的广泛关
2010-04-10 00:58:00
3689
原创 数字声音提取
经过语音输入设备,如麦克风和电话听筒,把声波转化成模拟信号。模拟信号然后被过滤,同时还对信道的损失进行行当的补偿。过滤后信号的带宽在抽样前被限制在Nyquist率左右(抽样率的一半)。然后,该模拟信号被抽样并通过A/D转换器变成数字信号。
2010-04-08 11:00:00
635
原创 单词
dichotomize 二分,对分exploit 开发,开采;利用;剥削sine wave 正弦波straightforward 坦率的,直率的;简单的,易懂的amplitude 振幅;射程;幅度;广大,广阔;充足,丰富stochastic 随机的,可能的discrete 离散的,分离的continous 连续的ergodic 各态经历的,遍历的sp
2010-04-04 19:40:00
510
原创 线性预测系数LPC
线性预测的基本思想是:由于语音信号样点之间存在相关性,所以可以用过去的样点值来预测现在或未来的样点值,即一个语音的抽样能够用过去若干个语音抽样的线性组合来逼近,通过使实际语音信号抽样值和线性预测抽样值之间的误差在均方准则下达到最小值来求解预测系数,而这预测系数就反映了语音信号的特征,故可以用这组语音特征参数进行语音识别或语音合成等。
2010-04-04 14:23:00
8629
原创 Sphinx-4
Sphinx-4一个完全采用Java开的语音识别器. http://cmusphinx.sourceforge.net/sphinx4/#what_is_sphinx4
2010-03-29 00:24:00
1071
1
原创 框架表示法
首先,让我们看看人类认识事物的过程:从已知(记忆)中寻找对应的框架根据新事实填充已有框架框架的组成:槽(slot)、侧面(facet)、值(value) 这三部分组成(每一部分可以有多个值) 框架的形式: 槽名1: 侧面名1 : 值1 …… 侧面名m1: 值m1……槽名n: 侧面名1
2010-03-28 11:18:00
3086
linux必写的60个命令
2009-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人