- 博客(20)
- 收藏
- 关注
转载 STL中的内存分配方式
转自(http://www.cnblogs.com/LUO77/p/5824625.html)在STL中考虑到小型区块所可能造成的内存碎片问题,SGI STL设计了双层级配置器,第一级配置器直接使用malloc()和free();第二级配置器则视情况采用不同的策略:当配置区块超过128bytes 时,则视之为足够大,便调用第一级配置器;当配置区块小于128bytes时,则视之为过小,为了降低额外负担
2017-10-02 11:58:19
2302
原创 关于快恢复算法中的一些问题
TCP Reno这个算法定义在RFC5681。快速重传和快速恢复算法一般同时使用。快速恢复算法是认为,你还有3个Duplicated Acks说明网络也不那么糟糕,所以没有必要像RTO超时那么强烈,并不需要重新回到慢启动进行,这样可能降低效率。所以协议栈会做如下工作cwnd = cwnd/2 sshthresh = cwnd 然后启动快速恢复算法:设置cwnd = ssthresh+ACK个
2017-08-18 16:49:38
1819
转载 C++中指针和引用的区别
指针和引用的区别(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针.由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值.String & rs = string1;由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有效
2017-08-16 13:34:44
348
原创 C++多态的实现
C++多态的分类C++多态分为两类:静态多态动态多态静态多态静态多态是在编译期间就可以确定函数的调用地址,也称为早绑定。 静态多态一般通过函数重载实现,即函数名相同,根据参数的类型不同实现多态。int add(int x,int y) { return x+y;}float add(float x,float y) { return x+y;}另外一种方法就是C++的模版
2017-08-14 10:48:32
417
原创 TCP协议的三次握手和四次挥手
这张图是我们学习TCP三次握手和四次挥手的宝贝!!三次握手1.第一次握手:建立连接。客户端发送连接请求报文段,将SYN置为1,Sequence Number为x;之后客户端进入SYN_SENT状态,等待服务端的确认。 2.第二次握手:服务器收到请求连接报文段之后,需要对这个报文段进行确认,设置ACK的值为x+1;同时还要发送自己的SYN请求信息,将SYN设置为1,seq值设为y;将这些信息放到一个
2017-08-12 19:53:32
399
原创 分布式系统学习笔记
分布式系统的定义分布式系统就是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。当在不同的主机执行不同的功能来最终完成同一个服务,这就可以叫做分布式系统。当在不同的主机执行相同的功能,这就叫做集群。集群就是将相同的程序,通过不断横向扩展,以提高服务能力的方式。分布式系统的优势分布式系统因为将数据、功能等都分到多个主机,这样如果发生由于各种原因而导致的主机崩溃的时候,我们可以减轻风险,另
2017-08-10 14:24:55
537
原创 C的多态
C++可以实现多态,并且很大程度上降低了代码的复杂性,但是对于C语言,也是可以实现多态的。C++通过类可以实例一个对象,C语言用结构体来实例一个对象,用函数指针实现多态。多态,就是一个接口能够有多种不同的实现方式。在我的理解里,在结构体里申明一个函数指针就是开了一个接口,在不同的对象里可以通过这个函数指针调用不同的函数,从而实现了多态。而继承就更好实现了,先定义一个结构体当作基类,在子类中定义一个基
2017-07-27 15:55:03
561
原创 C++的垃圾回收
这个问题实在去哪儿网的面试的时候一个面试官问到的一个问题,当时真的是一脸懵逼,只听说过JAVA的垃圾回收机制,没听过关于C++的垃圾回收啊,所以下来之后自己又了解了一下。首先,C++一定是可以进行垃圾回收的。我们可以通过扫描并且标记内存中所有可能被使用的内存块,然后将已经分配出去的内存块中的没有被标记的内存块回收回来。但是要怎样才能扫描出所有可能被使用的内存块?首先,通过扫描内存的数据,能够识别出指
2017-07-25 14:33:45
938
原创 STL vector学习笔记
1. vector 概述vector与数组非常相似,两者唯一的差别在于空间的运用的灵活性,array是静态空间,而vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。2. vector的迭代器vedctor维护的是一个连续线性空间,所以不论其元素型别是什么类型,普通指针都可以作为vector的迭代器而满足所有必要条件。vector ::iterator ivite; v
2017-07-09 16:46:29
251
转载 C语言函数sscanf()的用法
原文链接 在我的学习过程中,从文件读取数据是一件很麻烦的事,所幸有sscanf()函数。C语言函数sscanf()的用法sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 … ); int scanf( const char *format
2017-07-04 09:31:12
336
原创 C++的继承
创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承一个已经存在的类。这个已经存在的类叫做基类,新建的类叫做派生类。访问控制和继承派生类可以访问基类中所有的非私有成员。有如下表所示: 访问 public protected private 同一个类 yes yes yes 派生类 yes yes no 外部的类 yes n
2017-05-16 20:54:02
376
原创 top命令学习笔记
top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。top的使用方式top [-d number] | top [-bnp]参数解释:-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。-b:以批次的方式执行top。-n:与-b配合使用,表示需要进行几次top命令的输出结果。-p:指定特定的pid进程号进行观
2017-05-08 14:44:49
577
原创 C与C++中的const用法
const用法总结1.在使用const定义变量时要初始化,因为定义之后就不能更改了。 2.const在 * 左边的修饰的是指向的内容,const在 * 右边的修饰的是指针本身。const修饰基本数据类型int const a = 10; //定义一个不能进行更改的常量a=10const int a = 10;
2017-04-22 16:14:36
306
原创 数据结构——二叉查找树
二叉查找树二叉查找树满足以下条件: 1.左子树上的所有节点值均小于根节点的值; 2.右子树上的所有节点值均大于根节点的值; 3.左右子树也满足上述来年改革条件。二叉查找树的查找操作这个操作需要返回指向树T中具有关键字X的节点的指针。若节点T中的关键字是X则返回T,若T中的关键字不是X,则对左子树或者右子树递归调用查找操作,若不存在这样的节点则返回NULL。实现代码如下:
2017-04-16 22:04:13
407
原创 数据结构——树的遍历相关笔试题
一颗二叉树的先序遍历:ABDECFG;中序遍历:DBEAFCG;后序遍历:DEBFGCA。对于二叉树的遍历在之前的博客中有介绍: http://blog.csdn.net/Su_coding/article/details/701844191.根据先序和中序遍历写出后序遍历:思路:根据先序遍历可知根节点为A;根据中序遍历可知DBE为A的左子树,FCG为A的右子树;递归实现,把DBE当作一颗新
2017-04-16 16:25:40
2366
原创 数据结构——树的实现
在做树的遍历的时候发现自己对实现树的方法不太了解,也就是不知道怎么把一棵树的结构存到内存中,所以对树的实现找了一些资料,自己也研究了一下。首先,要想让计算机正确的保存你的“树”,你要用一种和你代码相匹配的输入方式,我用的是采用广义表表示的输入法,例如:A(B(D,E),C(F,G))。 这个式子可以分为以下几部分: A(B,C): A是这个结构的根节点,B,C是A的两个孩子。 A(B(D,
2017-04-16 13:44:37
554
原创 数据结构——树的遍历
二叉树的遍历1.深度优先遍历1.1先序遍历按照“根节点 - 左孩子 - 右孩子”的顺序进行访问 先序遍历的递归实现代码如下:void pre_traverse(BTree pTree){ if(PtRee) { printf("%c ",pTree->data); if(pTree->pLchild) pre_travers
2017-04-15 14:38:01
745
原创 数据结构——树
树的定义在计算机科学中,树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成的一个具有层状关系的集合。把它叫“树”是因为它看起来像一颗倒挂的树,也就是说它是根朝上而叶朝下的。树的相关术语节点的度:一个节点含有的子树的个数称为该节点的度。树的度:一棵树中,最大的节点的度称为树的度。叶子结点:没有子节点的节点。父节点:若一个节点含有子
2017-04-14 20:13:16
434
原创 多进程编程——fork()
一、进程的概念进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。二、进程的创建fork函数#include <unistd.h>pid_t fork(void); 返回值:在子进程中为0,在父进程中为子进程ID,若出错为-1 fork函数的工作
2017-04-12 20:20:41
834
原创 Socket网络编程中的函数详解
Socket网络编程中的很多函数既可以在服务端调用也可以在客户端调用,这篇博文对每个函数只介绍一次。 一、服务端经常调用的函数: 1)socket():创建一个套接口。#include <sys/socket.h>int socket(int domain, int type, int protocol); *domain: 协议域,又称为协议族。常用的协议有AF_INET、AF
2017-04-12 17:20:10
960
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人