shared_ptr内存泄漏
0x00 背景
在写CMU15445
project 0时,报了一大堆内存泄漏的错误。经过排查,发现是shared_ptr
互相引用导致的,所以这里进行一个简单的说明。
write
和fwrite
都用于文件写入,知其然更要知其所以然,既然有这么多种设计,就一定各有各的考量,那么它们之间有什么不同呢?
多个线程访问同一个互斥资源的时候,需要保证数据的正确性,其中一个方案就是加锁。spinlock(自旋锁)尽可能的减少线程的阻塞,这对于锁的竞争不激烈,且占用锁时间非常短的代码块来说性能能大幅度的提升,因为自旋的消耗会小于线程阻塞挂起再唤醒的操作的消耗,这些操作会导致线程发生两次上下文切换!
但是如果锁的竞争激烈,或者持有锁的线程需要长时间占用锁执行同步块,这时候就不适合使用自旋锁了,因为自旋锁在获取锁前一直都是占用 cpu 做无用功,同时有大量线程在竞争一个锁,会导致获取锁的时间很长,线程自旋的消耗大于线程阻塞挂起操作的消耗,其它需要 cpu 的线程又不能获取到 cpu,造成 cpu 的浪费。所以这种情况下我们要关闭自旋锁。
Taas使用ZeroMQ进行数据的传输,以下是Taas中所使用到的端口:
gs_initdb可以对一个已存在的空白目录初始化,使其成为openGauss的数据目录。
1 | gs_initdb -D /tmp/data --nodename=node1_nodename |
要使用MOT的话,需要:
1 | alter system set enable_incremental_checkpoint='off'; |
启动系统:
1 | gaussdb -D /tmp/data |
file能够查看文件的类型
1 | singheart@FX504GE:~/Project/assembly$ file libadd.so |
转载自https://blog.csdn.net/gao_zhennan/article/details/120717424#t8
我们知道, 计算机内部实际上只能存储或识别二进制.
在计算机中, 我们日常所使用的文档, 图片, 数字等, 在储存时, 实际上都要以二进制的形式存放在内存或硬盘中, 内存或硬盘就好像是一个被划分为许多小格子的容器, 其中每个小格子都只能盛放0或1...