- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 TCP连接管理
Client和Server通信前首先创建TCP连接。建立过程如下图所示:1> Client首先发生SYN报文,并且初始化序号为client_isn;2> Server收到SYN报文后,回SYN+ACK报文,初始化序号为server_isn;3> Client收到SYN+ACK报文后,回ACK报文;TCP的连接是全双工的,因此每个方向都需要单独确认,只不过在2>中将SYN/ACK一起
2013-05-18 20:42:10 2147 1
原创 可靠数据传输的原理:比特差错
读完《计算机网络自顶向下设计方法》第三章可靠数据传输的原理,有些明白为什么TCP报文要这样设计。第一种情况:仅考虑通信信道上不会丢包,只会有比特差错产生。通过校验和机制(checksum)和重传机制,在双方保证数据包可靠性。发送方/接收方状态机如下所示。数据包发送后,发送方等待接收方的NAK(否定)/ACK(肯定)数据包。如果接收方返回NAK,那么说明数据包在传输过程中产生比特差错,发
2013-05-12 10:04:38 2767
原创 testLib
/*函数:time_begin/time_end功能:成对儿使用。测试耗时,time_end()返回ms*/void time_begin(struct timeval *pstTime){ gettimeofday(pstTime,NULL);}int time_end(struct timeval *pstTime){ struct ti
2013-01-05 08:41:06 671
原创 信号测试_信号处理函数嵌套
/*-----------------------------------------------------函数:tst_sig_handlerIn功能:信号处理函数嵌套测试:在信号处理函数中循环等待信号;*/void sig_handlerIn(int sig){ int ix; printf("sig :%d\r\n",sig); for(ix
2013-01-05 08:38:19 894
原创 信号测试_注册信号处理函数
/*-----------------------------------------------------函数:tst_sig_base功能:注册信号处理函数基本功能测试。说明:pause()在信号处理函数执行完毕后返回,打印字符串"Got a signal";*/void sig_handler(int sig){ printf("sig(%d) begin\r
2013-01-03 21:21:27 390
原创 信号机制
信号被称为软中断(software interrupts),与硬件中断机制相比信号机制提供了更好的灵活性:产生源: 硬件中断:由硬件产生; 信号: 由内核/终端命令/用户进程产生; 均打断当前代码的执行,转而执行另外的代码: 硬件中断: 跳转到中断函数; 信号: 跳转到信号处理函数;屏蔽位: 硬件中断: 可设置中断寄存器
2013-01-03 21:01:04 349
原创 MIPS 栈
参数传递:如果参数少于4个,通过a0-a3寄存器传递参数,否则其余通过堆栈传递。 参数作为调用者(caller)栈帧的一部分,4个32bits空间为a0~a3预留(即使参数通过寄存器传递)。被调者(callee)在函数前言部分分配自己的栈空间分配(返回地址/栈帧指针/局部变量),同时栈帧指针(fp)将指向最新的栈空间,并且所有局部变量通过栈帧指针偏移寻址,堆栈指针(sp)不再发生变化。
2012-11-09 09:06:20 6017
原创 项目rebuild失败,被通报批评
昨晚11:30在公司合入一个新特性,验证OK。回到家里,忽想起一个数据结构的定义由A.h合并到b.h中,而有些.c文件中没有修改相应的头文件包含,忽想到整个项目没有rebuild,仅rebuild了自己的模块。 今上午,由于我合入的文件导致项目rebuild失败,项目组内通报批评。唉! 原因分析: 1> 晚上加班,肯定想早弄完早回家,着急容易出错;
2012-09-25 12:52:44 971
原创 为什么转置512×512矩阵,会比513×513矩阵慢很多?
原博客:http://blog.jobbole.com/28219/ 很普通的一个求矩阵转置的程序。但是,当MATSIZE取512和513的时候,出现了非常有意思的结果:513竟然比512快。更进一步的研究发现,size=512的时候,运算速度会比同数量级的其它数字慢很多很多。这是怎么一回事呢?#define SAMPLES 1000#define MATSIZE 513
2012-09-23 19:36:20 979
原创 拍婚纱照
总算把婚纱照拍完了,原计划5月拍的。没有传说中的那么累,坐车/地铁来回发了4个小时。早上5:40起床,晚上8:30到家。 这家工作室(灰鸽视觉)还不错,两个80后的夫妻店。
2012-09-16 08:48:18 342
原创 sizeof
int array[10];int *pint = array;printf("%d\n",sizeof (array)); //40 printf("%d\n",sizeof (*pint)); //4, pint指向的是int类型
2012-09-11 08:32:59 219
原创 C优先级
1> 优先级最高的其实不是真正意义上的运算符;2> 单目运算的优先级次之。 *p++ 为:*(p++)3> 算术运算符> 移位运算符4> 关系运算符> 位运算符> 逻辑运算符
2012-09-02 22:12:24 489
原创 可变参数
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中,它是标准库的一部分。 这个头文件声明了一个类型va_list和三个宏:va_start/va_arg/va_end.我们可以声明一个类型为va_list的变量,与这几个宏配合使用,来访问参数的值。/*功能:求n_values个int类型数的和。*/float average(int n_value
2012-09-02 19:57:42 265
原创 作为函数参数的多维数组
与一维数组名相同,参数传递的是个指向数组第一个元素的指针,区别在于:多维数组的每个元素本身是另外一个数组,编译器需要知道它的维数,以便为形参下标表达式求值。int vector[10]void func1(int *vec);void func1(int vec[]);int matrix[3][10];fun2(matrix); //matrix的类型
2012-09-02 18:17:26 225
原创 忘记发验证报告
故事是这样的: 快下班时要验证一个版本,跑自动化脚本也要跑到下班后了。吃完饭后脚本还没跑完,并且同事反馈我合入的文件导致他们功能无法使用,导致版本出现问题了!心里有点慌,tmd怎么出问题了?此时同事A帮我回退了文件(避免阻塞其他人)。女友还在楼下等我看房呢,心里也挺着急的,就出去看房了,而且手机也没电了。 刚看完一家,突然想起测试结果还没有发出来,就给公司打了电话(以为同事
2012-08-24 08:57:15 459
原创 字符串常量
当一个字符串常量出现在表达式中时,它的值是指针常量。编译器把该字符串的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针;void binary_to_ascii(unsigned long value){ unsigned long quotient; quotient = value /10; if (quotient != 0) {
2012-08-22 08:58:47 214
原创 数组与指针
数组与指针 参考网络文档《C语言要点总结》1> 数组与数组指针: int matrix[3][10]; int *mp = matrix; //非法的,因为matrix并不是一个指向整型的指针,而是一个指向整型数组的指针 int (*p)[10]; //声明指向数组的整型指针; p = matrix; val = (*p)[3]; //与m
2012-08-19 13:54:47 295
原创 北漂租房之
来北京快四年了,每年都换个地方住。刚开始一个人的时候,要求没那么高,上班方便,价格便宜就行。现在对生活的质量有了一些考虑:没有隔断的/位置方便的/价格合适的/舒适的,找起来挺麻烦的。中介/论坛/赶集/58同城,都时刻在关注着,看房子都看累了。 第一年:在龙乡小区和同学合租三居,他和女朋友住主卧,我住次卧;和房东签;上班不是很方便;¥700 第二年:在佰家城租五居(三改五,客厅两个隔
2012-08-18 21:52:50 1330
原创 房贷之虑
最近和平哥聊天,关于北京买房。聊到了房贷和今后上有老下有小的生活,每个月要还至少四千的房贷,如果到那时候还在为还房贷奋斗,这是多么悲惨的事情啊。所以要珍惜时间,提高能力,早日跳出井底,不然就被温水煮了。
2012-08-10 22:50:09 1519
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人