5G NR PUSCH物理层过程

物理层过程

在这里插入图片描述

加扰

假设要在单个码字q上传输的bit块为 b ( q ) ( 0 ) , . . . , b ( q ) ( M b i t ( q ) − 1 ) b^{(q)}(0),...,b^{(q)}(M_{bit}^{(q)} - 1) b(q)(0),...,b(q)(Mbit(q)1) ,其中 M b i t ( q ) M_{bit}^{(q)} Mbit(q)是总比特数,加扰之后的bit块长度不变,用 b ~ ( q ) ( 0 ) , . . . , b ~ ( q ) ( M b i t ( q ) − 1 ) \tilde{b}^{(q)}(0),...,\tilde{b}^{(q)}(M_{bit}^{(q)} - 1) b~(q)(0),...,b~(q)(Mbit(q)1) 表示。具体的加扰方式见38.211-6.3.1.1章节的伪代码。
在这里插入图片描述

对加扰序列产生影响的因素有下面几点:

  • 占位符’x’、‘y’:当对1或2比特的信息做信道编码时,为了最大化携带有效信息的bit位之间的[欧氏距离],会根据不同的调制阶数在其中填充占位符,编码1比特信息查看表格38.212-Table 5.3.3.1-1,编码2比特信息查看表格38.212-Table 5.3.3.2-1,其中 c 2 = ( c 0 + c 1 ) m o d 2 c_2 = (c_0 + c_1) mod 2 c2=(c0+c1)mod2
    在这里插入图片描述
    在这里插入图片描述

  • c ( q ) ( i ) c^{(q)}(i) c(q)(i),按照38.211-5.2.1章节生成, x 1 ( n ) x_1(n) x1(n)初始化为 x 1 ( 0 ) = 1 , x 1 ( n ) = 0 , n = 1 , 2 , . . . , 30 x_1(0) = 1, x_1(n) = 0,n=1,2,...,30 x1(0)=1,x1(n)=0,n=1,2,...,30 x 2 ( n ) x_2(n) x2(n)的初始化由 c i n i t c_{init} cinit决定,而 c i n i t = n R N T I ∗ 2 15 + n I D c_{init} = n_{RNTI} * 2^{15} + n_{ID} cinit=nRNTI215+nID

    在这里插入图片描述

    • n I D n_{ID} nID:用于加扰序列生成器的初始化,取值范围是 n I D ∈ { 0 , 1 , . . . , 1023 } n_{ID} \in{\{0,1,...,1023\}} nID{0,1,...,1023}

      • 如果RNTI等于C-RNTI、MCS-C-RNTI或CS-RNTI,而且没有在公共搜索空间中使用DCI format 0_0来调度传输,那么如果配置了高层参数dataScramblingIdentityPUSCH n I D n_{ID} nID就使用这个参数配置值。

      • 其他情况,使用物理小区ID,即 n I D = N I D c e l l n_{ID} = N_{ID}^{cell} nID=NIDcell

    • n R N T I n_{RNTI} nRNTI:对应PUSCH传输的RNTI。

调制

单码字q上加扰后的比特块为 b ~ ( q ) ( 0 ) , . . . , b ~ ( q ) ( M b i t ( q ) − 1 ) \tilde{b}^{(q)}(0),...,\tilde{b}^{(q)}(M_{bit}^{(q)} - 1) b~(q)(0),...,b~(q)(Mbit(q)1),要使用Table
6.3.1.2-1的调制方案进行调制,生成一个复数的调制符号块 d ( q ) ( 0 ) , . . . , d ( q ) ( M s y m b ( q ) − 1 ) d^{(q)}(0),...,d^{(q)}(M_{symb}^{(q)} - 1) d(q)(0),...,d(q)(Msymb(q)1)

在这里插入图片描述

  • 调制方式 π {\pi} π/2-BPSK

    在这里插入图片描述

  • 调制方式QPSK,b(2i)和b(2i+1)都映射到d(i)

    在这里插入图片描述

  • 调制方式16QAM,b(4i)、b(4i+1)、b(4i+2)、b(4i+3)都映射到d(i)

    在这里插入图片描述

  • 调制方式64QAM,b(6i)、b(6i+1)、b(6i+2)、b(6i+3)、b(6i+4)、b(6i+5)都映射到d(i)

    在这里插入图片描述

  • 调制方式256QAM,b(8i)、b(8i+1)、b(8i+2)、b(8i+3)、b(8i+4)、b(8i+5)、b(8i+6)、b(8i+7)都映射到d(i)

    在这里插入图片描述

层映射

码字q上的复数调制符号 d ( q ) ( 0 ) , . . . , d ( q ) ( M s y m b ( q ) − 1 ) d^{(q)}(0),...,d^{(q)}(M_{symb}^{(q)} - 1) d(q)(0),...,d(q)(Msymb(q)1)按照38.211-Table7.3.1.3-1映射到最高4层上。用 x ( i ) = [ x ( 0 ) ( i ) . . . x ( v − 1 ) ( i ) ] T , i = 0 , 1 , . . . , M s y m b l a y e r − 1 x(i) = [x^{(0)}(i) ... x^{(v-1)}(i)]^T,i = 0,1,...,M_{symb}^{layer} - 1 x(i)=[x(0)(i)...x(v1)(i)]T,i=0,1,...,Msymblayer1表示,其中 v v v是层编号, M s y m b l a y e r M_{symb}^{layer} Msymblayer是映射到每一层的调制符号数。

在这里插入图片描述

举个例子,单码字上的复数调制符号 d ( 0 ) , d ( 1 ) . . . d ( 95 ) d(0),d(1)...d(95) d(0),d(1)...d(95)要映射到4层上,那么在每一层映射的符号分别为

  • 层0: d ( 0 ) , d ( 4 ) , d ( 8 ) , . . . , d ( 88 ) , d ( 92 ) d(0),d(4),d(8),...,d(88),d(92) d(0),d(4),d(8),...,d(88),d(92)

  • 层1: d ( 1 ) , d ( 5 ) , d ( 9 ) , . . . , d ( 89 ) , d ( 93 ) d(1),d(5),d(9),...,d(89),d(93) d(1),d(5),d(9),...,d(89),d(93)

  • 层2: d ( 2 ) , d ( 6 ) , d ( 10 ) , . . . , d ( 90 ) , d ( 94 ) d(2),d(6),d(10),...,d(90),d(94) d(2),d(6),d(10),...,d(90),d(94)

  • 层3: d ( 3 ) , d ( 7 ) , d ( 11 ) , . . . , d ( 91 ) , d ( 95 ) d(3),d(7),d(11),...,d(91),d(95) d(3),d(7),d(11),...,d(91),d(95)

    对应的 x ( 0 ) = [ d ( 0 ) , d ( 1 ) , d ( 2 ) , d ( 3 ) ] T x(0) = [d(0),d(1),d(2),d(3)]^T x(0)=[d(0),d(1),d(2),d(3)]T x ( 1 ) = [ d ( 4 ) , d ( 5 ) , d ( 6 ) , d ( 7 ) ] T x(1) = [d(4),d(5),d(6),d(7)]^T x(1)=[d(4),d(5),d(6),d(7)]T x ( 2 ) = [ d ( 8 ) , d ( 9 ) , d ( 10 ) , d ( 11 ) ] T x(2) = [d(8),d(9),d(10),d(11)]^T x(2)=[d(8),d(9),d(10),d(11)]T,…,

    x ( 22 ) = [ d ( 88 ) , d ( 89 ) , d ( 90 ) , d ( 91 ) ] T x(22) = [d(88),d(89),d(90),d(91)]^T x(22)=[d(88),d(89),d(90),d(91)]T x ( 23 ) = [ d ( 92 ) , d ( 93 ) , d ( 94 ) , d ( 95 ) ] T x(23) = [d(92),d(93),d(94),d(95)]^T x(23)=[d(92),d(93),d(94),d(95)]T

    也就是说映射的结果是: [ x ( 0 ) ( 0 ) x ( 0 ) ( 1 ) , . . . , x ( 0 ) ( 23 ) x ( 1 ) ( 0 ) x ( 1 ) ( 1 ) , . . . , x ( 1 ) ( 23 ) x ( 2 ) ( 0 ) x ( 2 ) ( 1 ) , . . . , x ( 2 ) ( 23 ) x ( 3 ) ( 0 ) x ( 3 ) ( 1 ) , . . . , x ( 3 ) ( 23 ) ] \begin{bmatrix} x^{(0)}(0)\ x^{(0)}(1),...,x^{(0)}(23) \\ x^{(1)}(0)\ x^{(1)}(1),...,x^{(1)}(23) \\ x^{(2)}(0)\ x^{(2)}(1),...,x^{(2)}(23) \\ x^{(3)}(0)\ x^{(3)}(1),...,x^{(3)}(23) \\ \end{bmatrix} x(0)(0) x(0)(1),...,x(0)(23)x(1)(0) x(1)(1),...,x(1)(23)x(2)(0) x(2)(1),...,x(2)(23)x(3)(0) x(3)(1),...,x(3)(23) = [ d ( 0 ) d ( 4 ) d ( 8 ) , . . . , d ( 88 ) , d ( 92 ) d ( 1 ) d ( 5 ) d ( 9 ) , . . . , d ( 89 ) , d ( 93 ) d ( 2 ) d ( 6 ) d ( 10 ) , . . . , d ( 90 ) , d ( 94 ) d ( 3 ) d ( 7 ) d ( 11 ) , . . . , d ( 91 ) , d ( 95 ) ] \begin{bmatrix} d(0)\text{\ \ \ \ }d(4)\text{\ \ }d(8),...,d(88),d(92)\ \\ d(1)\text{\ \ \ }d(5)\text{\ \ }d(9),...,d(89),d(93) \\ d(2)\text{\ \ }d(6)\text{\ \ }d(10),...,d(90),d(94) \\ d(3)\text{\ \ }d(7)\text{\ \ }d(11),...,d(91),d(95) \\ \end{bmatrix} d(0)    d(4)  d(8),...,d(88),d(92) d(1)   d(5)  d(9),...,d(89),d(93)d(2)  d(6)  d(10),...,d(90),d(94)d(3)  d(7)  d(11),...,d(91),d(95) M s y m b l a y e r M_{symb}^{layer} Msymblayer为24

转换预编码

转换预编码是将数据依次做串并转换,变成并行 M s c P U S C H M_{sc}^{PUSCH} MscPUSCH个数据,然后对这些并行的数据做DFT(离散傅里叶变换),也就是说这一步的主要作用是将时域上的离散数据变换成频域上的离散数据。

是否要做这一步操作,要看高层配置参数PUSCH-onfig ->transformPrecoder是否配置为enabled。

如果这个功能打开,那么 x ~ ( 0 ) ( i ) \tilde{x}^{(0)}(i) x~(0)(i)的值取决于PT-RS(相位跟踪参考信号)的配置,以一层传输为例:

  • 没有用PT-RS,单独的层 λ = 0 \lambda = 0 λ=0上的复数符号块 x ( 0 ) , . . . , x 0 ( M s y m b l a y e r − 1 ) x^{(0)},...,x^{0}(M_{symb}^{layer}-1) x(0),...,x0(Msymblayer1)应该分成 M s y m b l a y e r / M s c P U S C H M_{symb}^{layer}/M_{sc}^{PUSCH} Msymblayer/MscPUSCH个集合,每个集合对应一个OFDM符号,且 x ~ ( 0 ) ( i ) = x ( 0 ) ( i ) \tilde{x}^{(0)}(i) = x^{(0)}(i) x~(0)(i)=x(0)(i)

    按照上面的例子,假设 M s c P U S C H M_{sc}^{PUSCH} MscPUSCH=12,层0上的符号 x ( 0 ) ( 0 ) x ( 0 ) ( 1 ) , . . . , x ( 0 ) ( 23 ) x^{(0)}(0)\ x^{(0)}(1),...,x^{(0)}(23) x(0)(0) x(0)(1),...,x(0)(23)分成两
    个集合: x ( 0 ) ( 0 ) , . . . , x ( 0 ) ( 11 ) x^{(0)}(0),...,\ x^{(0)}(11) x(0)(0),..., x(0)(11) x ( 0 ) ( 12 ) , . . . , x ( 0 ) ( 23 ) x^{(0)}(12),...,\ x^{(0)}(23) x(0)(12),..., x(0)(23),各对应一个OFDM符号。

在这里插入图片描述

  • 使用了PT-RS,复数符号块 x ( 0 ) , . . . , x 0 ( M s y m b l a y e r − 1 ) x^{(0)},...,x^{0}(M_{symb}^{layer}-1) x(0),...,x0(Msymblayer1)被分成多个集合,映射时要避开PT-RS占用的位置,所以集合 l l l包含的符号数为 M s c P U S C H − ε l N s a m p g r o u p N g r o u p P T R S M_{sc}^{PUSCH}-\varepsilon_lN_{samp}^{group}N_{group}^{PTRS} MscPUSCHεlNsampgroupNgroupPTRS,在做转换预编码之前映射到符号 x ~ ( 0 ) ( l M s c P U S C H + i ′ ) \tilde{x}^{(0)}(lM_{sc}^{PUSCH}+i') x~(0)(lMscPUSCH+i),其中 i ′ ∈ { 0 , 1 , . . . , M s c P U S C H − 1 } i'\in{\{0,1,...,M_{sc}^{PUSCH}-1\}} i{0,1,...,MscPUSCH1} i ′ ≠ m i'\neq m i=m m m m指在集合 l l l中的PT-RS样本索引,每个PT-RS组中的样本数量 N s a m p g r o u p N_{samp}^{group} Nsampgroup,PT-RS组的数量 N g r o u p P T − R S N_{group}^{PT-RS} NgroupPTRS都在6.4.1.2.2.2中定义。当OFDM符号 l l l包含>=1个PT-RS样本时 ε l = 1 \varepsilon_l=1 εl=1,否则 ε l = 0 \varepsilon_l=0 εl=0

    在这里插入图片描述

    基于上面的例子,假设 N s a m p g r o u p N_{samp}^{group} Nsampgroup取值2, N g r o u p P T − R S N_{group}^{PT-RS} NgroupPTRS取值2,通过上表可得m=2,3,8,9,那么 x ( 0 ) ( 0 ) x ( 0 ) ( 1 ) , . . . , x ( 0 ) ( 23 ) x^{(0)}(0)\ x^{(0)}(1),...,x^{(0)}(23) x(0)(0) x(0)(1),...,x(0)(23)就会按下图来映射
    在这里插入图片描述

最后做转换预编码,按照下面的公式生成一个复数符号块 y ( 0 ) ( 0 ) , . . . , y ( 0 ) ( M s y m b l a y e r − 1 ) y^{(0)}(0),...,y^{(0)}(M_{symb}^{layer}-1) y(0)(0),...,y(0)(Msymblayer1)

在这里插入图片描述

预编码

向量块 [ y ( 0 ) ( i ) . . . y ( v − 1 ) ( i ) ] T , i = 0 , 1 , . . . , M s y m b l a y e r − 1 [y^{(0)}(i) ... y^{(v-1)}(i)]^T,i=0,1,...,M_{symb}^{layer}-1 [y(0)(i)...y(v1)(i)]T,i=0,1,...,Msymblayer1按如下方式预编码并映射到天线端口 { p 0 , . . . , p ρ − 1 } \{p_0,...,p_{\rho-1}\} {p0,...,pρ1}上:

在这里插入图片描述
,其中 i = 0 , 1 , . . . , M s y m b a p − 1 , M s y m p a p = M s y m b l a y e r i=0,1,...,M_{symb}^{ap}-1,M_{symp}^{ap}=M_{symb}^{layer} i=0,1,...,Msymbap1,Msympap=Msymblayer

  • 如果是基于非码本的传输,则预编码矩阵W为单位矩阵。

  • 如果是基于码本的传输:在单天线端口进行单层传输时W =1;否则通过TPMI索引查表38.211 Table 6.3.1.5-1到Table 6.3.1.5-7得到W,TPMI索引从DCI或者高层参数中获取。DCI 1_0中用字段‘Precoding information and number of layers’来指示TPMI,通过如下方式确定TPMI索引:

    • 4天线端口,高层参数配置为txConfig = codebook,transformPrecoder = disabled,maxRank = 2/3/4,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-2获取TMPI
      在这里插入图片描述

    • 4天线端口,高层参数配置为txConfig = codebook,transformPrecoder = enabled或者transformPrecoder = disabled且maxRank = 1,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-3获取TMPI
      在这里插入图片描述

    • 2天线端口,高层参数配置为txConfig = codebook,transformPrecoder = disabled且maxRank = 2,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-4获取TMPI
      在这里插入图片描述

    • 2天线端口,高层参数配置为txConfig = codebook,transformPrecoder = enabled或者transformPrecoder = disabled且maxRank = 1,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-5获取TMPI
      在这里插入图片描述

  • 如果没有配置高层参数txConfig,W=1。

例子:对于使用四个天线端口的四层传输,从DCI中得到TPMI索引为0,查表Table 6.3.1.5-7可以得到W,从而计算出 z ( p ) ( 0 ) , . . . , z ( p ) ( M s y m b a p − 1 ) z^{(p)}(0),...,z^{(p)}(M_{symb}^{ap}-1) z(p)(0),...,z(p)(Msymbap1)

在这里插入图片描述

1 2 [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] \frac{1}{2}\begin{bmatrix} 1\ 0\ 0\ 0 \\ 0\ 1\ 0\ 0 \\ 0\ 0\ 1\ 0 \\ 0\ 0\ 0\ 1 \\ \end{bmatrix} 21 1 0 0 00 1 0 00 0 1 00 0 0 1 * [ y ( 0 ) ( 0 ) y ( 0 ) ( 1 ) . . . y ( 0 ) ( 23 ) y ( 1 ) ( 0 ) y ( 1 ) ( 1 ) . . . y ( 1 ) ( 23 ) y ( 2 ) ( 0 ) y ( 2 ) ( 1 ) . . . y ( 2 ) ( 23 ) y ( 3 ) ( 0 ) y ( 3 ) ( 1 ) . . . y ( 3 ) ( 23 ) ] \begin{bmatrix} y^{(0)}(0)\ y^{(0)}(1)\ ...y^{(0)}(23) \\ y^{(1)}(0)\ y^{(1)}(1)\ ...y^{(1)}(23) \\ y^{(2)}(0)\ y^{(2)}(1)\ ...y^{(2)}(23) \\ y^{(3)}(0)\ y^{(3)}(1)\ ...y^{(3)}(23) \\ \end{bmatrix} y(0)(0) y(0)(1) ...y(0)(23)y(1)(0) y(1)(1) ...y(1)(23)y(2)(0) y(2)(1) ...y(2)(23)y(3)(0) y(3)(1) ...y(3)(23) = [ y ( 0 ) ( 0 ) 2 y ( 0 ) ( 1 ) 2 ...  y ( 0 ) ( 23 ) 2 y ( 1 ) ( 0 ) 2 y ( 1 ) ( 1 ) 2 ...  y ( 1 ) ( 23 ) 2 y ( 2 ) ( 0 ) 2 y ( 2 ) ( 1 ) 2 ...  y ( 2 ) ( 23 ) 2 y ( 3 ) ( 0 ) 2 y ( 3 ) ( 1 ) 2 ...  y ( 3 ) ( 23 ) 2 ] \begin{bmatrix} \frac{y^{(0)}(0)}{2}\text{\ \ }\frac{y^{(0)}(1)}{2}\text{\ \ ...\ }\frac{y^{(0)}(23)}{2} \\ \frac{y^{(1)}(0)}{2}\text{\ \ }\frac{y^{(1)}(1)}{2}\text{\ \ ...\ }\frac{y^{(1)}(23)}{2} \\ \frac{y^{(2)}(0)}{2}\text{\ \ }\frac{y^{(2)}(1)}{2}\text{\ \ ...\ }\frac{y^{(2)}(23)}{2} \\ \frac{y^{(3)}(0)}{2}\text{\ \ }\frac{y^{(3)}(1)}{2}\text{\ \ ...\ }\frac{y^{(3)}(23)}{2} \\ \end{bmatrix} 2y(0)(0)  2y(0)(1)  ... 2y(0)(23)2y(1)(0)  2y(1)(1)  ... 2y(1)(23)2y(2)(0)  2y(2)(1)  ... 2y(2)(23)2y(3)(0)  2y(3)(1)  ... 2y(3)(23) = [ p ( 0 ) ( i ) p ( 1 ) ( i ) p ( 2 ) ( i ) p ( 3 ) ( i ) ] \begin{bmatrix} p^{(0)}(i) \\ p^{(1)}(i) \\ p^{(2)}(i) \\ p^{(3)}(i) \\ \end{bmatrix} p(0)(i)p(1)(i)p(2)(i)p(3)(i)

映射到虚拟RB

对于每一个用于传输PUSCH的天线端口,复数符号块 z ( p ) ( 0 ) , . . . , z ( p ) ( M s y m b a p − 1 ) z^{(p)}(0),...,z^{(p)}(M_{symb}^{ap}-1) z(p)(0),...,z(p)(Msymbap1)应该从 z ( p ) ( 0 ) z^{(p)}(0) z(p)(0)开始按顺序映射到虚拟RB的RE ( k ′ , l ) p , μ (k',l)_{p,\mu} (k,l)p,μ,这些RE要满足下面的标准:

  • 都在分配给PUSCH传输的虚拟RB中

  • 没有用于传输DM-RS、PT-RS,也没有用作其他共同调度的UE的DM-RS

映射的规则是先频域升序,然后时域升序。

从虚拟RB映射到物理RB

VRB要按照非交织方式映射到PRB。有两种映射情况:

  • Msg3在激活的上行BWP i 上,该BWP起始于 N B W P , i s t a r t N_{BWP,i}^{start} NBWP,istart,而且包含了初始上行BWP(起始于 N B W P , 0 s t a r t N_{BWP,0}^{start} NBWP,0start)的所有RB,并且和初始上行BWP有一样的subcarrier spacing和循环前缀,这种情况下VRB n n n映射到PRB n + N B W P , 0 s t a r t − N B W P , i s t a r t n+N_{BWP,0}^{start}-N_{BWP,i}^{start} n+NBWP,0startNBWP,istart

  • 其他情况,VRB n n n映射到PRB n n n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构师篇-9、从事件风暴到微服务设计的落地过程

用户付款功能第二个版本的设计实现 单一职责原则(SRP) 软件系统中的每个元素只完成自己职责内的事,将其他的事交给别人去做“职责”通常人理解为一个事情,与该事情相关的事都是它的责任 一个职责是软件变化的一个原因 第二次需求…

设计模式-状态模式和策略模式

1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…

pytest测试框架pytest-random-order插件随机执行用例顺序

Pytest提供了丰富的插件来扩展其功能,本章介绍下pytest-random-order插件,随机设置pytest测试用例的运行顺序,并对随机性进行一些控制。 官方文档: https://pytest-cov.readthedocs.io/en/latest/index.html 适配版本说明&#x…

Crontab命令详解:轻松驾驭Linux定时任务,提升系统效率

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL》 💪🏻 制定明确可量化的目标,坚持默默的做事。 引言: crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件…

AI agent是什么,什么技术栈

AI agent,也称为会话代理或聊天机器人, 是一种通过文本或语音模拟人类对话的计算机程序。 它们旨在以自然且引人入胜的方式理解和响应用户输入。 AI agent 被广泛用于各种应用中,包括客户服务、营销、 销售和教育。 有两种主要类型的 AI agen…

Qt开发报错:Q_INTERFACES Error: Undefined interface

1、背景 VS2019qt5.12.10 从svn拉下来的项目,结果报错: Q_INTERFACES Error: Undefined interface 之前在VS的扩展中在线安装了qt插件, 安装了一半,比较慢,直接强行退出了。。 后来安装了qt官网的插件。。。。 2、报…

nginx架构学习

前言 这篇文章主要记录下对nginx架构的学习记录。 架构设计 优秀的模块化设计 高度模块化的设计是Nginx的架构基础。在Nginx中,除了少量的核心代码,其他一切皆 为模块。 在这5种模块中,配置模块与核心模块都是与Nginx框架密切相关的&…

Pharmacy Management System v1.0 文件上传漏洞(CVE-2022-30887)

前言 CVE-2022-30887 是一个存在于 Pharmacy Management System v1.0 中的远程代码执行(RCE)漏洞。这个漏洞存在于 /php_action/editProductImage.php 组件中。攻击者可以通过上传一个精心制作的图像文件来执行任意代码。 漏洞详细信息 漏洞描述: Pha…

第二十三课,再识字符串

前言,再识字符串 字符串是我们学习python编程第一眼见到的东西,一行print(“hello world”)可谓是太亲切了,但在此之前我们对字符串的认知也仅局限于如何用单引号、双引号、三引号去定义字符串并打印,今天开始我们就更深入地去理…

【大数据】StarRocks的系统架构

StarRocks 架构简洁,整个系统的核心只有 FE(Frontend)、BE (Backend) 或 CN (Compute Node) 两类进程,方便部署与维护,节点可以在线水平扩展,元数据和业务数据都有副本机制,确保整个系统无单点。…

轻松解锁电脑强悍性能,4000MHz的玖合星舞 DDR4 内存很能打

轻松解锁电脑强悍性能,4000MHz的玖合星舞 DDR4 内存很能打 哈喽小伙伴们好,我是Stark-C~ 很多有经验的电脑玩家在自己DIY电脑选购内存条的时候,除了内存总容量,最看重的参数那就是频率了。内存频率和我们常说的CPU主频一样&…

通用管理页面的功能实现

在Windows Forms(WinForms)应用程序中,创建一个通用的管理页面通常涉及对数据的增删改查(CRUD)操作,以及一些额外的功能,如数据过滤、排序、导出和导入等。 先看一个仓库管理页面要素。 仓库管…

uniapp开发H5、手机APP、微信小程序 可拖动菜单按钮

ml-fab 插件地址:https://ext.dcloud.net.cn/plugin?id18909 1、可拖拽悬浮按钮 ml-fab,支持自定义插槽,点击可展开一个图标按钮菜单,可随意拖拽。 2、支持自定义插槽,可实现自定义配置。 3、操作简单易上手。 ml-f…

同元软控受邀出席2024年工业软件与新质生产力创新发展论坛

近日,由广东省工业软件学会主办的“2024年工业软件与新质生产力创新发展论坛”在广州成功举办。同元软控深圳子公司副总经理周胜受邀出席,并作《数智驱动创新,科学计算与系统建模仿真加速新质生产力进化》主题演讲。 本次论坛集结工业软件界…

【IVI】CarService启动-Android13

【IVI】CarService启动-Android13 1、CarServiceImpl启动概述2、简要时序图 1、CarServiceImpl启动概述 【IVI】CarService启动: CarServiceHelperService中绑定CarServiceICarImpl初始化各种服务 packages/services/Car/README.md 2、简要时序图

PCIe物理层_CTLE(continuous time linear equalizer)

1.CTLE(continuous time linear equalizer) 的作用 信号在介质的传输过程中存在趋肤效应(skin effiect)和能量损耗,在接收端数据会存在失真,并且呈现出低通特性。什么意思呢?就是低频率的信号衰减幅度小&#xff0c…

音频接口电路的PCB设计

Audio接口是音频插孔,即音频接口,可分为Audio in接口和Audio out接口。音频接口是连接麦克风和其他声源与计算机的设备,其在模拟和数字信号之间起到了桥梁连接的作用。对于平台的数字音频接RK3588口,需遵循《Rockchip RK3588 High…

本地项目上传到GitHub上(李豆)

本地项目上传到GitHub上(李豆) 准备工作: 本地需要有 git 也需要有一个 GitHub 账号 首先需要在 GitHub 新建一个空仓库 在想要上传项目的文件夹中使用 Git 命令操作 初始化: git init与 github 仓库进行链接 :git remote add origin …

isspace()方法——判断字符串是否只由空格组成

自学python如何成为大佬(目录): https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isspace()方法用于判断字符串是否只由空格组成。isspace()方法的语法格式如下: str.isspace() 如果字符串中只包含空格&…

[深入理解DDR] 总目录

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 蓝色的是传送门,点击链接即可到达指定文章。 图。 DDR 分类 导论 [RAM] DRAM 导论:DDR4 | DDR5 | LPDDR5 | GDRR6 | HBM 应运而生 运存与内存?内存与存…