自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (3)
  • 收藏
  • 关注

原创 小谈我了解的gcc(12-16)

想初步了解gcc和具体怎么使用gcc,最好就是man gcc。    具体大概想知道gcc是怎么处理c语法的,可查看gcc本身生成的一些gcc文档。    具体详细想知道gcc是怎么处理c语法的,可查看gcc本身生成的gccint和gcc源码。其实这也是学好C语言的一种方式,毕竟目前大部分的C程序都是由GCC编译的,某种语言的成功主要不是因为他的设计是多么的合理,多么的优秀,这只是一方面,

2011-12-16 23:10:43 920

转载 各种字符编码方式详解及由来(ANSI,UNICODE,UTF-8,GB2312,GBK)

ANSI,UNICODE,UTF-8,GB2312,GBK

2011-01-05 16:41:00 633

转载 Windows的系统中DLL文件详解

<br />Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库。现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧!<br /><br />  初窥门径:Windows的基石<br /><br />  随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件,这些就是经常说的“动态链接库”,DLL是Dynamic Link Library(即“动态链接库”)的缩写。从Microsoft公司推出首个版本的Windows以来,动态链接库就一直是这个操作系统的基础。<b

2010-11-20 20:50:00 985

原创 关于全局变量指针直接 malloc分配内存的一些问题

<br />一个对比:<br /><br />对于语句:<br />int i = 3<br /><br />int main()<br />{<br />    int j = i;<br />    ...<br />}<br /><br />在编译时不需要确定局部变量 j 的值,而是在运行时读取i 的值来赋给 j. 编译连接后的可执行文件中不会存放j 的值,只有相应的赋值语句的代码。与此相对的,由于i 是全局变量,存储在静态存储区,因此在编译时其值就需要确定其值,在目标文件中会分配空间来存放

2010-11-18 14:43:00 13925

原创 卫星数字电视接收机的工作原理 IRD

<br /><br /><br /><br />卫星数字电视接收系统一般由接收天线(包括馈源)、低噪声下变频器(高频头LNB)和卫星数字电视接收机三部分组成:其中天线、高频头称室外单元:卫星数字电视接收机称室内单元,或称综合解码接收机(即<br />IRD),是当代计算机技术、数字通信技术和微电子技术融合的结晶。<br />1 IRD的功能框图<br /><br />IRD的一般功能框图如图1所示。由图可知,一个典型的IRD包括:调谐器、第二中频信号解调、信道解码、MPEG一2传输流解复用、MPEG一2音/

2010-08-18 13:17:00 3037

原创 学习STL map, STL set之数据结构基础

<br /><br />摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。<br />STL map和set的使用虽不复杂,但也有一些不易理解的地方,如:<br />为何map和set的插入删除效率比用其他序列容器高?为何每次ins

2010-08-04 16:00:00 503

原创 Unix domain socket和memcached

<br />unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,是IPC的方法之一,特定于*nix平台。使用unix domain socket有三个好处: <br />1)在同一主机上,unix domain socket比一般的tcp socket快上一倍,性能因素这是一个主要原因。 <br />2)unix domain socket可以在同一主机的不同进程之间传递文件描述符 <br />3)较新的unix domain socket实现把客户的ID和组ID提供给服务

2010-07-23 10:07:00 1486

原创 网络字节序

我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。例如上一节的UDP段格式,地址0

2010-07-21 12:24:00 624

原创 基于TCP协议的网络程序

<br />下图是基于TCP协议的客户端/服务器程序的一般流程:<br />图 37.2. TCP协议通讯流程<br /><br /><br />服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。<br />数据传输的过

2010-07-21 12:22:00 608

原创 基于TCP协议的网络程序

<br />下图是基于TCP协议的客户端/服务器程序的一般流程:<br />图 37.2. TCP协议通讯流程<br /><br /><br />服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。<br />数据传输的过

2010-07-21 11:49:00 1010

原创 基于UDP协议的网络程序

<br />下图是典型的UDP客户端/服务器通讯过程(该图出自[UNPv13e])。<br />图 37.3. UDP通讯流程<br /><br /><br />以下是简单的UDP服务器和客户端程序。/* server.c */#include <stdio.h>#include <string.h>#include <netinet/in.h>#include "wrap.h"#define MAXLINE 80#define SERV_PORT 8000int mai

2010-07-21 11:45:00 632

原创 UNIX Domain Socket IPC

<br />socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。UNIX Domai

2010-07-21 11:41:00 677

转载 有关raw socket的一些知识

<br />有关raw socket的一些知识<br /><br />    众所周知,通过socket编程,我们能够实现机器之间的通信.在TCP/IP协议<br />簇(PF_INET)中,可以建立面向连接的SOCK_STREAM类型的socket,非连接的<br />SOCK_DGRAM类型的socket.事实上,在所有的网络程序中,也是这两种socket用<br />的最为广泛.除此之外,还有一些不常用的socket类型,它们却是在某些网络通<br />信中担当重要的角色.这里要讲的就是这么一种soc

2010-07-20 10:44:00 819

原创 server/client windows

<br /> //Server.cpp<br />   #include <iostream><br />   #include <Windows.h><br />#pragma comment(lib,"ws2_32.lib")<br />   <br />   using namespace std;<br />   <br />   #define  PORT 4000<br />   #define  IP_ADDRESS "10.3.37.91"<br />   <br />  DWORD WIN

2010-07-19 15:04:00 760

原创 struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系

<br />在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:<br />typedef unsigned short sa_family_t;<br />struct sockaddr {<br />        sa_family_t     sa_family;    /* address family, AF_xxx       */<br />        char            sa_data[14]; 

2010-07-16 09:43:00 3095 2

原创 Winsock 函数简介

1、WSAStartup函数用于初始化Winsock[声明]nt WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData);[参数]wVersionRequested - 要求使用Winsock的最低版本号lpWSAData - Winsock的详细资料[返回值]当函数成功调用时返回0失败时返回非0的值2、socket函数用于生成socket(soket Descriptor)[声明]SOCKET so

2010-07-15 11:42:00 2422

原创 socket Linux 下网络编程中的select

#include   #include   int select (int maxfdp1, fd_set *readset, fd_set *writeset,   fd_set *exceptset, const struct timeval * timeout);   Return >0:就绪描述字的正数目   -1:出错   0 :超时   struct timeval{   long tv_sec; // seconds   long tv_usec; // microseconds   }   

2010-07-15 10:20:00 901

原创 Socket程序从windows移植到linux下需要注意的

)头文件 windows下winsock.h或winsock2.hlinux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in.h里已经包含了,可以省了)2)初始化windows下需要用WSAStartup启动Ws2_32.lib,并且要用#pragma comment(lib,"Ws2_32")来告知编译器链接该lib。linux下不需要3)关闭socketwindows下closesocket(...)linux下close(...)

2010-07-14 15:18:00 3947 1

原创 网络socket编程指南 4 listen accept send recv 函数

listen()函数  是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--accept() (请看下面的 内容)。除了要一点解释外,系统调用 listen 也相当简单。int listen(int sockfd, int backlog); sockfd 是调用 socket() 返回的套接字文件描述符。backlog 是在进入 队列中允许的连接数目。什么意思呢? 进

2010-07-14 14:40:00 6545 1

原创 网络socket编程指南 3 socket bind connect 函数

listen()函数  是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--accept() (请看下面的 内容)。除了要一点解释外,系统调用 listen 也相当简单。int listen(int sockfd, int backlog); sockfd 是调用 socket() 返回的套接字文件描述符。backlog 是在进入 队列中允许的连接数目。什么意思呢? 进

2010-07-14 14:39:00 4286

原创 socket bind

SOCKET socket( int af, int type, int protocol );   应用程序调用socket函数来创建一个能够进行网络通信的套接字。   第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;   第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;   第三个参数指定应用程序所使用的通信协议。   该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID

2010-07-14 14:21:00 5099

原创 error LNK2001: 无法解析的外部符号

<br />VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,<br />编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。   <br />    初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:   <br />    unresolved   external   symbol   “sy

2010-06-25 16:50:00 1011

原创 warning C4996: “strcpy”被声明为否决的解决办法

<br />  VC2005中,使用了很多标准的C函数,比如fopen,strcpy之类的。编译时会出现警告,比如这个:<br />         d:/xxxx.c(1893) : warning C4996: “strcpy”被声明为否决的<br /><br />     紧接着IDE有提示说:“This function or variable may be unsafe. Consider using strcpy_s instead... 可是我的代码只是借VS2005的IDE环境开发而已,以后

2010-06-25 11:05:00 2280 1

原创 CString、TCHAR*、char*转换

<br />char*、TCHAR*转换CString <br />CString str(****) <br />下面详细写一下其它转换 <br />////////////////////////////// <br />/* <br />*********************************************************************** <br />* 函数: TransCStringToTCHAR <br />* 描述:将CString 转换为 TCHAR*

2010-06-22 17:43:00 486

原创 TCHAR 与 STD::string 之间的若干问题

<br />TCHAR 与 STD::string 之间的若干问题 [转]<br />我经常在 C++ 程序中使用标准模板库(STL)的 std::string 类,但在 使用 Unicode 时碰到了问题。在使用常规 C 风格的字符串时,我可以使用 TCHAR 和 _T 宏,这样针对 Unicode 或 ASCII 均可以进行编译,但我 总是发现这种ASCII/Unicode的结合很难与 STL 的 string 类一起使用。你有什么好的建议吗?<br />Naren J.<br />是的,一旦知道 TC

2010-06-22 17:42:00 744

原创 String,CString,TCHAR,char之间区别和联系

char是类型<br />TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是<br />char还是w_char;<br />TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符#ifdef UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif<br />所以用MBCS

2010-06-22 17:39:00 456

原创 UNICODE与ANSI的区别

<br />UNICODE与ANSI的区别<br /><br />什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Windows系统和很多大型软件中得到应用。8bit的ANSI编码只能表示256种字符,表示

2010-06-22 17:37:00 422

原创 UNICODE与ANSI的区别

<br />UNICODE与ANSI的区别<br /><br />什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Windows系统和很多大型软件中得到应用。8bit的ANSI编码只能表示256种字符,表示

2010-06-22 17:37:00 351

原创 Linux静态/动态链接库的创建和使用

<br />和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:<br />假设有下面几个文件:<br />头文件String.h,声明相关函数原形,内容如下:<br />Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:<br />Strlnen.c:函数StrNlen的实现,获取给定字符串的长度,如果输入字符串的长度大于指定的最大长度,则返回最大长度,否者返回字符串的实际长度,内容如下:<br />生成静态库:<br /> 利用GCC生成对应目标文件:

2010-06-04 10:38:00 417

原创 Linux动态库的使用方式

Linux动态库的特点前面介绍的很清楚,这里介绍使用:编译、动态库的链接、编译参数解析。调用动态库的时候有几个问题可能会遇到。

2010-06-03 16:32:00 554

原创 linux静态链接库与动态链接库的区别及动态库的创建(转)

Linux动态库的有其自身的特点,如实现进程之间的资源共享,将一些程序升级变得简单,甚至可以真正坐到链接载入完全由程序员在程序代码中控制。

2010-06-03 16:17:00 527

原创 Linux的bash中进程前台后台转换的方法

一、利用kill命令 先用ps -a找到进程号,再用sudo kill -stop procNumber,将进程暂停。然后再用jobs查看一下要转到后台的进程,找到它的job号,最后用bg jobNumber将其转到后台。大概就像这样: ps -a PID  TTY       TIME  CMD 6729 pts/0    00:00:00 mystar sudo kill -stop 6729

2010-05-13 14:54:00 3646

原创 去掉#!/bin/sh还能执行吗?

1,去掉#!/bin/sh还能执行吗?答:能执行,以默认的shell执行。2,#为注释,为什么#!/bin/sh还能被执行?答:在程序中的第一行,以!开头,能执行。其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本,比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,

2010-05-13 09:37:00 766

转载 C++ 语言特性的性能分析 第 2 章:C++ 语言特性的性能分析

大多数开发人员通常都有这个观点,即汇编语言和 C 语言适合用来编写对性能要求非常高的程序。而 C++ 语言的主要应用范围是编写复杂度非常高的程序,但是对性能要求不是那么严格的程序。但是事实往往并非如此,很多时候,一个程序的速度在框架设计完成时大致已经确定了,而并非是因为采用了C++语言才使其速度没有达到预期的目标。因此当一个程序的性能需要提高时,首先需要做的是用性能检测工具对其运行的时间分布

2010-05-11 11:33:00 493

原创 C 编程最佳实践

简介本文是为了满足开发人员的需要而写的。我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助。您也许不赞同其中的某些指南,但我们希望您会喜欢其中的一些并在您的编程或移植项目中使用它们。风格与指南使用一种使代码具有可读性和一致性的源代码风格。如果没有团队代码风

2010-05-06 11:00:00 406

原创 EIT段分析

/* analyse the header of the section: total 8 bytes */   tbl_id = *pBuffer++;   sct_syntax_indicator = (*pBuffer & 0x80);   sct_length = (*pBuffer++ & 0x0F)    sct_length |= *pBuffer++;  

2010-04-26 10:54:00 1055

原创 tdt段分析

int32  BCD_Seconds(u_int32  _time){   u_int32 temp;   u_int32 hour, minute, second;      temp = bcdint_to_int(_time&0xffffff, 6, 6, 1);      hour = temp/10000;   minute = temp/100 -

2010-04-26 10:53:00 676

原创 TS 188字节流结构图

应该说真正了解TS,还是看了朋友推荐的《数字电视业务信息及其编码》一书之后,MPEG2 TS和数字电视是紧密不可分割的,值得总结一下其中的一些关系。ISO/IEC-13818-1:系统部分;ISO/IEC-13818-2:视频;ISO/IEC-13818-3:音频;ISO/IEC-13818-4:一致性测试;ISO/IEC-13818-5:软件部分;ISO/IEC-13818-6:数字存储

2010-04-26 10:49:00 1441 1

原创 利用JAVA语言实现支持视频点播的WEB服务器

一.项目简介:  JAVA语言是一种可移植的,简单的,健壮的嵌入式语言。并且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分容易地建立一个小型INTERNET服务器。  本项目中,作者用JAVA语言编写了一个WEB微型服务器,对简单的HTTP请求进行响应,并通过后端数据库对用户的查询进行处理,从而动态地返回HTML页面。二.项目实现:(一)项目具体功能分析与开发工具选择  可以利用一

2010-04-26 10:40:00 1402

原创 DVB-SI理解入门指南(一)(二)(三)

DVB-SI理解入门指南(一)数字电视与传统模拟电视节目选择的方式完全不同, 传统电视的每一个频道对应一个节目,只要调到相应的频率, 就可以看到节目。 而在数字电视信号中,一路码流对应多路节目,使用复用技术就可以做到了。一个物理的频道只能给出包含多路节目的一路传输流。要观看其中的某一路节目,还必须从该传输流中提取出该路节目的压缩包,然后再进行解码。 所以怎样从众多的传输流中,选中一路节目播放,就变

2010-04-26 10:36:00 755

答案+Thinking+in+Java.chm

包含 thinging in java 答案。。。以及一些手册。。。

2011-08-04

DVB-C标准及相关测量技术.pdf

DVB-C标准及相关测量技术.是关于数字电视方面的。

2001-12-05

空空如也

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

TA关注的人

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