一、带宽估计TCP的带宽估计主要通过拥塞控制算法实现,用到两个变量:1、cwnd TCP对当前链路可用带宽的估计2、ssthreash 拥塞控制算法“假想”出来的可用带宽值二、丢包恢复丢包有三种情况:1、连续收到三个重复的ack2、sack和fack3、RTO超时,标记链路中所有数据包丢失
分类:
其他好文 时间:
2015-03-30 20:24:12
阅读次数:
138
Java集合中二分查找算法实现
Arrays.binarySearch实现了对有序数组特定区间的二分查找,虽然我们觉得很简答,但是阅读源码的确能看到实现这些库的优秀技巧,总是在追求完美和高效。
值得学习的地方有:
(1)边界检查;
(2)求中位数的时候使用位移操作,而不是 x/2;
(3)如果查找的元素不在数组中,通过返回值昭示了应该插入的位置,而不是直接返回-1;...
分类:
编程语言 时间:
2015-03-30 18:50:14
阅读次数:
165
在阅读Redis源码的时候,看到了两个文件:crc16.c、crc64.c。下面我抛砖引玉,简析一下原理。
CRC即循环冗余校验码,是信息系统中一种常见的检错码。大学课程中的“计算机网络”、“计算机组成”等课程中都有提及。我们可能都了解它的数学原理,在试卷上手工计算一个CRC校验码,并不是难事。但是计算机不是人,现实世界中的数学原理需要转化为计算机算法才能实现目的。实际上作为计算机专业背景人并不会经常使用或接触到CRC的计算机算法实现的原理,通常是电子学科背景的人士会接触的比较多点。计算机当...
分类:
其他好文 时间:
2015-03-29 22:13:31
阅读次数:
2659
对于暴力搜索法,当搜索词对应的字符与字符串中的字符不匹配时。将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把”搜索位置”移到已经比较过的位置,重比一遍。应用KMP算法之后,则有:
移动位数 = 已匹配的字符数 - 对应的部分匹配值
“部分匹配值”就是”前缀”和”后缀”的最长的共有元素的长度。KMP算法实现代码如下:void prefixFun(char *pat...
分类:
编程语言 时间:
2015-03-29 20:59:34
阅读次数:
259
逆序对定义:设A[1..n]是一个包含n个不同数的数组。如果在i A[j],则(i,j)就称为A中的一个逆序对(inversion)。
现给出一个算法,其可以用O(n*lgn)的最坏情况运行时间,确定n个元素的任何排列中逆序对的数量。
简单的算法实现思想:我们可以单纯的通过从前往后的逐一比对来确定逆序对的数量,虽然实现简单,但这样一来时间复杂度将会上升为O(n*n),不符合我们的要求。
...
分类:
编程语言 时间:
2015-03-28 17:16:05
阅读次数:
355
欧几里得算法欧几里得算法也叫辗转相除法,是求两个整数最大公约数的算法。当然也可以求最小公倍数。算法实现其实算法的实现原理就是,有整数a b两个,每次求的一个数字r = a % b,然后把b放到a的位置,把r放到b的位置,递归调用。就是gcd(a, b) { return gcd(b, a%b); }这个样子的。结束条件是当 a%b == 0的时候停止。最大公约数//
// main.cpp
//...
分类:
编程语言 时间:
2015-03-28 01:13:58
阅读次数:
243
今天复习以前的代码,突然发现插入排序用的二分查找算法实现得很别扭,于是试试重写一个,没想到相当顺利,几分钟就写好并测试通过了:static int BinarySearch(int[] array, int value, int start, int end) { if(start ==...
分类:
其他好文 时间:
2015-03-21 18:32:27
阅读次数:
99
一、题目: 返回一个整数数组中最大子数组的和。 要求: 1.输入一个整形数组,数组里有正数也有负数。 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 3.求所有子数组的和的最大值。要求时间复杂度为O(n)。二、设计思路 首先将每一点看成辐射源,没点只能向右辐射找出...
分类:
编程语言 时间:
2015-03-20 20:26:01
阅读次数:
197
KMP算法实现字符串的模式匹配的时间复杂度比朴素的模式匹配好很多,但是它时间效率的提高是有前提的,那就是:模式串的重复率很高,不然它的效率也不会凸显出来。在实际的应用中,KMP算法不算是使用率很高的一个算法,但是它的核心的那点东西却是使用率很高的,那就是next前缀数组的求解思路。在这次笔记中就单独...
分类:
编程语言 时间:
2015-03-20 18:01:54
阅读次数:
180
spark是个啥?Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发。Spark和Hadoop有什么不同呢?Spark是基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存...
分类:
其他好文 时间:
2015-03-20 12:49:49
阅读次数:
306