自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NR SRB DRB

无线承载RB(Radio Bearer)是基站为UE分配不同层协议实体及配置的总称,包括PDCP协议实体、RLC协议实体、MAC协议实体和PHY分配的一系列资源等。RB是无线接口连接eNodeB和UE的通道(包括PHY、MAC、RLC和PDCP),任何在无线接口上传输的数据都要经过RB。无线承载有两种,一种是信令承载称为SRB,一种是数据承载称为DRB,两者各有分工,分层保证了无线传输的有效性。SRB表示RRC和NAS消息的传输的无线承载,包含SRB0~SRB3。

2023-10-23 10:48:16 162

原创 LTE的帧同步

HFN:一个HFN时域长度10240ms,也可以用0~1024表示它。SFN:一个SFN时域长度10ms,可以用编号0~1023表示它。子帧:一个子帧时域长度1ms,可以用编号0~9的数字编号表示它。也就是说一个SFN有十个子帧,一个HFN有1024个SFN。LTE中的时钟有三种:子帧、SFN、HFN。子帧的同步是利用PSS/SSS信号。SFN的同步在MIB消息。HFN同步在SIB1消息。

2023-10-20 16:38:36 173

原创 LTE MIB消息

(3)systemFrameNumber:系统帧号,用于UE和网侧的帧同步。(2)phich-Config:PHICH配置参数。(1)dl-Bandwidth:下行带宽参数。

2023-10-20 11:12:02 64

原创 LTE PDCCH 盲检测

(空间搜索)但是UE知道自己当前在期待什么信息,例如在Idle态UE期待的信息是paging, SI;PDCCH中承载的是各种各样的控制消息:时、频资源的位置,编码调制方式,HARQ的控制信息等。基站是上下行资源调度的决策者,他通过PDCCH控制上下行数据传输。,如果CRC校验成功,那么UE就知道这个信息是自己需要的,也可以进一步知道相应的DCI format,调制方式,从而解出DCI内容。QoS参数、eNodeB中准备调度的资源数量、UE报告的信道质量 CQI、UE能力、系统带宽、干扰水平。

2023-10-20 10:35:18 126 1

原创 PRACH

2023-10-19 16:27:21 26 1

原创 PDCCH PDSCH

8:8个CCE聚合, 搜索空间大小定义为16, 一共可承载2个DCI,因此盲搜2次。2:2个CCE聚合, 搜索空间大小定义为12,一共可承载6个DCI =》 6次。8:8个CCE聚合, 搜索空间大小定义为16,一共可承载2个DCI =》 2次。4:4个CCE聚合,搜索空间大小定义为16, 一共可承载4个DCI,因此盲搜4次。4:4个CCE聚合,搜索空间大小定义为08,一共可承载2个DCI =》 2次。4:4个CCE聚合,搜索空间大小定义为16, 一共可承载4个DCI。

2023-10-19 15:33:06 68 1

原创 PBCH PHICH PCFICH

2023-10-18 17:21:34 35 1

原创 LTE 下行参考信号

2023-10-18 16:39:50 21 1

原创 LTE 同步信号

2023-10-18 16:19:14 41 1

原创 LTE的帧结构

5G NR支持符号级的上下行变化,而LTE只支持到子帧级别。

2023-10-18 14:48:08 39 1

原创 NR 同步信号 PSS/SSS

是从频域去认识的,一个子信道可以有一个或者多个子载波,子载波就是一个个载波。我举一个数值例子,比如20Mhz带宽,假设子载波间隔是15kHz,这里面有1200个子载波便是占18MHz带宽,剩下的2MHz带宽是保护带宽。帧、时隙从时域角度去认识的,比如5G Rel15里面,一个无线帧是10ms,子帧是1ms,但是一个子帧可能因为子载波间隔的不同,会有多个时隙。

2023-10-18 09:12:49 204 1

原创 copy-on-write

关于多线程的读写问题,用shared_ptr管理共享数据。write端,发现引用计数为1,这个时候可以安全的修改数据。read端,在读之前将引用计数加1,读完之后减1问题在于在write端,发现引用计数大于1,改怎么处理,一直等着读端完成吗???共享的数据:::shared_ptr<int> x;读端:void read(){ shared_ptr<int> temp; mutex.lock();//这个锁是共享的 temp = x

2022-03-03 18:41:50 135

原创 Redis变慢了,是哪些原因引起的

Redis的阻塞点客户端:网络io、键值对增删改查操作、数据库操作磁盘:生成RDB快照、记录AOF日志、AOF日志重写主从节点:主库生成、传输RDB文件,从库接收RDB文件、清空数据库、加载RDB文件1.与客户端交互时的阻塞点第一个:Redis集合全量查询的聚合操作 HGETALL SMEMBERS。第二个:删除大量的集合元素第三个:清空数据库FLUSHDB、FLUSHALL2.和磁盘交互时的阻塞点关于磁盘io的一些阻塞点,Redis通过开启子进程来生成RDB快照、AOF

2022-02-21 14:43:19 580

原创 HTTPS是什么?SSL/TLS握手过程

学过http的都知道http发送数据都是明文方式,数据是没有安全性的,因此诞生了https,https就是在http的基础上进行SSL/TLS加密(现如今都是TLS加密)。服务端需要申请SSL证书,这个SSL证书是需要向CA第三方机构申请的,这个证书表明域名属于谁,这个证书里还包括了特定的公钥和私钥,服务器安装SSL证书后,用户就可以通过HTTPS来访问服务器了学过http的都知道http是建立在tcp上的,而https就是在tcp三次握手后在进行一次TLS握手,这个握手是如何进行的如下所示:(

2022-02-18 19:41:41 107

原创 html+php 处理表单

对比一下html和php文件分开和自处理表单的一些简单区别下面代码事分开的html和php代码<html><head><title>first html form</title></head> <body bgcolor=yellow> <form action="/biaodan/test.php" method="GET"> // 1 <p/><b>Type your n

2022-01-29 15:11:33 571

原创 线程安全的观察者模式(智能指针)

与其他面向对象语言不同,C++要求程序员自己去管理对象的生命周期,这就意味着我们总是需要去关注对象的销毁,尤其是在多线程的环境下对象的析构函数编写变得尤为困难,所以在这个方面需要下很大的功夫,否则用C++编写的程序将有很有很多bug。当异构函数遇到多线程在阅读文章之前我先提出两个问题:在析构一个对象的时候,从何而知此时是否有别的线程正在执行该对象的成员函数?调用某个对象的成员函数之前,如何知道对象还活着?它的析构函数会不会碰巧执行到一半?这些问题是多线程编程面临的基本问题,本文将从这些问

2022-01-09 15:40:11 2854

原创 线程安全的单例(参考muduo库)

我的有篇文章有简单的介绍单例的实现,在其中关于多线程安全问题采取的策略是加锁,最近在阅读muduo源码的时候看到更加好的实现方式通过pthread_once.pthread_once在多线程的环境下,有些事仅仅需要执行一次。通常会把这个初始化放在mian函数中,当你写一个库的时候就不能放在main函数中了,这个时候你可以考虑pthread_onceint pthread_once(pthread_once_t* once_control, void(*init_routine)(void));

2022-01-06 18:12:53 2113

原创 生产者消费者(c++、blockingqueue参考muduo库)

本文基于c++面对对象模式设计一个blockingqueue类,该类隐藏锁的一些细节,只提供给用户一些简单的接口,不理解生产者消费者模式不影响阅读。#include <pthread.h>#include <queue>template<typename T>class blockingqueue{ blockingqueue(): deque_() { pthread_cond_init(&cond_,NULL); pthread_m

2022-01-05 20:37:34 515

原创 多线程编程同步问题(C、Linux)

下面我们要讨论多线程编程环境下用于线程同步的方式,有:POSIX信号量、互斥量、条件变量。POSIX信号量POSIX信号量函数有五个如下:#include<semaphore.h>int sem_init(sem* sem, int pshared, unsigned int value);int sem_destroy(sem_t* sem);int sem_wait(sem_t* sem);int sem_trywait(sem_t* sem);int sem_po

2022-01-05 15:42:36 1028

原创 C++标准库bind

c++11提供的新型适配器bind,std::bind可以绑定函数、函数对象、成员函数、成员变量。bind functions看下面代码通过bind绑定后,调用fn_five()打印5。当然通过传入两个参数10,2是这种结果,如果我想固定分母是2,分子自己定义呢?double my_divide(double x, double y){ return x/y;}struct MyPair{ double a, b; double multiply(){retur

2022-01-03 19:24:58 330

原创 muduo线程库详细分析

进入muduo线程库之前,先看一下以下内容,方便更好的理解muduo线程库的设计。线程标识符在Linux中每个进程有一个pid,类型pid_t,由getpid()取得;Linux下的POSIX线程也有一个id,类型pthread_t,由pthread_self()获取,该id由线程库维护,所以各个进程的中的线程可能出现相同的id。如果我们需要通过进程P1中的某个线程t1向进程P2中的某个线程t2发送信号,因为是向进程中的线程发送信号,那么肯定不能使用P2进程的pid,更加不能使用t2的pthread

2022-01-03 18:48:06 341

原创 Redis中的对象类型和编码

每当我们通过Redis命令在数据库新创建一个键值对时,我们至少会创建两个对象,分别是键对象和值对象,Redis中的对象都是用redisObject结构表示,该结构中保存数据有关的三个属性分别是type属性、encoding属性和ptr属性:typedef struct redisObject{ unsigned type:4;//类型 unsigned encoding:4; //编码 void *ptr;//指向底层实现数据结构的指针 ...}1.类型ty

2021-12-28 21:47:45 727

原创 怎么设计单例模式

在GoF著作中对单例模式有这样的描述:“保证一个class只有一个实体,并为它提供一个全局访问点”。看起来很简单的描述实际上设计一个Singleton需要考虑很多因素,具体如下:1.怎么更好地实行“Singleton的唯一性”2.Singleton对象的生命周期(管理方案复杂,这篇暂不讨论)3.multithreading(多线程)问题静态数据 + 静态函数 != Singleton乍一看,实现Singleton很简单,如下这种静态成员函数 + 静态成员变量就能实现;但是这种做法有很多缺

2021-11-26 19:59:16 162

空空如也

空空如也

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

TA关注的人

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