makefile

Makefile是什么

关于程序的编译和链接

  一般来说,无论是C还是C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile),一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。

  编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。

TopK和堆排序

在处理海量数据或者数据流里经常会碰到提取前K个最大值,前K个最小值的问题;面试的时候也特别喜欢问此种问题。

本文先介绍了大顶堆和小顶堆,然后给出利用大顶堆和小顶堆算法解决TopK问题,最后给出了堆排序。

所有代码位于TopK

最近项目过程中,为了节省存储空间,使用float而不是double来存储浮点数,结果遇到了float溢出的问题。当时还觉得奇怪,float表示范围挺大的啊,有没有超范围,怎么还会溢出?后来试验并查证了float的存储结构,有了答案,原来是float的有效位丢失了。

程序猿都遇到过文本编码问题,看到GB2312,GBK,GB18030,Unicode,UTF-8就觉得头大。希望通过此文,可以对文本编码可以有一个透彻的了解。

在解析自定义的二进制的文件格式,或者已知的一些文件格式的时候,比如png图片,tcp包,就需要struct库;

解析二进制文件长需要的函数有从buffer中读取char(一个字节),short(两个字节),int(4字节),string(n个char),这些struct都可以很好的胜任。官方说明