摘要: return:表示函数返回,当main函数return时表示程序运行结束. exit():无论在哪个函数调用,都会导致程序结束。 阅读全文
posted @ 2022-11-17 17:49 opensmarty 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 在面向对象的编程语言中,很多语言会根据引用计数器来实现对对象的自动回收机制,就和Unix/Linux中的文件系统那样,当一个对象被另一个对象持有时,被持有的对象自身的引用计数器会加1。只要对象还被引用,即引用计数器还未被清0,那么我们对对象执行释放操作,只是将对象的引用计数器减1。直到对象的引用计数 阅读全文
posted @ 2022-11-17 17:47 opensmarty 阅读(48) 评论(0) 推荐(0) 编辑
摘要: #include发生在预处理阶段,整个编译链接过程,#include是最简单的了,没有之一。就是在include的位置直接把文件原原本本完完整整一字不落的包含进来,下面举一个极端点的例子: //file a.c #include <stdio.h> int d = 3; #include "b" / 阅读全文
posted @ 2022-11-17 14:24 opensmarty 阅读(327) 评论(0) 推荐(0) 编辑
摘要: -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest. 阅读全文
posted @ 2022-11-17 14:19 opensmarty 阅读(71) 评论(0) 推荐(0) 编辑
摘要: LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2 阅读全文
posted @ 2022-11-17 14:11 opensmarty 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 经测试,链接静态库的时候静态库的搜索路径包括/lib;/lib64;/usr/lib;/usr/lib64/;/usr/local/lib;/usr/local/lib64, 静态库文件完整的搜索顺序: 比如我们要生成的最终可执行文件叫main 主程序源代码叫main.c,生成好的库文件叫做kkk库 阅读全文
posted @ 2022-11-17 14:04 opensmarty 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态库从某种意义上来说是一种复制粘贴,被链接后库就直接嵌入可执 阅读全文
posted @ 2022-11-17 13:58 opensmarty 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。 而依赖动态库的程序其实也有链接动态库的阶段,只不过这个链接并不是真正的将动态库链接到程序中,其目的是告诉程序,所依赖的到底是哪个动态库。 静态库有点类似于将静态库复制到程序中,而动态库是在程序中创建 阅读全文
posted @ 2022-11-17 13:54 opensmarty 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 在编译动态库的时候,我们应该需要使用-fpic 或-fPIC参数。 pic 与PIC的异同 相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT)访问所有常量地址。程序启动时动态加载程序解析GOT条目。 不同点:如果链接的可执行文件的GOT大小超过计算机特定的最大大小,则会从链接器收 阅读全文
posted @ 2022-11-17 13:44 opensmarty 阅读(182) 评论(0) 推荐(0) 编辑
摘要: gcc 生成 .a静态库和 .so动态库 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本 阅读全文
posted @ 2022-11-17 11:06 opensmarty 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中。否则如果出现有定义,比如头文件中有int a =2;如果有多个源程序文件引用该头文件,那么在链接的时候就会出现重复定义,即使在头文件的首尾添加#ifnef,#de 阅读全文
posted @ 2022-11-17 10:24 opensmarty 阅读(101) 评论(0) 推荐(0) 编辑
摘要: // 为什么需要熔断 微服务集群中,每个应用基本都会依赖一定数量的外部服务。有可能随时都会遇到网络连接缓慢,超时,依赖服务过载,服务不可用的情况,在高并发场景下如果此时调用方不做任何处理,继续持续请求故障服务的话很容易引起整个微服务集群雪崩。比如高并发场景的用户订单服务,一般需要依赖一下服务: 商品 阅读全文
posted @ 2022-11-17 10:07 opensmarty 阅读(252) 评论(0) 推荐(0) 编辑