自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 BYTE

define   unsigned   char   BYTE     我想你的意思应该是:     typedef   unsigned   char   BYTE;     前者的意思通知预处理程序把记号“unsigned”替换成“char   BYTE”,后者是定义一种新类型BYTE,它其实就是unsigned   char。         然后,你问“字符类型有signed和unsign

2009-09-26 14:56:00 670

转载 NAT的完全分析及其UDP穿透的完全解决方案

转自:http://blog.csdn.net/colinchan/archive/2006/05/08/712773.aspxNAT的完全分析及其UDP穿透的完全解决方案 一:基本术语防火墙防火墙限制了私网与公网的通信,它主要是将(防火墙)认为未经授权的的包丢弃,防火墙只是检验包的数据,并不修改数据包中的IP地址和TCP/UDP端口信息。网络地址转换(NAT)当有数据包通过时,网络地址转换器

2009-09-13 02:24:00 502

转载 extern用法详解(转)

1 基本解释  extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。  另外,extern也可用来进行链接指定。2 问题:extern 变量  在一个源文件里定义了一个数组:char a[6];  在另外一个文件里用下列语句进行了声明:extern char *a;  请问,这样可以吗?   答案与分析:  1)、不可以

2009-09-07 22:15:00 439

原创 存储过程

 -- 创建存储过程        Create Proc dbo.csp_AddInfo        -- 存储过程参数        @UserName varchar(16),        @Pwd varchar(50),        @Age smallint,        @Sex varchar(6)        AS        -- 存储过程语句体        in

2009-09-01 15:53:00 493

原创 指针与数组的区别

#include  int main(void){        char a[] = "hello"; char *p="hello";        int b[] = {1, 2, 3, 4, 5};         printf("a: %d/n", sizeof(a));        printf("b memory size: %d byte

2009-08-31 00:59:00 437

转载 结构体的字节对齐问题

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://feizf.blogbus.com/logs/4818078.html结构体(struct)的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。先看下面定义的两个结构体.struct{  char a;  short b;  char c;}S1;struct{ char  a

2009-08-16 18:53:00 745

转载 atoi,itoa实现

//--------字符串转换为整数int myAtoi(const char* s){- ]7 ~; ?" F) ~4 b- a1 N      int result = 0;    int flag = 1;  K& D+ `7 /% r: V( n. I      int i = 0;& Y5 Z/ l1 k4 w5 ~" i      while(isspace(s))      i++;

2009-08-14 16:25:00 657

转载 memset ,memcpy 和strcpy 的根本区别?

Memset  用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, /0, sizeof(a));     memset可以方便的清空一个结构类型的变量或数组。 如:struct sample_struct{ char   csName[16]; int    iSeq; int    i

2009-08-14 15:20:00 522

原创 多进程服务器中,epoll的创建应该在创建子进程之后

 多进程服务器中,epoll的创建应该在创建子进程之后 看我的测试代码,似乎应该是在创建子进程之后创建epoll的fd,否则程序将会有问题,试将代码中两个CreateWorker函数的调用位置分别调用,一个在创建epoll fd之前,一个在之后,在调用在创建之前的代码会出问题,在我的机器上(linux内核2.6.26)表现的症状就是所有进程的epoll_wait函数返回0, 而客户端似乎被

2009-08-08 02:25:00 636

转载 epoll

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明: #define __

2009-08-08 01:42:00 511

转载 tcp要点学习-基础概念

tcp要点学习-基础概念 Author : Kevin Lynx TCP是TCP/IP协议簇中传输层上的一种网络协议,它是一种面向连接的、可靠的协议。为了提供这种可靠性,TCP实现了各种有效的机制、算法。为了从一种宏观的角度去了解这个协议,这里先大致地提一下与之相关的概念。 1. 什么是‘面向连接的’?引用

2009-07-25 23:07:00 503

转载 认识(大端--小端)端模式

端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在

2009-07-12 13:20:00 4595

转载 bit、byte、位、字节、汉字、字符

bit、byte、位、字节、汉字的关系         1 bit      = 1 二进制数据         1 byte   = 8 bit         1 字母 = 1 byte = 8 bit         1 汉字 = 2 byte = 16 bit4. 一个汉字占2个字节;     1 汉字 = 2 byte = 16 bit5. 标点符号     A>. 汉字输入状态下,默认

2009-07-11 11:59:00 3213 1

转载 递归算法详细分析C

      C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。     许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。  

2009-06-25 17:08:00 5872 1

原创 几个基础

 void strcpy(char *s, char *t){while (*s++ = *t++);}================================= int strcmp(char *s, char *t){for (;*s = = *t; s++, t++)if (*s = = /0)return 0;return *

2009-06-24 16:14:00 541

转载 typedef

用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb;                // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,和一个字符变量; 以下则可行: typedef char* PCHAR;  // 一般用大写 PCHAR pa, pb;             // 可行,同时声明了两个指向字符

2009-06-23 18:08:00 453

转载 pthread_cond_wait() 函数

了解 pthread_cond_wait() 的作用非常重要 -- 它是 POSIX 线程信号发送系统的核心,也是最难以理解的部分。 首先,让我们考虑以下情况:线程为查看已链接列表而锁定了互斥对象,然而该列表恰巧是空的。这一特定线程什么也干不了 -- 其设计意图是从列表中除去节点,但是现在却没有节点。因此,它只能: 锁定互斥对象时,线程将调用 pthread_cond_wait(&mycond,&

2009-06-20 13:02:00 2438

转载 什么是Core Dump

今天调试一个程序, 用到了core dump, 于是写出来, 记于此.什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down

2009-06-18 11:10:00 665

转载 open和fopen的区别

open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大

2009-06-18 11:01:00 572

原创 linux系统错误表

#define EPERM 1        /* Not super-user */#define ENOENT 2       /* No such file or directory */#define ESRCH 3         /* No such process */#define EINTR 4         

2009-06-15 20:14:00 615

转载 getch() getche()getchar()

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续

2009-06-15 12:39:00 615

原创 字符中"" 表示什么

""就是只有一个/0的字符串 "China"  :[C][h][i][n][a][/0]""       :[/0]"/0"     :[/0][/0]char *strcpy(char *dest, char *src){    char *p = dest;    while (*dest++ = *src++)        ;    re

2009-06-15 10:33:00 735

原创 sigwait函数

综合网上的一些资料,说明下sigwait的用法#include int sigwait(const sigset_t *restrict set, int *restrict signop);Returns: 0 if OK, error number on failure  sigwait的作用是:挂起进程,对于参数指向的sigset_t里的信

2009-06-12 00:14:00 2106

转载 sigsuspend 函数 释疑

手册:       #include        int sigsuspend(const sigset_t *sigmask);The   sigsuspend()   function   shall replace the current signal mask of the calling thread with the set of signals pointed to by sigm

2009-06-11 01:45:00 2502 1

转载 getopt的用法

 getopt被用来解析命令行选项参数。就不用自己写东东处理argv了。#include        extern char *optarg;  //选项的参数指针       extern int optind,   //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。        extern int opterr,  //当opterr=0时,getopt

2009-06-10 00:03:00 794 1

原创 C语言开发应该注意的问题

今天看了个关于这方面的贴子,花时间总结一下,方便日后查询^_^1.内存泄露 2.内存管理/内存碎片 3.空指针/野指针 4.字节对齐 5.不可重入/可重入函数 6.中断接口  1.内存泄露   一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,

2009-06-08 14:47:00 670

转载 fgets()返回的字符串会连/n一起返回

遇到了奇怪的事情,代码是这样的:    char str[100];    fgets(str, sizeof(str)-1, fp);    str[sizeof(str)-1] = /0;    gethostbyname(str);     //在这里始终不能得到想要的结果    而直接用常量就可以:    gethostbyname("www.baidu.com");    其原因

2009-06-07 01:35:00 961

原创 关于网络编程遇到的小问题

这一阵子正在学《unix网络编程:进程间通信》,编译时遇到点小问题,下面是找到的方案,在这里提下(一)1,download the source file unpv22e.tar.gz 2,tar -xf unpv22e.tar.gz,then all files will be extracted in to directory unpv22e 3,./configure,in most

2009-06-06 14:53:00 1169

转载 Linux上的终端设备

在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。 在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写,Teletype是最早出现的一种终端设备,很像电传打字机,是由Teletype公司生产的。Linux中包含如下几类终端设备: 1、串行

2009-06-02 21:27:00 1359

转载 getopt函数的使用

每一天你都在使用大量的命令行程序,是不是感觉那些命令行参数用起来比较方便,他们都是使用getopt来实现的。在Linux下使用getopt写程序是一种比较cool的事情,下面来简单的介绍一下getopt的使用。=== getopt使用 ===在讨论参数处理之前,我们先明确两个概念:选项、选项参数gcc -g -o test test.c我们经常使用上面的命令来编译程序,这里g和o就是选项,其中te

2009-05-31 11:45:00 1239 1

空空如也

空空如也

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

TA关注的人

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