其实本文并不是主要介绍 debug 用法的。。。
生产者/消费者模型
顾名思义,静态库可以理解为该库相对于可执行目标文件是静态的,而动态库相对于可执行文件是动态的。静态库跟可执行文件捆绑在一起,不需要依赖操作系统中其它库;动态库则一般固定在操作系统的特定位置,如/usr/lib目录中,如果可执行文件依赖于动态库,一旦该库被移动或损坏,则无法运行。有兴趣可以进行以下测试,我使用的是 docker 中的容器,可千万别用自己的系统试。
跟 Windows 不同,在 Linux 中的文件扩展名仅仅是方便用户肉眼判断类型而已,将扩展名换掉并不会影响使用。
后进者先出,先进者后出,这就是数据结构中的”栈”。栈是一种相当简单的数据结构,但应用十分广泛,例如编程语言中的函数调用栈、浏览器的前进后退功能。本文讲的是栈的另一个常见应用场景,编译器利用栈实现表达式求值。初次见到这种实现思路的时候,我不禁叫绝,一个简单的栈还能玩出花。