随笔分类 - Linux高性能服务器编程
《Linux高性能服务器编程》学习心得
摘要:在多进程编程中,我们用fork系统调用创建子进程,值得注意的是,fork函数复制当前进程并在内核进程表中创建一个新的表项,其堆、栈指针,标志寄存器的值都和父进程相同,但是其ppid被设置成父进程pid,信号位图被清除。而子进程代码和父进程完全相同,其数据也会复制自父进程,但是其复制过程是写时复制,即
阅读全文
摘要:书上内容不多,已下载Libevent源码,待学习。
阅读全文
摘要:第十一章 定时器 这里的定时器主要指的是定时器容器,TCP连接中有保活定时器,为了定期查看TCP连接是否断开,可以用socket选项实现,但是较为麻烦,所以一般都由应用层负责保活,这是定时器的一个运用场景,或者在应用层需要执行一些定时操作,这样就需要一个高效的定时器容器,主要是时间轮和时间堆,当然定
阅读全文
摘要:第十章 信号 Linux中信号是由用户、系统或进程发送给目标进程的信息,用来通知进程某个状态的改变或系统异常,其产生条件如下:1)对于前台进程,用户可以通过输入特殊的终端字符来发送信号,比如Ctrl+C发送中断信号;2)系统异常;3)系统状态变化,如SIGALRM信号;4)运行kill命令或使用ki
阅读全文
摘要:第九章 I/O复用 I/O复用技术是重要的提高服务器工作效率和性能的手段,Linux下实现I/O复用的系统调用主要有select、poll和epoll。 首先我们来看一下select的函数原型和常用的宏: 首先来看select函数原型,nfds指定了被监听的文件描述符的总数,其值通常被设定为所有文件
阅读全文
摘要:第八章 高性能服务器程序框架 我们将服务器一般分为三个主要模块,I/O处理单元、逻辑单元及存储单元。常用的服务器模型有C/S模型和P2P模型,比较简单。我们来看一下网络编程中的I/O模型。首先我们要了解阻塞模型和非阻塞模型的区别,socket在创建时默认是阻塞的,可以在socket系统调用的第二个参
阅读全文
摘要:第七章 Linux服务器程序规范 服务器程序除了需要网络通信外,还应该考虑很多其他的细节,而这些细节很多很杂,但又基本是模板式的。1)服务器程序基本都是以后台形式运行的,没有控制终端,不能接受用户输入,其父进程通常是init。2)服务器程序有一套日志系统。3)服务器程序以某个专门的非root身份运行
阅读全文
摘要:第六章 高级I/O函数 网络I/O一直是Linux网络编程中极其重要的一部分,除了前面讲到的send、recv等,socket编程接口还给出了很多高级了I/O函数,这些函数大致分为三类:用于创建文件描述符的函数、用于读写控制的函数和用于控制I/O行为和属性的函数。 pipe函数是用来创建一个管道,管
阅读全文
摘要:第五章 Linux网络编程基础API 对于网络编程,首先要了解的就是字节序的问题,字节序分为主机字节序和网络字节序,主机字节序又称小端字节序,是低字节存放在地地址,而网络字节序又称大端字节序,是低字节放在高地址。当数据在不同的机器上传播时,就需要统一字节顺序以保证不出现错误。在发送数据前,先将需要转
阅读全文
摘要:第四章 TCP/IP通信案例:访问Internet上的Web服务器 HTTP协议是工作在应用层上的协议,其应用十分广泛,而在进行通信的过程中,经常使用HTTP代理服务器。HTTP代理服务器主要分为:正向代理服务器,反向代理服务器和透明代理服务器。其中,正向代理服务器要求客户端自己设置代理服务器的地址
阅读全文
摘要:第三章 TCP协议详解 TCP协议是TCP/IP协议族中另外一个重要的协议,作为传输层上的协议,它更靠近应用程序,所以具有更强的可操作性,许多socket选项都是针对TCP协议设置的。 我们在第一章提到过,传输层协议主要有两个,TCP协议和UDP协议,并说明了两者的区别,简单来说,TCP协议双方再数
阅读全文
摘要:第二章 IP协议详解 IP协议是TCP/IP协议族中的核心协议,也是socket网络编程的基础之一。IP协议的特点是为上层提供无状态、无连接、不可靠的服务。 无状态是指IP通信双方不同步传输数据的状态信息,通俗一些说就是双方发送的IP数据报是相互独立的,没有任何上下文关系。这样的特性缺点在于无法处理
阅读全文
摘要:在学长的推荐下,我用了大约半个月的时间学习了游双老师的《Linux高性能服务器编程》一书。通读此书,感觉这本书在知识广度上已经很足,对网络协议与编程方面的基础知识栈都有讲解,语言也比较通俗易懂,确是一本对于有一定网络基础也想继续深入学习的同学的好书,但由于篇幅有限,对于部分知识点的讲解没有深入。 本
阅读全文

浙公网安备 33010602011771号