- 博客(88)
- 收藏
- 关注
原创 RLC-AM详解
要理解 E1、E2、E3、NACK_SN、SOstart/SOend、NACK range 的逻辑,需结合3GPP RLC 协议(以 TS 38.322 为例,5G NR RLC 层标准) 中 “NACK 报告” 的核心设计目标 ——精准反馈 “哪些 SDU 的哪些字节丢失”,避免冗余反馈,提升空口效率。
2025-09-16 10:17:28
784
原创 GTPU涉及NR RAN 容器
必选 + 可选” 分层:必选字段(PDU Type、Retx Flag、NR-U SN)确保基础关联和控制;可选字段(丢弃相关)根据实际需求动态出现,减少冗余开销;对齐要求:末尾填充字段确保符合 GTP-U 扩展头的 “4 字节对齐” 规则,避免后续解析错位;CU-DU 协作:所有字段围绕 “CU 控制 DU 的下行数据处理” 设计(重传区分、丢弃控制、状态报告触发),是 F1-U 接口 “控制面与用户面复用” 的关键载体。
2025-09-15 11:18:19
848
原创 TCP/IP函数——sendmsg
sendmsg() 是 POSIX 标准中一个高级套接字发送函数,属于系统调用(由操作系统内核实现),定义在 <sys/socket.h> 头文件中。它的核心特点是支持复杂消息结构,不仅能发送常规数据,还能附加控制信息(如辅助数据、IP 选项等),适用于 TCP、UDP 等多种协议,功能比 send()/sendto() 更灵活。
2025-09-05 20:31:54
770
1
原创 PRACH物理层详解
PRACH的时域资源主要由参数“prach-ConfigurationIndex”决定。FR1 TDDFR2 TDD以2.6GHz/TDD的NR系统为例,使用prach-ConfigurationIndex参数就去查FR1 TDD的表(38211 6.3.3.2-3)preamble的formatSFN(nSFN mod x = y,这个公式其实暗含了PRACH的配置周期,周期为x)SubFrame1个subframe里面有多少个PRACH slot。
2025-09-01 15:10:11
1130
原创 NR --PO计算
下面看下具体的例子 以下参数都在SIB1 中,SCS =30khzpaging 对应CORESET 0 searchspace 1CORESET0 频域48个RB,时域占用一个符号searchspace 1对应的是每个时隙的第一个符号。N是halfT =64radio frameNs=1S=4 (ssb-PositionsInBurst 111100000)即4个连续的PDCCH monitoring Occasion 组成一个PO。首先确定SFN。
2025-08-26 16:53:54
1114
原创 进程间通信——POSIX 和 System V适用场景
POSIX 和 System V 是 Unix 系统中两套经典的进程间通信(IPC)标准,它们各自定义了共享内存、消息队列、信号量等机制,适用场景的差异主要源于接口设计、可移植性、资源管理方式等特性。以下从核心特性出发,分析两者的典型使用场景。
2025-07-23 21:28:53
388
原创 多线程--sem_wait(&sem)特殊用法
若主线程需要等待子线程完成某些初始化操作后再继续执行,可在 main 中调用 sem_wait 阻塞等待,子线程初始化完成后调用 sem_post 唤醒主线程。若主线程负责创建多个子线程,并通过信号量限制同时运行的子线程数量,sem_wait 可放在主线程的创建循环中。
2025-07-17 18:35:39
261
原创 Low PHY和HighPHY 详解
在无线通信系统(如 4G LTE、5G NR)中,物理层(PHY)的核心任务是实现 “数字信息” 与 “无线信号” 的相互转换,并通过无线信道可靠传输。其整体处理流程分为下行(基站→终端) 和上行(终端→基站) 两个方向,两者流程对称但具体操作略有差异。
2025-07-16 20:30:23
972
原创 基站前传卡 加速卡 EU
基站加速卡:聚焦 “数据处理”,通过硬件加速提升基站信号处理、协议栈运行效率,支撑 5G 高带宽、低时延、多用户并发需求。前传卡:聚焦 “数据传输”,通过接口适配、带宽保障和链路可靠性设计,确保 DU 与 AAU 之间的高速、稳定通信,是基站 “处理单元” 与 “射频单元” 的关键连接桥梁。
2025-07-16 20:21:29
1034
原创 gerrit设置教程
scp -p -P 29418 姓名全拼@172.19.64.22:hooks/commit-msg ${gitdir}/hooks/打开cmd或者git bash,输入:ssh-keygen,连续回车。请按照提示利用命令进行来配置自己当前的git用户名、邮箱,用户名和邮箱,用户名和邮箱需要和前面步骤中保持一致。git clone “ssh://姓名全拼@172.19.64.22:29418/6G_UE”
2025-07-15 18:30:28
606
原创 C语言返回局部变量问题
要是返回局部变量的地址(也就是指针),就会有风险。因为局部变量在函数结束后就会被销毁,此时指针所指向的内存区域就变得无效了。当返回的是局部变量的值(像int、float、struct等类型)时,实际上返回的是该变量的副本,不会有问题。通过malloc分配的内存,必须由调用者负责释放,否则会造成内存泄漏。静态局部变量的生命周期和程序是一样的,即便函数执行结束,它依然存在。局部数组也是局部变量,函数结束后其内存会被回收。
2025-06-17 11:47:36
399
原创 通信自组网
http://www.mem.gov.cn/gk/zfxxgkpt/fdzdgknr/202408/W020240805624410019323.pdf
2025-06-04 08:30:55
407
原创 C++虚函数和纯虚函数
总结:纯虚函数之所以不能实例化,是因为它没有具体的实现,使得包含它的类成为抽象类。而抽象类的虚函数表不完整,缺少纯虚函数的地址,所以编译器会禁止其实例化,以此保证类型系统的安全性。在 C++ 里,纯虚函数是在基类中声明但没有具体实现的虚函数,其声明结尾用= 0表示。对于包含虚函数的类,编译器会为其创建虚函数表,这个表中存储着类成员函数的地址。// 这是一个纯虚函数。纯虚函数在虚函数表中对应的是一个未定义的条目,或者说是一个占位符。派生类必须实现基类中的所有纯虚函数,才能成为具体类,进而被实例化。
2025-06-04 08:30:22
375
原创 C++虚函数和纯虚函数
总结:纯虚函数之所以不能实例化,是因为它没有具体的实现,使得包含它的类成为抽象类。而抽象类的虚函数表不完整,缺少纯虚函数的地址,所以编译器会禁止其实例化,以此保证类型系统的安全性。在 C++ 里,纯虚函数是在基类中声明但没有具体实现的虚函数,其声明结尾用= 0表示。对于包含虚函数的类,编译器会为其创建虚函数表,这个表中存储着类成员函数的地址。// 这是一个纯虚函数。纯虚函数在虚函数表中对应的是一个未定义的条目,或者说是一个占位符。派生类必须实现基类中的所有纯虚函数,才能成为具体类,进而被实例化。
2025-06-04 08:29:46
258
原创 C++虚函数和纯虚函数
总结:纯虚函数之所以不能实例化,是因为它没有具体的实现,使得包含它的类成为抽象类。而抽象类的虚函数表不完整,缺少纯虚函数的地址,所以编译器会禁止其实例化,以此保证类型系统的安全性。在 C++ 里,纯虚函数是在基类中声明但没有具体实现的虚函数,其声明结尾用= 0表示。对于包含虚函数的类,编译器会为其创建虚函数表,这个表中存储着类成员函数的地址。// 这是一个纯虚函数。纯虚函数在虚函数表中对应的是一个未定义的条目,或者说是一个占位符。派生类必须实现基类中的所有纯虚函数,才能成为具体类,进而被实例化。
2025-05-26 22:07:29
430
原创 C++性能优化之访存优化(未完)
软件是使用预取指令或者内置函数,内置函数就是编译器自带的函数,_builtin_prefetch(void * addr, rw, locality);第一个采纳数是内存指针数据,第二个是读写,第三个预取数据的时间局部性,0-3,越大代表时间局部性越强。数据预取是一种提前为处理器准备数据机制,主要有硬件预取和软件预取。硬件是根据程序运行状态预测,硬件机制。
2025-05-14 11:18:45
328
原创 20250415学习
虚继承时构造函数的执行顺序与普通继承时不同:在最终派生类的构造函数调用列表中,不管各个构造函数出现的顺序如何,编译器总是先调用虚基类的构造函数,再按照出现的顺序调用其他的构造函数;C++ 代码中的大部分内容都是放在内存中的,例如定义的变量、创建的对象、字符串常量、函数形参、函数体本身、new或malloc()分配的内存等,这些内容都可以用&来获取地址,进而用指针指向它们。还有一些平时不太留意的临时数据,例如表达式的结果、函数的返回值等,它们可能会放在内存中,也可能会放在寄存器中。构造函数不能是虚函数。
2025-05-07 20:28:17
374
原创 C++多线程的性能优化
现代多核处理器环境下,线程池技术是提高程序并发性能的重要手段。本文解析一个采用工作窃取(Work Stealing)算法的高效线程池实现,通过详细代码分析和性能测试展示其优势。
2025-04-01 22:57:32
780
原创 协议学习——1 NCDSSB
上次面试NCDssb, 今天特意学习下,除了物理层的定义,其实再很多物理层的书上都有,主要是讲下RRC曾怎么玩的。配置在专用BWP上配置,切实BWP的专用部分。
2025-03-26 11:33:20
336
原创 数据结构与算法——数据结构4
使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。程序员没有稳定一说,目前学习数据结构,其实不难,最近在学习,系统性的总结下,便于后续复习和使用。二叉树的先序 中序 后序 以及基于广度的层次遍历。主要了解图的基本概念,深度优点搜索和广度优先搜索就行。还要知道链表反转,知道迭代法和递归法就可以【】这里没有基于数组的是,只用掌握一种就行了。在这些基础结构上知道栈和队列的实现。同时还要知道顺序表和链表的优缺点。对于树主要是掌握树的基本概念。知道霍夫曼树基本结构。
2025-03-14 18:13:29
317
原创 数据结构与算法——算法2 判断两个单链表是否相交及找到第一个交点
因为我们知道,若两个链表相交,则从第一个相交节点开始,后面的节点都相交。从头开始遍历第一个链表,遍历第一个链表的每个节点时,同时从头到尾遍历第二个链表,看是否有相同的节点,第一次找到相同的节点即第一个交点。因为两个链表中有一个共同节点,则这个节点里的指针域指向的下一个节点地址一样,所以下一个节点也会相交,依次类推。若两链表相交,则循环出栈,直到遇到两个出栈的节点不相同,则这个节点的后一个节点就是第一个相交的节点。如果两个单链表有共同的节点,那么从第一个共同节点开始,后面的节点都会重叠,直到链表结束。
2025-03-13 22:03:30
299
原创 数据结构与算法——算法1 单链表反转
3) 再退一层,此时 new_head 仍指向节点 4,而 head 退出一层后,指向的是节点 2。4)再退一层,此时 new_head 仍指向节点 4,而 head 退出一层后,指向的是节点 1。整个操作过程如图。2) 在此基础上,开始执行 17、18 行代码,整个操作过程如图 9 所示,最后将 new_head 的指向继续作为函数的返回值,传给上一层的 new_head。因此,当递归首次退出一层时,new_head 指向的是节点 4 ,而 head 由于退出一层,指向的是节点 3,如下图。
2025-03-13 21:52:08
261
原创 C++编译问题——1模板函数的实现必须在头文件中
模板函数的实现必须在头文件中,因为编译器在实例化模板时需要看到完整的实现。所以,你可以直接把 insert 函数的实现放在头文件里。假设你有一个头文件 SeqList.h 和一个源文件 SeqList.cpp。今天编译数据结构时,遇见一个编译错误。
2025-03-13 19:08:13
417
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅