
[linux编程]
jhonguy
这个作者很懒,什么都没留下…
展开
-
TCP三次握手/四次挥手
通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手注:以下说明最好能结合”图:TCP的状态机”来理解。SYN : (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。ACK : (确认编号,Acknowledgement Number转载 2012-05-03 13:28:03 · 540 阅读 · 0 评论 -
The C10K problem
[Help save the best Linux news source on the web -- subscribe to Linux Weekly News!]It's time for web servers to handle ten thousand clients simultaneously, don't you think? After all, the web is a转载 2012-05-18 13:20:38 · 658 阅读 · 0 评论 -
实现了一个比nginx速度更快的HTTP服务器
http://www.cnblogs.com/clowwindy/archive/2011/09/23/2185979.html转载 2012-05-18 13:28:03 · 522 阅读 · 0 评论 -
rsync 的核心算法
http://coolshell.cn/articles/7425.html rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。rsync转载 2012-05-18 14:40:31 · 551 阅读 · 0 评论 -
BackTrack5 R2 KDE下Vmware tools的安装
1.用mkdir /etc/cups/ppd创建ppd目录,免得最后出现下面错误,导致vmwraetools安装失败Unable to create symlink "/etc/cups/ppd/VMware_Virtual_Printer.ppd" pointing to file "/usr/lib/vmware-tools/configurator/thinprint.ppd".原创 2012-08-09 14:59:18 · 1885 阅读 · 1 评论 -
Linux C语言内联汇编使用
最近要改个C语言算法的关键部分用汇编语言实现,Linux里嵌入汇编基本使用AT&T汇编,比如Linux系统的启动部分用的就是AT&T汇编 。以前学过AT&T汇编,但学过一段时间就忘了,但对Intel汇编基础比较熟悉,两者使用方法基本相似,所以对着Intel汇编,花点时间看AT&T汇编也就容易了。下面看一下两者的区别,然后给出Linux语言中嵌入AT&T汇编的具体的例子。一、AT&T汇编和I转载 2012-08-10 14:52:02 · 693 阅读 · 0 评论 -
setsockopt设置socket状态
setsockopt设置socket状态1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket转载 2012-08-10 01:55:35 · 384 阅读 · 0 评论 -
再谈iptables防火墙的连接状态
from:http://waringid.blog.51cto.com/65148/517656 前言 在前面的文中讲过了iptables防火墙连接状态中的ESTABLISHED状态(http://waringid.blog.51cto.com/65148/512140)。除了这个状态之外,iptables还有以下状态,且听我慢慢道来。实验的网络结构以下图为准。NEW转载 2012-08-30 00:50:30 · 719 阅读 · 0 评论 -
gcc内嵌汇编简介收藏
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编 例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"asm"是转载 2012-10-15 15:46:26 · 463 阅读 · 0 评论 -
Linux中_ALIGN宏背后的原理——内存对齐
1. 原理 int a; int size = 8; 1000(bin) 计算a以size为倍数的下界数: 就让这个数(要计算的这个数)表示成二进制时,最后三位为0就可以达到这个目标。只要下面这个数与a进行"与运算"就可以了: 11111111 11111111 11111111 11111000 而上面这个数实际下转载 2012-11-29 16:04:39 · 606 阅读 · 0 评论 -
使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符
通过fcntl设置FD_CLOEXEC标志有什么用? close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。 我们经常会碰到需要fork子进程的情况,而且子进程很可能会继续exec新的程序。这就不得不提到子进程中无用文件转载 2012-11-17 20:52:43 · 1230 阅读 · 1 评论 -
程序分析工具gprof介绍
from:http://www.cnblogs.com/huangpeng/archive/2009/02/17/1392456.html程序分析工具gprof介绍程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析。程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容。二是以系统优化为目的,通过对转载 2012-11-23 16:32:02 · 530 阅读 · 0 评论 -
C语言中的typeof
关键字typeof用于获取表达式的数据类型。只有部分编译器支持,这个特性在linux内核中应用非常广泛,1. const typeof( ((type *)0)->member ) *__mptr = (ptr);是定义一个__mptr指针变量,类型和member的类型一样typeof是获得一个变量的类型,((type *)0)->member 则是tpye类型中的member 变量,转载 2012-12-24 12:35:06 · 5164 阅读 · 1 评论 -
epoll使用详解(精髓)
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2012-05-18 13:09:51 · 434 阅读 · 0 评论 -
epoll使用
epoll使用epoll的工作原理是,你如果想进行IO操作时,先向epoll查询是否可读或可写,如果处于可读或可写状态后,epoll会通过epoll_wait函数通知你,此时你再进行进一步的recv或send操作。epoll仅仅是一个异步事件的通知机制,其本身并不作任何的IO读写操作,它只负责告诉你是不是可以读或可以写了,而具体的读写操作,还要应用层自己来作。epoll仅提供这种机制也转载 2012-05-18 13:09:10 · 437 阅读 · 0 评论 -
利用 squid 反向代理提高网站性能
本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术,实现了网站的负载均衡,从而提高了网站的可用性和可靠性。现在有许多大型的门户网站如 SINA 都采用 squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 WEB转载 2012-05-03 14:48:32 · 363 阅读 · 0 评论 -
Proxy源代码分析
这段代码虽然只是描述了最简单的 proxy 操作,但它的确是经典,它不仅清晰地描述了客户机/ 服务器系统的概念,而且几乎包括了 Linux 网络编程的方方面面,非常适合 Linux 网络编程的初学者学习。 这段 Proxy 程序的用法是这样的,我们可以使用这个 proxy 登录其它主机的服务端口。假如编译后生成了名为 Proxy 的可执行文件,那么命令及其参数的描述为:转载 2012-05-03 13:41:55 · 1840 阅读 · 0 评论 -
Introduction to non-blocking I/O
Introduction to non-blocking I/OPrograms that use non-blocking I/O tend to follow the rule that every function has to return immediately, i.e. all the functions in such programs are nonblocking. Thu转载 2012-05-17 13:25:56 · 655 阅读 · 0 评论 -
一个简单的基于多线程的web server
下面是一个朋友chunjian的一个简单的基于多线程的httpd。/*-------------------------------------------------------------------------------------------------gcc -o httpd httpd.c -lpthread author: chunjian,wyezl2006.转载 2012-05-17 15:22:41 · 412 阅读 · 0 评论 -
How to use epoll? A complete example in C
https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/Network servers are traditionally implemented using a separate process or thread per connection. For high performance applications th转载 2012-05-17 17:13:37 · 675 阅读 · 0 评论 -
apache的AB测试详解
APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录。格式: ./ab [options] [http://]hostname[:port]/path参数:-n requests Number of requests to perform//在测试会话中所执行的请求个数。默认时,仅执行一个请求 -c concurrency Number转载 2012-05-17 13:57:42 · 1527 阅读 · 0 评论 -
压力测试之apache benchmark
http://reter107.iteye.com/blog/444697Apache Benchmark下载 ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很转载 2012-05-17 14:00:28 · 12245 阅读 · 2 评论 -
OpenSSL Examples
http://www.rtfm.com/openssl-examples/WARNING: THIS CODE IS UNMAINTAINEDI haven't done anything with this code since 2002. Hence the code has bit rotted. It still mostly works but there are (at lea转载 2012-05-17 15:05:38 · 585 阅读 · 0 评论 -
C Socket Programming for Linux with a Server and Client Example Code
Network servers are traditionally implemented using a separate process or thread per connection. For high performance applications that need to handle a very large number of clients simultaneously, th转载 2012-05-17 15:21:03 · 732 阅读 · 0 评论 -
对于linux socket与epoll配合相关的一些心得记录
对于linux socket与epoll配合相关的一些心得记录收藏 对于linux socket与epoll配合相关的一些心得记录没有多少高深的东西,全当记录,虽然简单,但是没有做过测试还是挺容易让人糊涂的 int nRecvBuf=32*1024;//设置为32Ksetsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*转载 2012-05-17 17:01:36 · 537 阅读 · 0 评论 -
Linux网络编程一步一步学-epoll同时处理海量连接的代码
Linux网络编程一步一步学-epoll同时处理海量连接的代码 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2012-05-17 17:26:59 · 564 阅读 · 0 评论 -
例解GNU C之指定初始化项目
http://blog.youkuaiyun.com/npy_lp/article/details/7010886转载 2012-12-24 13:01:27 · 537 阅读 · 0 评论