自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 makefile常用规则

推荐使用 target_include_directories: 尽管 include_directories 可以直接影响整个项目的头文件搜索路径,但推荐的做法是在 target_include_directories 中将头文件路径与特定的目标(如可执行文件或库)关联起来。总之,CMake 在设计上是为了尽可能隐藏底层的构建系统细节,提供一个统一和简洁的界面来管理依赖项和构建过程,因此 target_link_libraries 中直接使用变量名即可引用并链接库,无需加上 -l 前缀。

2024-07-12 16:47:01 484

原创 常用工具软件使用技巧

source insight如何设置编码格式

2024-06-24 14:37:52 138

原创 通信原理基础知识

傅里叶变换图解

2024-06-24 11:11:22 423

原创 计算机结构原理的基础知识

1 进程线程上下文切换。

2024-06-20 15:46:36 239

原创 C++ 多核多线程性能调优经验

最近调试 基于无锁队列消息分发机制 的 多核多线程系统中,发现一个奇怪现象,发端核发送消息,同时把消息挂在无锁队列中,但是收端核未收到消息,同时收端核所在线程未有超时执行任务的现象,基本可以确认是由于无锁队列在多线程核间交互出了问题, 之前怀疑是信号量出问题,把信号量去除后,问题已经存在,通过分析linux 的核使用情况,发现发端核和收端核(逻辑核)不在一个物理核上,初步怀疑是一个核在访问一个变量时,另一个核又开始修改,变量变为modify ,导致访问核又无法访问(怀疑)。

2024-06-19 09:57:28 113

原创 通信原理前导知识-码元

通信原理课程常讲码元,可以了解基本概念,主要了解码元和进制以及速率的关系即可。

2024-05-25 11:23:15 235

原创 C++性能优化技巧-数据预取

时间局部性是指,如果程序中某一条指令一旦执行,则不久之后该指令可能再被执行;为 0 时表示,它没有时间局部性,也就是说,要访问的数据或地址被访问之后的不长的时间里不会再被访问;为 3 时表示,被访问的数据或地址具有高 时间局部性,也就是说,在被访问不久之后非常有可能再次访问;其中参数 addr 是个内存指针,它指向要预取的数据,我们人工需要判定这些数据是很快能访问到的,或者说是它们就在最近的内存中 — 一般来说,对于链表而言,各个节点在内存中基本上是紧挨着的,所以我们容易预取链表节点里的指针项。

2024-05-21 15:55:50 314

原创 1-NR接入协议总结

上文链接,只要知道SSB 和 RO如何映射即可,对于一个RO集合不能覆盖所有SSB的情况下,才考虑SSB和RO的关联周期,其实把SSB的覆盖完就是一个关联周期,不需要去看文中讲的不同的U上RO集合个数变化的情况,本人也没看懂咋操作的,理论上SIB1不可能把MSG1-FDM 的个数更新的很快。注意 preamble 的起始符号 为 l ,不是l_0 ,其中 l_0 、N_RA_dur为 协议规定 n_RA_t 根据协议得到0-N, n_RA_slot 是PRACH时机所在时隙的索引。

2024-05-11 15:36:44 345

原创 linux 操作常用链接

https://blog.csdn.net/u011939453/article/details/124515892

2024-03-23 17:11:52 163

原创 makefile设置宏定义进行条件编译,实现多版本代码同时维护

g是生成调试信息,生成的可执行文件具有和源代码关联的可调试的信息。通过宏定义开关DEBUG来控制需要编译的代码,这个DEBUG名字是可以自己取的,对应下面-DDEBUG中的DEBUG,这个DEBUG必须紧跟-D,否则会报错,不信你试试。那有的小朋宇可能就要问了,这CFLAGS是啥意思啊,-DDEBUG是啥意思,好吧,一一来解释一下。-O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化。-D是添加宏定义,DEBUG是宏的名称,可以自己定义。

2024-03-18 17:34:20 729

原创 C/C++编译问题汇总

c 包含了头文件,或者已经前置声明了,则说明所引用的类名写错。a 引用的类命名空间未包含。b 引用的类头文件未包含。

2024-03-12 16:05:33 239

原创 工具网站链接

https://5g-tools.com/

2024-01-31 11:06:56 152

原创 如何定位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 461

原创 38.321 MAC协议读后随记(脑图版内容不建议看)

5、PDU的结构,以及PDU中的MACCE的结构。仔细把随机接入过程看了一遍,发现也就这块有用。其他部分完全是协议章程,比较苦涩,也没怎么看。还有MACCE的结构 以及PDU的结构。3、MAC重配的动作。

2024-01-29 17:35:35 170

原创 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 1449

原创 计算机系统-1物理地址和物理地址

当页表项 PTE n的页表项有效位为0时,表示虚拟页 n没有缓冲在物理内存,可能在磁盘或者未分配,例如PTE 0页表项里存储的是null,表明虚拟页0即VP0是未分配状态,PTE 3里存储的是磁盘地址,表明虚拟页 3即VP3在磁盘里,但没有缓冲,VP3状态为未缓冲。处理器根据虚拟地址访问物理内存的分为页表项命中和页表项未命中两种情况,页表项命中意味着页表项的有效位为1,页表项存储的是物理页号,虚拟页缓冲在物理页中,未命中意味着页表项有效位为0,此时需要发送缺页中断。

2024-01-10 10:39:07 2554

原创 C++ 学习语法--遗忘点 难点(持续学习更新)

C++11 中引入了默认函数控制,可以通过控制编译器生成的默认函数来控制程序显式创建和复制行为。默认函数控制包括 = default 和 = delete 两种类型,用于规定编译器如何生成默认实现。如果没有定义默认赋值运算符,编译器会自动为该类生成一个默认的赋值运算符。默认构造函数是没有参数的构造函数,用于创建类的默认对象。= delete:表示要求编译器不生成该函数的默认实现,通常用于避免不正确的行为或者限制特定操作的使用。= default:表示将该函数的默认实现指定为编译器自动生成的默认实现。

2024-01-08 11:22:33 858

原创 NR常用协议链接

http://t.csdnimg.cn/XsPdp

2024-01-05 18:09:47 457

原创 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 579

原创 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 1232

原创 C++的多线程技术系列讲解---1无锁队列背景讲解

编译器并不知道可能有另外的线程在修改_head的值,因此可能会将_head与head的比较优化掉,只从内存中读取一次_head的值存放进寄存器,随后便一直使用寄存器中的数据,使得我们的自旋等待失效。如果有两个线程同时对一个变量i=0执行i++操作,最终结果很可能是1而不是2,因为多线程并行时,i的值会加载到不同的寄存器,然后分别对寄存器中的值加一并取出,导致落后的线程覆盖了领先线程的结果。顾名思义,原子操作就是指不可分割的操作,CPU的一个线程在执行原子操作时,不会被其他线程中断或抢占。

2023-12-27 17:07:56 916

原创 Linux 多线程教程

linux多线程

2023-07-09 14:58:07 286

原创 如何解决 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 4651

原创 如何下在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 969

原创 如何爬取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 291

原创 Ubuntu 点击设置界面不显示的解决办法?

问题是新安装linux 系统后,点击设置,桌面显示一个悬浮的1,当时怀疑是双屏的可能性,但是不知道解决办法。网上其他说法是什么安装更新 center 的软件明显没有作用。1、输入指令我们需要在终端里输入改变界面分辨率的指令(请先打开设置界面,让他保持在桌面上)xrandr --size 800x600注意:x是小写字母的xxrandr是一款官方的扩展配置工具。它可以设置屏幕显示的大小、方向、镜像等,包括对多屏的设置。2、如下图所示,执行指令后,"设置"窗口便会显示出来了。※注意:如果没有显

2021-12-01 21:48:33 3225 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除