9 sunshinewave

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2w+

TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系

在有关TCP连接的很多配置中,有很多选项有的配置 net.ipv4.tcp_rmem:这个参数定义了TCP接收缓冲(用于TCP接收滑动窗口)的最小值、默认值、最大值net.ipv4.tcp_wmem:这个参数定义了TCP发送缓冲(用于TCP发送滑动窗口)的最小值、默认值、最大值netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。

2016-04-18 22:28:01

C++虚函数表详细解释及实例分析

C++的虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖(override)的问题,保证其能真实的反应实际的函数。这样,在有虚函数的类的实例中这张表被分配在了这个实例的内存中,所以当我们用父类的指针操作一个子类的时候,这张虚函数表就显得尤为重要了,他就像一个地图

2016-04-06 22:20:01

linux系统性能优化及瓶颈分析

一,用vmstat分析系统I/O情况[root@localhost ~]# vmstat -n 3       (每个3秒刷新一次)procs-----------memory--------------------swap--- ---io---- --system---- ------cpu--------r   b    swpd   free       buff      

2016-04-04 19:49:15

C/C++中的预编译指令

程序的编译过程可以分为预处理、编译、汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程读入源代码之后,会检查代码里包含的预处理指令,完成诸如包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码的工作。下面介绍一些C/C++中预编译的指令。一 #指令预处理指令以#号开头,并且#号必须是该行除了

2016-03-30 23:17:28

线程同步之互斥锁、读写锁和条件变量

一,使用互斥锁1,初始化互斥量[cpp] view plain copypthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER;//静态初始化互斥量  int pthread_mutex_init(pthread_mutex_t*mutex,pthread_mutexattr_t*attr

2016-03-28 23:22:26

Linux 线程同步的三种方法

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。一、互斥锁(mutex)通过锁机制实现线程间的同步。初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。静态分配:pthread_mutex_t mutex = PTHR

2016-03-28 22:59:59

RTP 协议

RTP 协议概述:实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合R

2016-03-25 21:17:48

RTSP实例解析

核心提示:rtsp简介(ZT) Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一 种可扩展的框架,使能够提供能控制的,按需传输实时数据,比如音频和视频文件 rtsp简介(ZT)Real Time Streaming Protoc

2016-03-25 21:05:16

关于sizeof

首先要明确sizeof是运算符不是函数。sizeof()。括号内的内容在编译过程中是不被编译的,而是被替代类型。       如a = 8;sizeof(a),a不管是什么,只是被替换成类型sizeof(int),结果是4.如果sizeof(a=6)呢,也是一样被替换成a的类型int。但要注意a=6是不被编译的,所以执行完sizeof(a=6)后,a的值还是8。是不变的。请记住一下的几个结

2016-03-23 20:21:21

C++ 关键字const

const主要为了防止所修饰的变量再次被修改。一般在定义的时候初始化但const类的成员变量必须在构造函数的初始化列表中初始化。    以下是const的常见用法:     1,用于定义常量变量,这样这个变量在后面就不可以被修改const int a = 9; a=8;//错误不能再被修改     2,保护函数参数不被改变void foo(const int& val){

2016-03-22 23:31:41

TCP传输控制协议总结

TCP位于TCP/IP四层协议的第三层,属于传输层协议。它提供面向连接的 可靠的字节流服务。 TCP通过一下方式提供服务:   1. 应用数据被分割成TCP认为最合适发送的数据块。这和UDP完全不一样,应用程序产生的数据报长度保持不变。由TCP传递给IP的信息单位称为报文段或段。         2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能即是收到

2016-03-22 00:51:57

智能指针

在C++中,我们使用普通指针指向一个内存对象时,在使用完之后我们需要释放它。demo_ptr* = new demo_ptr;demo_ptr->foo();delete demo_ptr;如果我们在使用完之后忘记delete或者foo调用发生异常都会造成内存泄漏。这个时候智能指针的出现就是为了控制对象的生命周期。在智能指针中一个对象什么时候什么条件下释放由智能指针自身控制,用户不需要

2016-03-20 00:57:24

C++内存管理

这个问题已经被其他高手说的很多了,今天我也想谈一下我对C++内存管理的理解以及我在代码中是怎么内存管理的。一。内存分布:  C++内存分布主要有:  1,程序代码区:存放函数体的二进制代码。  2,常量区:存放数据常量  3,全局区(静态区):存放全局和静态变量(初始化和未初始化相邻存放)  4,栈区:存放局部变量,函数参数  5,堆区:存放new出来的变量或对象。

2016-03-19 12:41:03

new 和malloc的区别

1,malloc是c/c++标准库函数,new是c++运算符2,maloc返回指针类型是void*,new出来的指针具有类型信息3,malloc不能调用类的构造函数,new可以。为什么malloc不能调用构造函数?因为malloc是库函数,不是运算符,不在编译器的控制范围之内,不能将构造函数的执行强加给malloc。

2016-03-18 16:53:26

慢启动快速恢复

上面讨论的两个机制都是没有检测到拥塞的情况下的行为,那么当发现拥塞了cwnd又该怎样去调整呢?首先来看TCP是如何确定网络进入了拥塞状态的,TCP认为网络拥塞的主要依据是它重传了一个报文段。上面提到过,TCP对每一个报文段都有一个定时器,称为重传定时器(RTO),当RTO超时且还没有得到数据确认,那么TCP就会对该报文段进行重传,当发生超时时,那么出现拥塞的可能性就很大,某个报文段可能在网

2016-03-18 12:17:17

哈希表

哈希表的概念        哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。散列存储的基本思路        以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块

2016-03-18 01:26:05

Linux下物理内存和虚拟内存交换机制

Linux下物理内存和虚拟内存交换机制 Vmstat是Virtual Memory Statistics虚拟内存统计缩写:物理内存是计算机内存的大小,从物理内存中读写数据比硬盘中读写数据要快很多,而内存是有限的,所以就有了物理内存和虚拟内存的概念。物理内存就是硬件的内存,是真正的内存。虚拟内存是为了满足物理内存不足采用的策略,利用磁盘空间虚拟出一块逻辑内存,用作虚拟内存的空间也

2016-03-17 22:29:39

腾讯后台开发面试题及答案

转自:http://blog.csdn.net/ibmfahsion/article/details/11992403?utm_source=tuicool&utm_medium=referral简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的

2016-03-17 01:24:47

TCP 的那些事儿(下)

转自:http://kb.cnblogs.com/page/209101/  这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前

2016-03-16 01:04:46

TCP那些事

TCP那些事上: http://kb.cnblogs.com/page/209100/TCP那些事下:http://kb.cnblogs.com/page/209101/

2016-03-16 00:41:36

查看更多

勋章 我的勋章
    暂无奖章