- 博客(232)
- 资源 (64)
- 收藏
- 关注
转载 TCP 的那些事儿(下)
这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资
2017-08-30 10:28:27 472 10
转载 TCP 的那些事儿(上)
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相
2017-08-30 10:27:36 384
转载 sctp 编程接口指南
SCTP 套接字接口当 socket() 调用为 IPPROTO_SCTP 创建套接字时,它会调用特定于 SCTP 的套接字创建例程。针对 SCTP 套接字执行的套接字调用会自动调用相应的 SCTP 套接字例程。在一对一套接字中,每个套接字都对应一个 SCTP 关联。可以通过调用以下函数来创建一对一套接字:socket(AF_INET[6], SOCK_STREAM, IPPROT
2017-08-30 09:31:35 606 1
转载 linux c学习笔记----UDP基础客户/服务编程(sendto,recvfrom)
sendto(经socket传送数据)相关函数send , sendmsg,recv , recvfrom , socket表头文件#include #include 定义函数int sendto ( int s , const void * msg, int len, unsigned int flags, const struct s
2017-08-30 09:17:24 374
转载 inux c学习笔记----SCTP基础客户/服务编程(setsockopt,sctp_sendmsg等)
在编程之前先了解一下sctp套接字选项 setsockopt(设置socket状态) 相关函数getsockopt表头文件#include#include定义函数int setsockopt(int s,int level,int optname,const void * optval,,socklen_top
2017-08-30 09:16:40 2759
转载 SCTP协议源码分析--多归属特性multi-homed(二)
继续看看path&assoc的断开和恢复管理。 二. Manage transport andassociation偶联的多归属管理主要针对transport,但多个transport/path的断开必然会倒致association也断开。所以追踪path的更新、断开和恢复,也离不开assoc的断开和恢复管理。每个path的传送失败(即收不到SA
2017-08-30 09:12:28 1316
转载 SCTP协议源码分析--多归属特性multi-homed(一)
SCTP协议有一个重要的特点,即Multi-homed(多归属),这是与TCP协议不同的显著地方之一,是对TCP协议的重大改进,充分利用了多条路由皆可承载数据流的特点,保证了物理网络级的冗余。Multi-homed SCTP的直接表现就是有多个transport(即通路path),即到对端多个IP地址的path(通路)。一般来说有一条primary transport(主通路),其它的
2017-08-30 09:11:12 710
转载 SCTP协议源码分析--拥塞控制算法
为了避免网络出现不必要的拥塞,SCTP偶联会在适当时候控制进入到网络中的数据包数量,其控制方法是端点使用慢启动和避免拥塞等算法。无论如何,慢启动和避免拥塞都会尽量增大拥塞控制窗口(cwnd),而重传或通路idle时则会试图降低拥塞控制窗口。1. 几个相关概念 慢启动(Slow-Start) 当在一个状态不明的网络或者是空闲了相当长时间的网络上开始传送数据
2017-08-30 09:09:57 895
转载 SCTP在LINUX中的实现:代码结构
Linux中,SCTP是作为一个kernel模块编译加载的,代码主要是在net/sctp目录下。1. 主要数据结构1.1 endpointstruct sctp_endpoint{ struct list_head asocs;……}在应用程序调用listen()之后,会创建一个endpoint结构。收到INIT CHUNK的时候,
2017-08-30 09:07:02 630
转载 多种负载均衡算法及其 Java 代码实现
首先给大家介绍下什么是负载均衡(来自百科)负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备和 服务器的带宽、增加 吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web 服务器、 FTP服务器、 企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务
2017-02-15 08:41:06 276 6
转载 Facebook开源C语言事件框架:libPhenom
libPhenom是Facebook发布的一个C语言事件框架,用于构建高性能和高可扩展的系统。支持多线程、提供内存管理和常用数据结构、JSON处理。特性如下:带有计数器的内存管理——记录应用程序正使用的内存类型的次数工作——分解你的应用程序并用调度管理来搞定它们带缓冲的I/O流常用的数据结构(哈希表、列表、队列)数据类型的变种来使能J
2016-06-07 08:18:54 1606 6
转载 网络数据老化代码
memset(&tCurTime, 0, sizeof(struct timeval)); for (i = 0;i < MAX_ACL_GROUP_NUM;i++) { if (0 == gtDomainInfo[i].dwGroupId) { continue; } OssUserLogInfo("ApMonitorMgrUpdateDomainInfo:Beg
2016-06-03 17:27:32 792 1
原创 一个矩阵中最大的二维矩阵(元素和最大)
#include #include int max_matrix(int a[][5], int n){ int i = 0, j = 0, k = 0; int max_sum = 0; int *b = (int *)malloc(sizeof(int) * n); for(i = 0; i < n; i++) { for(j = 0;
2016-05-17 18:27:03 572 3
转载 给一串很长字符串要求找到符合要求的字符串,例如目的串: 123 1******3***2,12*****3这些都要找出
现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123,1******3***2, 12*****3这些都要找出#include #include //强大的和谐系统 int is_contain(char *src, char *des) { //创建一个哈希表,并初始化 const int t
2016-05-17 15:05:28 1230
转载 有两个序列a,b,大小都为 n,序列元素的值任意整数,无序 通过交换a,b中的元素,使序列 a的和与序列b的和之间的差最小
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和之间的差最小。 例如: var a=[100,99,98, 1, 2, 3]; var b=[1, 2, 3, 4, 5, 40]; 网上看了许多解决方式,不是本身就是错的,就是代码写的真不敢恭维,以下代码比较清晰,亲测
2016-05-17 13:52:38 665
转载 在从 1 到 n 的正数中 1 出现的次数
输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数。例如输入 12,从 1 到 12 这些整数中包含 1 的数字有 1, 10, 1 1 和 12, 1 一共出现了 5 次代码实现(GCC编译通过):?1234567891011
2016-05-17 09:17:29 351
转载 栈的 push、 pop序列
输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。如果我们希望pop的数字正好是栈顶数字,直接pop出栈即可;如果希望pop的数字目前不在栈顶,我们就到push序列中还没有被push到栈里的数字中去搜索这个数字,并把在它之前的所有数字都push进栈。如果所有的数字都被push进栈仍然没有找到这个数字,表明该序列不可能是一个pop序列。1
2016-05-16 16:30:31 779
转载 把字符串前面的若干个字符移动到字符串的尾部
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。 #include void ReverseStr(char* s,int from,int to){ while (from < to)
2016-05-16 09:28:56 2208
原创 在字符串中找出连续最长的数字串
写一个函数,它的原形是int continumax(char *outputstr,char*intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456
2016-05-16 08:50:25 342
原创 合并有序数组
#includevoid merge(int A[], int m, int B[], int n){ while(m > 0 && n > 0) { if(A[m - 1] > B[n - 1]) { A[m + n - 1] = A[m - 1]; m--; } else {
2016-05-13 15:24:30 295
转载 最快速的方法计算出下面这个圆形是否和正方形相交
用最简单, 最快速的方法计算出下面这个圆形是否和正方形相交。" 043D坐标系 原点(0.0,0.0,0.0)05圆形:06半径r = 3.007圆心o = (*.*, 0.0, *.*)
2016-05-12 16:52:13 1129
转载 约瑟夫环---数学公式求解
约瑟夫环问题是一道经典的数据结构题目问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。#include#includeint Josephus(int n, int m)//总人数为n,从第一人开始数到m的退出,{ int i, r = 0; for (i = 2; i <= n; i++)
2016-05-12 14:22:09 1697
转载 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入 8 / / 6 10 // //5 7 9 11输出8 6 10 5 7 9 11。#include #include using namespace std;struct BTree{
2016-05-12 10:03:03 397
原创 输入一颗二元查找树,将该树转换为它的镜像
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / /6 10/ / / /5 7 9 11输出: 8 / / 10 6/ / / /11 9 7 5定义二元查找树的结点为:struct BSTreeNode // a node in th
2016-05-11 17:27:11 335
原创 寻找和为定值的多个数
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。解析:可以看出这是关于0-1背包问题,可以将问题定义为f(n,m),从1->n中选择多个数,使得之和为m 那么(1)选取n,则剩下从n-1个数中选择和为m-n的数,即求f(n-1,m-n) ( 2)不
2016-05-11 17:01:11 419
转载 输入一个单向链表,输出该链表中倒数第k个结点
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。#include struct Node{ int nKey; struct Node* next;};struct Node *lastK(struct Node * head, int k){ if(k<0) error("k < 0.\n"); struct
2016-05-11 15:09:47 511
原创 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字 以及条件判断语句(A?B:C)
求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)#include int sum(int n){ int tmp = 0; (n) && (tmp = sum(n-1)); return n + tmp;}int main(){ printf("%d\n", sum(10
2016-05-11 14:28:48 373
转载 求二叉树中节点的最大距离【编程之美解法】
// 数据结构定义struct NODE{ NODE* pLeft; // 左子树 NODE* pRight; // 右子树 int nMaxLeft; // 左子树中的最长距离 int nMaxRight; // 右子树中的最长距离 char chValue; // 该节点的值}; in
2016-05-11 13:45:49 306
原创 单词翻转
#include #include /*翻转字符串*/void reverseStr(char *str, int nStart, int nEnd){ if(NULL == str || '\0' == *str || nStart >= nEnd) return; while(nStart < nEnd) { char cTemp =
2016-05-11 11:26:59 613
原创 判断整数序列是不是二元查找树的后序遍历结果
判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10/ / / /5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历
2016-05-11 09:22:58 436
转载 编程之美3.6——编程判断两个链表是否相交
问题:给出两个单向链表的头指针,而两个链表都可能带环,判断这两个链表是否相交,并且给出他们相交的第一个节点。解法:参考http://blog.csdn.net/ldong2007/article/details/4544203(1)判断链表是否存在环设置两个链表指针(fast, slow),初始值都指向链表头结点,然后连个指针都往前走,不同的是slow每
2016-05-10 14:19:18 364
原创 在二元树中找出和为某一值的所有路
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / \ 5 12 / \ / \ 4 7 8 9则打印出两条路径: 10, 12和10, 5,7。二元树节点的数据结构定义为:structBinaryTreeNode // a node
2016-05-10 10:47:40 590
原创 数组元素出现次数
10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0 0在下排出现了6次,1在下排出现了2次, 2在下排出现了1次,3在下
2016-05-10 10:43:07 358
原创 求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18#includeint maxSubArraySum(int* a
2016-05-06 11:14:29 277
原创 设计包含min函数的栈
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。#include#include#includetypedef struct MinStackElement{ int data; int min;}MinStackElement_T;typedef struct MinStack
2016-05-06 10:50:54 448
转载 把二元查找树转变成排序的双向链表
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14/ / / /4 8 12 16 转换成双向链表4=6=8=10=12=14=16。#include #include typedef struct BSTreeNode{ int m_nVa
2016-05-05 16:39:47 300
转载 感悟
徐家骏是华为数据中心的头,技术超级牛人,一级部门总监,华为副总裁,年收入过千万。数据中心是用火山岩建的深入地下的一个大型建筑。防辐射,可防卫星的电子,雷达等手段的侦察。里面有象卫星发射中心那种超大屏幕,机房里满是三米的大型服务器和大型计算机。连接整个华为全球的每一台终端,整个华为每天三十多万封邮件,海外和全球的同步研发,内部的信息管理,内部流程,华为的国内国际IP电话都是通过它发出去的。上
2016-04-28 15:48:22 331 2
原创 回环矩阵
#include int main(){ int n ; int a[20][20] ; printf("输入n的值:") ; scanf("%d" , &n ) ; // 初始化 int j = 0 ; int i = 0 ; int k = 0 ; int m = 0 ; int p = 0 ; int number = 0 ; // 根据分析出来的规律对
2016-04-28 14:39:12 1107
转载 Linux内核Jhash
static uint32_t jhash(const void *key, unsigned int length, unsigned int initval);static int32_t mac_hash(const unsigned char *mac);/******************************* 静态函数原型**************************
2016-04-01 09:30:49 5604 2
转载 编程修养
不要忽略warning请sizeof类型而不是变量尽量用for而不是while做循环p = pHead;while(p){ ... ... p = p->next;}当while的语句块变大后for(p = pHead; p; p = p->next){ ...}为常量声明宏全局变量应该尽量少用,全局变量不利于
2016-03-31 15:09:53 286
提高C++性能的编程技术
2014-09-14
程序员面试攻略(第2版)高清PDF
2014-08-06
数据挖掘--数据挖掘10大算法
2014-08-06
数据库系统实现(第2版)
2014-06-09
精通正则表达式(第3版)
2014-06-04
μC/OS-Ⅲ源代码
2014-05-04
算法谜题【英文版】
2014-04-14
精妙绝伦CSS
2014-04-11
Spring技术内幕(第2版):深入解析Spring架构与设计原理
2013-07-22
编程珠玑------(美)本特利(Bentley,J.)著
2013-01-25
PHP实战--作者:雷勒索(Dagfinn Reiersφl) , 贝克(Marcus Baker) , 史夫利特(Chris Shiflett)
2013-01-11
PHP高级程序设计_模式、框架与测试---(加拿大)Kevin McArthur
2013-01-11
Java Swing 第三版 英文
2013-01-10
OpenGL超级宝典第四版 118M高清版下载地址
2013-01-04
HTML5 用户指南
2013-01-04
HTML5 Canvas基础教程
2013-01-03
MySQL必知必会
2013-01-01
计算机与通信专业英语 徐秀兰
2013-01-01
IT学生解惑真经
2013-01-01
算法分析与设计 (美国)Michael.T.Goodrich
2012-12-31
FreeRADIUS的安装配置过程
2016-03-05
Metronic - Admin Dashboard Template 1.5.5
2016-03-05
Wireshark数据包分析实战(第2版) 页面正常显示版
2016-01-03
《嵌入式硬件》 [美] 甘瑟尔 高清版 全网难得资料
2015-01-24
《这就是搜索引擎:核心技术详解》
2015-01-09
深入理解MySQL核心技术
2015-01-09
《嵌入式工程师必知必会》
2015-01-09
《精通正则表达式(第3版)》 高清版
2015-01-09
《大话Oracle RAC:集群 高可用性 备份与恢复》
2015-01-09
程序员面试逻辑题解析
2015-01-09
程序员的数学
2015-01-09
Oracle SQL高级编程
2015-01-09
C++编程思想(第2卷)(实用编程技术)
2015-01-09
搜索引擎:信息检索实践
2015-01-09
代码之美 中文版
2015-01-08
SQLite权威指南(第2版)
2015-01-08
Oracle优化日记:一个金牌DBA的故事
2015-01-08
Go语言编程
2015-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人