自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 keepalive、pipe、lingering_close

本篇介绍一下nginx中一个http请求相关的概念—keepalive。在nginx中,对于http1.0与http1.1也是支持长连接的。什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来

2017-03-30 11:38:39 656

原创 SIGPIPE信号

SIGPIPE信号详解当服务器端kill掉一个已连接的子进程时(也就是close一个连接),如果客户端不理会 该操作,反而写入更多的数据到服务器上,会发生什么呢?这种情况是可能发生的,举例来说,客户可能在读回任何数据之前执行两次针对服务器的写操作,而RST是由其中第一次写操作引发的。适用于此的规则是:当一个进程向某个已收到RST的套接字执行写操作时,内核向该进程发送一个SIGPIPE信号。

2017-03-28 16:00:14 1237

原创 bind函数—绑定地址和端口

在调用bind函数是,可以指定一个端口号,或指定一个IP地址,也可以两者都指定,还可以都不指定。服务器在启动时捆绑它们的众所周知端口。如果一个TCP客户或服务器未曾调用bind捆绑一个端口,当调用connect或listen时,内核就要为相应的套接字选择一个临时端口。让内核来选择临时端口对于TCP客户来说是正常的,除非应用需要一个预留端口;然而对于TCP服务器来说却极为罕见,因为服务器

2017-03-27 22:11:22 10122

原创 线程同步—条件变量和信号量

上一节提到了线程互斥和同步的概念,并且给出了两种用于解决共享资源互斥的利器:互斥锁和读写锁。那么本节将介绍两种用于解决线程同步的概念:条件变量和信号量。一. 条件变量1.基本概念互斥锁的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足。条件变量的内部实质上是一个等待队列,放置等待(阻塞)的线程,线程在条件变量上等待和

2017-03-24 11:40:44 1854

原创 函数不能传递动态内存

下面这道面试题是有关指针、动态内存分配的相关内容,感觉比较经典,记录下来大家共享。问题:What will happen after running the "Test"?#include using namespace std;void GetMemory(char* p, int num){ p = (char*)malloc(sizeof(char*)num);};

2017-03-20 11:51:34 2240 5

原创 用select改进回射客户-服务器模型

这一节主要来说一下如何用select函数来改进我们前面的客户端-服务器模型。前面我们在处理多客户端模型时,每当连接一个客户端时,服务器端就需要开辟一个新的进程来处理新的客户端,这样就会耗费很大的内存资源。而select函数允许进程指示内核等待多个事件中的任何一个发生,并只有在有一个或多个事件事件发生或经历一段指定的时间后才唤醒它。或者说select具有管理多个I/O的能力,对于多个套接口,

2017-03-05 15:46:24 436

原创 回射客户-服务器模型(4)

由于TCP是一种基于字节流的传输,属于无边界传输,所以它不能够处理消息与消息之间的边界问题,因此存在粘包问题。如下图所示:M1和M2是从主机A传送到主机B的两条消息,那么中间可能有几种传输情况:a. 两条消息刚好分别完整的传输;b. 先传输M1和M2的一部分,然后M2的另一部分单独传输;c. 先传输M1的一部分,然后M1的另一部分和M2一起传输;粘包产生的原

2017-03-05 11:59:14 385

空空如也

空空如也

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

TA关注的人

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