c语言
caoyaobin
这个作者很懒,什么都没留下…
展开
-
c语言中的static inline
inline的作用仅仅是建议编译器做内联开展处理,而不是强制。内联函数(inline)可以减少CPU的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数。通常,程序执行时,处理器从内存中读取代码执行。当程序中调用一个函数时,程序跳到存储器中保存函数的位置,开始读取代码执行,执行完后再返回。为了提高速度,C语言定义了inline转载 2015-02-11 16:21:57 · 13507 阅读 · 0 评论 -
数据对齐
一、什么是数据对齐1、现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2、访问数据的地址要满足一定的条件,能被这个数据的长度所整除。 例如,1字节数据已经是对齐的,2字节的数据的地址要被转载 2015-04-19 17:05:53 · 274 阅读 · 0 评论 -
c语言实现的http请求
/* * ===================================================================================== * * Filename: RequestHttp.c * * Description: * * Version: 1.0 * Created: 2006年12月31日 13時14分25转载 2015-03-10 21:55:27 · 950 阅读 · 0 评论 -
webbench-3
我们首先来看一下webbench的工作流程,如下图: webbench主要的工作原理就是以下几点:1. 主函数进行必要的准备工作,进入bench开始压测2. bench函数使用fork模拟出多个客户端,调用socket并发请求,每个子进程记录自己的访问数据,并写入管道3. 父进程从管道读取子进程的输出信息4. 使用alarm函数进行时间控制,到时间后转载 2015-03-10 08:36:34 · 307 阅读 · 0 评论 -
tinyhttpd使用祥解
http://www.oschina.net/p/tinyhttpdtinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。要在linux平台上运行,首先,按照作者的提示,注释掉一些东西:This program compiles for转载 2015-03-17 19:11:31 · 2850 阅读 · 1 评论 -
unsigned long
DescriptionUnsigned long variables are extended size variables for number storage, and store 32 bits (4 bytes). Unlike standard longs unsigned longs won't store negative numbers, making their rang转载 2015-03-07 16:42:47 · 413 阅读 · 0 评论 -
struct-hostent *gethostbyname(const char *name)详解
struct hostent *gethostbyname(const char *name);gethostbyname函数根据域名解析出服务器的ip地址,它返回一个结构体struct hostent:#include struct hostent { char *h_name; /* official name of host */ ch转载 2015-03-08 12:51:21 · 735 阅读 · 0 评论 -
pipe()
Pipe即管道。 以下讲解均是基于Linux为环境: 函数简介所需头文件 #include 函数原型 int pipe(int fd[2]) 函数传入值 fd[2]:管道的两个文件描述符,之后就是可以直接操作这两个文件描述符 返回值 成功 0 失败 -1 什么是管道管道是Linux 支持的最初Unix IPC形式之一,转载 2015-03-08 15:40:35 · 324 阅读 · 0 评论 -
webbench源码分析
根据提供的参数构造http请求的消息头,然后fork出N个子进程(也就是webbench时候提供的参数-c N),每个子进程根据根据参数-t提供的时间,持续这么多秒,这这么长的时间内利用socket创建一个tcp连接到我们想要的网址页面。然后每个进程统计自己再这个时间内取得了多少页面和多少数据,然后由父进程统计,最后发送的consel上面来。我提取出主要的几个函数void buil转载 2015-03-06 21:45:22 · 344 阅读 · 0 评论 -
详解c语言中的volatile
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo转载 2015-03-04 12:52:35 · 364 阅读 · 0 评论 -
h文件和.c文件的区别与联系
简单的说其实要理解C文件与头文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码转载 2015-03-02 09:06:43 · 466 阅读 · 0 评论 -
webbench
一直在寻找一款有效的网站压力测试"的文章">网站压力测试工具,今天试用了webbench之后,感觉非常满意,特地于大家分享.一.webbench简介Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.它的帮助文件和文档请到:www.webbench.com上查看.Webbech能测试处在相同硬件上,不同转载 2015-03-03 09:29:10 · 1198 阅读 · 0 评论 -
.c和.h文件的区别
一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了。同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢?2楼:子程序不要定义在.h中。函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误。 3楼:.h只做声明,编译后不产生代码 4楼: 这样做目的是为了实转载 2015-03-02 09:57:21 · 1914 阅读 · 0 评论 -
.c文件和.h文件的概念与联系-2
如果说难题最难的部分是基本概念,可能很多人都会持反对意见,但实际上也确实如此。我高中的时候学物理,老师抓的重点就是概念——概念一定要搞清,于是难题也成了容易题。如果你能分析清楚一道物理难题存在着几个物理过程,每一个过程都遵守那一条物理定律(比如动量守恒、牛II定律、能量守恒),那么就很轻松的根据定律列出这个过程的方程,N个过程必定是N个N元方程,难题也就迎刃而解。即便是高中的物理竞赛难题,最难之处转载 2015-03-02 09:31:00 · 357 阅读 · 0 评论 -
Linux下Gcc生成和使用静态库和动态库详解
一、基本概念1.1什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。 1.2库的种类linux下的库有两种:静态库和共享库(动态库)。转载 2015-07-20 10:53:58 · 250 阅读 · 0 评论