代码改变世界

随笔档案-2011年07月

函数式宏定义与类型检查

2011-07-27 13:02 by 后端技术, 1151 阅读, 收藏,
摘要: 函数式宏定义的危害大家是有目共睹的,当函数式宏定义搭配上弱类型检查的函数式,使用起来就是悲剧。例:#define PRINT(x) printf(“I am %s”,x)当使用以上宏定义时,gcc的过程只会报一个warn,而并不会报error。我们可以从gcc的整个过程看一下,首先是预处理阶段:使用PRINT的代码会被文本替换为printf,然后就是编译阶段,编译阶段会进行类型检查,但printf是一个软类型函数,gcc只会提示一个waring,并不会报error,然后产出可执行文件。当传入PRINT的参数是一个string类型时,在运行时就会报一个segment error。从上面问题上得到 阅读全文

后端系统性能优化经验总结

2011-07-08 10:50 by 后端技术, 1613 阅读, 收藏,
摘要: 性能优化 阅读全文

TCP状态迁移图浅析

2011-07-03 21:33 by 后端技术, 2704 阅读, 收藏,
摘要: 一.TCP简介 TCP提供一种面向连接的,可靠的字节流服务。面对连接意味着两个使用TCP的应用,在彼此交换数据之前必须先建立一个连接。TCP通过以下方式提供可靠性: 1. 应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成为报文段。 2. 当TCP发出一个段后,它就启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 3. 当TCP收到TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,而是延迟发送的。 4. TCP将保持对它首部和数据的校验和,这是一个端到端的校验和,目的是检测数据在传输在传送过程中的任何变化。如果收 阅读全文