- 博客(18)
- 收藏
- 关注
原创 条件编译:通过make传递参数来控制
g是生成调试信息,生成的可执行文件具有和源代码关联的可调试的信息。通过宏定义开关DEBUG来控制需要编译的代码,这个DEBUG名字是可以自己取的,对应下面-DDEBUG中的DEBUG,这个DEBUG必须紧跟-D,否则会报错,不信你试试。那有的小朋宇可能就要问了,这CFLAGS是啥意思啊,-DDEBUG是啥意思,好吧,一一来解释一下。-O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化。-D是添加宏定义,DEBUG是宏的名称,可以自己定义。
2024-03-18 17:34:20 409
原创 如何定位linux 内存泄露
6、监控系统资源:使用监控工具如sysstat、sar或top的-d参数来监控系统的资源使用情况,包括内存、CPU和磁盘等。4、使用smem工具:如果系统上安装了smem工具,可以使用smem -rs命令来查看进程的内存使用情况。1、查看进程占用内存:使用命令top或htop来查看当前正在运行的进程以及它们所占用的内存量。按下"M"键可以根据内存使用情况进行排序,找到占用内存较多的进程。0、查看内存使用情况:使用命令free -h来查看系统当前的内存使用情况,其中包括已使用、可用和缓存/缓冲区等信息。
2024-01-30 18:11:09 171
原创 38.321 MAC协议读后随记(脑图版内容不建议看)
5、PDU的结构,以及PDU中的MACCE的结构。仔细把随机接入过程看了一遍,发现也就这块有用。其他部分完全是协议章程,比较苦涩,也没怎么看。还有MACCE的结构 以及PDU的结构。3、MAC重配的动作。
2024-01-29 17:35:35 129
原创 NR系列学习-DMRS总结(完善中)
PDSCH DMRS映射类型(mapping type):映射类型决定着DMRS在时域中的符号起始位置。PDSCH DMRS配置类型(DMRS type):DMRS类型有时候也称为DMRS配置类型,它决定着DMRS在频域中的RE映射密度。3GPP为PDSCH DMRS规定了两种配置类型:type 1和type 2,如下图所示。对于type 1来说,DMRS RE在某个符号的频域间隔分布,密度为50%;而对于type 2来说,DMRS RE每两个RE连接在一起,相互间隔4个RE,密度为33.3%。
2024-01-12 11:21:55 652
原创 计算机系统-1物理地址和物理地址
当页表项 PTE n的页表项有效位为0时,表示虚拟页 n没有缓冲在物理内存,可能在磁盘或者未分配,例如PTE 0页表项里存储的是null,表明虚拟页0即VP0是未分配状态,PTE 3里存储的是磁盘地址,表明虚拟页 3即VP3在磁盘里,但没有缓冲,VP3状态为未缓冲。处理器根据虚拟地址访问物理内存的分为页表项命中和页表项未命中两种情况,页表项命中意味着页表项的有效位为1,页表项存储的是物理页号,虚拟页缓冲在物理页中,未命中意味着页表项有效位为0,此时需要发送缺页中断。
2024-01-10 10:39:07 1005
原创 C++ 学习语法--遗忘点 难点(持续学习更新)
C++11 中引入了默认函数控制,可以通过控制编译器生成的默认函数来控制程序显式创建和复制行为。默认函数控制包括 = default 和 = delete 两种类型,用于规定编译器如何生成默认实现。如果没有定义默认赋值运算符,编译器会自动为该类生成一个默认的赋值运算符。默认构造函数是没有参数的构造函数,用于创建类的默认对象。= delete:表示要求编译器不生成该函数的默认实现,通常用于避免不正确的行为或者限制特定操作的使用。= default:表示将该函数的默认实现指定为编译器自动生成的默认实现。
2024-01-08 11:22:33 813
原创 C++多线程系列-3 内存序列和内存屏障
当然,可以显式地调用std::atomic_thread_fence(std::memory_order_seq_cst),而不是std::atomic_thread_fence()。2、获取栅栏(acquire fence): std::atomic_thread_fence(std::memory_order_acquire)避免在获取栅栏之前的读操作,被获取栅栏之后的读或写操作重新排序。std::atomic_thread_fence : 同步线程间的内存访问。
2023-12-29 11:48:06 397
原创 C++多线程讲解-2无锁环形队列(Ring)详解
将环形队列的g_prod_head、g_cons_tail存储在临时变量l_prod_head、l_cons_tail中记录位置;将环形队列的g_prod_head、g_cons_tail存储在临时变量l_prod_head、l_cons_tail中记录位置;两个CPU同时更新prod_head指针,如果g_prod_tail == l_prod_head, 则更新g_prod_tail指针。在两个CPU上,环形队列的g_prod_head、 g_cons_tail同时被两个核存储在本地临时变量中。
2023-12-28 19:45:27 896
原创 C++的多线程技术系列讲解---1无锁队列背景讲解
编译器并不知道可能有另外的线程在修改_head的值,因此可能会将_head与head的比较优化掉,只从内存中读取一次_head的值存放进寄存器,随后便一直使用寄存器中的数据,使得我们的自旋等待失效。如果有两个线程同时对一个变量i=0执行i++操作,最终结果很可能是1而不是2,因为多线程并行时,i的值会加载到不同的寄存器,然后分别对寄存器中的值加一并取出,导致落后的线程覆盖了领先线程的结果。顾名思义,原子操作就是指不可分割的操作,CPU的一个线程在执行原子操作时,不会被其他线程中断或抢占。
2023-12-27 17:07:56 802
原创 如何解决 No module named ‘distutils.util‘ 错误
Ubuntu 下安装 pip 时遇到 ModuleNotFoundError: No module named ‘distutils.util’ 错误,执行以下命令即可:sudo apt-get install python3-distutils
2021-12-03 22:47:46 4164
原创 如何下在sublime-text
通过apt安装[网络不稳定,可能需要多次尝试]安装GPG key:wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -确保apt能够使用https源sudo apt-get install apt-transport-https使用稳定版源echo “deb https://download.sublimetext.com/ apt/stable/” | sudo tee /etc/a
2021-12-03 22:07:23 953
原创 如何爬取BOSS直聘的职位以及薪资
目前看到写的好的https://blog.csdn.net/weixin_55018995/article/details/116902265?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.no_search_link&depth_1-utm_source=distribute.pc_relev
2021-12-01 22:41:37 278
原创 Ubuntu 点击设置界面不显示的解决办法?
问题是新安装linux 系统后,点击设置,桌面显示一个悬浮的1,当时怀疑是双屏的可能性,但是不知道解决办法。网上其他说法是什么安装更新 center 的软件明显没有作用。1、输入指令我们需要在终端里输入改变界面分辨率的指令(请先打开设置界面,让他保持在桌面上)xrandr --size 800x600注意:x是小写字母的xxrandr是一款官方的扩展配置工具。它可以设置屏幕显示的大小、方向、镜像等,包括对多屏的设置。2、如下图所示,执行指令后,"设置"窗口便会显示出来了。※注意:如果没有显
2021-12-01 21:48:33 2897 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人