微信同步更新欢迎关注同名modem协议笔记

PUSCH DMRS和PDSCH DMRS内容基本一样,但也有不同的地方,例如PUSCH 可能需要Transform precoding,port 对应0~11(DMRS configured type2)等等。先简单看看Transformprecoding的相关内容,Transformprecoding主要集中在38.211 6.3.1.4。Transformprecoding enable与否与PUSCH 使用的波形有关系,disable时对应的是cyclic Prefix OFDM,enable时对应的是DFT-s-OFDM,更具体的DFT-s-OFDM适合远距离传输,而CP-OFDM,如果使用较大的功率发送,由于PAPR的原因,难以保证信号的稳定性,所以CP-OFDM适用于距离较近的传输。在enable Transformingprecoding(DFT-s-OFDM)时只支持 one layer传输,disable Transformingprecoding(CP-OFDM)时,最大可支持四层传输,但是实际中由于硬件的限制,目前UE只能最大支持上行2 layer传输。一般在NR中 FR1优先使用DFT-s-OFDM,FR2中使用CP-OFDM,当然这个也和具体场景有关系,总之,UE根据网络带下来的参数,听指挥就好。

除此之外Transformprecoding enable与否还和PUSCH DMRS的序列生成有关, enable时采用低均峰比序列,disable时 采用伪随机序列,后面再具体看。

如何确定PUSCH 是否有enable transform precoding?其相关规定就在38.214 6.1.3,接下来就来看一看。

38.214 6.1.3 UE procedure for applying transform precoding on PUSCH

对于RAR UL grant/fallbackRAR UL grant/TC-RNTI加扰的DCI 0_0调度的PUSCH,需要根据RRC 层参数msg3-transformPrecoder决定,配置时只能设置为enable,不配置缺省时,就默认disable transform precoding。

Msg A PUSCH的传输,UE要根据RRC层参数msgA-TransformPrecoder 决定(可以配置成enable 或者disable),如果msgA-TransformPrecoder没有配置,则根据msg3-transformPrecoder 决定是否enable transform precoder。

对于C-RNTI/MCS-C-RNTI/SP-CSI-RNTI/CS-RNTI(NDI=1)加扰的PDCCH调度的PUSCH传输:

如果是DCI 0_0, 根据msg3-transformPrecoder决定;否则根据pusch-Config中的transformPrecoder决定,如果transformPrecoder缺省,根据msg3-transformPrecoder进行配置。

对于Configured grant场景,根据ConfiguredGrantConfig中的transformPrecoder决定,如果transformPrecoder缺省,根据msg3-transformPrecoder进行配置。

确定完transformPrecoding具体情况后,接下来就可以看PUSCH DMRS相关内容,PUSCH DMRS具体描述在38.211 6.4.1.1,在此之前,先大概看下RRC层PUSCH DMRS相关的内容。

PUSCH DMRS时域特性

1 前置DM-RS 位于PDSCH 符号的前面(占用1-2个符号):

PUSCH mapping Type A(PUSCH 起始位置0-3,占用3-14个符号)

前置DM-RS 在时隙内的起始位置为2或3,默认为2 在MIB中配置

前置DM-RS 在时隙内可以占用1或2个符号,默认1个

由RRC层配置参数中的maxLength和DCI相关字段决定。

前置DMRS参数在MIB中配置:

2 Additional DMRS

dmrs-AdditionalPosition位于PUSCH 符号的中间,占用1-2符号 适用于UE移动场景,需要时域上更多的DMRS进行信道估计;由RRC层参数DMRS-UplinkConfig中 配置起始位置,不配置时默认为pos2

PUSCH DMRS 序列

针对是否有enable  transform precoding  有不同的序列生成方式,先看下disable transform precoding 的情况。

38.211 6.4.1.1.1.1                 Sequence generation when transform precoding is disabled

disable transform precoding 时,序列对应的是伪随机序列,需要赋初值。

序列初始化需要用到 N_ID_0 或N_ID_1,当PUSCH 是由DCI 0_1或0_2调度及configured grant 场景时,N_ID_0 和N_ID_1由DMRS-UplinkConfig中的scramblingID0和scramblingID1 提供;当PUSCH 是由C-RNTI ,MCS-C-RNTI 或CS-RNTI 加扰的DCI0_0 调度时,在DMRS-UplinkConfig中的只会配置scramblingID0,对应N_ID_0的值;对于Type-2RA场景 msgA对应的PUSCH occasion ,scramblingID0 和scramblingID1的值 由msgA-DMRS-Config中的msgA-ScramblingID0 和msgA-ScramblingID提供。否则公式中N_ID相关的参数就由N_cell_ID提供。

n_SCID的确定:如果DCI0_1/0_2调度时中,有DMRS sequence initialization field,就取该值;对于Configured grant type 1 PUSCH 传输,由RRC层参数dmrs-SeqIntialization提供;其他情况 n_SCID=0.

enable transform precoding时,使用的是 Low-PAPR序列。

enable transform precoding时 采用的序列需要根据配置确定,如果有接下来描述的参数配置时 就采用 Low-PAPR sequence generation type 2 其中 :

1 序列初始化需要用到 N_ID_0 或N_ID_1,当PUSCH 是由DCI 0_1或0_2(antenna ports 不为0 bit)调度及configured grant 场景时,N_ID_0 和N_ID_1由DMRS-UplinkConfig中的pi2BPSK-scramblingID0和pi2BPSK-scramblingID1提供;

2 当PUSCH 是由C-RNTI ,MCS-C-RNTI 或CS-RNTI 加扰的DCI0_0 调度或者DCI 0_2(antenna ports 是0 bit的场景)时,在DMRS-UplinkConfig中的只会配置pi2BPSK-scramblingID0,对应N_ID_0的值;否则 其余场景,公式中N_ID相关的参数就由N_cell_ID提供。

3 n_SCID的确定:如果DCI0_1/0_2(antenna ports 不为0 bit)调度时,与antenna ports field有关系,38.212 有相关场景的描述,根据描述取对应的值;对于Configured grant type 1 PUSCH 传输,由RRC层参数antennaPort提供;其他情况 n_SCID=0.

没有上述参数配置时,采用 Low-PAPR sequence generation type 1,其中 。Low-PAPR sequence在38.211 5.2.2有具体描述,这里没有展开写,不过在NR PUUCH (一) PUCCH format 0/1中有做了简单介绍,感兴趣可以看下。

如NR PUCCH(一) PUCCH format 0/1中所述,要确定具体的低均峰比序列还需要确定u和v。u=(fgh+n_RS_ID) mod 30,u的确定与n_RS_ID和fgh有关系,先看下n_RS_ID,n_RS_ID取值分几种情况:

1 RRC层没有配置dmrs-UplinkTransformPrecoding或配置了dmrs-UplinkTransformPrecoding但不是用pi/2-BPSK调制,且此时的PUSCH不是RAR UL grant及TC-RNTI加扰的DCI 0_0场景,

如果在DMRS-UplinConfig中有配置nPUSCH-Identity时,n_RS_ID=nPUSCH-Identity;

2 配置了dmrs-UplinkTransformPrecoding且用pi/2-BPSK调制,但PUSCH传输对应的不是msg3传输及CSS 的DCI 0_0调度时,n_RS_ID=N_n_SCID_ID

3 其他情况n_RS_ID=N_cell_ID。

上面有句话“ RRC层没有配置dmrs-UplinkTransformPrecoding或配置了dmrs-UplinkTransformPrecoding但不是用pi/2-BPSK调制”读起来很难理解,那先看RRC层参数 这里配置dmrs-UplinkTransformPrecoding带的参数只能是pi2BPSK-Scrambling0/1(用于pi2-BPSK调制场景),那配置了dmrs-UplinkTransformPrecoding但不是用pi/2-BPSK调制,对应的具体是什么配置情况?其实在配置dmrs-UplinkTransformPrecoding时,pi2BPSK-Scrambling0/1 是可以不配置的,不配置默认就用n_cell_id。

u=(fgh+n_RS_ID) mod 30 现在n_RS_ID确定好了,还要确定fgh 和v才能最终确定低均峰比序列。

fgh和v的确定方式和group sequence hopping的配置有关系:1 group和sequence hopping都没有enable时,fgh=v=0; 2 enable group hopping 但是sequence hopping disable时,fgh由上面的公式确定,v=0;3 sequence hopping enable但是group hopping disable时,v由公式确定,fgh=0。

hopping 的确定仍然取决于RRC 层参数:1 RAR UL grant 或TC-RNTI加扰的DCI 0_0场景,sequence hopping 默认disable,group hopping由参数groupHoppingEnabledTransformPrecoding确定。

2 其他场景,RRC 层参数sequencyHopping 和sequencyGroupHopping 决定hopping mode;如果没有配置的话,就设定成Msg3 采用的hopping mode。(公式中用的l在single-symbol场景对应的是DMRS占用的symbol number,在double-symbol DMRS场景,l对应的是double-symbol DMRS的第一个symbol number)

那msg3 的hopping mode 是什么样的?msg 3对应的就在上面1的描述中,msg3 的sequencyHopping是disable的,group hopping由参数groupHoppingEnabledTransformPrecoding确定。

PUSCH DMRS资源映射

具体映射的过程还要考虑DMRS type,PUSCH DMRS 支持type1和type 2 两种配置,RRC 配置dmrs-type 的时候只能配置为type2,不配置就默认为type1。

disable transform precoding时,DMRS资源映射对应Type1 和Type2,需要由RRC层参数DMRS-UplinkConfig中的dmrs-type决定,RRC层配置dmrs-Type时,只能配置成type2,缺省时,默认用type1.

enable transform precoding时 对应DFT-s-OFDM,此时只能采用type 1的映射方式,且对应单layer传输(j固定为0,j 为layer number)。

type1和type2可以通过映射公式中的K简单区分,k代表的是子载波number,PUSCH 和PDSCH 资源映射公式一模一样,可以参考NR PDSCH(四) DMRS 中两种type的推导结果,type 1的DMRS 密度明显高于type2,这也就决定着type1的信道估计特性优于type2。不过这里还是顺手按照PDSCH DMRS的内容照抄推了下,主要区别在于PUSCH DMRS port对应的是0~11(configured type 2)。

对比上面的表格可以看出:

Type1 1个时域符号支持最大4个正交端口,2个时域符号支持最大8个正交端口;

Type2 1个时域符号支持最大6个正交端口,2个时域符号支持最大12个正交端口;

Type1 DMRS被分为了2个CDM group ;type2 DMRS被分成了3个CDM group。

下面来推导下CDM group,端口与subcarrier 间的映射关系。

先看Type1

具体的映射关系如下:

CDM group 0 port 0/1/4/5 k=0/2/4/6/8/10

CDM group 1 port 2/3/6/7 k=1/3/5/7/9/11

根据上面的计算看到不同的port会映射到相同的频域资源上,也可以看出delta决定着频域资源,delta相同意味着频域资源相同,这时候就需要对时频域按照码分的方式进行复用。

单符号DMRS(一列频域资源)对应 port 0~3,时域码分用不到(全为+1);0/1频域资源相同,这时就需要频域码分来解决2个port的复用问题。

双符号DMRS 对应port 0~7,0/1/4/5 频域资源相同,这时候就需要结合频域和时域的码分来解决4port的复用问题。

从数学上看,这里是用排列组合的方式来解决8 port 的复用问题,Delta(0,1)2个数值区分频域资源,频域码分(k'=0,k'=1)2个数值区分频域复用,时域码分(l'=0,l'=1)2个数值区分时域复用,这样就可以区分2*2*2=8种情况,正好对应的8 port。

结合上面的推导结果和Table 6.4.1.1.3-1 ,single symbol DMRS ,4port 码分及子载波占用情况如下

double symbol 时频域码分的情况如下

Type2 与type1 情况类似,主要通过Table6.4.1.1.3-2确定。

单符号支持天线端口0-5,双符号支持天线端口0-11。

Delta 3个数值区分频域资源,k' 取2个值区分频域复用,l'取2个值区分时域复用,共3*2*2=12 种情况,正好供12 port复用。

这里有12个port,并不代表UE可以进行12layer传输,NR UL UE最多支持4layer传输,所以要从基站的角度看这12 port,例如基站可以分别让3个UE 进行4 layer传输,或者同时让6个UE 2 layer传输,目前UE 最多也只能支持UL 2 layer传输,具体分配方式主要在DCI field"Antenna port" 中体现。

Type2 资源映射的推导过程

映射关系

CDM group 0 port 0/1/6/7  k=0/1/6/7

CDM group 1 port 2/3/8/9  k=2/3/8/9

CDM group 2 port 4/5/10/11  k=4/5/10/11

从上可知Type2 DMRS被分成了3个CDM group,此举也是为了支持更多port复用,相比于Type 1明显降低了频域密度。

其他内容参考Type 1,不再赘述。

值得注意的是在进行预编码时,需要乘上一个beta值以便满足传输power的要求,这个beta值跟DCI field Antenna ports指定的Number of DM-RS CDM groups without data和DMRS configuration type关系,具体取值在38.214 Table 6.2.2-1中,如上。

接下来再看下其他参数的意思。

资源映射的目的就是将序列结合port的复用情况,映射到具体的RE上。k代表子载波index,l代表时域符号index,所以k和l结合起来就代表具体的RE,PUSCH 中参考点k和l 及l0的定义与PDSCH 有所不同。

在transformprecoding disable时,参考点k是CRB 0 的subcarrier 0;transformprecoding enable时,参考点k对应的PUSCH 资源的最低RB的subcarrier 0。

l及l0的位置需要根据PUSCH mapping type 区分:

PUSCH mapping type A: disable 跳频时,l 就是时隙开始对应的符号;enable 跳频时,l对应的是每一跳开始的符号;l0 则由RRC 层参数dmrs-TypeA-Position 提供,dmrs-TypeA-Position 可以配置为pos2,和pos3,配置为pos2时l0=2, 配置为pos3 时,l0=3。

PUSCH mapping type B:

disable跳频时,l就是调度的PUSCH资源的起始符号;enable跳频时,l对应每一跳开始的符号;PUSCH mapping type B 时 l0一直为0.

DMRS符号位置需要根据38.211 Table 6.4.1.1.3-3 Table 6.4.1.1.3-4 Table 6.4.1.1.3-6中的l_和ld 确定:

1 intra-slot frequency hopping disable: PUSCH mapping type A ,ld对应时隙第一个符号与调度的PUSCH资源的最后一个符号的符号间隔; PUSCH mapping type B,ld对应的就是PUSCH资源的符号长度

2 对于38.211 Table 6.4.1.1.3-6,enable intra-slot frequency hopping时,ld对应的就是每一跳的符号长度。

3 RRC 层没有配置maxLength 或msgA-MaxLength时,根据single symbol Table 6.4.1.1.3-3和Table 6.4.1.1.3-6确定DMRS的位置。

4 MsgA-MaxLength=len2 时,msgA PUSCH 采用double-symbol DMRS。

5 RRC 层参数dmrs-AdditionalPosition 不为'pos0' 且enable intra-slot freuqency hopping时,在根据 38.211 Table 6.4.1.1.3-6设置DMRS时,需要假设每一跳dmrs-AdditionalPosition=pos1。

6 如果maxLength 配置为'len2',就由DCI 0_1/0_2 的antenna port field 决定采用single-symbol还是double-symbol DMRS,38.212 DCI 0_1 /0_2 antenna port field 根据配置的不同情况,调用DCI 0_1 Table 7.3.1.1.2-6~23不同的表,进而确定是使用single-symbol还是double-symbol,例如下表 根据配置dmrs-Type=1 maxLength=2 rank=1时 确定 采用38.212 Table 7.3.1.1.2-12 ,之后再根据antenna port field 的value确定参数设置PUSCH DMRS。而rank value的确定与ul 传输模式相关,当为non codebook传输时,根据DCI field SRS resource indicator确定;当为codebook传输时,根据DCI field Precoding information and number of layers确定,具体情况下一篇PUSCH UL Transmission schemes再说。

再看下dmrs AdditionalPosition的描述。

PUSCH mapping type A:

1 当dmrs-TypeA-Position =pos2时,dmrs-AdditionalPosition 才可以配置成pos3。

2 当dmrs-TypeA-Position =pos2时,才能使用38.211 Table 6.4.1.1.3-4中ld=4 的配置。

msgA使用PUSCH mapping type A时:

1 当dmrs-TypeA-Position =pos2时,msgaA-DMRS-AdditionalPosition 才可以配置成pos3。

2 在处理msgA DMRS时,直接将Table 6.4.1.1.3-3 ~Table 6.4.1.1.3-6 中的dmrs-AdditionalPosition 替换成msgA-DMRS-AdditionalPosition 后再使用

3 msgA的场景只能使用PUSCH DMRS configuration type 1。

msgA使用PUSCH mapping type B时:

1 在处理msgA DMRS时,直接将Table 6.4.1.1.3-3 ~Table 6.4.1.1.3-6 中的dmrs-AdditionalPosition 替换成msgA-DMRS-AdditionalPosition 后再使用

2 msgA的场景只能使用PUSCH DMRS configuration type 1。

好了参数的含义和要求过完了,下面来看几个例子。

UE 配置为 single-symbol DMRS 且intra-slot frequency hopping disable,ld=14 ,PUSCH mapping type B及dmrs-AdditionalPosition=pos3时,根据38.211 Table 6.4.1.1.3-3 确定PUSCH DMRS的位置为l0,3,6,9,根据规定PUSCH mapping type B l0=0,则时频域映射如上。

UE 配置为 single-symbol DMRS 且enable intra-slot frequency hopping,ld=7(enable intra-slot frequency hopping时,ld对应的就是每一跳的符号长度,即第一跳和第二跳的符号都为7) ,PUSCH mapping type B及dmrs-AdditionalPosition=pos1时,根据38.211 Table 6.4.1.1.3-6 确定PUSCH 第一跳 DMRS的位置为0,4, 第二跳DMRS的位置同样为0,4,则时频域映射如上。

UE 配置为 double-symbol DMRS 且intra-slot frequency hopping disable,ld=14 ,PUSCH mapping type B及dmrs-AdditionalPosition=pos1时,根据38.211 Table 6.4.1.1.3-4 确定PUSCH DMRS的位置为l0,9,根据规定PUSCH mapping type B l0=0,则时频域映射如上。

相关概念都介绍完了,最后就来看看PUSCH DMRS的具体调度及资源映射情况。

对于既不是DCI 0_1/0_2(C-RNTI,CA-RNTI.SP-CSI-RNTI,MCS-C-RNTI加扰)调度的PUSCH,也不是configured grant PUSCH 传输,更不是Type 2 RA过程(2-step RA)的PUSCH,UE 要使用单前置 type 1 DMRS 配置,在DMRS port 0上传输PUSCH;对于DMRS占用的符号上未使用的RE,UE也不能用于PUSCH传输,除非disable transform precoding时 正好PUSCH调度的符号<= 2 个OFDM 符号的情况。additional DMRS仍然要根据38.211 Table 6.4.1.1.3-3(frequency hopping disabled)和Table 6.4.1.1.3-6(frequency hopping enable)中的参数进行配置。frequency hopping disabled 时,dmrs-AdditionalPosition =pos2且在PUSCH传输period最多只能有2个additional DMRS符号; frequency hopping enabled 时,dmrs-AdditionalPosition =pos1 且在PUSCH传输period最多只能有1个additional DMRS符号。

对于CS-RNTI加扰的DCI 0_0 调度的PUSCH,UE 要根据DMRS-UplinkConfig中的dmrs-Type 采用单前置DMRS,在port 0上传输,这时候在DMRS 占用的符号上剩余的RE 不能用于PUSCH 传输,除非disable transform precoding时 正好PUSCH调度的符号<= 2 个OFDM 符号的情况。 additional DMRS仍然要根据38.211 Table 6.4.1.1.3-3(frequency hopping disabled)和Table 6.4.1.1.3-6(frequency hopping enable)中的参数进行配置。

如上规定基本上概述了DCI 0_0的使用场景,而对于DCI 0_1/0_2 的DMRS 配置情况,就要根据DCI field Antenna ports 确定具体配置情况;更具体的先根据transform precoder是否enable ,dmrs-type和maxLength ,rank等参数确定antenna ports field所占用的bits,再根据antenna port 的value 结合38.212 Table 7.3.1.1.2-6 ~ Table 7.3.1.1.2-23 中的情况进行配置,具体规则可以看38.212 7.3.1.1.2 format 0_1 和7.3.1.1.3 format 0_2 的内容;DCI 0_0是没有antenna ports field ,其DMRS配置根据上面的叙述就可以确定。

PUSCH DMRS 和PDSCH DMRS 基本内容类似,这篇没有那篇详细,但是基本内容也都有涉及,可以对比看下。最后以几个例子做尾,表格中的number of CDM groups without data of values代表不可以传输PUSCH data的CDM group, 1, 2, 3 分别代表CDM groups {0}, {0,1}, {0, 1,2} 。

此例,number of CDM groups without data =2 即 CDM group 0和1  都不能用于传输PUSCH data;Number of front-load symbols=2 即double symbol 前置DMRS;而rank =2 只用到了CDM group 0中的port 0和4 对应的RE,并没有用到 CDM group 1,但CDM gourp 1对应的RE资源也不能用于PUSCH传输,从网络侧角度看CDM group 1 可能配置给了另一个UE,虽然从UE角度看是2 layer传输,但是网络侧进行的是4 layer传输。

如果配置value 0,即number of CDM groups without data =1 即 CDM group 0不能用于传输PUSCH data;Number of front-load symbols=1 即single symbol 前置DMRS;rank=2  用到 CDM group 0中的port 0和1,这种情况,CDM groupg 1中的 RE可以用于传输PUSCH data。

DMRS type 2 如果配置value 0,即number of CDM groups without data =1 即 CDM group 0不能用于传输PUSCH data;maxLength =1 即single symbol 前置DMRS;rank=2  用到 CDM group 0中的port 0和1 的RE,这种情况,CDM groupg 1中的 RE可以用于传输PUSCH data。

DMRS type 2 如果配置value 4,即number of CDM groups without data =3 即 CDM group 0/1/2不能用于传输PUSCH data;maxLength =1 即single symbol 前置DMRS;rank=2  UE用到 CDM group 1中的port 2和3 的RE,这种情况,CDM groupg 0/1/2中的 RE都不可以用于传输PUSCH data。

NR PUSCH(五) DMRS相关推荐

  1. NR PDSCH(五) PDSCH 信道编码与调制流程

    微信同步更新欢迎关注同名"modem协议笔记" 下面是协议中规定的PDSCH信道编码调制及资源映射流程图​ 先看NR PDSCH 信道编码部分.NR数据信道采用LDPC编码方案.物 ...

  2. NR PUSCH(四) Frequency hopping

    微信公众号同步更新,欢迎关注同名modem协议笔记 上篇PUSCH 介绍了频域分配方式resource allocation type0/1/2,其中type 0 RBG位图的分配方式比较灵活,typ ...

  3. 5G/NR - PUSCH DMRS

    1. PUSCH DMRS序列 PUSCH DMRS序列在PUSCH配置为Transform precoding enabled和disabled时候使用的序列不一样.                 ...

  4. NR PRACH(五) type1 RA(4-step)基本过程

    微信公众号同步更新欢迎关注同名"modem协议笔记" 无线通信,最重要的前提是建立接收端和发射端之间的时间同步. NR中,下行链路的同步,一般在小区搜索过程通过decode PSS ...

  5. NR PUSCH(七) 相干传输

    微信公众号同步更新欢迎关注同名modem协议笔记 这篇就是为记录一个概念在协议中的体现方式.相干传输被定义为一种UE能力.考虑到UE的实现成本,NR不要求所有的UE都能做到所有的天线端口都可以相干传输 ...

  6. NR PUSCH(二) 动态调度时域资源

    微信公众号同步更新,欢迎关注同名"modem协议笔记" 上篇谈了configured grant传输,现在看动态调度,上行主要有DCI 0_0/0_1/0_2 等,从PDCCH 收 ...

  7. NR PDSCH(四) DMRS

    微信目前更新稍快,欢迎关注同名"modem协议笔记" 参考信号相关的所有内容都在38.211 中有介绍. DMRS是用于信道估计,服务于UE信道解调的.基站将DMRS穿插到各种信道 ...

  8. NR PUSCH(三) 频域资源分配方式

    微信公众号同步更新欢迎关注同名modem协议笔记 这篇看下频域资源分配,本篇内容主要在38.214 6.1.2.2 resource allocation in frequency domain章节中 ...

  9. 上行参考信号DMRS for PUSCH

    Sequence generation 上行PUSCH 的DM-RS和PDSCH的DM-RS很相似,也分为两类: front-loaded DMRS和additional DMRS.而且PUSCH的D ...

最新文章

  1. alert获取输入框内容_实用开源:Web 聊天工具的富文本输入框
  2. 在WinForm中实现省市级联的效果
  3. windeployqt.exe的使用与避坑(windows平台)
  4. Bootstrap(二)——Grid栅格布局
  5. bash脚本编程入门_Bash编程入门
  6. python office转pdf_python 如何将office文件转换为PDF
  7. Could not find resource——mybatis 找不到映射器xml文件
  8. 将有道云词典单词本导入到墨墨背单词
  9. network 网站流量
  10. 故事版(StoryBoard)的学习-----使用prepareForSegue方法
  11. 流程图设计(html+css+js)
  12. 嵌入式开发——rtc时钟调试笔记
  13. hbo切尔诺贝利_HBO Max,HBO NOW和HBO Go有什么区别?
  14. phpcms富文本框上传图片去除水印
  15. 门控时钟:Clock fating
  16. 多元函数牛顿法求函数极小值
  17. python中fact()是什么意思_python中fact函数是什么及如何使用?
  18. Vue实现搜索关键字标红高亮加粗
  19. Vmware ubuntu桥接方式联网
  20. 微信二维码登录实现思路

热门文章

  1. MIUI12设置勿扰模式下来电白名单步骤
  2. 修改chrome浏览器的背景色
  3. iOS 15.4 更新比我们预期的要大得多还有 7 个有意思的变化
  4. 彻底搞懂clientHeight、offsetHeight、scrollHeight的区别
  5. EF中数据优先,模型优先和代码优先
  6. 我国共享出行汽车现状及主要竞企策略
  7. 计算机毕业设计Java汽车配件管理系统(源代码+数据库+系统+lw文档)
  8. oracle 数据全备份,oracle数据库全备份和增量备份
  9. cifs文件服务器,samba - 为 UNIX 实现的 Windows SMB/CIFS 文件服务器
  10. 网络爬虫---爬取糗事百科段子实战