自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yxccc的博客

欢迎来到我的博客

  • 博客(11)
  • 收藏
  • 关注

原创 【转载】select和poll调用深入解析

select调用深入解析 poll调用深入解析 上面两个链接写关于select和poll底层是怎样工作,很细心对源代码进行剖析,解释得挺详细的。特别是关于poll。其实select和poll底层都是把fd copy到内核,遍历所有fd数组,然后把对应的进程(当前进程)挂载到专属于这个fd的等待队列上面。如果这个fd可读或可写,就在队列中激活进程。然后内核再填写好状态,copy回用户空间。用户跳出

2017-02-19 22:25:33 261

原创 I/O复用:pselect

int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout,

2017-02-19 13:53:06 346

原创 小端与大端

小端:将低序的存在低地址。 大端:将低序的存在高地址。与小端相反。 譬如 x=0x1234 低序=34,低序号的数,排在后面的数。 低地址=内存地址 0x1000 < 0x1001. char a[2]; a[0]肯定是低地址; a[1]肯定是高地址;其实理解这个目前来说没什么用,在网络编程中,htons、htonl、ntohs、ntohl可以直接转换主机字节序和网络字节序。在发送到网

2017-02-19 11:25:35 4608

原创 《深度探索C++对象模型》:copy constructor

1.只有三种情况会调用copy constructor (1)X xx=x; (2)参数 (3)返回值2.bitwise copy semantice 按位直接复制,类似memset3.一个class不展现出“bitwise copy semantice”的4种情况 (1)class中有个class member并且有一个copy constructor(user code或合成的)。

2017-02-17 13:35:01 432

原创 HTTP基础

1.报文格式 (1)请求报文<method> <request-URL> <version><headers><entity-body>(2)响应报文<version> <status> <reason-phrase><headers><entity-body>2.HTTP协议get和post的区别 (1)get通常用于请求服务器发送某个资源,post通常用于向服务器输入数据,比如html表

2017-02-16 21:05:54 266

原创 TCP/IP:tcp快速重传和快速恢复

1.重传会分为超时和3次重复确认后重传两种。快速重传就是指接收方重复3次确认同一个序号时,发送方立即重传。第1次不算在重复里面,所以一共发了4次ACK。2.《tcp/ip 协议》描述的快速恢复有点乱。简单来讲,就是快速重传后执行拥塞避免算法,而不是慢启动算法。通过控制慢启动窗口ssthresh和拥塞窗口cwnd的值就可以实现。具体如下 (1)接收方发送第1次数据确认ACK。这里假设序号6657,表

2017-02-05 19:42:18 3656

原创 TCP/IP:UDP(4) 缓存与抑制

1.UDP协议,发送方有一个虚拟的发送缓存区。假的,意思是UDP应用程序生成数据报,就直接发送出去,不做任何处理。发送缓存区主要是限制单个数据报的大小。如果写一个太大的数据报,内核返回该进程一个EMSGSIZE错误。因为UDP是不可靠的,它不必保存应用进程数据的一个副本,因此无需一个真正的发送缓存区。2.UDP接收方具有接收缓存区,输出队列是FIFO的。3.接收缓存区有固定大小,可以通过SO_RCV

2017-02-04 14:25:08 597

原创 TCP/IP:UDP(3) ICMP

1.ICMP报文格式 报文中有一个字段是下一站网络的MTU。但是有些路由器不支持。如果不支持,“下一站网络的MTU”=0.2.确定路径最小MTU时,通常设置“不分片”标志比特。3.不应该让源端对IP数据报分片(除非源端已经不允许通过),应该是把DF设成0,然后让具有最小MTU的路由器来完成分片。

2017-02-03 19:46:34 318

原创 TCP/IP:UDP(2) IP分片

1.IP分片 讲ip分片就要借助IP首部(图借助于网络) 分片涉及的字段有 (1)总长度 (2)标识 (3)标志 (4)片偏移分片的步骤 (1)对于每份IP数据报,首部标识字段具有唯一值,用于识别同一数据报。该字段在分片时复制到各个片。 (2)标志字段为1,表示还有更多片等着拼接,最后一片=0; (3)片偏移字段指代偏移原始数据报开始位置。 (4)分片后,总长度改为每个片的值

2017-02-03 18:20:15 420

原创 TCP/IP:UDP(1)

1.UDP不提供可靠性意味着:把应用程序传给IP层的数据发送出去,但是并不保证它们能够到达目的地.2.应用程序必须关心IP数据报的长度.如果超过网络的MTU,那么就要对IP数据报进行分片.并不是只是发送端连接的第一个网络才切片,而是途径的,从源端到目的端之间的每个网络都可能进行分片(如果要分片).3.UDP首部:(图来源于网络,是正确的) 有几点需要注意的: (1)UDP长度是指UDP首部和

2017-02-03 15:18:48 372

原创 c++,vector的[]和at区别

std::vector<int> a; std::cout<<a.size();上面输出是0.容器初始化什么都不做,大小为0; std::vector<int> a;// std::cout<<a.size(); a[0]=1; a.at(0)=1;下标[]赋值会显示SIGSEGV段错误,越界错误. at赋值会显示 terminate called after

2017-02-03 11:40:57 14663

空空如也

空空如也

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

TA关注的人

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