看完此文还不懂NB-IoT,你就过来掐死我吧..._nb mcl计算-程序员宅基地

技术标签: NB-IOT  物联网  IOT  iot  

伊言:由于最近一直做与多种设备直连交道。看完此文还不懂NB-IoT,你就过来掐死我吧.......


1

1G-2G-3G-4G-5G

不解释,看图,看看NB-IoT在哪里?

2

NB-IoT标准化历程

3GPP NB-IoT的标准化始于2015年9月,于2016年7月R13 NB-IoT标准完成。

3

NB-IoT设计目标和用例

NB-IoT主要面向大规模物联网连接应用,其设计目标:

•低成本、低复杂性:模块成本小于5美元,2020年目标2-3美元

•增强覆盖:164 dB MCL,比GPRS强20dB

•电池寿命:10年

•容量:约55000连接设备/小区

•上行报告时延:小于10S

4

NB-IoT关键技术

如何增强覆盖?

什么叫覆盖?就是最大耦合损耗(Maximum Coupling Loss,MCL),从基站天线端口到终端天线端口的路径损耗。

简单定义:

上行MCL=上行最大发射功率-基站接收灵敏度。

下行MCL=下行最大发射功率-终端接收灵敏度。

NB-IoT的MCL为164 dB。

①提升上行功率谱密度

上下行控制信息与业务信息在更窄的LTE带宽中发送,相同发射功率下的PSD(Power Spectrum Density)增益更大,降低接收方的解调要求。

NB-IoT上行功率谱密度增强17dB,考虑GSM终端发射功率最大可以到33dBm,NB-IoT发射功率最大23dBm,所以实 际NB-IoT终端比GSM终端功率谱密度高7dB。

②重传

重传就是在多个子帧传送一个传输块。Repetition Gain=10log Repetition Times,也就是说重传2次,就可以提升3dB啊。NB-IoT最大可支持下行2048次重传,上行128次重传。

另:接收端无需译码处理增益(约 3-4dB)。

如何降低成本?

①减少协议栈处理开销

如上图所示,NB-IoT舍弃了LTE物理层的上行共享信道(Physical Uplink Control Channel, PUCCH)、物理混合自动重传请求或指示信道(Physical Hybrid ARQ Indicator Channel, PHICH)等。

②减少不必要的硬件

单天线和FDD半双工模式,降低RF成本。

Release 13 NB-IoT仅支持FDD 半双工模式,意味着不必同时处理发送和接收,比起全双工成本更低廉,更省电。

另:低速率和低带宽本身意味着芯片处理复杂度降低。

如何省电?

①PSM(power saving mode)

怎样最省电?当然是“关机”最省电啊。

手机需要时刻待命,不然有人打电话给你找不到怎么办?但这意味着手机需不时监听网络,这是要耗电的。

但物联网终端不同于手机,绝大部分时间在睡觉,每天甚至每周就上报一两条消息,完事后就睡觉。所以它不必随时监听网络,PSM就是让物联网终端发完数据就进入休眠状态,类似于关机,不进行任何通信活动。

②eDRX

DRX(Discontinuous Reception),即不连续接收。eDRX就是扩展的不连续接收。

手机可以断断续续的接收信号以达到省电的目的。NB-IoT扩展了这个断续间隔,可扩展至2.91小时,更加省电。

此外,NB-IoT只支持小区重选,不支持切换,这减少了测量开销;对空口信令简化, 减小了单次数传功耗。

5

NB-IoT与LTE有什么不同?

先来简单回忆一下LTE...

无线帧长10ms,子帧1ms,时隙0.5ms,每无线帧内10个子帧,一个子帧2时隙,下行采用正交频分多址(OFDMA)技术,子载波间隔15kHz...多么熟悉的身影。

NB-IoT也是一样的。NB-IoT是基于FDD LTE技术改造而来,包括帧结构、下行OFDMA、上行SC-FDMA、信道编码、交织等大部分沿用LTE技术,可以理解为一种简化版的FDD LTE技术。

这正是NB-IoT被号称为史上最快完成的通信标准的主要原因(半年多就完成),这带来的另一个好处是与现有LTE相容,减少NB-IoT的设备和软件投入,以快速抢占物联网风口。

但也有不同之处。以下章节我们一边介绍NB-IoT,一边对比LTE。

5.1 传输方案

下行传输方案

NB-IoT下行与LTE一致,采用正交频分多址(OFDMA)技术,子载波间隔15kHz,时隙、子帧和无线帧长分别为0.5ms、1ms和10ms,包括每时隙的OFDM符号数和循环前缀(cyclic prefix)都是与LTE一样的。

NB-IoT载波带宽为180KHz,相当于LTE一个PRB(Physical Resource Block)的频宽,即12个子载波*15KHz/子载波=180KHz,这确保了下行与LTE的相容性。比如,在采用LTE载波带内部署时,可保持下行NB-IoT PRB与其它LTE PRB的正交性。

上行传输方案

NB-IoT上行支持多频传输(multi-tone)和单频(single- tone)传输。

多频传输基于SC-FDMA,子载波间隔为15kHz,0.5ms时隙,1ms子帧(与LTE一样)。单频传输子载波间隔可为15KHz以及3.75KHz,其中15KHz与LTE一样,以保持两者在上行的相容性;其中当子载波为3.75KHz时,其帧结构中一个时隙为2ms长(包含7个符号),15KHz为3.75KHz的整数倍,所以对LTE系统有较小的干扰。

与下行一样,NB-IoT上行总系统带宽为180KHz。

5.2 部署方式

众所周知,NB-IoT分为三种部署方式:独立部署(Stand alone)、保护带部署(Guard band)和带内部署(In-band)。独立部署适用于重耕GSM频段,GSM的信道带宽为200KHz,这刚好为NB-IoT 180KHz带宽辟出空间,且两边还有10KHz的保护间隔。保护带部署利用LTE边缘保护频带中未使用的180KHz带宽的资源块。带内部署利用LTE载波中间的任何资源块。

不过,上一段的最后一句话是错误的。在带内部署模式下,有些PRB,NB-IoT是不能占用的。

与LTE一样,NB-IoT终端在开机并搜索载波(小区)时,会在可能的频率范围内重复PSS/SSS的搜索和检测过程,直至搜索到相应的载波(NB-IoT锚定载波),频率扫描的栅格(raster)大小为100kHz。

所谓栅格(raster)也是用于调整LTE载波频率位置的最小单位,表示各个频点间的间隔应该是100KHz的整数倍,相当于一条高速路划分为若干车道,两个车道之间的中心距离为100KHz的整数倍。手机终端在频率扫描是就是按100KHz整数倍来扫描的。

这个100KHz的频率扫描栅格(raster)意味着在带内部署时,NB-IoT锚定载波必须位于确定的PRB中。例如,对于10MHz带宽的LTE,NB-IOT既不能占用同步和广播信道所在的PRB,又要满足100kHz raster要求, 因此其带内NB-IoT只能位于4, 9, 14, 19, 30, 35, 40, 45号PRB。

另外,还要做2.5kHz offset。(还真特么麻烦)

如上图,以NB-IoT带内部署于10MHz LTE带宽为例,DC子载波右边的PRB为#25,其中心频率为97.5kHz(相当于6个子载波),这就与最近的100KHz栅格有2.5KHz的偏差。

由于DC子载波之上的两个相邻PRB的中心频率间隔为180KHz,因此,#30、#35、#40和#45 PRB的中心频率均为离最近的100KHz栅格有2.5KHz的偏差。(只要做了2.5KHz偏差,就可以满足100KHz栅格要求)。

再看上图,对于10MHz和20MHz LTE载波,有一些PRB满足离最近的100KHz栅格有2.5KHz偏差。然而,对于3MHz,5MHz和15MHz的LTE载波带宽,这些PRB离最近的100KHz栅格偏差至少为7.5kHz。

所以,这里留一道作业题,像联通900M只有6M带宽这种情况,怎么办?

与带内部署模式相似,保护带部署模式下,NB-IoT的锚定载波也需满足其中心频率与最近的100KHz栅格不超过7.5KHz偏差,因为终端在小区搜索时,其栅格偏差需满足7.5KHz以下,才能完成网络同步。

NB-IoT支持多载波配置,其载波可分为两类:Anchor Carrier(锚定载波)和Non-Anchor Carrier(非锚定载波),对于非锚定载波,不必满足100KHz栅格偏差。

可是,有些PRB(比如#25)也满足离最近的100KHz栅格有2.5KHz偏差,为啥就不能部署带内NB-IoT的PRB呢?

答案是,NB-IoT不能使用LTE载波中间的6个PRB,这些PRB要用于LTE同步和广播信道。

5.3 物理信道

NB-IoT物理信道的设计在很大程度上也是基于LTE,本文我们主要介绍两者之间的差别。

1)下行

对于下行链路,NB-IoT定义了三种物理信道:

①NPBCH,窄带物理广播信道

②NPDCCH,窄带物理下行控制信道

③NPDSCH,窄带物理下行共享信道

还定义了两种物理信号:

①NRS,窄带参考信号

②NPSS和NSSS,主同步信号和辅同步信号

与LTE不同,由于NB-IoT频率带宽最多只有1个PRB,因此,这些下行物理信道间采用时分复用模式,也就是在不同的时间上轮流出现。

▲NB-IoT下行物理信道和信号之间的时分复用

如上图,NB-IoT子帧被分配给了不同的物理信道和信号,每一个NB-IoT子帧在频域上是一个PRB(12个子载波),在时域上为1ms。

NPSS和NSSS

NPSS和NSSS用于NB-IoT终端执行小区搜索,包括时间、频率同步和侦测Cell ID。因为LTE的同步序列占用6个PRB,NB-IoT不能占用这6个PRB。为避免冲突,NB-IoT需要重新设计。

NPSS位于每10ms无线帧中5号子帧(#5),周期为10ms,使用每子帧中的最后11个OFDM符号(如下图)。

对于NB-IoT终端来讲,执行NPSS检测是一项计算复杂的过程,有违于其设计简单化的目标,因此,NPSS的设计为短的ZC(Zadoff-Chu)序列。

NSSS位于子帧#9,周期为20ms,仅出现于偶数帧,同样使用每子帧中的最后11个OFDM符号。

NPSS为NB-IoT终端提供时间和频率同步参考信号,与LTE不同的是,NPSS中不携带任何小区信息,NSSS带有PCI。

NPBCH

NPBCH位于每无线帧中的子帧#0,TTI为640ms,承载MIB-NB(Narrowband Master Information Block),其余系统信息如SIB1-NB等承载于NPDSCH中。

NPDCCH和NPDSCH

NPDCCH承载上行和下行数据信道的调度信息,包括上行数据信道的HARQ确认信息、寻呼指示和随机接入响应调度信息、来自更高层的数据信息、寻呼消息、系统消息和随机接入响应消息等。

如以上NB-IoT物理信道时分复用图所示,很多子帧被分配给NPDCCH和NPDSCH。

为降低终端复杂性,所有下行信道采用LTE的TBCC码。另外,NPDSCH的最大传输块大小(TBS)为680 bits,而无空间复用的LTE支持的最大TBS大于70000 bits。

NRS

NRS(窄带参考信号),也称为导频信号,主要作用是下行信道质量测量估计,用于终端的相干检测和解调。在用于广播和下行专用信道时,所有下行子帧都要传输NRS,无论有无数据传送。

NRS与承载NPBCH、NPDCCH和NPDSCH的子帧中的信息承载符号时频复用,每天线端口每子帧使用8个RE。

上行

对于上行链路,NB-IoT定义了两种物理信道:

①NPUSCH,窄带物理上行共享信道。

②NPRACH,窄带物理随机接入信道。

还有DMRS,上行解调参考信号。

NPRACH

由于LTE的PRACH信道带宽为1.08MHz,这远远高于NB-IoT上行带宽,因此需重新设计。

和LTE的Random Access Preamble使用ZC序列不同,NB-IoT的Random Access Preamble是单频传输(3.75KHz子载波),且使用的Symbol为一定值。一次的Random Access Preamble传送包含四个Symbol Group,一个Symbol Group是5个Symbol加上一CP(如下图)。

一个NPRACH preamble(前导码)由四个Symbol Group组成。每个Symbol Group之间会有跳频。选择传送的Random Access Preamble即是选择起始的子载波。

▲NPRACH跳频

当CP长度为66.67s (Format 0) 时,小区覆盖半径达10公里。当CP长度为266.7s (Format 1) ,覆盖半径达40公里。为了扩展覆盖,NPRACH preamble可重复128次。

NPUSCH

NPUSCH用来传送上行数据以及上行控制信息,传输可使用单频或多频传输(前面介绍过)。

NPUSCH定义了两种格式:Format 1和Format 2。

Format 1为UL-SCH上的上行信道数据而设计,使用与LTE相同的Turbo码纠错,其资源块大小远低于LTE,不大于1000 bits。

Format 2用于NPDSCH的HARQ确认信令,传送上行控制信息(UCI),使用重复码来纠错。

映射到传输快的最小单元叫资源单元(RU,resource unit),它由NPUSCH格式和子载波空间决定。

有别于LTE系统中的资源分配的基本单位为子帧,NB-IoT根据子载波和时隙数目来作为资源分配的基本单位,如下表所示:

对于NPUSCH format 1,当子载波空间为3.75 kHz时,只支持单频传输,一个RU在频域上包含1个子载波,在时域上包含16个时隙,所以,一个RU的长度为32ms。

当子载波空间为15kHz时,支持单频传输和多频传输,一个RU包含1个子载波和16个时隙,长度为8ms;当一个RU包含12个子载波时,则有2个时隙的时间长度,即1ms,此资源单位刚好是LTE系统中的一个子帧。资源单位的时间长度设计为2的幂次方,是为了更有效的运用资源,避免产生资源空隙而造成资源浪费。

对于NPUSCH format 2,RU总是由1个子载波和4个时隙组成,所以,当子载波空间为3.75 kHz时,一个RU时长为8ms;当子载波空间为15kHz时,一个RU时长为2ms。

NPUSCH format 2调制方式为BPSK。

NPUSCH format 1调制方式分为以下两种情况:

●包含一个子载波的RU,采用BPSK和QPSK。

●其它情况下,采用QPSK。

这地方有点绕,换句话来理解:

①NPUSCH支持15 kHz或3.75 kHz单频传输,为了降低峰均功率比(PAPR),单频传输则使用π/2 BPSK或π/4 QPSK。

②NPUSCH若支持多频传输,则使用QPSK。

(补充:NB-IoT下行调制采用QPSK,下行信道编码采用TBCC,上行信道编码为Turbo码)

DMRS

DMRS用于信道估计。NPUSCH Format 1格式与LTE PUSCH时隙结构相同,每时隙7个OFDM符号,中间一个符号作为DMRS。Format 2格式同样为每时隙7个OFDM符号,但将中间3个符号用作DMRS。

5.4 资源映射

在本节中,我们将描述NB-IoT资源映射如何部署在LTE载波中,以确保与LTE的最佳共存性能。实质上,通过避免将NB-IoT信号映射到已经由传统LTE信号已经使用的资源元素来保持与LTE信号的正交性。

为了确保与LTE系统共存,必须避免NB-IoT信号映射到LTE已使用的RE(Resource Element,LTE物理资源中最小的资源单位),以保持两者间的正交性。

如上图所示,每一列表明一个OFDM符号中的RE,每个OFDM符号有12个RE(对应12个子载波)。

对于独立部署和保护带部署模式,不需要保护LTE资源。因此,NPDCCH, NPDSCH和NRS可以使用PRB中的所有资源。

对于带内部署模式,NPDCCH, NPDSCH和NRS不能映射到已被LTE CRS和PDCCH占用的RE上。

NB-IoT终端通过小区搜索来获知部署模式(带内/保护带/独立部署)和CI,然后确定哪些RE被LTE使用,终端再映射NPDCCH和NPDSCH符号到可用RE。NPSS,NSSS和NPBCH在初始同步和获取主系统信息时,并不知道部署模式,为此,NPSS,NSSS和NPBCH避免使用每一子帧的前三个OFDM符号,因为这些资源可能会被LTE PDCCH使用。

5.5 同步

同步是蜂窝通信系统中一个重要环节。当终端第一次开机后,需要检测一个"合适的小区"(suitable cell)来驻留,然后获取符号、子帧、帧定时以及与载波频率同步。为了频率同步,终端需要从基站获取同步信息,同步调校,以纠正因本地振荡器不精准而引起的频率偏差。另外,由于存在多个小区,终端需基于NB-PCID识别其指定小区。

因此,整个同步过程实际包括时间同步校准,频偏校正,获取CI和子帧和帧号参考。

NB-IoT的特点是低成本和强覆盖。低成本意味着NB-IoT终端配置低成本的晶振,其初始载波频偏可高达20 ppm。加之我们前文所述的带内和保护带部署模式下会引入额外的2.5KHz或7.5KHz栅格偏移,这会进一步加大载波频偏。对于NB-IoT的另一个特点———增强覆盖,意味着很多终端位于地下室一类的非常低的SNR网络环境。

如何在载波频偏和低SNR环境下完成精准的同步呢?尽管NB-IoT的同步过程和LTE相似,但为了解决上述两个问题,NB-IoT对同步序列进行了改动。

如前所述,NPSS和NSSS被用来完成同步,NPSS占用每帧的子帧#5,NSSS占用每个偶数帧的子帧#9。 NPSS用于获取符号定时和载波频偏,NSSS用于获取NB-PCID,时长为80ms块。对于超低SNR环境下的终端,要完成检测,单个10ms时间是不够的,需要一个累计的过程,多个10ms才行。NPSS就是基于这样的时间累计来设计的,其原理就是用时间来换精确性,用加权累积过程来纠正频偏。覆盖信号越差的终端,需要的累加次数越高。

NPSS和NSSS同步完成后,终端获取了符号定时、载波频偏和NB-PCID等信息。然后,终端获取MIB信息,其通过位于每帧中的子帧#0的NPBCH信道广播。NPBCH由8个自解码子块组成,每个子块重复8次,每个子块占用8个连续帧的子帧#0,这样设计的目的就是为了让处于深度覆盖的终端成功获取信息。

通过以上设计,NB-IoT有效的补偿了载波频偏,并完成NPSS和NSSS同步、获取MIB信息。至于栅格偏移,尤其是7.5KHz的偏移,有点不好解决。

7.5kHz栅格偏移会导致5.33秒(假设载波频率为900 MHz)的符号定时漂移,这大于了循环前缀的持续时间,会破坏OFDM的下行链路的正交性。唯一的办法就是牺牲成本,提升计算复杂度,以提高检测性能。

所以,这里解决了那道作业题“联通900M只有6M带宽这种情况,怎么办?”。

至于较小的栅格偏移,由于每10个子帧中只有一个NPBCH子帧,是可实现的。

5.6 随机接入

当需建立无线链路和调度请求时,NB-IoT会执行随机接入。随机接入的一个主要目的是实现上行链路同步,以保持上行正交性。

类似于LTE,NB-IoT基于竞争的随机接入包括四个步骤:

(1)UE发送随机接入前导码

(2)网络发送随机接入响应(包含TA命令和将在第三步使用的上行链路资源调度)

(3)UE使用调度资源,并向网络回应身份标识

(4)网络发送消息,解决多UE竞争接入问题。

为了满足不同的覆盖范围,系统可以在小区内配置最多三个NPRACH资源配置,每个配置指定随机接入前导码的重复值。终端会根据其测量的下行信号强度来估计覆盖水平(CE Level),并使用根据覆盖水平配置的NPRACH资源来发送发送随机接入前导码。

NB-IoT允许使用以下参数在时、频上灵活配置NPRACH资源:

时域:NPRACH资源的周期性,NPRACH资源的开始时间。

频域:频率位置(基于子载波偏移)和子载波数。

总之,终端通过测量下行信号强度来决定CE Level,并使用该CE Level指定的NPRACH资源,发送随机接入前导码。一旦随机接入前导码传送失败,NB-IoT终端会在升级CE Level重新尝试,直到尝试完所有CE Level的NPRACH资源为止(如下图)。

NB-IoT的随机接入过程和LTE非常相似,不再多述。

5.7 调度和HARQ

由于资源有限且支持重复传送,若上行采用同步自适应HARQ会导致上行资源运用更加困难,因此,NB-IoT的上下行都采用异步自适应HARQ,即根据新接收到的DCI(Downlink Control Information)来决定重传。另外,为了降低终端的复杂度,NB-IoT只支持一个HARQ过程,并且允许NPDCCH和NPDSCH更长的UE解码时间。

以上图为例,调度命令通过承载于NPDCH的DCI传送,NPDCH使用AL(aggregation levels)1或AL2传送DCI。对于AL1,两个DCI复用于一个子帧,否则一个子帧仅携带一个DCI(即AL-2),以降低编码率和提升覆盖。通过重传增强覆盖,每次重传占用一个子帧。

DCI可以用于调度下行数据或上行数据。

对于调度下行数据,在DCI中指示NPDCCH与相关联的NPDSCH之间的精确时间偏移。考虑物联网设备有限的计算能力,NPDCCH结束与相关NPDSCH的开始之间的时间偏移至少为4ms。

在接收到NPDSCH之后,终端需使用NPUSCH Format 2反馈HARQ确认。DCI中指示携带HARQ确认消息的NPUSCH的资源。考虑物联网设备有限的计算能力,NPDSCH结束与相关HARQ确认开始之间的时间偏移至少为12ms。

对于上行链路调度和HARQ操作,NPDCCH结束与相关NPUSCH开始之间的时间偏移至少为8ms。在完成NPUSCH传送之后,UE监视NPDCCH,以确认基站是否正确接收到NPUSCH,还是需要进行重传。

6

总结

最后,我们再总结一下NB-IoT的一些性能。

1)峰值数据速率

一个最大的TBS为680bits,时长为3ms,因此,NDSCH峰值物理层速率为680bits/3ms=226.7 kbps。同理,NPUSCH峰值数据速率为1000 bits/4ms=250kbps。然而,考虑DCI,NPDSCH / NPUSCH和HARQ确认之间的时间偏移,下行和上行的峰值吞吐量都低于上述数值。

2)覆盖

NB-IoT达到比LTE Rel-12高20 dB的最大耦合损耗(MCL)。覆盖范围的增强是通过增加重传次数来减少数据速率而实现的。通过引入单个子载波NPUSCH传输和 π/2-BPSK调制来保持接近于0dB的PAPR,从而减小由于功率放大器(PA)功率回退引起的覆盖影响,确保覆盖增强。15kHz单频NPUSCH若配置最大重传(128)和最低调制和编码方案时,物理层速率约20bps。而NPDSCH配置最大重传(512)和最低调制和编码方案时,物理层速率可到35bps。这些配置接近170dB耦合损耗,而LTE R12最高约142dB。

3)设备复杂性

为了降低终端复杂性,NB-IoT设计如下:

●下行和上行的传输块大小明显减少

●下行只支持一个冗余版本

●上下行仅支持单流传输

●终端仅需单天线

●上下行仅支持单HARQ过程

●终端无需turbo解码器

●无连接模式下的移动性测量,终端只需执行空闲模式下的移动性测量

●低带宽,低采样率

●仅支持FDD半双工

4)时延和电池寿命

NB-IoT主要针对时延不敏感的应用,不过,对于像发送告警信号等应用,NB-IoT支持10秒以下时延。对于164dB耦合损耗,终端平均每天传送200字节数据,电池寿命可达10年。

5)容量

仅有一个PRB资源的NB-IoT单小区支持连接52500终端。此外,NB-IoT支持多载波操作。因此,可以通过添加NB-IoT载波的方式来增加容量。

好了,来吧,掐死我....

参考文献:

NB-IOT,Antti Ratilainen

A Primer on 3GPP Narrowband Internet of Things (NB-IoT),Y.-P. Eric Wang, Xingqin Lin, Ansuman Adhikary, Asbjörn Grövlen, Yutao Sui, Yufei Blankenship, Johan Bergman, and Hazhir S. Razaghi,Ericsson Research, Ericsson AB

LoRa and NB-IoT,Gagan Gupta, Darshan Patil

NB-IoT解决方案,华为

LTE Signaling for IoT,Anhar Al-Ansi

部分图片来源:ROHDE&SCHWARZ,中国移动,华为,Intel,AT&T,NTT

网优雇佣军投稿邮箱:[email protected]

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38874013/article/details/100976790

智能推荐

整合项目的实现方案-程序员宅基地

文章浏览阅读216次。 “消除信息孤岛,实现资源共享”是现在应用软件都争取实现的目标,我现在一直都很关注这方面的解决方案,现在总结了一下学习的心得:请看这个原理图:原理图 这个是完成了数据从各个子系统,汇总到中心数据库中,是一个数据ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)的过程; 然后我们的程序依据就是整合完成的数据库,在数据库上面..._项目整合方案

redis如何清空当前缓存和所有缓存-程序员宅基地

文章浏览阅读1.5k次。Windows环境下使用命令行进行redis缓存清理1、redis安装目录下输入cmd2、redis-cli -p 端口号3、flushdb 清除当前数据库缓存4、flushall 清除整个redis所有缓存转载于:https://www.cnblogs.com/lxwphp/p/10870399.html..._bladex 项目中 清除redis 缓存

FileUpload文件上传_list<fileitem> items = fileupload. parserequest(re-程序员宅基地

文章浏览阅读706次。1.进行文件上传时,表单需要做的准备:1).请求方式为POST:<form action="uploadServlet" method="post"....>2).使用file的表单域:<input type="file" name="file" />3).请求的编码方式:<form action="uploadServlet" method="post" en..._list items = fileupload. parserequest(request);

自己做量化交易软件(44)小白量化实战17--利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计_小白量化平台-程序员宅基地

文章浏览阅读1.2w次,点赞8次,收藏36次。自己做量化交易软件(44)小白量化实战17–利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计小白量化平台是由若干小白金融模块构成。其中包含行情接收模块,仿通达信大智慧公式计算模块,K线及指标绘图模块,回测模块,Tkinter GUI窗口设计模块等构成。每个模块都能独立应用。最新实战版本小白量化xb2f压缩包中,提供了最新的公式库,除了增加了几十个公式函数外,还集成了通达信数百个常用公式,例如kd,rsi,macd,boll…等等,使用者不用复制函数,可直接使用这些系统默认_小白量化平台

在线大数据学习,效果怎么样?-程序员宅基地

文章浏览阅读687次。(一)在线学习过程性活动记录子系统虚拟的在线学习过程可以看作是五类元素的组合,即学习者、学习资源、交互、事件以及学习结果。这五个元素之间相互影响,密切相关,共同构成系统的在线学习活动。根据在线学习活动属性与关键内容,我们将记录子系统中的过程性活动分为互动交流、资源使用、学习作品、资源分享、平台利用、自我评价、学伴评价、教师点评、学习反思和成长记录等核心活动。Web爬虫具有目标信息采集准确、应用...

查找编号(倍增)-程序员宅基地

文章浏览阅读118次。查找编号输入样例11 31 3 3 3 5 7 9 11 13 15 151 3 6AC代码#include<cstdio>using namespace std;int n,m,a[2000005];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) { int x,ans=0;_查找编号

随便推点

Android SDK开发-程序员宅基地

文章浏览阅读862次。原文链接:http://blog.csdn.net/dd864140130/article/details/53558011最近经常看到Android实习岗要求对SDK/NDK开发有一定的了解,恰好在微信公众号 guolin_blog (郭霖)上看到一篇关于Android SDK方面的文章,故转载。关于SDK的解释什么是SDK在开始正文之前,首先来聊_android sdk开发

JS 字符(字母) 与 ASCII码 转换方法_怎么把字母换成ascii码-程序员宅基地

文章浏览阅读2k次。一. 字母ASCII码值大写字母 :A 到Z 的值是 从65 到90小写字母 :a到z 是从 91 到 122二. 字符 与 ASCII码值 之间的转换字符 —> ASCII码值:‘A’.charCodeAt();ASCII码值—>字符:String.fromCharCode(65);..._怎么把字母换成ascii码

android设置title_Android使用FragmentTabHost实现中间按钮凸出效果-程序员宅基地

文章浏览阅读124次。目前很多app主页都是由几个tab页组成,所以我们开发app的时候一般都会涉及到主页tab的切换实现。常用的主页tab切换实现可以用viewpage和FragmentActivity组合,用普通Button/TextView/RadioButton等等和FragmentTransaction的add、replace、remove、hide和show方法组合,以及Android官方框架Fr..._android tabhost中间突起

使用springjdbc 弥补hibernate批量处理的缺陷-程序员宅基地

文章浏览阅读60次。很多时候、我们做批量更新的时候不希望用hibernate,那么就可以考虑简单的做一点配置、就可以把很好的把springjdbc整合到项目中。用过hibernateTemplate的老程序员、肯定很多、springjdbc也是用的模板方法:jdbctemplate,很方便的哦,注入就可以用咯。simpleeg:@AutowiredprivateJdbcTemplate..._hibernate缺点如何弥补

Kotlin 反射--笔记_kotlin文件获取 class对象-程序员宅基地

文章浏览阅读1.4k次。1.类引用kotlin是基于java1.6设计,完全兼容java,所以和java很多功能都是互通的。如java反射中Class对象,在Kotlin叫KClass对象。1.1 Class和KClassClass//在kotlin中获取Class对象class ReflectDemo(val x: Int = 0) { constructor() : this(0) { } fun test() { println(x) }}//获取Cl_kotlin文件获取 class对象

如何编写自己的数据访问层_论文数据访问层次怎么写-程序员宅基地

文章浏览阅读204次。概述在二开(族库、算量等)或者大部分管理软件的开发中,多数系统架构是基于数据库设计的,那么怎么设计数据访问层呢?一、设计框架图中分成三块:1、左边的xxxServices为app公开访问数据接口;2、中间红色部分为底层操作数据库接口,通过依赖注入的方式给xxxServices使用;3、xxx DAL为底层操作数据库接口的具体实现,可能是SQL Server的实现,可能是用于程序开发的的Fake数据提供的实现,也可能是阿里云、腾讯云等云服务器的数据访问的实现等;二、导出DAL代码1、使用“P_论文数据访问层次怎么写

推荐文章

热门文章

相关标签