- 博客(26)
- 资源 (7)
- 收藏
- 关注
原创 【C陷阱和缺陷】可移植性缺陷
一,应对C语言标准变更 编译器并不是都实现了C标准(ANSI),不同的C语言实现会有细微的差别。 使用最新的C特性会更容易编写而且不容易出错,但可能造成在某些早期的编译器上无法工作,失去部分客户。为了提高可移植性,要在新旧用法之间进行取舍。二,标示符名称的改变 某些C语言的实现把一个标识符中处出现的所有字符作为有效字符处理,而有的C实现会自动
2012-11-28 23:02:25 1729
原创 【C陷阱和缺陷】预处理器
一,概念 宏只是对程序的文本起作用,提供了一种对组成程序的字符进行变换的方式,而并不作用域程序中的对象,因此可以使一段看上去完全不合法的代码变成一个有效的程序,也能使一段看上去无害的代码编程一个怪物。二,细节 1)宏定义中的空格 (注意带参数的宏) 如果函数无参,则调用时只需在函数名后面加一对括号,如果一个宏不带参数
2012-11-28 22:27:21 1591
原创 【Alsa】播放声音和录音详细流程
一,前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚。先分析alsa驱动层,然后关联到alsa库层和应用层。二,链接分析: 1)链路一 usr/src/linux-source-3.0.0/sound/core/pcm_native.c文件中注册部分.mmap = snd_pcm_mmap调用snd_pc
2012-11-24 23:30:14 10273 1
原创 【Windows核心编程】Windows核心编程 -- 作业
场景: 用VS创建一个c++项目时候,通常生成一个.exe程序,而.exe程序可能生成更多进程。如果用户希望提前停止构建进程,则VS必须想法终止.exe及所有子进程。 一,作业 Windows提供了一个作业(job)内核对象,它允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。最好将作业对象想象成一个进程容器。但是创建只包含一个进程的作业同样非常有用
2012-11-22 23:34:22 1849 1
原创 【C陷阱和缺陷】库函数
一,返回整数的getchar函数 我们来看下面的程序:#include "stdio.h"void main(){ char c; while ( (c = getchar()) != EOF ) { putchar( c ); }} 看起来这段程序应该把它的标准输入拷贝到输出,实际运行情况并非
2012-11-22 22:58:35 1329
原创 【WinSocket】WinSocket 之TCP示例
一,TCP通信过程服务端: socket( ) //定义socket bind( ) //绑定本地地址和端口号 listen( ) //监听客户端请求 accept( ) //接收客户端请求 recv( ) //接收客户端数据 closesocket( )客户端: socket(
2012-11-19 00:23:50 2347
原创 【WinSocket】WinSocket 函数总结 及 常用函数精析
一,函数根据功能的不同可以分为如下几类: (1) 套接字函数:此类函数包括socket(),bind(),getpeername(),getsockname()和closesocket(),它们主要完成创建,关闭套接字功能,以及对套接字命名与名字获取。 (2) 网络连接函数:此类函数包括listen(),accept(),connect()和shutdown(),它
2012-11-18 23:56:04 3230
原创 【WinSocket】WinSocket 编程入门【精华】
一,WIN32平台上的WINSOCK编程都要经过下列步骤: 定义变量->获得WINDOCK版本->加载WINSOCK库->初始化->创建套接字->设置套接字选项->关闭套接字->卸载WINSOCK库->释放资源二,WINSOCK C/S的建立过程: 服务器 客户端_____________________
2012-11-18 21:55:41 1836
原创 【C陷阱和缺陷】连接
一,概念 连接器的作用在于把有编译器或汇编器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体,该实体能够被操作系统直接执行。其中,某些模块式直接作为输入提供给连接器的;而另外一些目标木块则是根据连接过程的需要,从包括有类型printf函数的库文件中取得的。 二,连接过程问题的根源 C程序 - > 预处理成demo.i -
2012-11-18 00:56:52 1442
原创 【Linux&音频】Alsa音频编程【精华】
前序:这里了解一下各个参数的含义以及一些基本概念。 样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。 通道数(channel):该参数为1表示单声道,2则是立体声。 桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。 采样率(rate):每秒钟采样次数,该次数是针对桢而言。
2012-11-16 22:27:37 10243 5
原创 【C陷阱和缺陷】语义缺陷
一,指针和数组 1) C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来 2) 对于一个数组,我们只能够做两件事:确定该数组的大小,以及获得指向该数组下标为0的元素的指针.例子1: int a[3]; sizeof(a) = 12 结果是整个数组a的大小,而不是指向数据a的元素的
2012-11-16 00:09:04 1637
原创 【音频】音频编程中常见的概念
一,什么是声音? 能量波,有频率有振幅,频率高低就是音调,振幅大小就是音量; 采样率是对频率采样,采样精度是对幅度采样 人耳能听到的频率范围是200-20KHz,二,什么是CODEC? 在声卡上往往可以找到一颗或者2颗甚至3颗4面有引脚的正方形芯片,面积一般为0.5-1.0平方厘米。这就是CODEC。COD
2012-11-15 22:31:34 1834
原创 【Windows核心编程】Windows核心编程 -- 进程(示例:枚举进程)
枚举进程 每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序。但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出"关闭程序"对话框显示出当前系统进程列表,从中可以结束指定的任务。显然,该功能在一些系统监控类软件中还是非常必需的, 其
2012-11-13 20:39:16 1546
原创 【Windows 核心编程】Windows 核心编程 -- 进程
一,进程概念: 一般将进程定义成一个正在运行的程序的实例,它由以下两部分构成: 1)一个内核对象,操作系统用它来管理进程。内核对象也是系统保留进程统计信息的地方; 2)一个地址空间。其中包含所有可执行文件或DLL模块的代码和数据。此外它还包括动态内存分配,比如线程堆栈和堆的分配。 进程是有"惰性"的。进
2012-11-13 20:37:40 1920
原创 【Windows 核心编程】Windows 核心编程 -- 内核对象
一,对象和句柄 1)对象:是静态定义的对象类型的单个运行时实例。对象类型包括系统定义的数据类型,在数据类型实例上的操作的函数以及一组对象属性集。 对象为完成下列四种重要的操作系统任务提供了方便的方法: 为系统资源提供可读的名字; 在进程间共享资源和数
2012-11-12 22:28:03 1205
原创 【Windows 核心编程】Windows 核心编程 -- 错误处理
一,常见的Windows函数返回值类型 1)VOID:这个函数不可能失败,极少数Windows函数的返回值类型为VOID。 VOID ExitProcess(UINT uExitCode); 2)BOOL:如果函数失败,返回值为0;否则,返回值是一个非0值。应避免测试返回值是否为TRUE,应该检查是否
2012-11-12 10:51:35 1610
原创 【系统运维】wubi双系统启动问题:cannot find GRLDR in all devices
一,问题 本文旨在给出在ubuntu启动时遇到以下问题的解决方法。不需重装系统,几分钟内可以搞定。try(hd0,0):ntfs5:no wubildr try(hd0,1):ntfs5:no wubildr try(hd0,2):extended: try(hd0,3):ntfs5:no wubildr try(hd0,4):ntfs5:no wubildr tr
2012-11-11 00:38:59 2122
原创 【C陷阱和缺陷】词法缺陷和语法缺陷
第一章:词法陷阱 1)词法分析器:编译器中负责将程序分解成一个一个符号的部分 2)= 不同于 == 在循环语句中如果出现 = 会发出警告(waring)。 例:先将y赋值给x,然后判断是否为0。为了避免警告可以将 if(x=y) fun(); 改成 if( (x=y) !=0) fun(); 3)&和|
2012-11-11 00:37:16 1822
原创 【Windows核心编程】Windows常见数据类型
一,常见数据类型 WORD: 16位无符号整形数据 DWORD: 32位无符号整型数据(DWORD32) DWORD64: 64位无符号整型数据 INT: 32位有符号整型数据类型 INT_PTR: 指向INT数据类型的指针类型
2012-11-08 22:58:01 9714 1
原创 【音频】Wav格式文件详解
一,Windows支持两种RIFF(Resource Interchange File Format,“资源交互文件格式”)格式的音频文件 MIDI的RMID文件和波形音频文件格式WAVE文件 在计算机领域最常用的数字化声音文件格式是后者,它是微软专门为Windows系统定义的波形文件格式(Waveform Audio),由于其扩展名为"*.wav",因而该类文
2012-11-05 22:08:38 3230
原创 【音频】waveOutOpen详解
一,使用示例: 1)定义参数 HWAVEOUT m_hWaveOut; WAVEFORMATEX m_waveformat; //音频格式 2)结构体赋值 m_waveformat.wFormatTag = WAVE_FORMAT_PCM;m_waveformat.nSamplesPerSec =
2012-11-05 22:00:30 7310 1
原创 【网络层】路由器的构成
一,概念 路由就是指通过相互连接的网络把信息从源地点移动到目标地点的活动 区别:路由和交换之间的主要区别? 交换发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换在移动信息的过程中需要使用不同的控制信息,所以两者实现各自功能的方式是不同的。二,路由器作用
2012-11-03 16:48:22 2666
原创 【网络层】精析网络层 -- 因特网的路由选择协议
一,理想的路由算法 1)算法必须是正确的 2)计算简单 3)适应通信量和网络拓扑的变化 4)算法具有稳定性 5)算法是公平的 6)算法是最佳的:相对合理二,分层次的路由选择 1)静态路由选择:非自适应路由选择,简单、开销小 动态路由选择:自
2012-11-03 11:07:44 2138
原创 【网络层】精析网络层 -- 网际控制报文协议ICMP
网际控制报文协议ICMP(Internet Control Message Protocol) 1)报文格式:ICMP报文封装到IP报文的数据部分 而ICMP报文的数据部分为要报告差错的IP数据报的IP头部和数据部分前8个字节(IP地址和端口号) 2)ICM
2012-11-02 23:27:59 1711
原创 【网络层】网络层概述
一,网络层提供的两种服务 虚电路和数据报服务的区别? 虚电路数据报连接的建立必须有不要目的站地址使用仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有目的站的全地址路由选择时机在虚电路连接建立时进行,所有
2012-11-01 23:51:15 1859
原创 【传输层】UDP知识详解
一,UDP简介 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。 UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的C/S模式的网络应用都需要使用UDP协议
2012-11-01 22:18:43 11730
libconio-1.0.0.tar.gz
2012-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人