小彭屋

导航

2013年7月10日 #

typedef与#define的区别与联系

摘要: typedef和#define的用法与区别一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。二、#define的用法#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经 阅读全文

posted @ 2013-07-10 10:34 小彭屋 阅读(172) 评论(0) 推荐(0) 编辑

2013年7月9日 #

网络协议规范大全

摘要: 在网络的各层中存在着许多协议,它是定义通过网络进行通信的规则,接收方的发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息,以这种规则规定双方完成信息在计算机之间的传送过程。下面就对网络协议规范作个概述。 ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算 机的物理地址和临时指定的网络地址。启动时它选择一 个协议(网络层)地址,并检查这个地址是否已经有别的计算机使用,如果没有被使用,此结点被使用这个地址,如果此地址已经被别的计算机使用,正在使用此地址的计算机会通告这一信息,只有再选另一个地址了。 SNMP(Simple Network... 阅读全文

posted @ 2013-07-09 15:59 小彭屋 阅读(2491) 评论(0) 推荐(0) 编辑

用MFC类来操作数据库的方法

摘要: MFC ODBC将ODBC API封装在类CDatabase、CRecordSet、CFieldExchange、CRecordView和CDBException中使用MFC ODBC开发数据库应用程序的一般步骤使用AppWizard访问数据库使用类CDatabase连接数据库使用类CRecordSet打开记录集、获取数据使用类CRecordSet的函数MoveFirst()、MoveLast()、MoveNext()、MovePrev()、IsBOF()和IsEOF()进行记录集的遍历使用类CRecordSet的函数AddNew和Update增加记录使用类CRecordSet的函数Edit和 阅读全文

posted @ 2013-07-09 11:40 小彭屋 阅读(805) 评论(0) 推荐(0) 编辑

2013年7月7日 #

Oracle Grant 与 Revoke的用法

摘要: 一、权限是用户对一项功能的执行权力。在Oracle 中,根据系统管理方式不同,将权限分为系统权限 与实体权限 两类。系统权限 是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。实体权限 是指用户对具体的模式实体 (schema)所拥有的权限。这样讲可以有些模糊。举个例子来说:select any table是系统权限,它表示可以查看任何表。而select on table1是实体权限,表示对表table1的查询权限。二、见下下面的表三、系统权限授权命令的使用 语法: GRANT 权限名 TO 用户|角色|PUBLIC 其中,PUBLIC表示将权限赋给数据库中所有的用户 例: 阅读全文

posted @ 2013-07-07 12:00 小彭屋 阅读(14129) 评论(0) 推荐(0) 编辑

2013年7月4日 #

音频压缩代码集锦···

摘要: // conv.cpp//// convert a PCM wave to some other format//转换一个PCM格式的wav到其他格式#include //包含头文件 windows.h#include //包含头文件mmsystem.h#include // Multimedia registration多媒体注册#include // Audio Compression Manager音频压缩管理器#include #include // Locate a driver that supports a given format and return its ID//寻... 阅读全文

posted @ 2013-07-04 16:51 小彭屋 阅读(942) 评论(0) 推荐(0) 编辑

PCM原始音频采样数据压缩为GSM6.10格式的大致流程

摘要: 使用ACM来进行音频格式压缩的大致步骤:1、使用acmDriverEnum函数来枚举操作系统的所有音频格式驱动,把GSM6.10格式的驱动取出来。GSM6.10格式驱动的名称为:Microsoft GSM 6.10 Audio CODEC2、使用acmDriverOpen函数将上面取得的驱动ID打开。3、通过acmMetrics函数来获取GSM6.10格式Format Chunk的附加数据长度,为4个字节。大致调用如下:acmMetrics((HACMOBJ)m_hDriverCmp, ACM_METRIC_MAX_SIZE_FORMAT, &nSize);4、使用acmFormatS 阅读全文

posted @ 2013-07-04 10:13 小彭屋 阅读(1714) 评论(0) 推荐(0) 编辑

2013年7月3日 #

VC调用ACM音频编程接口压缩Wave音频

摘要: 音频和视频是多媒体应用程序向用户提供信息的主要方式,这些音频、视频数据一般都具有较高的采样率,经过压缩的原始数据才具有实用价值,否则不仅要占用大量存储空间而且在播放或进行网络传输时效率也是非常低下的,所以音频、视频数字压缩编码在多媒体应用中有着广泛而又重要的用途。本文主要对音频的编码压缩作了阐述。 音频的编码压缩方式有许多种,如基于ITU-T G.728语音编码协议的LD-CELP 低时延码激励线性预测编码、基于ITU-T G.711语音编码协议的PCM(Pulse Code Modulation ,脉冲编码调制)编码以及我们非常熟悉的GSM数字蜂窝移动电话的语音编码标准等等。这些不同的压缩. 阅读全文

posted @ 2013-07-03 10:32 小彭屋 阅读(605) 评论(0) 推荐(0) 编辑

2013年7月2日 #

C++ 语音聊天

摘要: 对语音控制思路为:先在服务端录音然后通用网络传输最后在客户端播放,下面我们分别讨论录音,传输,放音的实现步骤录音实现:对计算机录音我们可以使用一系列API,简单过程如下waveInOpen 打开录音设备waveInPrepareHeader 准备录音缓冲区waveInAddBuffer 将缓冲区加入队列waveInStart 开始录音waveInUnPrepareHeader 释放录音缓冲区waveInReset 停止录音waveInClose 关闭录音设备放音实现:对计算机放音,简单过程如下waveOutOpen... 阅读全文

posted @ 2013-07-02 17:51 小彭屋 阅读(2455) 评论(0) 推荐(0) 编辑

2013年7月1日 #

socket编程中select的使用

摘要: Select在Socket编程中还是比较重要的,可是对于初学Socket的人来 说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式 block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用 Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不 同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件 阅读全文

posted @ 2013-07-01 10:36 小彭屋 阅读(500) 评论(0) 推荐(0) 编辑

2013年6月26日 #

进程间通信

摘要: 进程间通信的四种方式剪贴板匿名管道命名管道邮槽Win32平台下,内存块在物理内存中从来不会被移动,但可以在缺省的堆中被移动剪贴板将数据存入剪贴板:void CClipboardDlg::OnBnClickedBtnSend(){// TODO: 在此添加控件通知处理程序代码if(OpenClipboard()){CString str;char * pBuf;HANDLE hClip;EmptyClipboard();GetDlgItemText(IDC_EDIT_SEND,str);hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);pBuf 阅读全文

posted @ 2013-06-26 10:19 小彭屋 阅读(272) 评论(0) 推荐(0) 编辑